如何在mulesoft中实现IF

时间:2015-03-17 17:23:21

标签: if-statement mule choice

我想在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流程中实现的? 我可以作弊,并将记录调用放入默认流程,但我不愿意。

3 个答案:

答案 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