我想在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>
no else子句,没有默认流程。这是如何在Mulesoft流程中实现的? 我可以作弊,并将记录调用放入默认流程,但我不愿意。
答案 0 :(得分:3)
不幸的是,没有简单的&#39; if&#39;骡子处理器。选择虚拟否则路线或过滤器是现在的方法。
这里有一个很好的讨论:https://www.mulesoft.org/jira/browse/MULE-6129。这可以进一步链接到可能的增强功能,例如if / detour路由器。
答案 1 :(得分:2)
您可以使用异步或更丰富的范围和过滤器。它并不像真正的<if>
处理器(or a standalone <when>
)那样优雅,但您不需要浪费<logger>
来满足<otherwise>
。< / p>
异步方法(之后你不需要有效载荷):
<async>
<expression-filter expression="#[payload == 'red']" />
<logger category="com.box.integration.experiment" message="That's my favorite color!" level="INFO" />
</async>
Enricher方法(当你这样做时):
<enricher target="#[variable:colorName]">
<processor-chain>
<expression-filter expression="#[payload == 'red']" />
<set-payload value="vermillion" />
</processor-chain>
</enricher>
答案 2 :(得分:0)
在mule流程中,当使用消息路由器而不在节中设置处理器,并且MuleMessage与任何子句都不匹配时,会抛出异常。为了实现条件行为,当前mule需要在else子句上设置虚拟处理器。如果没有匹配的子句且没有提供处理器,那么可用性的一个改进就是让消息由流的剩余部分处理 https://www.mulesoft.org/jira/browse/MULE-6129