---
title: "利用 FlowForce 服务器处理和优化不良输入数据"
date: "2013-06-18"
categories: 
  - "data-integration"
tags: 
  - "data-mapping"
  - "diffdog"
  - "flowforce-server"
  - "mapforce"
  - "mapforce-server"
  - "reporting-tool"
  - "stylevision-server"
description: 了解如何利用 FlowForce Server 有效地处理数据转换过程中出现的错误输入数据。学习如何实施错误处理机制，并维护工作流程的完整性。
---
Status: #blog

Tags:  #data-mapping #diffdog #flowforce-server #mapforce #mapforce-server #reporting-tool #stylevision-server

Categories: [data-integration](/blog/zh/category/data-integration.md)
# 利用 FlowForce 服务器处理和优化不良输入数据

每当您从外部来源获取数据时，就存在遇到错误的风险。我们之前在博客中探讨过这个问题，例如在《[未雨绸缪：Altova MissionKit 解决了数字格式的难题](https://www.altova.com/blog/2013/01/expect-unexpected-altova-missionkit.html)》以及关于《[处理 Groupon API](https://www.altova.com/blog/2011/11/processing-groupon-api-epilogue.html)》的一系列文章中。

输入文件中存在错误数据可能导致 FlowForce Server 任务的数据转换步骤失败。当 FlowForce Server 任务失败时，后续的执行步骤将不会进行。FlowForce Server 的设计理念是，为了防止一个任务步骤中的错误导致一系列额外的无效结果。 值得庆幸的是，FlowForce Server 还提供了功能，可以帮助您从错误中恢复，并保持生产流程的正常运行。

在这篇文章中，我们将进一步扩展 [数据映射](https://www.altova.com/zh/mapforce.html) 和 [报表生成](https://www.altova.com/zh/stylevision.html) 职位描述 [自定义 FlowForce 服务器任务](https://www.altova.com/blog/2013/05/customizing-flowforce-server-job.html) 优雅地处理输入文件中存在的错误数据。

![FlowForce 服务器的新任务步骤](https://lh5.ggpht.com/-qFEC3krCZnI/UZ59cniYPkI/AAAAAAAABLQ/etSQ4sR40i8/image%25255B2%25255D.png?imgmax=800 "FlowForce Server New Job Steps")
<!--more-->
我们首先创建了一个包含错误数据的文件的变体，并在工作流程中添加了一个文件夹，作为存放错误输入文件的目标位置。
![来自外部来源的输入文件可能包含错误数据。](https://lh5.ggpht.com/-Da_p4mjICRg/UZ59czWzpgI/AAAAAAAABLU/erWMFKC5K0A/image%25255B5%25255D.png?imgmax=800 "An input file from an outside source could contain bad data")

我们创建了那个有问题的输入文件，方法是复制了一个现有的输入文件，然后使用DiffDog对其进行编辑。

输入的文件（.csv格式）中的第一列是时间戳，包含小时、分钟、秒和毫秒。我们只是修改了第14行和第15行中的数值，使其超出24小时的上限。

![DiffDog 中查看到的 .csv 文件中的错误数据](https://lh4.ggpht.com/-iHryhaFMxgU/UZ59dZCM0qI/AAAAAAAABLg/JRAe5n7rrNM/image%25255B8%25255D.png?imgmax=800 "Bad data in a .csv file, as seen in Altova DiffDog")

我们启动了MapForce，并将包含错误数据的文件指定为“CameraLogToGPX”转换的输入文件。当我们点击“输出”按钮执行转换时，出现了以下错误：

![当MapForce遇到无效的输入数据时，会生成错误提示信息。](https://lh4.ggpht.com/-Nzf-kx12SLc/UZ59dtw_ExI/AAAAAAAABLk/szX6LioH3qA/image%25255B11%25255D.png?imgmax=800 "MapForce generates an error message when encountering bad input data.")

**FlowForce 服务器任务步骤，包含错误处理**

接下来，我们定义了一个新的 FlowForce Server 任务，该任务在“错误/成功处理”步骤中处理输入数据。如果数据映射失败，我们将移动包含错误的数据文件以及任何部分写入的 .gpx 文件到“错误数据”文件夹。如果数据映射成功，我们将继续进行转换，生成 .html 报告，然后将输入文件和 .gpx 文件移动到“已完成工作”文件夹。

请注意“错误处理”部分的最后一步。如果出现数据映射错误，将导致“循环处理每个文件”的执行停止。因此，我们会递归地重新运行整个任务，以处理任何尚未处理的输入文件。

![FlowForce Server 允许您定义包含错误处理步骤的任务。](https://lh3.ggpht.com/-SVwuKjXou6s/UZ59d2lNJdI/AAAAAAAABLo/HpC88Ss0uT4/image%25255B14%25255D.png?imgmax=800 "FlowForce Server lets you define jobs with error handling steps.")

如果数据映射错误对企业至关重要，并且需要立即采取行动，我们甚至可以在“错误处理”部分添加一个任务步骤，用于发送电子邮件通知

![FlowForce 服务器可以在发生错误时发送电子邮件通知。](https://lh3.ggpht.com/-sD65xRrwH7s/UZ59eZCfw6I/AAAAAAAABLw/VXWcgHqu4HI/image%25255B17%25255D.png?imgmax=800 "FlowForce Server can send an email message when an error occurs.")

当然，收件人、主题、正文和附件等字段都可以进行完全自定义设置。

如果数据映射步骤成功，FlowForce 服务器将执行“成功”部分的代码，然后继续执行 .html 渲染任务的后续步骤。

**运行任务**

该任务按照预设的时间触发器启动，并且 FlowForce 服务器日志会记录每个执行步骤。在下面的日志片段中，我们可以看到如何处理包含错误数据的输入文件。序列中的第三行显示了错误信息，然后将输入文件以及部分生成的 .gpx 文件发送到 "badData" 文件夹。

![FlowForce 服务器作业日志显示错误信息以及相应的恢复步骤。](https://lh5.ggpht.com/-9v12-b5ARaY/UZ59eqs0J7I/AAAAAAAABL8/GJx3SNMMfzw/image%25255B20%25255D.png?imgmax=800 "FlowForce Server Job Log shows error and recovery steps.")

上一行显示服务器正在开始处理文件夹中的下一个输入文件。

当任务完成处理后，我们可以在工作文件夹的内容中看到预期的结果：

![经过处理后，所有无效数据和不完整的结果会被发送到一个专门的文件夹中。](https://lh4.ggpht.com/-0Nz9ZXQJsoE/UZ59e2pCsKI/AAAAAAAABME/K7xeHxhZYLs/image%25255B23%25255D.png?imgmax=800 "After processing, the bad data and incomplete results were sent toa special folder.")

**FlowForce Server 适用于 Windows、Linux 平台，并且很快将支持 Mac OS 平台。如果您想开始使用，** [**请点击此处下载免费试用版**](https://www.altova.com/zh/download-trial-server.html)**！**
