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