Java AWS Flow Framework 版的工作原理 - AWS Flow Framework 适用于 Java

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

Java AWS Flow Framework 版的工作原理

f AWS Flow Framework or Java 与 Amazon SWF 配合使用,可以轻松创建可扩展和容错的应用程序,以执行可能长时间运行、远程或两者兼而有之的异步任务。“Hello World!”示例 中的示例Java 的 AWS Flow Framework 用法是什么?介绍了如何使用 AWS Flow Framework 来实现基本工作流应用程序的基础知识。本节提供有关 AWS Flow Framework 应用程序工作原理的概念性信息。第一部分概述了 AWS Flow Framework 应用程序的基本结构,其余部分则进一步详细介绍了 AWS Flow Framework 应用程序的工作原理。

Amazon SWF 超时类型

为确保工作流执行正确运行,您可以通过 Amazon SWF 设置不同类型的超时。一些超时指定工作流程的总运行时长。其它超时指定活动任务在被分配给工作程序之前所花费的时间以及从排定到完成所花费的时间。Amazon SWF API 中的所有超时都以秒为单位。Amazon SWF 还支持将字符串 NONE 作为超时值,表示没有超时。

对于与决策任务和活动任务相关的超时,Amazon SWF 会在工作流执行历史中添加一个事件。事件的属性提供了所发生超时类型的信息以及以及受影响的决策任务或活动任务。Amazon SWF 还会计划决策任务。当决策者收到新的决策任务时,它将在历史记录中看到超时事件,并通过调用操作来采取适当的RespondDecisionTaskCompleted行动。

任务被视为从排定时开始到其关闭为止都处于开启状态。因此,当工作程序处理任务时,任务被报告为开启状态。当工作程序将任务状态报告为已完成已取消失败时,任务关闭。Amazon SWF 也可能会因超时而关闭任务。

工作流程和决策任务中的超时

下图显示工作流程和决策超时如何与工作流程的生命周期相关:

工作流程的生命周期,具有超时。

与工作流程和决策任务相关的超时类型有两个:

  • 工作流启动到关闭 (timeoutType: START_TO_CLOSE) - 该超时指定了完成工作流执行所需的最长时间。工作流程注册期间,这一超时被设置为默认值,但当工作流程启动时,可用其它值覆盖该默认值。如果超过此超时时间,Amazon SWF 将关闭工作流程执行并在工作流程执行历史中WorkflowExecutionTimedOut添加类型的事件。除了 timeoutType 之外,事件属性还会指定对此工作流程执行有效的 childPolicy。子策略指定上级工作流程执行超时或终止时子工作流程执行的处理方法。例如,如果 childPolicy 被设置为 TERMINATE,则子工作流程执行将被终止。一旦工作流程执行超时,则不能对其执行可视性调用之外的其他任何操作。

  • 决策任务启动到关闭 (timeoutType: START_TO_CLOSE) – 该超时指定了相应决策程序完成决策任务所需的最长时间。该超时在工作流程类型注册期间设置。如果超过此超时时间,则该任务将在工作流程执行历史中标记为超时,Amazon SWF 会在工作流程历史记录中添加DecisionTaskTimedOut类型的事件。当此决策任务被排定 (scheduledEventId) 且启动 (startedEventId) 时,事件属性中将包含对应事件的 ID。除了添加事件外,Amazon SWF 还会计划新决策任务以警告决策程序此决策任务已超时。此超时发生后,使用 RespondDecisionTaskCompleted 完成超时决策任务的尝试将失败。

活动任务中的超时

下图显示超时如何与活动任务的生命周期相关:

任务的生命周期,具有超时

与活动任务相关的超时类型有四个:

  • 活动任务启动到关闭 (timeoutType: START_TO_CLOSE) – 该超时指定了活动工作线在接收到任务后处理任务所需的最长时间。尝试使用RespondActivityTaskCanceledRespondActivityTaskCompleted和关闭超时活动任务RespondActivityTaskFailed将失败。

  • 活动任务检测信号 (timeoutType: HEARTBEAT) – 该超时指定了任务在通过 操作提供其进程前可以运行的最长时间。

  • 活动任务计划到开始 (timeoutType: SCHEDULE_TO_START) – 该超时指定了在没有工作线执行活动任务时 Amazon SWF 在活动任务超时前等待的时间。一旦超时,过期的任务就不能分配给另一工作程序。

  • 活动任务安排到关闭 (timeoutType: SCHEDULE_TO_CLOSE) – 该超时指定了任务从计划到完成所需的时间。作为最佳实践,此值不应大于任务 schedule-to-start 超时和任务超时之和。 start-to-close

注意

每一个超时类型都有默认值,一般设置为 NONE (无限)。但是任何活动执行的最长时间均被限制为一年。

您在活动类型注册期间设置这些活动的默认值,但当您排定活动任务时您可以用新值覆盖默认值。当其中一个超时发生时,Amazon SWF 将在工作流程历史记录中添加一个ActivityTaskTimedOut类型的事件。此事件的 timeoutType 值属性将指定发生了何种超时。对于其中每一个超时,timeoutType 的值都显示在括号中。当活动任务被排定 (scheduledEventId) 且启动 (startedEventId) 时,事件属性中还将包含对应事件的 ID。除了添加事件外,Amazon SWF 还会计划新决策任务以警告决策程序已发生超时。