云工作流的各种状态(State)之间需要传递数据,每个状态(State)将接收来自前一状态的输入(Input),并返回输出(Output),随后将该输出传递给下一个状态(State),具体可见数据传递。
本章节主要介绍工作流执行(Execution)的输入输出以及状态(State)的输入输出。
执行(Execution)的输入输出
执行输入
工作流每次执行时, 需要提供工作流执行的初始化数据, 即工作流执行的输入数据。流程编排过程中可统一用表达式" { $Context.Input} "
去访问工作流本次执行的输入数据。 在控制台触发工作流执行时,可以在执行输入按照JSON格式填写预期的执行输入数据以及本次输入的执行名称:
执行输出
每次工作流执行成功后的工作流执行结果。 在工作流编排和执行过程中,无法通过变量访问的方式访问工作流执行结果。
状态(State)的输入输出
状态输入
在工作流执行过程中, 可以通过表达式" { $.xxx.yyy } "
方式访问本次状态的执行输入,具体详见数据传递说明。这里将上一个状态执行的输出作为本次状态状态执行的输入。注意, 仅可以在当前状态基本设置或者输入设置里进行使用, 对应的字段即state.stateDataFilter.input
或者functionRef.arguments
, 详流程定义介绍以及状态流转。
状态输出
在工作流执行过程中, 可以通过表达式" { $.xxx.yyy } "
方式访问本次状态执行完成后的执行输出,具体详见数据传递说明,按照这个方式可直接访问本次状态执行输出的结果。 注意,仅可以在当前状态在输出设置里进行使用,对应的工作流流程定义字段即state.stateDataFilter.output
。
输入输出设置
输入输出过滤器对应的是工作流流程定义里面state基本结构的stateDataFilter字段。 在控制台cloudflow studio里, 可通过输入配置完成state.stateDataFIlter.input
字段的定义, 可通过输出配置完成state.stateDataFilter.output
字段的定义。在未设置的情况下,不对输入或者输出进行过滤处理。关于字段的详细说明可详见流程定义介绍。
在输入输出设置里面涉及到的表达式的生命周期如下:
"{ $Context.Input }"
:生命周期贯穿整个工作流执行周期, 用于访问工作流执行输入。状态输入表达式
" { $.xxx.yyy } "
:生命周期起始于State执行开始, 结束于State执行完成。状态输出表达式
" { $.xxx.yyy } "
: 仅在State执行完成时可用。
说明
"{ $ }"
代表输入或者输出的原始数据, 即全集
输入设置
Operation类型的状态(State), 其输入设置是在基本设置完成的。 当Operaion类型进行输入设置时,一般是用于设置调用云服务请求参数或者HTTP请求参数。而Switch、Foreach、Noop等状态可用于输入数据过滤以及输入数据重构等场景, 在未设置的情况下, 输入数据保持和上一个状态输出数据一致。
以输入设置-使用JsonPath部分参数为例:
工作流流程可视化 | 工作流流程定义 |
---|---|
|
进行工作流执行:
工作流执行输入 | 状态执行输入 | 状态执行输出 |
---|---|---|
|
以输入设置-使用参数过滤器构造新参数为例:
工作流流程可视化 | 工作流流程定义 |
---|---|
|
进行工作流执行:
工作流执行输入 | 状态执行输入 | 状态执行输出 |
---|---|---|
|
输出设置
当状态(State)执行完成时,可在输出设置里对输出数据过滤以及输出数据重构等场景, 在未设置的情况下, 输出数据会原始传递到下一个状态作为下一个状态执行的输入。这里简单介绍以以输出设置-使用JsonPath部分参数为例进行介绍:
工作流流程可视化 | 工作流流程定义 |
---|---|
|
进行工作流执行:
工作流执行输入 | 状态状态执行输入 | 状态执行输出 |
---|---|---|
|