メイン・メッセージ・フローの作成

WebSphere Service Registry and Repository (WSRR) Connectivity サンプルのメイン・メッセージ・フローが提供されていますが、 メッセージ・フローを独自に作成したい場合は、次のようにします。

  1. Web Services メッセージ・フローの作成時に作成した My WSRR Connectivity Message Flows というメッセージ・ブローカー・プロジェクト内に、 WSRR_Connectivity.msgflow というメッセージ・フローを新規作成します。
    手順については、WebSphere Message Broker 資料の メッセージ・フローの作成を参照してください。
  2. メッセージ・フロー・エディターで、次の表にリストされているノードを追加して名前変更します。
    手順については、WebSphere Message Broker 資料の メッセージ・フロー・ノードの追加を参照してください。
    パレット・ドロワー ノード・タイプ ノード名
    WebSphere MQ MQInput WSRR_IN
    Transformation Compute SetVersion
    WebServices EndpointLookup Endpoint Lookup One
    WebServices SOAPRequest SOAP Request
    Transformation Compute InformFailure
    Transformation Compute InformWSResult
    Transformation Compute InformNoMatch
    WebSphere MQ MQOutput WSRR_OUT
  3. 次の表に示されているように、ノードを接続します。
    手順については、WebSphere Message Broker 資料の メッセージ・フロー・ノードの接続を参照してください。
    ノードを正しく相互接続したことを確認するには、WebSphere Service Registry and Repository Connectivity サンプルについての図を参照してください。
    ノード名 ターミナル 接続先のノード
    WSRR_IN Out SetVersion
    SetVersion Out Endpoint Lookup One
    Endpoint Lookup One Out SOAP Request
    Failure InformFailure
    NoMatch InformNoMatch
    SOAP Request Out InformWSResult
    FaultWSRR_OUT
    InformFailure Out WSRR_OUT
    InformWSResult Out WSRR_OUT
    InformNoMatch Out WSRR_OUT
  4. 次の表に示されているように、ノードのプロパティーを構成します。 この表に代替値が示されていなければ、すべてのプロパティーに関してデフォルト値を受け入れます。
    手順については、WebSphere Message Broker 資料の メッセージ・フロー・ノードの構成を参照してください。
    ノード名 ページ プロパティー
    WSRR_IN 基本 キュー名 WSRR_IN
    入力メッセージ構文解析 メッセージ・ドメイン XMLNSC : XML メッセージの場合
    SetVersion 基本 Compute モード ローカル環境およびメッセージ
    Endpoint Lookup One 基本 ポート・タイプ名 DemoCustomer
    ポート・タイプ・ネーム・スペース http://demo.sr.eis.ibm.com
    ポート・タイプ・バージョン 1.0
    SOAP Request 基本 WSDL ファイル名 以前 WSRR Connectivity メッセージ・セットにインポートされた DemoCustomer_v10.wsdl ファイルを参照します。
    このファイルが選択されると、「基本」ページのその他のプロパティーに値が設定されます。
    バインディング操作 このプロパティーを updateCustomer に設定します。
    HTTP トランスポート Web サービス URL 任意の値、例えば、http://dummy などを入力します。
    実行時にこのプロパティーは、WebSphere Service Registry and Repository から取得した WSDL 文書に固有の Web サービス URL でオーバーライドされます。
    WSRR_OUT 基本 キュー名 WSRR_OUT
  5. SetVersion ノードをダブルクリックして、ESQL エディターを開きます。以下の ESQL コード・モジュールを ESQL ファイルにコピー、および貼り付けし、ファイルを保存します。
    詳しくは、WebSphere Message Broker 資料の ESQL の開発を参照してください。
    DECLARE soapenv NAMESPACE 'http://schemas.xmlsoap.org/soap/envelope/';
    
    CREATE COMPUTE MODULE WSRR_Connectivity_SetVersion
      CREATE FUNCTION Main() RETURNS BOOLEAN
        BEGIN
          -- Set the LE to the over-rides specified in the input data
          -- Note if the input message does not contain a Version tag, the LE will not be written
          SET OutputLocalEnvironment.ServiceRegistryLookupProperties.Version = InputRoot.XMLNSC.soapenv:Envelope.soapenv:Body.Request.Version;
    
          -- Store the MQMD to rebuild after HTTP Response node
          SET Environment.MQMD = InputRoot.MQMD;		
    
          CALL CopyEntireMessage();
          RETURN TRUE;
        END;
    
      CREATE PROCEDURE CopyEntireMessage() BEGIN
        SET OutputRoot = InputRoot;
      END;
    END MODULE;
    
    
    CREATE COMPUTE MODULE WSRR_Connectivity_InformWSResult
      CREATE FUNCTION Main() RETURNS BOOLEAN
      BEGIN
        CALL CopyEntireMessage();
        -- The response from the WebService contains a HTTP Header
        -- Remove the HTTP header and create a MQMD header in order to propagate the message to a MQ output node
        SET OutputRoot.HTTPResponseHeader = NULL;
        CREATE NEXTSIBLING OF OutputRoot.Properties DOMAIN 'MQMD';
        -- Retrieve the MQMD that was stored earlier
        SET OutputRoot.MQMD = Environment.MQMD;
        
        RETURN TRUE;
      END;
    
      CREATE PROCEDURE CopyEntireMessage() BEGIN
        SET OutputRoot = InputRoot;
      END;
    
    END MODULE;
    CREATE COMPUTE MODULE WSRR_Connectivity_InformNoMatch
      CREATE FUNCTION Main() RETURNS BOOLEAN
      BEGIN
        CALL CopyMessageHeaders();
        CREATE LASTCHILD OF OutputRoot DOMAIN 'XMLNSC';
        SET OutputRoot.XMLNSC.(XMLNSC.XmlDeclaration)*.(XMLNSC.Attribute)Version = '1.0';
        SET OutputRoot.XMLNSC.(XMLNSC.XmlDeclaration)*.(XMLNSC.Attribute)Encoding = 'UTF-8';
    		
        CREATE LASTCHILD OF OutputRoot.XMLNSC NAME 'LookupResults';
        SET OutputRoot.XMLNSC.LookupResults.WSRR_Request = InputRoot.XMLNSC.WSRR_Request;
        SET OutputRoot.XMLNSC.LookupResults.ServiceRegistry = 'No matching services!';
    
        RETURN TRUE;
      END;
    
      CREATE PROCEDURE CopyMessageHeaders() BEGIN
        DECLARE I INTEGER 1;
        DECLARE J INTEGER;
        SET J = CARDINALITY(InputRoot.*[]);
        WHILE I < J DO
          SET OutputRoot.*[I] = InputRoot.*[I];
          SET I = I + 1;
        END WHILE;
      END;
    
    END MODULE;
    CREATE COMPUTE MODULE WSRR_Connectivity_InformFailure
      CREATE FUNCTION Main() RETURNS BOOLEAN
      BEGIN
        CALL CopyMessageHeaders();
        CREATE LASTCHILD OF OutputRoot DOMAIN 'XMLNSC';
        SET OutputRoot.XMLNSC.(XMLNSC.XmlDeclaration)*.(XMLNSC.Attribute)Version = '1.0';
        SET OutputRoot.XMLNSC.(XMLNSC.XmlDeclaration)*.(XMLNSC.Attribute)Encoding = 'UTF-8';
    		
        CREATE LASTCHILD OF OutputRoot.XMLNSC NAME 'LookupResults';
        SET OutputRoot.XMLNSC.LookupResults.WSRR_Request = InputRoot.XMLNSC.WSRR_Request;
        SET OutputRoot.XMLNSC.LookupResults.ServiceRegistry = 'Failure to retrieve Service from WSRR!';
        SET OutputRoot.XMLNSC.LookupResults.Exception = InputExceptionList;		
    		
        RETURN TRUE;
      END;
    
      CREATE PROCEDURE CopyMessageHeaders() BEGIN
        DECLARE I INTEGER 1;
        DECLARE J INTEGER;
        SET J = CARDINALITY(InputRoot.*[]);
        WHILE I < J DO
          SET OutputRoot.*[I] = InputRoot.*[I];
          SET I = I + 1;
        END WHILE;
      END;
    
    END MODULE;
    
    
  6. ESQL ファイルを保存します。
  7. SetVersion ノードの「ESQL モジュール」プロパティーが WSRR_Connectivity_SetVersion モジュールを指していることを確認します。
  8. 以下のノードについても前述の手順を繰り返し、ESQL ファイル内の「ESQL モジュール」プロパティーに、対応するモジュールを設定します。
  9. メッセージ・フローを保存します。

これでキューを作成してフローを実行できます。詳しくは、キューの作成を参照してください。

WebSphere Service Registry and Repository Connectivity サンプルの作成に戻る