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

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

Amazon SWF Workflow 历史记录

每个工作流的执行进度都记录在 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 会在执行结束后将所有工作流执行的完整历史记录存储可配置的天数。该时期在您为您的工作流注册时指定,它被称为工作流历史保存期限。本章节的后面部分将更详细地讨论域。