0

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

  1. 发送带有身份验证请求和信息请求的请求
  2. 进行身份验证请求 - 如果通过则继续,失败时 401
  3. 做信息请求 - 获取信息
  4. 返回信息

如果你有一个我可以关注的样本或指向我的数百个 WSO2 中的一个,我只是无法从他们那里得到太多。配置的 XML 源示例也可以工作。感谢您的帮助,感谢我对 WSO2 术语和工作流程的无知。

4

2 回答 2

0

您可以查看filter mediator以根据条件过滤消息​​ Entitlement Mediator您可以在此处找到示例作为参考,这将对您的用例有所帮助。

于 2012-09-14T02:04:31.580 回答
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>
于 2012-09-25T21:46:32.427 回答