If statement 如何在mulesoft中实现IF
我想在Mulesoft流中做一个决定,并研究了选择流控制。我的问题是,如果条件为真,我想做点什么,如果条件为假,我什么也不想做,比如:If statement 如何在mulesoft中实现IF,if-statement,mule,choice,If Statement,Mule,Choice,我想在Mulesoft流中做一个决定,并研究了选择流控制。我的问题是,如果条件为真,我想做点什么,如果条件为假,我什么也不想做,比如: if (condition == true) do some work 或者,在可能不正确的xml中: <choice doc:name="call a subflow if the test is true"> <when expression="#[flowVars.someVariable == True]">
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”处理器。选择虚拟路由或过滤器是目前的方向 这里有一个很好的讨论:。这进一步链接到可能的增强功能,如if/detour路由器 Mule 4更新
在mule 4中,您现在可以定义一个choice路由器,而不需要
或者路由。过滤器不再存在您可以使用异步或enricher作用域和过滤器来接近。它不像真正的
处理器()那样优雅,但您不需要浪费
来满足
的要求
异步方法(之后不需要有效负载时):
Enricher方法(当您这样做时):
在mule流中,当使用消息路由器而未在节中设置处理器,并且mule消息与任何子句都不匹配时,将引发异常。要实现当前的条件行为,mule需要在otherwise子句上设置一个虚拟处理器。一个可用性改进是,如果没有匹配子句,也没有提供处理器,则允许流的其余部分处理消息
除此之外,有人建议我研究过滤器,但在我看来,我希望使用某种决策流控制。或者这可能只是我多年编程的偏见,妨碍了我看到明显的解决方案。显然,我没有足够的声誉来投票支持你的答案,Ryan,但是谢谢。我发现最简单的方法是设置变量:
<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>