Amazon Simple Workflow Service
开发人员指南 (API 版本 2012-01-25)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

Amazon SWF 工作流程历史

每个工作流程执行的进度都记录在 Amazon SWF 所保持的工作流程历史中。工作流程历史是每个自工作流程执行启动后发生的事件的详细、完整和一致性记录。事件表示的是您的工作流程执行状态的不连续更改,如被排定的新活动或完成的运行中活动。工作流程历史中包含每个导致工作流程执行状态更改的事件,如已排定和完成的活动、任务超时和信号。

一般而言,工作流程历史中不会出现不对工作流程执行状态造成更改的操作。例如,工作流程历史中不显示轮询尝试次数或可见性操作的使用。

工作流程历史有几个主要优势:

  • 它可以使应用程序无状态,因为有关工作流程执行的所有信息都存储在其工作流程历史中。

  • 对于每个工作流程执行,其历史记录中都包含被排定的活动、其当前状态和结果。工作流程执行使用此信息确定下面要执行的步骤。

  • 历史记录提供具体的审查跟踪,您可以用它监控正在运行的工作流程执行并验证已完成的工作流程执行。

以下所示为电子商务工作流程历史的概念视图:

Invoice0001 Start Workflow Execution Schedule Verify Order Start Verify Order Activity Complete Verify Order Activity Schedule Charge Credit Card Start Charge Credit Card Activity Complete Charge Credit Card Activity Schedule Ship Order Start Ship Order Activity

前述示例中,订单正等待发货。以下示例中,订单已完成。由于工作流程历史是累积形成的,会附加较新的事件:

Invoice0001 Start Workflow Execution Schedule Verify Order Start Verify Order Activity Complete Verify Order Activity Schedule Charge Credit Card Start Charge Credit Card Activity Complete Charge Credit Card Activity Schedule Ship Order Start Ship Order Activity Complete Ship Order Activity Schedule Record Order Completion Start Record Order Completion Activity Complete Record Order Completion Activity Close Workflow

工作流程执行历史中的事件以编程方式被描述为 JavaScript Object Notation (JSON) 数据元。历史记录本身是上述数据元的 JSON 阵列。每个事件都有以下内容:

此外,每种类型的事件都有一组适用于该类型的独特描述性属性。例如 ActivityTaskCompleted 事件具有包含与活动任务排定时间和启动时间相对应之事件的 ID 的属性,以及保存结果数据的属性。

您可以通过使用 GetWorkflowExecutionHistory 操作获取当前工作流程执行历史状态的副本。此外,作为 Amazon SWF 与您的工作流程决策程序之间交互的一部分,决策程序还将定期接收历史记录的副本。

以下部分是 JSON 格式的示例工作流程执行历史。

[ { "eventId": 11, "eventTimestamp": 1326671603.102, "eventType": "WorkflowExecutionTimedOut", "workflowExecutionTimedOutEventAttributes": { "childPolicy": "TERMINATE", "timeoutType": "START_TO_CLOSE" } }, { "decisionTaskScheduledEventAttributes": { "startToCloseTimeout": "600", "taskList": { "name": "specialTaskList" } }, "eventId": 10, "eventTimestamp": 1326670566.124, "eventType": "DecisionTaskScheduled" }, { "activityTaskTimedOutEventAttributes": { "details": "Waiting for confirmation", "scheduledEventId": 8, "startedEventId": 0, "timeoutType": "SCHEDULE_TO_START" }, "eventId": 9, "eventTimestamp": 1326670566.124, "eventType": "ActivityTaskTimedOut" }, { "activityTaskScheduledEventAttributes": { "activityId": "verification-27", "activityType": { "name": "activityVerify", "version": "1.0" }, "control": "digital music", "decisionTaskCompletedEventId": 7, "heartbeatTimeout": "120", "input": "5634-0056-4367-0923,12/12,437", "scheduleToCloseTimeout": "900", "scheduleToStartTimeout": "300", "startToCloseTimeout": "600", "taskList": { "name": "specialTaskList" } }, "eventId": 8, "eventTimestamp": 1326670266.115, "eventType": "ActivityTaskScheduled" }, { "decisionTaskCompletedEventAttributes": { "executionContext": "Black Friday", "scheduledEventId": 5, "startedEventId": 6 }, "eventId": 7, "eventTimestamp": 1326670266.103, "eventType": "DecisionTaskCompleted" }, { "decisionTaskStartedEventAttributes": { "identity": "Decider01", "scheduledEventId": 5 }, "eventId": 6, "eventTimestamp": 1326670161.497, "eventType": "DecisionTaskStarted" }, { "decisionTaskScheduledEventAttributes": { "startToCloseTimeout": "600", "taskList": { "name": "specialTaskList" } }, "eventId": 5, "eventTimestamp": 1326668752.66, "eventType": "DecisionTaskScheduled" }, { "decisionTaskTimedOutEventAttributes": { "scheduledEventId": 2, "startedEventId": 3, "timeoutType": "START_TO_CLOSE" }, "eventId": 4, "eventTimestamp": 1326668752.66, "eventType": "DecisionTaskTimedOut" }, { "decisionTaskStartedEventAttributes": { "identity": "Decider01", "scheduledEventId": 2 }, "eventId": 3, "eventTimestamp": 1326668152.648, "eventType": "DecisionTaskStarted" }, { "decisionTaskScheduledEventAttributes": { "startToCloseTimeout": "600", "taskList": { "name": "specialTaskList" } }, "eventId": 2, "eventTimestamp": 1326668003.094, "eventType": "DecisionTaskScheduled" } ]

有关工作流程执行历史中出现的不同类型事件之详细列表,请参阅 Amazon Simple Workflow Service API Reference 中的 HistoryEvent 数据类型。

Amazon SWF 会在执行关闭后将所有工作流程执行的完整历史存储可配置的天数。该时期在您为您的工作流程注册时指定,它被称为工作流程历史保存期限。本章节的后面部分将更详细地讨论域。