向流添加条件逻辑
了解如何使用 IBM® App Connect 流中的 If 节点根据从流中的应用程序接收的数据执行不同的操作。
当您要执行某些条件处理时,将 If 节点添加到流中。 例如,当某人注册到一个事件时,您可能希望将其添加到邮件列表; 但如果他们注册到另一个事件,那么您可能希望将其添加到市场营销应用程序。 或者,可以使用 If 节点根据先前操作的响应代码来制定决策。 例如,如果您已向流程添加了更新或创建操作,则可能需要根据记录是更新还是新记录来采取不同的操作。
使用 If 节点的注意事项
在添加 If 节点之前,确定要执行的决策,应满足的条件以及应执行的相应操作很有用。 在 If 节点中,您可以将每个 if, else if或 else 条件语句定义为 分支。 请注意以下考虑事项:
- 最多可以将 10 个 If 节点添加到流。
- 单个 If 节点可以具有多个分支。
- 如果在流中的 If 节点之后添加操作,那么您可以选择在 If 节点的任意多个分支的末尾退出该流,只要至少一个分支继续处理,以便将数据传递到目标应用程序。 如果 If 节点位于事件驱动的流的末尾,那么该流可以在所有分支上退出。
- 如果要将从 If 节点中的操作返回的数据传递到流的其余部分,那么可以创建输出模式,然后使用该模式为 If 节点中的各个分支定义输出数据。 如果在分支结束时退出流,那么不能为该分支定义输出数据。
- 当条件的两边都看起来像数字时(例如,
if 2 is less than 10),这些值将被视为数字。 但如果有一边不能作为数字处理(例如,如果 2GB 小于 10GB
),则条件的两边都会转换为字符串并进行比较。 - 在条件值中包含空格会影响比较。 例如,
2
(数字后跟空格)不同于2
。
您可以通过向 添加更多操作 (如果 和 else 分支) 或通过添加更多条件来处理复杂处理。 您还可以通过向分支添加更多 If 节点来添加嵌套的 If 节点。
If 节点可从流编辑器中的 工具箱 选项卡获取,并且可以位于流中第一个节点之后的任何位置。
以下示例显示了具有多个分支的 If 节点,以及相应的 If 面板,您在其中添加分支并配置 If 条件,出口条件以及要从 If 节点传递的任何输出数据。

添加和配置条件语句
为了说明 If 节点的工作方式,我们将使用在创建新的 Salesforce 联系人时触发的示例流。 如果联系人位于伦敦,我们希望向伦敦销售团队发送消息,或者如果总部位于巴黎,则向巴黎销售团队发送消息。 如果联系人不在伦敦或巴黎,我们希望生成一条消息来表明这一点。
要在流中添加和配置 If 节点,请完成以下步骤:
- 在流中要定义某些条件逻辑的阶段,单击 (+),转至 工具箱 选项卡,然后单击 如果 (条件)。
图 2。 从 "工具箱" 选项卡中选择 If 节点 
此时将显示 If 节点和 If 面板。
图 3。 空的 If 节点和 If 面板 
- 通过定义一个或多个 If 条件以及在这些条件为 true 时要执行的操作来配置第一个 if 分支:
- 从 If 面板中,定义第一个 If 条件,如下所示:
- 在最左边的字段中单击,然后在流中插入来自先前节点的映射; 例如,新 Salesforce 联系人的
Mailing City。 - 选择比较运算符。
图 4: If 条件的比较运算符 
- 如果适用,请在最右边的字段中将值指定为文本或映射。
图 5。 单个 If 条件的示例 
- 在最左边的字段中单击,然后在流中插入来自先前节点的映射; 例如,新 Salesforce 联系人的
- 可选。 要添加更多 If 条件,请完成以下步骤:
- 对于每个新条件,单击 添加条件 ,然后以与第一个条件相似的方式定义该条件。
- 添加条件后,选择 所有 都必须为 true (通过选择 所有以下内容都为 true) ,还是 任何 都可以为 true (通过选择 任何以下内容都为 true)。 例如:
图 6。 多个 If 条件的示例 
- 定义当 If 条件为 true 时应该执行的操作。 在 If 节点上,使用 (+) 图标将一个或多个操作或工具箱节点添加到 if 分支。
图 7。 允许您向 If 节点添加操作或工具箱节点的加号图标 
以下示例显示了具有单个操作的已配置 if 分支。
图 8。 如果具有单个操作的分支 
- 从 If 面板中,定义第一个 If 条件,如下所示:
- 如果 If 节点需要多个基本 "
if A, do B; else do C" 定义,请配置所需的 else if 分支,然后配置 else 分支。提示: 将条件逻辑添加到流时,数据将向下移动与条件匹配的第一个分支。 因此请密切关注您的分支机构的顺序。 此外, If 节点的分支上的目标应用程序 (以及嵌套的 If 节点) 只能看到来自分支中先前操作的数据; 它们无法看到来自其他分支的数据。- 可选。 配置一个或多个 else if 分支,如下所示:
- 从 " If " 面板中,单击 添加 else if 以添加 else if 分支,然后定义一个或多个 If 条件。
- 在 If 节点上,通过将一个或多个操作或工具箱节点添加到 else if 分支来定义当这些条件为 true 时应该发生的情况。

- 可选。 如果要在不满足上述分支中的任何条件时执行某些操作,请配置 else (终态) 分支。 在 If 节点上,使用 else 分支上的 (+) 图标来添加一个或多个操作或工具箱节点。
图 9。 通过单击加号图标将节点添加到 else 分支 
提示: 如果需要,您可以使用 If 面板上的箭头在 If 节点上重新定位分支。 您还可以通过单击该分支的 删除 图标来删除该分支。
- 可选。 配置一个或多个 else if 分支,如下所示:
- 可选。 如果要在 If 节点上的任何分支的末尾退出流,请完成以下步骤:
- 单击 If 节点以打开 " If " 面板。
- 找到并选中相关分支的 在此分支末尾退出流 复选框。请记住: 如果在 If 节点之后添加操作,那么可以针对 If 节点上任意数量的分支选择 在此分支结束时退出流 ,只要至少一个分支继续处理,以便将数据传递到目标应用程序。 如果 If 节点位于事件驱动的流的末尾,那么该流可以在所有分支上退出。
- 选择要写入日志的消息代码,并编写自己的消息以伴随它。 此消息的最大长度可以是 128 个字符。
图 10. 此分支的样本设置结束时的出口流 
- 可选。 如果要将数据从 If 节点中的各种操作传递到流的其余部分,请创建输出模式,以定义要从每个分支传递的所有数据。 然后,在分支级别,可以指定特定于该分支的输出数据。
- 通过添加数据属性来定义输出模式:
- 如果需要,请单击 If 节点以打开 " If " 面板。
- 展开 输出模式 部分,然后单击 添加属性 以显示属性编辑器。
- 输入用于标识要传递到流的其余部分的数据的属性名; 例如,
EmailAddress或LastName。 - 选择属性的数据类型。 对于数据类型为
Object或Array of objects的属性,您需要定义用于标识任何分层父/子关系的结构。 - 可选。 如果希望此属性在每个分支的输出数据中是必需的,请选中 必需 复选框。
- 使用 添加属性 来定义所需的任何其他数据属性。
图 11. 通过添加属性来定义输出模式 
- 要定义特定于分支的输出数据,请完成以下步骤。 (如果选择了 在此分支结束时退出流 ,那么无法定义输出数据。)
- 从 If 面板中,单击以展开该分支的 输出数据 部分。 在输出模式中定义的属性将显示为具有定义的数据类型的字段。
图 12. 分支的输出数据字段 
- 使用要传递到流的其余部分的数据填充字段。 您可以从流中的先前节点添加映射,输入文本或应用 JSONata 表达式。提示: 如果需要,您可以通过在 输出模式 部分中添加或删除属性来修改输出模式。 您还可以更改已定义属性的名称或数据类型。 您的更改将反映在每个分支的 输出数据 部分中。
请注意,如果删除或重命名属性,那么将除去 输出数据 部分中的任何现有映射。
- 从 If 面板中,单击以展开该分支的 输出数据 部分。 在输出模式中定义的属性将显示为具有定义的数据类型的字段。
- 通过添加数据属性来定义输出模式:
- 通过添加所需的其他操作和工具箱实用程序,以通常方式完成流程。提示: 如果要在流编辑器中创建更多空间,可以通过单击 折叠 图标来折叠 If 节点。

示例

了解如何使用 App Connect Designer 将 Wufoo 连接到 Salesforce 和 Asana ,以便每当有人在 Wufoo 中提交已完成的地址表单更改时,都会更新或创建 Salesforce 联系人,并且根据 Salesforce 操作,会向 Asana 中的相应项目添加任务。