Amazon Simple Workflow Service
开发人员指南 (API Version 2012-01-25)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

Amazon SWF 参与者

Amazon SWF 中的参与者是什么?

Amazon SWF 在其运行过程中,会与很多不同类型的程序参与者 交互。参与者可以是 工作流程启动程序决策程序活动工作程序。这些参与者通过其 API 与 Amazon SWF 通信。您可以用任何编程语言开发这些参与者。

下图显示了 Amazon SWF 架构,包括 Amazon SWF及其参与者。

Amazon SWF 工作流程中的不同实体或“参与者”。

工作流程启动程序

工作流程启动程序是能启动工作流程执行的任何应用程序。在电子商务示例中,一个工作流程启动程序可以是客户下订单所在网站。而另一个工作流程启动程序可以是客户服务代表代表客户下订单时所用移动应用程序或系统。

决策程序

决策程序是工作流程写作逻辑的执行。决策程序控制工作流程执行中的活动任务流程。每当工作流程执行期间发生更改时(例如,活动任务完成),Amazon SWF 都会创建一个决策任务,该任务包含截至该时点的工作流程历史并将该任务分配给决策程序。当决策程序从 Amazon SWF 接收决策任务时,它会分析工作流程执行历史,以确定工作流程执行中接下来的相应步骤。决策程序会使用决策 将上述步骤反馈给 Amazon SWF。决策就是一个可代表接下来的各种操作的 Amazon SWF 数据类型。若要了解一系列可能的决策,请参阅 Amazon Simple Workflow Service API Reference 中的决策

下面是 JSON 格式的决策示例,该决策通过这种格式传送到 Amazon SWF。此决策会排定新活动任务。

{ "decisionType" : "ScheduleActivityTask", "scheduleActivityTaskDecisionAttributes" : { "activityType" : { "name" : "activityVerify", "version" : "1.0" }, "activityId" : "verification-27", "control" : "digital music", "input" : "5634-0056-4367-0923,12/12,437", "scheduleToCloseTimeout" : "900", "taskList" : { "name": "specialTaskList" }, "scheduleToStartTimeout" : "300", "startToCloseTimeout" : "600", "heartbeatTimeout" : "120" } }

决策程序会在工作流程执行启动时以及每当工作流程执行状态发生更改时接收决策任务。决策程序接收决策任务并用更多决策来响应 Amazon SWF 以不断推进工作流程执行,直到决策程序确定该工作流程执行完成为止。然后,它会回应决策,以关闭工作流程执行。工作流程执行关闭后,Amazon SWF 不会为该执行安排其他任务。

在电子商务示例中,决策程序会决定每个步骤是否都适当执行,然后回排定下一步或管理任何错误条件。

决策程序代表的是单个计算过程或线程。多个决策程序可为同一种工作流程类型处理任务。

活动工作程序

活动工作程序是一种过程或线程,用于执行活动任务这一工作流程组成部分。活动任务表示的是您在应用程序中标识的任务之一。

若要在工作流程中使用活动任务,您必须使用 Amazon SWF 控制台或 RegisterActivityType 操作来注册该任务。

每个活动工作程序都会轮询 Amazon SWF 以获取适合该活动工作程序执行的新任务;特定任务只能由特定活动工作程序执行。接收任务后,活动工作程序处理该任务直至完成,然后向 Amazon SWF 报告该任务已完成并提供结果。然后,活动工作程序会轮询新任务。与活动流程执行相关的活动工作程序会用此方式继续处理任务,直到工作流程执行本身已完成。在电子商务示例中,活动工作程序是信用卡处理人员和物流人员等执行过程中单独步骤的人所使用的独立过程和应用程序。

活动工作程序表示单个计算过程(或线程)。多个活动工作程序可处理同一种活动类型的任务。

参与者之间的数据交换

工作流程执行启动时会提供输入数据到工作流程执行。同样地,当活动工作程序排定活动任务时会提供输入数据给工作程序。当活动任务完成时,活动工作程序可将结果返回到 Amazon SWF。同样地,决策程序会在执行完成时报告工作流程执行的结果。每个参与者都可通过用户自定义形式的字符串将数据发送到 Amazon SWF 或从其接收数据。根据数据的大小和敏感性,您可以直接传递数据,或传递指向存储在其他系统或服务上的数据的指针(如 Amazon S3 或 DynamoDB)。直接传递的数据和指向其他数据存储的指针都会记录在工作流程执行历史中;但是,Amazon SWF 不会从外部存储复制或缓存任何数据以作为历史记录的一部分。

由于 Amazon SWF 会维持每个工作流程执行的完整执行状态(包括任务的输入和结果),所有参与者都可能是无状态的。因此,工作流程处理具有高度可扩展。随着系统负载增加,您可以简单增加更多参与者来提高容量。