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 步骤后,配置步骤的工作流如下:

Workflow for configuring Conditional Flows step

有关工作流的更多信息

  • 基本表达式构建器提示您输入包含您要评估的内容的属性,以及您要测试的条件和值。基本表达式构建器适合大多数 条件流 步骤。
  • 高级表达式构建器允许您在 Camel Simple Language 中指定条件表达式。
  • 所有条件都必须使用相同的表达式构建器。换句话说,若要配置 条件流 步骤,您必须使用基本表达式构建器或高级表达式构建器。您不能同时使用两者。
  • 在条件流中,您无法添加条件 步骤。

4.7.4. 使用基本表达式构建器指定条件

在流中,当您要评估传入的数据时,添加一个 Conditional Flows 步骤来确定集成的执行路径。此处描述的步骤演示了如何使用基本表达式构建器指定条件。

先决条件

  • 您是创建或编辑主要流。如果这是一个简单的集成,则添加了开始和完成连接。
  • 条件流 步骤的输入必须是单个消息。在集成视觉化中,如果上一步的数据类型显示 (Collection),请在上一步后添加 Split 步骤,在此条件 步骤前添加 Split 步骤。
  • 熟悉集成传递给您要添加的 Conditional Flows 步骤的消息中的字段。

步骤

  1. 在集成视觉化中,您要添加 条件流 步骤,点 PlusSignToAddStepOrConnection
  2. Conditional Flows
  3. Basic expression builder 条目中,单击 Select
  4. Configure Conditional Flows 页面中,定义一个或多个条件:

    1. 点初始 When 字段。
    2. 在属性列表中,点包含您想要 条件 Flows 步骤评估的内容的属性。
    3. 在下一字段中,接受 Contains 作为步骤评估数据或选择另一个条件的条件。您在此字段中选择的条件必须评估为 true,用于您在下一字段中输入的值。
    4. 在第三个字段中,指定条件测试的值。
    5. 可选的。点 Add another condition 指定另一个条件。
    6. 对您要定义的每个额外条件重复这组步骤。
    7. 可选的。点条件右侧的up 或 down 箭头更改集成评估定义条件的顺序。
    8. 可选的。如果要有一个默认条件流,请单击 Execute default flow

      如果您选择 Execute 默认流,在执行期间,如果没有指定条件评估为 true,则集成将执行默认条件流。如果您没有选择 Execute 默认流,在执行期间,如果没有指定评估为 true 的条件,则集成将继续执行,执行遵循这个 条件流 步骤。

  5. Next
  6. 可选的。如果 Fuse Online 提示输入它,请指定输出数据类型。作为此条件流 步骤的一部分的所有条件流 必须具有相同的输出类型。
  7. Next

    Fuse Online 显示流视觉化。在您添加的 Conditional Flows 步骤下方,指定了每个条件都有一个条目,如果您表示 Conditional Flows 步骤有一个默认流,则另外一个另外一个条件的默认流。

后续步骤

对于每个条件,在关联的流中添加步骤。如果存在默认流,在默认流中添加步骤。

其他资源

4.7.5. 使用高级表达式构建器指定条件

在流中,当您要评估传入的数据时,添加一个 Conditional Flows 步骤来确定集成的执行路径。此处描述的步骤演示了如何使用高级表达式构建器在 Camel Simple Language 中指定条件表达式。

先决条件

  • 您是创建或编辑主要流。如果这是一个简单的集成,则添加了开始和完成连接。
  • 条件流 步骤的输入必须是单个消息。在集成视觉化中,如果上一步的数据类型显示 (Collection),请添加 Split 步骤。
  • 熟悉集成传递给您要添加的 Conditional Flows 步骤的消息中的字段。
  • 熟悉 Camel Simple Expression 语言或具有要评估的条件的表达式。

步骤

  1. 在集成视觉化中,您要添加 条件流 步骤,点 PlusSignToAddStepOrConnection
  2. Conditional Flows
  3. Advanced expression builder 条目中点 Select
  4. Configure Conditional Flows 页面中,定义一个或多个条件:

    1. 在初始 When 字段中,输入 Camel Simple Language 条件表达式。表达式的左侧必须是以 ${…​} 括起的变量表达式。

      以下是有效表达式的示例:

      ${header.type} == 'note'
      ${body.title} contains 'Important'

      以下是无效表达式的示例:

      'note' == ${header.type}

      以下是一个示例,演示了如何编写一个表达式,当消息的正文包含大于 160pto 字段时评估为 true :

      ${body.pto} > 160

      当此表达式评估为 true 时,集成会执行您创建的条件流并与此条件关联。

      注意

      在表达式中,当 Conditional Flows 步骤位于以下流之一时,需要额外的属性规格:

      • API 供应商集成操作流
      • 从 Webhook 连接开始的简单集成
      • 从自定义 REST API 连接开始的简单集成

      在这些流中,Fuse Online 将实际消息内容嵌套在 body 属性中。这意味着,到 Conditional Flows 步骤的输入包含一个 body 属性,其中包含包含实际消息内容的另一个 body 属性。因此,在 条件流 步骤中,在其中一个类型的流中,您必须指定两个 正文 实例。例如,假设您想评估输入消息的 pto 字段中的内容。指定类似如下的表达式:

      ${body.body.pto} > 160
    2. 可选的。单击 Add another condition,再重复上一步。对您要定义的每个额外条件执行此操作。
    3. 可选的。在条件字段右侧点 up 或 down 箭头更改 Conditional Flows 步骤评估定义的条件的顺序。
    4. 可选的。如果要有一个默认条件流,请单击 Execute default flow

      如果您选择 Execute 默认流,在执行期间,如果没有指定条件评估为 true,则集成将执行默认条件流。如果您没有选择 Execute 默认流,在执行期间,如果没有指定评估为 true 的条件,则集成将继续执行,执行遵循这个 条件流 步骤。

  5. Next
  6. 可选的。如果 Fuse Online 提示输入它,请指定输出数据类型。作为此条件流 步骤的一部分的所有条件流 必须具有相同的输出类型。
  7. Next

    Fuse Online 显示流视觉化。在您添加的 Conditional Flows 步骤下方,指定了每个条件都有一个条目,如果您表示 Conditional Flows 步骤有一个默认流,则另外一个另外一个条件的默认流。

后续步骤

对于每个条件,在关联的流中添加步骤。如果存在默认流,在默认流中添加步骤。

4.7.6. 在条件流中添加步骤

Conditional Flows 步骤中,在为每个条件定义条件后,为与该条件关联的流添加步骤。在执行期间,当 Conditional Flows 步骤将条件评估为 true 时,它会执行与该条件关联的流。

先决条件

  • 您定义了此条件 流步骤 的条件。
  • 熟悉集成要传递给此条件 流步骤的消息中的字段
  • 您创建了您要添加到条件流的每个连接。

步骤

  1. 在集成视觉化中,对于您要添加到的条件,点 Open Flow

    Fuse Online 显示页面顶部的状况。条件流视觉化显示所有条件流具有的 Flow StartFlow End 步骤。

  2. 在流视觉化中,点击您要在这个条件流中添加步骤的 PlusSignToAddStepOrConnection
  3. 点您要添加的步骤。您可以添加任何可添加到主流的连接或步骤。

    Flow Start 步骤的输出始终与这个 Conditional Flows 步骤前的主要流步骤的输出相同。例如,如果您向这个条件流中添加过滤器步骤或数据映射程序步骤,可用的字段是主流中可用的字段。

  4. 根据需要配置步骤。
  5. 对您要添加到此条件流的每个步骤重复前面的三个指令。
  6. 在页面顶部的 Flow 字段中,点 down carat 并点 Back to primary 流,这会保存这个条件流并显示主要流。
  7. 对于您要添加到的每个条件流,请重复这个过程。

结果

主流具有您在 Conditional Flows 步骤中定义的每个条件的条件流。如果您选择了 Execute default flow 选项,主流也具有默认的条件流。

在执行期间,条件流 步骤执行与评估为 true 的第一个条件关联的条件流。然后,集成执行遵循 Conditional Flows 步骤的步骤。

如果没有条件评估为 true,则 Conditional Flows 步骤执行默认条件流。然后,集成执行遵循 Conditional Flows 步骤的步骤。

如果这两者都为 true :

  • 没有条件评估为 true。
  • 没有默认条件流。

然后,集成执行遵循 Conditional Flows 步骤的步骤。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.