4.7. 评估集成数据以确定执行流
在流中,Condition al Flows 步骤会根据您指定的条件评估集成数据。对于每个指定的条件,您可以在与该条件关联的流中添加连接和其他步骤。在执行期间,Condition al Flows 步骤会评估传入的数据,以确定要执行的流。
以下主题提供详情:
4.7.1. 条件流 的行为
在集成开发过程中,您可以在流中添加条件流步骤并定义一个或多个条件。对于每个条件,您可以在仅与该条件关联的条件流中添加步骤。在集成执行过程中,对于前面的集成步骤传递给 Conditional Flows 步骤的每个消息,Conditional Flows 步骤会根据您在 Fuse Online 页面中定义条件的顺序评估消息内容,以指定条件。
在 条件流 步骤中,其行为是以下之一:
- 对于评估为 true 的第一个条件,该集成将执行与该条件关联的条件流。
- 如果没有条件评估为 true,且没有默认的条件流,则集成将执行该流。
- 如果没有条件评估为 true,且没有默认的条件流,则集成不会执行条件流。
在执行条件流后,或没有条件评估为 true 且没有默认条件流后,该集成会在主流中执行下一步。
4.7.2. Conditional Flows 步骤示例
假设集成连接到 SQL 数据库以获取有关每个员工拥有的付费时间(PTO)的信息。返回的数据表示:
- 如果某些员工没有在特定日期使用,则可能会丢失 PTO。
- 其他员工已经使用 PTO 比获得更多。
- 其余的员工拥有 PTO,无需时间限制即可使用。
在 Conditional Flows 步骤中,本示例集成可以定义两个条件,每个条件的执行流以及默认执行流:
- 当 PTO 大于某个数字时,这表示某些 PTO 可能会在特定日期未使用时丢失。当此条件评估为 true 时,集成将执行向受影响的员工发送电子邮件的流。该电子邮件包含必须使用的 PTO 量以及必须使用的日期。
- 当 PTO 为负数时,这表示一些 PTO 已被使用,但不获得。当此条件评估为 true 时,集成将执行向受影响的员工发送电子邮件的流。该电子邮件包含员工已过撤回的 PTO 量,并指定员工再次进入加速 PTO 的日期。
- 当两个条件都没有评估为 true 时,该集成将执行默认流。这个示例集成为 PTO 不是一个负数字,或超过某些指定数字的红帽员工执行默认条件流。default 流向那些员工发送一封电子邮件,其声明是员工拥有的 PTO 量。
4.7.3. 配置 条件流 步骤的一般步骤
在向流中添加了 Conditional Flows 步骤后,配置步骤的工作流如下:
有关工作流的更多信息
- 基本表达式构建器提示您包含您要评估的内容以及要测试的条件和值的属性。基本表达式构建器适用于大多数 条件流 步骤。
- 高级表达式构建器允许您在 Camel Simple 语言中指定条件表达式。
- 所有条件都必须使用相同的表达式构建器。换句话说,若要配置 条件流 步骤,您必须使用基本表达式构建器或高级表达式构建器。您不能使用两者。
- 在条件流中,您无法添加条件 流 步骤。
4.7.4. 使用基本表达式构建器指定条件
在流程中,当您要评估进入的数据以确定集成的执行路径时,添加一个条件 流 步骤。此处描述的步骤演示了如何使用基本表达式构建器指定条件。
先决条件
- 正在创建或编辑主流。如果这是简单的集成,则添加了开始和完成连接。
- 对 条件流 步骤的输入必须是单个消息。在集成视觉化中,如果上一步的 Data Type 显示 (Collection),请在上一步后添加 Split 步骤,并在此条件 流步骤前添加 Split 步骤。
- 您熟悉了集成传递给您要添加的 Conditional Flows 步骤的消息中。
流程
- 在集成视觉化中,您要添加 条件流 步骤,点 。
- 点 Conditional Flows。
- 在 Basic 表达式构建器 条目中,单击 Select。
在 Configure Conditional Flows 页面中,定义一个或多个条件:
- 在初始 when 字段中 点。
- 在属性列表中,点击包含您希望 Conditional Flows 步骤评估的内容的属性。
- 在下一个字段中,接受 包含 步骤评估数据或选择另一个条件的条件。您在此字段中选择的条件必须评估要在下一个字段中输入的值。
- 在第三个字段中,指定条件测试的值。
- 可选。点 Add another condition 指定另一个条件。
- 对您要定义的每个额外条件重复这组步骤。
- 可选。点条件右侧的上箭头更改集成评估定义条件的顺序。
可选。如果要有一个默认条件流,请单击 Execute default flow。
如果您选择 Execute default flow,在执行过程中,如果没有指定的评估为 true 的条件,则集成将执行默认条件流。如果您没有选择 Execute default 流,在执行过程中没有您指定的评估为 true 的条件,集成将继续执行遵循此条件 流 步骤的步骤。
- 点击 Next。
- 可选。如果 Fuse Online 提示提供它,请指定输出数据类型。作为此条件流步骤 一部分的所有条件流 均必须具有相同的输出类型。
点击 Next。
Fuse Online 显示流程视觉化。在添加的条件流步骤下,您指定的每个条件都有一个条目,如果您表示 Conditional Flows 步骤 有 默认流,则为其它范围默认流的条目。
后续步骤
对于每个条件,为它关联的流添加步骤。如果有默认流,在默认流中添加步骤。
其他资源
- 有关您可以在每个条件的中间字段中选择的条件的详细信息,请参阅 Camel Simple Language 运算符。请注意,匹配条件 对应于 Simple Language regex 运算符。
- 如果无法使用基本表达式构建器定义您需要的条件,请参阅使用高级表达式构建器指定条件。
4.7.5. 使用高级表达式构建器指定条件
在流程中,当您要评估进入的数据以确定集成的执行路径时,添加一个条件 流 步骤。此处描述的步骤演示了如何使用高级表达式构建器在 Camel Simple 语言中指定条件表达式。
先决条件
- 正在创建或编辑主流。如果这是简单的集成,则添加了开始和完成连接。
- 对 条件流 步骤的输入必须是单个消息。在集成视觉化中,如果上一步的 Data Type 显示 (Collection),请添加 Split 步骤。
- 您熟悉了集成传递给您要添加的 Conditional Flows 步骤的消息中。
- 您熟悉 Camel Simple Expression 语言,或者您有需要评估的条件的表达式。
流程
- 在集成视觉化中,您要添加 条件流 步骤,点 。
- 点 Conditional Flows。
- 在 Advanced 表达式构建器条目中点 Select。
在 Configure Conditional Flows 页面中,定义一个或多个条件:
在初始 when 字段中,输入 Camel Simple Language 条件表达式。表达式的左侧必须是以 ${…} 括起的变量表达式。
以下是有效表达式的示例:
${header.type} == 'note'
${body.title} contains 'Important'
以下是无效表达式的示例:
'note' == ${header.type}
下面是一个示例,它演示了如何编写在消息正文包含大于
160
的pto
字段时评估为 true 的表达式:${body.pto} > 160
当此表达式评估为 true 时,该集成将执行您创建的条件流并与该条件关联。
注意在表达式中,当 Conditional Flows 步骤位于以下一种流中时,需要一个额外的属性规格:
- API 供应商集成操作流
- 以 Webhook 连接开头的简单集成
- 以自定义 REST API 连接开始的简单集成
在这些流程中,Fuse Online 会将实际消息内容嵌套在
正文
属性中。这意味着,Conditional Flows 步骤的输入包含一个正文
属性,其中包含另一个包含实际消息内容的正文
属性。因此,在处于这些流之一的条件 流 步骤中的表达式中,您必须指定两个正文
实例。例如,假设您要评估输入消息pto
字段中的内容。指定类似如下的表达式:${body.body.pto} > 160
- 可选。单击 Add another 条件,再重复前面的步骤。对于您要定义的每个额外条件,请执行此操作。
- 可选。点击 condition 字段右侧的向上或下箭头,更改 Conditional Flows 步骤评估定义的条件的顺序。
可选。如果要有一个默认条件流,请单击 Execute default flow。
如果您选择 Execute default flow,在执行过程中,如果没有指定的评估为 true 的条件,则集成将执行默认条件流。如果您没有选择 Execute default 流,在执行过程中没有您指定的评估为 true 的条件,集成将继续执行遵循此条件 流 步骤的步骤。
- 点击 Next。
- 可选。如果 Fuse Online 提示提供它,请指定输出数据类型。作为此条件流步骤 一部分的所有条件流 均必须具有相同的输出类型。
点击 Next。
Fuse Online 显示流程视觉化。在添加的条件流步骤下,您指定的每个条件都有一个条目,如果您表示 Conditional Flows 步骤 有 默认流,则为其它范围默认流的条目。
后续步骤
对于每个条件,为它关联的流添加步骤。如果有默认流,在默认流中添加步骤。
其他资源
4.7.6. 为条件流添加步骤
在 Conditional Flows 步骤中,在为每个条件定义条件后,为与该条件关联的流添加步骤。在执行期间,当 Conditional Flows 步骤评估为 true 时,它会执行与该条件关联的流。
先决条件
- 您定义了此条件 流步骤 的条件。
- 您熟悉了集成传递给此条件 流 步骤的消息中的字段。
- 您创建了您要添加到条件流的每个连接。
流程
在集成视觉化中,对于您要添加到的条件,点 Open Flow。
Fuse Online 显示页面顶部附近的状况。条件流程视觉化显示所有条件 流拥有的 流开始 和流结束 步骤。
- 在流视觉化中,点击您要在这个条件流中添加步骤的 。
点击您要添加的步骤。您可以添加任何可添加到主流的连接或步骤。
Flow Start 步骤的输出始终与在此条件流步骤前的主流步骤的输出相同。例如,如果您将过滤器步骤或数据映射程序添加到此条件流中,可用字段是主流程中可用的字段。
- 根据需要配置步骤。
- 对您要添加到此条件流的每个步骤重复前面的三个指令。
- 在页面的顶部,在 Flow 字段中,单击 down carat 并单击 Back to primary flow,它会保存此条件流并显示主要流。
- 对于您要添加到的每个条件流,请重复此步骤。
结果
主流程都有一个条件流,用于您在 Conditional Flows 步骤中定义的每个条件。如果选择了 Execute default flow 选项,则主流也有默认的条件流。
在执行期间,Conditional Flows 步骤执行与评估为 true 的第一个条件关联的条件流。然后集成将执行遵循 条件流步骤的步骤。
如果没有条件评估为 true,则条件 流 步骤执行默认条件流。然后集成将执行遵循 条件流步骤的步骤。
如果两者都正确:
- 无条件评估为 true。
- 没有默认条件流。
然后,该集成执行遵循 条件流 步骤的步骤。