本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon States Language 中用于 Step Functions 工作流程的状态机结构
管理状态和转换数据
了解有关使用变量在状态之间传递数据和使用转换数据的信息 JSONata。
状态机使用 JSON 文本定义,该文本表示的结构包含以下字段。
-  Comment(可选)
- 
                    一个人类可读格式的状态机描述。 
-  QueryLanguage(可选;省略时,默认为JSONPath)
- 
                - 
                        状态机使用的查询语言的名称。支持的值包括 JSONPath和JSONata。
- 
                        如果未为状态机提供,则每个状态的默认值为 JSONPath。 
- 
                        当顶级状态机查询语言为时 JSONPath,各个状态可以通过设置为 QueryLanguage 来覆盖查询语言JSONata。有了这种方法,你可以逐渐将状态机从 JSONPath JSONata一个状态转换为一个状态。
- 
                        注意:您不能将 JSONata基于顶层的状态机恢复为 JSONata 和 JSONPath状态的混合。 
 
- 
                        
-  StartAt(必填)
- 
                    一个字符串,必须与某个状态对象的名称完全匹配(区分大小写)。 
-  TimeoutSeconds(可选)。
- 
                    状态机执行可运行的最大秒数。如果运行时间超过指定时间,则执行失败并返回 States.Timeout错误名称。
-  Version(可选)
- 
                    状态机中使用的 Amazon States Language 版本(默认为“1.0”)。 
-  States(必填)
- 
                    一个对象,其中包含逗号分隔的状态集合。 
States 字段包含状态。
{
    "State1" : {
    },
    "State2" : {
    },
    ...
}状态机由其包含的状态以及状态之间的关系所定义。
以下是示例。
{
  "Comment": "A Hello World example of the Amazon States Language using a Pass state",
  "StartAt": "HelloWorld",
  "States": {
    "HelloWorld": {
      "Type": "Pass",
      "Result": "Hello World!",
      "End": true
    }
  }
}启动此状态机的执行时,系统从 StartAt 字段中引用的状态开始 ("HelloWorld")。如果此状态有一个 "End": true 字段,则执行停止并返回结果。否则,系统会查找 "Next": 字段并使用下一个状态继续。此过程不断重复,直至系统达到最终状态 ("Type": "Succeed"、"Type": "Fail" 或 "End": true 状态) 或者出现运行时错误。
以下规则适用于状态机中的状态:
- 
                状态在封闭块中可以按任意顺序出现,但它们列出的顺序不会影响到它们的运行顺序。运行顺序由状态的内容决定。 
- 
                在状态机中,只能有一个状态指定为 start状态,由顶级结构中StartAt字段的值指定。此状态是在执行启动时首先执行的状态。
- 
                End字段为true的任意状态将被视为end(或terminal)状态。根据状态机逻辑(例如状态机有多个执行分支),您可能会有多个end状态。
- 
                如果状态机只包含一个状态,该状态可以为 start状态和end状态。
工作流程中的常用状态字段
以下字段对所有状态元素是通用的。
-  Type(必填)
- 
          状态的类型:任务、选择、并行、地图、通过、等待、成功、失败。 
- QueryLanguage(可选;省略时,默认为- JSONPath)
- 
                    - 
                            该州使用的查询语言的名称。支持的值包括 JSONPath和JSONata。
- 
                            当顶级状态机查询语言为时 JSONPath,各个状态可以通过设置为 QueryLanguage 来覆盖查询语言JSONata。有了这种方法,你可以逐渐将状态机从 JSONPath JSONata 一个状态转换为一个状态。
 
- 
                            
- 
          Next
- 
          当前状态完成时将运行的下一个状态的名称。某些状态类型 (例如 Choice) 允许多个转换状态。如果当前状态是工作流中的最后一个状态或终端状态(例如 Succeed 工作流程状态 或 Fail 工作流程状态),则无需指定 Next字段。
- 
          End
- 
          在设置为 true时,指定此状态作为终端状态(结束执行)。每个状态机可以有任意数量的终端状态。在一个状态中只能使用一个Next或End。某些状态类型(例如Choice)或终端状态(例如 Succeed 工作流程状态 和 Fail 工作流程状态 )不支持或使用End字段。
-  Comment(可选)
- 
          保存状态的人类可读格式的描述。 
-  Assign(可选)
- 
            用于存储变量。该 Assign字段接受一个 JSON 对象,该对象包含定义变量名及其分配值的 key/value 对。任何字符串值,包括对象或数组内部的值,都将按照被{% %}字符包围 JSONata 时的计算方式进行计算有关更多信息,请参阅 使用变量在状态之间传递数据。 
-  Output( JSONata 仅限可选)
- 
用于指定和转换状态的输出。指定后,该值将覆盖状态输出默认值。 输出字段接受任何 JSON 值(对象、数组、字符串、数字、布尔值、空)。任何字符串值,包括对象或数组内部的字符串值,都将被计算为 JSONata 被 {%%} 个字符包围。 输出也直接接受 JSONata 表达式,例如:“输出”:“{% jsonata expression%}” 有关更多信息,请参阅输入和输出处理。 
-  InputPath( JSONPath 仅限可选)
- 
          一个路径,用于选择要传递到状态任务进行处理的状态输入的一部分。如果省略,它的值为 $,表示指定整个输入。有关更多信息,请参阅输入和输出处理。
-  OutputPath( JSONPath 仅限可选)
- 
          一个路径,用于选择要传递到下一个状态的状态输出的一部分。如果省略,它的值为 $,表示指定整个输出。有关更多信息,请参阅输入和输出处理。