如何在WSO2 esb的代理服务中调用wsdl中存在的多个操作

时间:2014-03-04 05:57:09

标签: wsdl wso2esb

我有一个由几个操作组成的wsdl。 我使用该wsdl创建了一个代理服务,并希望公开wsdl中的操作。

我们可以在代理服务中定义特定于操作的流程吗?

更准确地说,在Oracle Service Bus中,它具有分支的概念,我们可以在WSO2 esb代理中实现相同的功能吗?

1 个答案:

答案 0 :(得分:0)

您可以根据操作使用过滤器或开关介体来应用中介:查看SOAP Body中的第一个节点,或者如果已初始化,请查看SOAP Action。

基于消息内容的示例(假设这是SOAP 11消息):

<switch xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" source="local-name(soap:Body/*[1])">
  <case regex="operation1">
    <log level="custom">
      <property name="operation" value="operation1"/>
    </log>
  </case>
  <case regex="operation2">
    <log level="custom">
      <property name="operation" value="operation2"/>
    </log>
  </case>
  <default/>
</switch>

<filter xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" source="local-name(soap:Body/*[1])" regex="postCustomer">
  <then>
    <log level="custom">
      <property name="operation" value="operation1"/>
    </log>
  </then>
  <else>
    <log level="custom">
      <property name="operation" value="not operation1"/>
    </log>
  </else>
</filter>