Amazon SWF 操作者 - Amazon Simple Workflow Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

Amazon SWF 操作者

Amazon SWF 中的操作者是什么?

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

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


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

工作流程启动程序

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

Deciders

决策程序是工作流程写作逻辑的执行。决策程序控制工作流程执行中的活动任务流程。只要工作流程执行过程中发生更改 (如任务完成),都会向决策程序传递包含整个工作流程历史记录的决策任务。当决策程序从 Amazon SWF 接收决策任务时,它会分析工作流程执行历史,以确定工作流程执行中接下来的相应步骤。决策者将这些步 Amazon SWF 过决策。决策就是 Amazon SWF 数据类型,该数据可代表接下来的各种操作。有关可能决策列表的信息,请进入决策(在《Amazon Simple Workflow Service API 参考》中。)

下面是 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 控制台或RegisterActivityTypeaction.

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

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

参与者之间的数据交换

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

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