WSO2 ESB If Then Else,验证或错误

时间:2012-09-13 14:37:24

标签: wso2 wso2esb synapse

这可能是一个基本问题,我只是习惯了WSO2术语。我有两个服务,我可以使用WSDL独立部署并传递正确的SOAP请求,并相应地返回信息。现在我想将它们组合成一个'If then,else'语句。这将按照我认为的某种顺序设置,但不确定如何使用过滤器。

  1. 使用身份验证请求和信息请求发送请求
  2. 执行身份验证请求 - 如果通过则继续,401失败
  3. 请求信息 - 获取信息
  4. 返回信息
  5. 如果你有一个我可以跟随的样本或者指向WSO2的数百个中的一个,我只是无法从中获取太多。配置的XML源代码示例也可以。感谢您的帮助,以及我对WSO2术语和工作流程的无知。

2 个答案:

答案 0 :(得分:0)

您可以查看filter mediator根据条件Entitlement Mediator过滤邮件。您可以找到样本here作为参考,这对您的用例很有帮助。

答案 1 :(得分:0)

所以我最终得到了与此类似的东西。如果有人在路上遇到这个并寻找wso2配置。

  <proxy name="name"
          transports="https http"
          startOnLoad="true"
          trace="disable">
      <description/>
      <target>
         <inSequence>
            <property xmlns:ns1="ns1"
                      xmlns:ns="ns"
                      name="userID"
                      expression="//ns:AuthenticateRequest/ns:Credentials/ns1:userID"
                      scope="default"
                      type="STRING"/>
            <property xmlns:ns1="ns1"
                      xmlns:ns="ns1"
                      name="password"
                      expression="//ns:AuthenticateRequest/ns:Credentials/ns1:password"
                      scope="default"
                      type="STRING"/>

            <log>
               <property name="userID" expression="get-property('userID')"/>
               <property name="password" expression="get-property('password')"/>
            </log>
            <header name="Action"
                    value="http://services.com:port/AuthenticateSecureCredential"/>
            <send receive="AuthRecvSequence">
               <endpoint>
                  <address uri="http://server.com:port/DefaultAuthenticationService"/>
               </endpoint>
            </send>
         </inSequence>
      </target>
   </proxy>


   <sequence name="AuthRecvSequence">
      <filter xmlns:ns="ns"
              source="//ns:AuthenticateSecureCredentialResponse/ns:isAuthenticated"
              regex="false">
         <then>
            <makefault version="soap11">
               <code xmlns:soap11Env="http://schemas.xmlsoap.org/soap/envelope/"
                     value="soap11Env:VersionMismatch"/>
               <reason value="Not Authenticated"/>
               <role/>
            </makefault>
            <header name="To" action="remove"/>
            <property name="RESPONSE" value="true" scope="default" type="STRING"/>
            <send/>
            <drop/>
         </then>
         <else>
            <payloadFactory>
               <format>
                  <ns:INFO xmlns:ns="ns"
                                    xmlns:ns1="ns1">
                     <ns:secureCredentials>
                        <ns1:userID>$1</ns1:userID>
                        <ns1:password>$2</ns1:password>
                     </ns:secureCredentials>
                  </ns:INFORequest>
               </format>
               <args>
                  <arg expression="get-property('userID')"/>
                  <arg expression="get-property('password')"/>
               </args>
            </payloadFactory>
            <header name="Action"
                    value="http://services.com/GetINFO"/>
            <send receive="INFOrRecvSeq">
               <endpoint>
                  <address uri="http://server:port/INFOService"/>
               </endpoint>
            </send>
         </else>
      </filter>
   </sequence>

   <sequence name="INFORecvSeq">
      <send/>
   </sequence>
   <sequence name="main">
      <description>The main sequence for the message mediation</description>
   </sequence>