

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用实现工作流应用程序 AWS Flow Framework
<a name="awsflow-developing-workflows"></a>

使用开发工作流程所涉及的典型步骤 AWS Flow Framework 是：

1. **定义活动与工作流程合同**。分析您的应用程序要求，然后确定所需的活动和工作流程拓扑。*活动* 处理所需的处理任务，*工作流程拓扑* 定义工作流程的基本结构和业务逻辑。

   例如，媒体处理应用程序可能需要下载一个文件，处理该文件，然后将处理后的文件上传到 Amazon Simple Storage Service (S3) 存储桶。此过程可分为四个活动任务：

   1. 从服务器下载文件

   1. 处理文件 (例如，将文件转码为其他媒体格式)

   1. 将文件上传到 S3 存储桶

   1. 通过删除本地文件来执行清除操作

   此工作流程将有一个入口点方法，并将实施一个按顺序运行活动的简单线性拓扑，与[HelloWorldWorkflow 应用程序](getting-started-example-helloworldworkflow.md)很相似。

1. **实施活动和工作流程接口**。工作流程和活动合同由 Java *接口* 定义，使其调用惯例可由 SWF 预测，并在您实施工作流程逻辑和活动任务时为您提供灵活性。您的程序的各个部分可充当彼此数据的使用者，但不需要知道其他部分的许多实施详细信息。

   例如，您可以定义一个 `FileProcessingWorkflow` 接口，并提供针对视频编码、压缩、缩略图等的不同的工作流程实施。这些工作流程中的每个工作流程均具有不同的控制流程，并且可以调用不同的方法；工作流程启动程序不需要知道。通过使用接口，也可以使用稍后将替换为工作代码的模拟实施来测试工作流程。

1. **生成活动和工作流程客户端**。这样您就 AWS Flow Framework 无需实现管理异步执行、发送 HTTP 请求、封送数据等细节。相反，工作流程启动程序通过对工作流程客户端调用方法来执行工作流程实例，而工作流程实施通过对活动客户端调用方法来执行活动。框架在后台处理这些交互的细节。

   如果您使用的是 Eclipse，并且已经配置了项目（如中）[设置 AWS Flow Framework 适用于 Java 的](setup.md)，则 AWS Flow Framework 注释处理器将使用接口定义自动生成工作流和活动客户端，这些客户端公开了与相应接口相同的方法集。

1. **实施活动和工作流程宿主应用程序**。您的工作流程和活动实现必须嵌入到主机应用程序中，这些应用程序可以轮询 Amazon SWF 以获取任务、整理所有数据并调用相应的实现方法。 AWS Flow Framework for Java 包括[WorkflowWorker](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/simpleworkflow/flow/WorkflowWorker.html)和使实现主机应用程序变得简单易行的[ActivityWorker](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/simpleworkflow/flow/ActivityWorker.html)类。

1. **测试您的工作流程**。 AWS Flow Framework for Java 提供了可用于内联和本地测试工作流程的 JUnit 集成。

1.  **部署工作线程**。您可以根据需要部署工作人员，例如，您可以将他们部署到 Amazon EC2 实例或数据中心的计算机上。在部署并启动后，工作线程将开始轮询 Amazon SWF 以获取任务并按需处理任务。

1.  **启动执行**。应用程序通过使用工作流程客户端调用工作流程的入口点来启动工作流程实例。您也可以使用 Amazon SWF 控制台启动工作流。无论您通过什么方式启动工作流实例，都可以使用 Amazon SWF 控制台监控正在运行的工作流实例，并检查正在运行、已完成和已失败实例的工作流历史记录。

[适用于 Java 的 AWS SDK](https://aws.amazon.com/sdkforjava/)包括一组 Java 示例，您可以按照根目录下 readme.html 文件中的说明浏览和运行这些示例。 AWS Flow Framework 此外，还有一组简单的应用程序演示了如何处理各种特定的编程问题，您可以从 [AWS Flow Framework Recipes](https://aws.amazon.com/code/2535278400103493) 获取这些应用程序。