---
title: "自定义 FlowForce 服务器任务"
date: "2013-05-21"
categories: 
  - "data-integration"
tags: 
  - "data-mapping"
  - "flowforce-server"
  - "mapforce-server"
  - "reporting-tool"
  - "stylevision-server"
description: 了解如何自定义 FlowForce Server 的任务，以实现数据映射和报告方面的更好组织和更高的效率，包括数据清理和任务调度方面的最佳实践。
---
Status: #blog

Tags:  #data-mapping #flowforce-server #mapforce-server #reporting-tool #stylevision-server

Categories: [data-integration](/blog/zh/category/data-integration.md)
# 自定义 FlowForce 服务器任务

在我们的上一篇文章中，标题是： [使用 FlowForce Server 实现数据映射和转换的自动化](https://www.altova.com/blog/2013/05/automate-data-mapping-and.html), 我们创建了一个名为 "SimpleMapAndTransform" 的任务，用于 [自动化数据映射](https://www.altova.com/zh/mapforce/mapforce-server.html) 使用 MapForce Server 以及 [生成 HTML 报告](https://www.altova.com/zh/stylevision/stylevision-server.html) 由 StyleVision Server 提供。在...之后 [FlowForce Server](https://www.altova.com/zh/flowforce.html) 该任务运行了多次，因此我们在用于处理输入文件的同一文件夹中积累了大量输出文件，同时，工作文件夹（workFiles）中也产生了许多临时中间文件，如图所示。

![FlowForce 服务器任务执行日志和工作文件夹](https://lh3.ggpht.com/-NO3eS_I6uGo/UZZpJOMkcNI/AAAAAAAABJw/NGqD4x-nb4o/clip_image001%25255B3%25255D.png?imgmax=800 "FlowForce Server Job Execution Log and Working Folders")

在这篇文章中，我们将对该程序进行改进，以获得更清晰、更有条理的结果，并删除不必要的临时文件。 <!--more--> 

**重新组织输出**

首先，我们可以在处理输入文件的“For each”循环中添加更多步骤，将数据映射和转换后创建的新的 .gpx 和 .html 文件移动到“已完成输入”文件夹中。这些步骤是以下步骤中的第 3 步和第 4 步。

在每个步骤中的“工作目录”选项也可以用于重定向输出。但是，我们用来选择每个输入文件的处理变量 {file} 包含了完整路径和文件名，因此，为了简化操作，我们可以继续使用这个字符串，并在处理完成后将所有输出文件移动到指定位置。

![为现有的 FlowForce Server 任务添加执行步骤](https://lh3.ggpht.com/-YUSH3twa2XQ/UZZpKCOMGfI/AAAAAAAABJ0/imdophxyjc0/clip_image002%25255B3%25255D.png?imgmax=800 "Adding Execution steps to an existing FlowForce Server job")

我们的 [StyleVision](https://www.altova.com/zh/stylevision.html) 设计方案中，报告包含一个图表，该图表以 .png 文件格式单独保存，与主 .html 文档分开。 在任务的最后一步，我们使用系统命令行功能，将所有 .png 文件从输入文件夹移动到已完成的工作文件夹。

命令行功能允许您将任何有效的操作系统命令定义为 FlowForce Server 作业的步骤。在这个作业中，我们仍然在 "For-each" 循环中，因此 .png 文件将与相关的 .html 文档一起移动。我们使用了通配符来指定 .png 文件的名称，因为 .png 文件并不完全遵循输入文档的命名规则。这种通配符模式也适用于 StyleVision 设计，该设计为每个报告创建多个图表。

**家务工作步骤**

定期清理工作目录中的内容是一个好习惯。我们的任务使用名为“workFiles”的文件夹来扩展.pxf文件中的内容，以便生成报告。如图所示，该文件夹中包含XML Schema（XML模式）、设计相关的工作文件、用于生成各种报告格式的.XSLT文件以及临时工作文件。

我们可以在作业中的循环结束后增加一个清理步骤，以便在处理完成后立即清理。然而，FlowForce Server 允许同时运行同一作业的多个实例。如果一个实例在另一个实例仍在使用的同时清理工作文件目录，那将是非常糟糕的！

更好的解决方案是定义一个独立的清理任务，并将其安排在主任务空闲时运行。以下是一个非常简单的清理任务的示例，用于清理名为 "workingFiles" 的文件夹，再次使用命令行功能：

![FlowForce 服务器维护工作定义](https://lh5.ggpht.com/-Gtsxgow0YyA/UZuUVAzBpNI/AAAAAAAABLA/7FWamhBm4s8/image7.png?imgmax=800 "Definition of a FlowForce Server Housekeeping Job")

我们使用通配符删除了工作目录（workFiles）中的所有文件，但这种方法可能并不适用于所有情况。如果.pxf文件中包含.html文档所需要的.css样式表或图片文件，则需要执行更精细的清理操作。

**工作触发器**

原始的 SimpleMapAndTransform 任务计划在每周一至周五的 8:30 至 5:00 之间，每 15 分钟运行一次。如上所示，清理任务计划每天在 19:00（晚上 7 点）运行一次。FlowForce Server 的 Web 界面主页显示了任务计划：

![FlowForce 服务器主页，显示当前激活的触发器](https://lh6.ggpht.com/-WsTCxLtbWnA/UZZpMZxCXoI/AAAAAAAABKI/Unfkiya2izg/clip_image004%25255B3%25255D.png?imgmax=800 "FlowForce Server Home Page Showing Active Triggers")

这里有一个快速技巧，您可以在定义 FlowForce Server 任务时使用，以测试该任务。每个任务都可以有多个时间触发器。我们可以定义一个“立即运行”的触发器，以便立即测试一个新的任务，并将其安排在未来几秒钟后运行：

![单个 FlowForce 服务器任务可以由多个触发器启动](https://lh4.ggpht.com/-wxFDqMJ4kvU/UZZpNhZXq7I/AAAAAAAABKM/jNoi-r_m5jo/clip_image005%25255B3%25255D.png?imgmax=800 "A FlowForce Server Job Can Have Multiple Triggers")

我们可以通过查看 FlowForce 服务器日志，了解每个任务步骤的详细信息，从而获得即时反馈。

**FlowForce Server 适用于 Windows、Linux 平台，并且很快将支持 Mac OS 平台。如果您想开始使用，** [**请点击此处下载免费试用版**](https://www.altova.com/zh/download-trial-server.html)**！**
