我如何在 mulesoft 中实现 IF
How do I implement IF in mulesoft
我想在 Mulesoft 流程中做出决定,并查看了 Choice Flow Control。我的问题是,如果条件为真,我想做一些事情,如果条件为假,我什么都不做,比如:
if (condition == true)
do some work
或者,可能不正确 xml:
<choice doc:name="call a subflow if the test is true">
<when expression="#[flowVars.someVariable == True]">
<flow-ref name="doSomething" doc:name="do another thing"/>
</when>
</choice>
没有 else 子句,也没有默认流程。这是如何在 Mulesoft 流程中实现的?
我可以作弊,并将日志记录调用放入默认流程,但我不想这样做。
不幸的是,Mule 中没有简单的 'if' 处理器。暂时选择带有虚拟路由或过滤器的方法。
这里对此有很好的讨论:https://www.mulesoft.org/jira/browse/MULE-6129。这进一步链接到可能的增强功能,例如 if/detour 路由器。
骡子 4 更新
在 mule 4 中,您现在可以定义一个选择路由器而不需要 otherwise
路由。过滤器不再存在
您可以使用异步或更丰富的范围和过滤器来接近。它不如真正的 <if>
处理器 (or a standalone <when>
) 优雅,但您不需要浪费 <logger>
来满足 <otherwise>
.
异步方法(当您之后不需要负载时):
<async>
<expression-filter expression="#[payload == 'red']" />
<logger category="com.box.integration.experiment" message="That's my favorite color!" level="INFO" />
</async>
丰富方法(当你这样做时):
<enricher target="#[variable:colorName]">
<processor-chain>
<expression-filter expression="#[payload == 'red']" />
<set-payload value="vermillion" />
</processor-chain>
</enricher>
在mule flow中,当在section中没有设置Processor的情况下使用消息路由器,并且MuleMessage不匹配任何子句时,抛出异常。为了实现条件行为,当前 mule 需要在 otherwise 子句上设置一个虚拟处理器。一项可用性改进是,如果没有匹配的子句并且没有提供处理器,则让消息由流程的其余部分处理
https://www.mulesoft.org/jira/browse/MULE-6129
我想在 Mulesoft 流程中做出决定,并查看了 Choice Flow Control。我的问题是,如果条件为真,我想做一些事情,如果条件为假,我什么都不做,比如:
if (condition == true)
do some work
或者,可能不正确 xml:
<choice doc:name="call a subflow if the test is true">
<when expression="#[flowVars.someVariable == True]">
<flow-ref name="doSomething" doc:name="do another thing"/>
</when>
</choice>
没有 else 子句,也没有默认流程。这是如何在 Mulesoft 流程中实现的? 我可以作弊,并将日志记录调用放入默认流程,但我不想这样做。
不幸的是,Mule 中没有简单的 'if' 处理器。暂时选择带有虚拟路由或过滤器的方法。
这里对此有很好的讨论:https://www.mulesoft.org/jira/browse/MULE-6129。这进一步链接到可能的增强功能,例如 if/detour 路由器。
骡子 4 更新
在 mule 4 中,您现在可以定义一个选择路由器而不需要 otherwise
路由。过滤器不再存在
您可以使用异步或更丰富的范围和过滤器来接近。它不如真正的 <if>
处理器 (or a standalone <when>
) 优雅,但您不需要浪费 <logger>
来满足 <otherwise>
.
异步方法(当您之后不需要负载时):
<async>
<expression-filter expression="#[payload == 'red']" />
<logger category="com.box.integration.experiment" message="That's my favorite color!" level="INFO" />
</async>
丰富方法(当你这样做时):
<enricher target="#[variable:colorName]">
<processor-chain>
<expression-filter expression="#[payload == 'red']" />
<set-payload value="vermillion" />
</processor-chain>
</enricher>
在mule flow中,当在section中没有设置Processor的情况下使用消息路由器,并且MuleMessage不匹配任何子句时,抛出异常。为了实现条件行为,当前 mule 需要在 otherwise 子句上设置一个虚拟处理器。一项可用性改进是,如果没有匹配的子句并且没有提供处理器,则让消息由流程的其余部分处理 https://www.mulesoft.org/jira/browse/MULE-6129