ビジネス・プロセスとサービスの間のデータ交換

ビジネス・プロセスがサービス・コンポーネント・アーキテクチャー (SCA) サービスを消費したり、ビジネス・プロセスが他の SCA サービスによって消費されたりすることができます。 Web サービス記述言語 (WSDL) メッセージ・データが SCA サービスとプロセスの間で交換される方法は、プロセスがどのようにモデル化されたかによって異なります。

ビジネス・プロセスがサービスを消費する

ビジネス・プロセスでのサービスの消費は、プロセス・モデルの Business Process Execution Language (BPEL) invoke アクティビティーを使用してインプリメントされます。 SCA サービスに渡されるデータは、1 つ以上の BPEL 変数から検索されます。 通常、データは値によって受け渡されます。これは、呼び出されたサービスがデータのコピーを処理することを意味します。

特定の環境では、データを参照によって受け渡すことができます。 参照によるデータの受け渡しにより、ビジネス・プロセスのパフォーマンスを改善することができます。

以下の条件がすべて満たされる場合、データは参照によってビジネス・プロセスに受け渡されます。
  • サービスの呼び出しが同期である。
  • BPEL プロセスと呼び出されるサービスが同じモジュールにある。
  • データが以下のいずれかの方法で交換される。
    • 1 つ以上の BPEL 変数が XML スキーマ・タイプまたはエレメントを使用して宣言される。 WSDL メッセージ部分は、サービスの呼び出しと変数の間で個々にマップされます。
      <variable name="inputPart1Var" type="ws:inputPart1Type">
      <variable name="inputPart2Var" type="ws:inputPart2Type">

      Web サービス・アクティビティーは、パラメーターの拡張を使用して、BPEL 変数を参照します。 SCA 対話では、WSDL は参照によって受け渡されるデータのラッパーとして扱われます。

      <invoke ....>
        <wpc:input>
          <wpc:parameter name="ws:inputPart1" variable="inputPart1Var"/>
          <wpc:parameter name="ws:inputPart2" variable="inputPart2Var"/>
          ...
        </wpc:input>
      </invoke ....>
    • 1 つ以上の BPEL 変数が XML スキーマ・タイプまたはエレメントを使用して宣言される。 Web サービス対話は、文書リテラルのラップされたスタイルに準拠します。パラメーター・エレメントはラッパー文書と変数の間でマップされます。
      <variable name="inputParm1Var" type="ws:inputParm1ElemType">
      <variable name="inputParm2Var" type="ws:inputParm2ElemType">

      Web サービス・アクティビティーは、パラメーターの拡張を使用して、BPEL 変数を参照します。 これが、WebSphere Integration Developer で作成されるプロセスのデフォルトの振る舞いです。 SCA 対話では、ラッパーは参照によって受け渡されるパラメーターを保持します。

      <invoke ....>
        <wpc:input>
          <wpc:parameter name="ws:inputParm1" variable="inputParm1Var"/>
          <wpc:parameter name="ws:inputParm2" variable="inputParm2Var"/>
          ...
        </wpc:input>
      </invoke ....>

呼び出されたサービスがデータを変更する場合、これらの変更は対応する BPEL 変数に適用されます。ただし、最良実例として、呼び出されたサービスはデータを更新すべきではありません。 その理由は、データに対して行われる変更は永続的ではないからです。 長期間のプロセスの場合、現行のトランザクションがコミットすると変更は破棄され、microflow の場合、プロセスが終了すると変更が破棄されます。 さらに、呼び出されたサービスによって変数が更新されると、イベントは生成されません。

ビジネス・プロセスがサービスによって消費される

他のサービスによって消費されるビジネス・プロセスでは、プロセス・モデル内に、receive アクティビティー、pick アクティビティー、またはイベント・ハンドラーが含まれています。 プロセスに受け渡されるデータは 1 つ以上の BPEL 変数に書き込まれます。 通常、データは値によって受け渡されます。これは、プロセスがデータのコピーを処理することを意味します。

ただし、以下の条件がすべて満たされる場合、データは参照によって受け渡されます。
  • ビジネス・プロセスの起動が同期である。
  • サービスと起動されるビジネス・プロセスが同じモジュールにある。
  • データが以下のいずれかの方法で交換される。
    • 1 つ以上の BPEL 変数が XML スキーマ・タイプまたはエレメントを使用して宣言される。 WSDL メッセージ部分は、サービスの呼び出しと変数の間で個々にマップされます。
      <variable name="outputPart1Var" type="ws:outputPart1Type">
      <variable name="outputPart2Var" type="ws:outputPart2Type">

      アクティビティーは、パラメーターの拡張を使用して、BPEL 変数を参照します。 SCA 対話では、WSDL は参照によって受け渡されるデータのラッパーとして扱われます。 receive アクティビティーの場合、対応する BPEL 断片は、以下の例のようになります。

      <receive ....>
        <wpc:output>
          <wpc:parameter name="ws:outputPart1" variable="outputPart1Var"/>
          <wpc:parameter name="ws:outputPart2" variable="outputPart2Var"/>
          ...
        </wpc:output>
      </receive ....>
    • 1 つ以上の BPEL 変数が XML スキーマ・タイプまたはエレメントを使用して宣言される。 Web サービス対話は、文書リテラルのラップされたスタイルに準拠します。パラメーター・エレメントはラッパー文書と変数の間でマップされます。
      <variable name="outputParm1Var" type="ws:outputParm1ElemType">
      <variable name="outputParm2Var" type="ws:outputParm2ElemType">

      アクティビティーは、パラメーターの拡張を使用して、BPEL 変数を参照します。 これが、WebSphere Integration Developer で作成されるプロセスのデフォルトの振る舞いです。 SCA 対話では、ラッパーは参照によって受け渡されるパラメーターを保持します。 receive アクティビティーの場合、対応する BPEL 断片は、以下の例のようになります。

      <receive ....>
        <wpc:output>
          <wpc:parameter name="ws:outputParm1" variable="outputParm1Var"/>
          <wpc:parameter name="ws:outputParm2" variable="outputParm2Var"/>
          ...
        </wpc:output>
      </receive ....>

起動されたプロセスが BPEL 変数を変更する場合、呼び出しサービスからの入力データも変更されます。


(c) Copyright IBM Corporation 2005, 2006. All rights reserved.
(c) Copyright IBM Japan 2006
このインフォメーション・センターでは、Eclipse テクノロジー (http://www.eclipse.org) が採用されています。