3

非同期 Web サービスを呼び出してコールバック応答を待機する WS-BPEL ワークフローを作成しました。カーボン アプリケーションは、BPS にも正常に展開されています。

外部非同期 Web サービスの詳細
1. http での基本認証が必要です。
2. 石鹸の封筒に石鹸ヘッダーが入っている必要があります。
3. 要求を処理し、soap ヘッダーで受信したReplyToアドレスにコールバックを送信し、 MessageIDを使用してコールバックを関連付けます。

BPEL プロセスのdeploy.xmlファイルは次のようになります...

<?xml version="1.0" encoding="UTF-8"?>  
<deploy xmlns="http://www.apache.org/ode/schemas/dd/2007/03" 
    xmlns:callback.integration.service="http://callback.integration.service/"
    xmlns:epr="http://wso2.org/bps/bpel/endpoint/config" 
    xmlns:sample="http://wso2.org/bps/sample" 
    xmlns:ws.integration.service="http://ws.integration.service/">
   <process name="sample:Test">
      <active>true</active>
      <retired>false</retired>
      <process-events generate="all"/>
      <provide partnerLink="client">
         <service name="sample:Test" port="TestPort"/>
      </provide>
      <provide partnerLink="IntegrationService">
         <service name="callback.integration.service:IntegrationCallback" port="IntegrationResponsePort"/>
      </provide>
      <invoke partnerLink="IntegrationService">
         <service name="ws.integration.service:IntegrationService" port="IntegrationRequestPort">
            <epr:endpoint endpointReference="IntegrationService.epr"/>
         </service>
      </invoke>
   </process>
</deploy>  

IntegrationService.eprファイルは次のようになります...

<wsa:EndpointReference
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.w3schools.com uep_schema.xsd"
        xmlns:wsa="http://www.w3.org/2005/08/addressing"
        xmlns:wsdl11="http://schemas.xmlsoap.org/wsdl/">
   <wsa:Address>http://http://server:8080/integration/IntegrationService</wsa:Address>
   <wsa:Metadata>
      <id>SInvokeEPR</id>
      <qos>
         <enableAddressing />
      </qos>
      <transport type="http">
         <authorization-username>username</authorization-username>
         <authorization-password>password</authorization-password>
      </transport>
   </wsa:Metadata>
</wsa:EndpointReference>  

今、カーボン サービス管理コンソールから bpel プロセスをテストすると、非同期 Web サービスへの要求を受け取ります。ただし、soap エンベロープは次のように見え、コールバックを送信するための適切なReplyToアドレスがありません。

<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
        <wsa:To>http://server:8080/integration/IntegrationService</wsa:To>
        <wsa:ReplyTo>
            <wsa:Address>http://www.w3.org/2005/08/addressing/none</wsa:Address>
        </wsa:ReplyTo>
        <wsa:MessageID>urn:uuid:91ac4ebd-b100-440e-a01d-c4a5c0d8a56f</wsa:MessageID>
        <wsa:Action>http://ws.integration.service/IntegrationRequestPortType/createTask</wsa:Action>
    </soapenv:Header>
    <soapenv:Body>  
       ...
    </soapenv:Body>
</soapenv:Envelope>  

ここで、このリクエストにコールバックで返信する必要があります。コールバック SOAP エンベロープには、コールバックが正しいプロセス インスタンスと関連付けられるように、このMessageIDが含まれます。

SOAPヘッダーに追加された適切なReplyToアドレスを取得するにはどうすればよいですか?

4

1 に答える 1