如何在Mule ESB中使用选择模式而非Soap Request?

时间:2016-11-28 03:35:51

标签: soap mule esb choice

我有一个端点接受Soap Requests,在此端点之后,它转到转换消息,它会向外部Web服务生成适当的请求。 我想要做的是使用选择模式来决定我必须重定向哪个外部Web服务。

<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/>
<cxf:configuration name="CXF_Configuration" enableMuleSoapHeaders="true" initializeStaticBusInstance="true" doc:name="CXF Configuration"/>
<ws:consumer-config name="Web_Service_Consumer" service="KarmaService" port="KarmaPort" serviceAddress="http://localhost:8080/TestingWS/Karma" wsdlLocation="http://localhost:8080/TestingWS/Karma?wsdl" doc:name="Web Service Consumer"/>
<flow name="testingChoice">
    <http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/>
    <cxf:proxy-service configuration-ref="CXF_Configuration" payload="body" doc:name="CXF"/>
    <dw:transform-message doc:name="Transform Message">
        <dw:set-payload><![CDATA[%dw 1.0
    %output application/xml
    %namespace ns0 http://karmapackage/
    ---
    {
       ns0#sayHello: {
      arg0: payload.invoke.arg0
    }
    }]]></dw:set-payload>
    </dw:transform-message>
    <choice doc:name="Choice">
        <when expression="#[payload]">
            <logger message="Info1" level="INFO" doc:name="Logger"/>
        </when>
        <otherwise>
            <logger message="Default" level="INFO" doc:name="Logger"/>
        </otherwise>
    </choice>
    <ws:consumer config-ref="Web_Service_Consumer" operation="sayHello" doc:name="Web Service Consumer"/>
    <logger message="Andando" level="INFO" doc:name="Logger"/>
</flow>

现在, Choice 正在重定向到Logger信息,只是为了知道它在做什么。 我不知道如何在when条件中设置表达式,以检查 arg0 是否具有值 choosePath1

我将不胜感激, 提前致谢

1 个答案:

答案 0 :(得分:0)

检查此帖子,根据转换后的xml编写xpath表达式。 Mule 3.4.0 Choice router based on presence of a node in payload using Xpath

还要检查如何在mule文档上构建xml xpath

https://docs.mulesoft.com/mule-user-guide/v/3.8/xpath