プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle SOA SuiteでのSOAアプリケーションの開発
12c (12.2.1)
E67372-02
目次へ移動
目次

前
次

39 Oracle SOA Suiteテンプレートおよび再利用可能なサブプロセス

この章では、SOAプロジェクト、サービス・コンポーネントおよびBPELスコープ・アクティビティでのOracle SOA Suiteテンプレートの作成および使用方法、およびその他のプロセス内のスタンドアロンおよびインラインBPELサブプロセスの作成および再使用方法について説明します。

この章の内容は次のとおりです。

39.1 Oracle SOA Suiteテンプレートの概要

テンプレートとは、Oracle SOA Suiteプロジェクトの再利用可能な部分で、新規プロジェクトの作成に使用できます。表39-1 に示すように、テンプレートには3種類あります。


表39-1 テンプレート・タイプ

テンプレート・タイプ 説明

SOAプロジェクト

SOAプロジェクトがすべてパッケージされ、新規プロジェクトの開始に使用されます。このテンプレートを使用して、新規SOAコンポジット・アプリケーションを作成できます。

サービス・コンポーネント

BPEL 2.0プロセス(センサーを含む)など、他のプロジェクトへのインポート用にパッケージされたサービス・コンポーネントです。すべての依存コンポーネントおよび接続もパッケージされます。SOAコンポジット・アプリケーションの「コンポーネント」ウィンドウに、カスタム・サービス・コンポーネントとして表示されます。

カスタムBPELスコープ・アクティビティ

「コンポーネント」ウィンドウでカスタム・アクティビティとしてパッケージされ、他のBPELプロジェクトにインポートできる、BPELプロセスのスコープ・アクティビティです。このカスタム・アクティビティは、「コンポーネント」ウィンドウのBPELアクティビティ・パレットに表示できる可能性があります。


Oracle SOA Suiteテンプレートには、次の利点があります。

  • アプリケーション、コンポジットおよびプロセス間で共通のコード(プロセスまたはスコープのサブパート)を共有します。一度作成すれば、他と共有できます。テンプレートは、何度も再使用できます。

  • Oracle Metadata Servicesリポジトリ(MDSリポジトリ)からテンプレートを保存および再使用します。

  • 消費時にすべて編集できます。

  • Oracle JDeveloperでテンプレートを自動的に検出します。テンプレートは保存されると、「コンポーネント」ウィンドウに表示されます。

  • 継承はありません。つまり、将来的にソース・テンプレートを変更しても、アプリケーションには表示されません。ソース・テンプレートを変更しても、テンプレートの現在のユーザーには変更されたことがわかりません。

  • コンポーネント・スコープ・テンプレートにカスタム・アイコンが用意されます。

  • テンプレートのバージョニングはありません。バージョン間の区別をするには、テンプレート名でバージョン番号を指定します。

  • BPELバージョン1.1および2.0の両方のテンプレートをサポートします。

特定のテンプレートに対する変更は、以前にそのテンプレートを使用して作成されたプロジェクトには伝播されません。この機能は、レイヤー・カスタマイズで実現できます。

新しい注釈がコンポジット/BPELプロセスに追加され、テンプレートのリレーションシップが識別されます。

テンプレート使用の詳細は、「SOAプロジェクト・テンプレートの作成および使用」「サービス・コンポーネント・テンプレートの作成および使用」および「BPELスコープ・アクティビティ・テンプレートの作成および使用」を参照してください。

39.2 スタンドアロンおよびインラインBPELサブプロセスの起動の概要

BPELでは、ビジネス・プロセス・ロジックを再利用可能にするモジュール化を制限付きでサポートします。ただ1つの方法は、再利用可能なプロセス・ロジックを完全に独立したプロセスとしてパッケージ化することで、このプロセスを、(起動アクティビティを介して)Webサービスで使用するのと同一のメソッドの親プロセス(再利用可能なプロセス・ロジックを使用するプロセス)で使用します。

この問題に対応するため、Oracle SOA Suiteでは、BPELにサブプロセスの拡張機能を提供しています。サブプロセスは、別個のプロセスが特定のプロセッサ内で再利用できるBPELコードのフラグメントです。このサブプロセス拡張機能には、次の利点があります。

  • BPELプロセス・コードを再使用できることで、同じタスクを実行するために、同じアクティビティを何度も作成する必要がなくなります。

  • コードのモジュール性。

  • コードのメンテナンス(変更内容の伝播により、変更が必要になるたびに複数の場所に更新を実装する必要がなくなります)。

  • 起動アクティビティよりオーバーヘッドが減少します。

  • メモリー・フットプリントが減少します。メモリー・フットプリントは、複雑なプロセスでは大量となる場合があります。

注意:

  • サブプロセスは、BPELバージョン2.0でのみサポートされます。BPELバージョン1.1ではサポートされません。

  • 相関セットは、サブプロセスではサポートされません。インラインまたはスタンドアロン・サブプロセスで相関セットを作成すると、実行時に失敗します。

  • サブプロセスを複数のコンポジットで共有することはできません。

  • 「監視」ビューは、サブプロセス内ではサポートされていません。「監視」ビューは、Oracle BPELデザイナ上部の「監視ビューに変更」アイコンを選択することで、BPELプロセスからアクセスできます。

表39-2 に示すように、Oracle SOA Suiteでは2種類のサブプロセスをサポートします。


表39-2 サブプロセス・タイプ

スタンドアロン・サブプロセス インライン・サブプロセス
  • BPELコール・アクティビティがサブプロセスを起動します。

  • BPELコール・アクティビティがサブプロセスを起動します。

  • 同じコンポジット内のサブプロセスのみサポートします。

  • 親BPELプロセス・コードの一部で、コンポジット・ビューには表示されません。

  • 「コンポーネント」ウィンドウに表示されます。

  • 「コンポーネント」ウィンドウに表示されます。

  • インタフェースがなく、別のBPELプロセスからのみ呼び出すことができます。パートナ・リンクを含めることができます。

  • サブプロセス・コードは実行時に再入可能かつ再利用可能です。何度も呼び出される場合でも、メモリーに保存できるコピーは1つのみです。

  • 他のBPELプロセス間で再使用されるアクティビティが多数含まれるBPELプロセスの断片です。

  • 1つのBPELプロセス内で再使用されるアクティビティのグループ用です。

  • コンポジット・ビューでは、サブプロセスへの接続が点線で表示され、実際のコンポーネント間の接続でないことを示します。

  • 設定するパラメータを定義するか、またはプロセス・パラメータを使用できます。

  • アクティビティは、サブプロセスに変換されるスコープ・アクティビティ内に存在する必要があります。

スタンドアロン・サブプロセスの作成の詳細は、「スタンドアロンBPELサブプロセスの作成方法」を参照してください。

インライン・サブプロセスの作成の詳細は、「インライン・サブプロセスの作成方法」を参照してください。


39.2.1 スタンドアロン・サブプロセスの概要

スタンドアロン・サブプロセスは、次の例に示すように、拡張子が.sbpel (サブプロセスBPEL拡張子)のファイルで定義されます。

<!-- A subprocess is defined in a SBPEL file, containing a bpelx:subProcess
 ! document
 ! The bpelx:subProcess is similar to a standard bpel:process, with
 ! differences asnoted below.
-->

<bpelx:subProcess name="NCName" targetNamespace="anyURI"
   xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
   xmlns:bpelx="http://schemas.oracle.com/bpel/extension" ...>

   <!-- Partner links and variables serve as sub-process arguments -->
   <partnerLinks>?
      <partnerLink name="NCName" partnerLinkType="QName" myRole="NCName"?
         partnerRole="NCName"?
         bpelx:argumentRequired=["yes"|"no"]? />
   <partnerLinks>
   <variables>?
      <variable name="BPELVariableName"  messageType="QName"? type="QName"?
         element="QName"?
         bpelx:argumentRequired=["yes"|"no"]?>
         from-spec?
      </variable>
   </variables>

  <!-- Standard process definition here, except no <receive> or <pick> with -->
  <!--  createInstance="yes" -->
  /activity/
</bpelx:subProcess>

<subProcess>要素は、WS-BPEL 2.0言語の拡張機能です。<subProcess>要素は、サブプロセス定義のルート要素です。この要素のネームスペースは次のとおりです。

http://schemas.oracle.com/bpel/extension

の第10.9項に指定されているとおり、<subProcess>アクティビティは<extensionActivity>に埋め込まれている必要があります。

次のWS-BPELターゲット・ネームスペースで定義されているように、サブプロセスのタイプはtProcessです。

http://docs.oasis-open.org/wsbpel/2.0/process/executable

これは、次の点でtProcessとは異なります。

  • <subProcess>要素直下の変数およびパートナ・リンクは、サブプロセスの引数として機能します。属性argumentRequiredyes (デフォルト値はno)に設定することにより、必要な引数にマークが付きます。サブプロセスに必要な引数は、コール元が渡す必要がある引数の最小セットです。

  • インラインfrom-specイニシャライザで定義される変数は、デフォルト値を持つオプションの引数として機能します。コール元がこの引数を渡すと、コール元が引数に指定した値がデフォルト値をオーバーライドします。

  • 値を設定する前に変数が参照された場合、必要な引数でないと、検証でエラーがレポートされます。

  • サブプロセスの最初のアクティビティは、createInstanceyesに設定したreceiveアクティビティまたはpickアクティビティにできません。これは、指定されたサブプロセス・タイプにはインスタンスが作成されず、論理的にはこのサブプロセスが既存のプロセス・インスタンスの一部となるためです。

サブプロセスの/@name属性は、デプロイされたコンポジット内で一意のサブプロセス名を定義します。

このサブプロセスは自己完結型です。つまり、すべての変数およびパートナ・リンクが、ローカル定義または引数に解決されるプロセス・スニペットで参照します。これは、コール・アクティビティで適用範囲内の変数およびパートナ・リンクへの未解決の参照が可能な<inlineSubProcess>要素とは異なります。

通常は、親とサブプロセスの間で複数の変数が交換されます。大容量のドキュメントの場合、コピーすると負荷が高くなります。このため、参照渡しはオプションになります。

サブプロセスはパートナと同期式(InOut)または非同期式(InOnly)で対話できます。これらの相互作用のパートナ・リンクは、親プロセスの引数として渡すか、サブプロセス内で構成できます。非同期リクエストの場合、WSアドレス/正規化されたメッセージの対話IDを親プロセス・インスタンスIDで設定します。これにより、正しいプロセス・インスタンスにコールバック・メッセージをルーティングできます。

SOAコンポジット・アプリケーションのサブプロセスはcomposite.xmlファイルに列挙されます。コンポーネント要素定義は、定義されたsbpelファイルにそのサブプロセス名を関連付けます。デプロイ中にサブプロセス・コンポーネントはBPELプロセス・サービス・エンジンに委任されます。このBPELプロセス・サービス・エンジンはプロセス定義を検証し、サブプロセス・ターゲット名をキーとし、サブプロセス定義を値とするマップを構築します。コンシューマ・カウントから独立したサービス・エンジンに存在するサブプロセスのインスタンスは、多くて1つのみです。メモリーの最適化のため、プロセスはアクティブに使用されていない場合、遅延ロードまたはアンロードされる場合があります。

スタンドアロン・サブプロセスの作成の詳細は、「スタンドアロンBPELサブプロセスの作成方法」を参照してください。

39.2.2 インライン・サブプロセスの概要

インライン・サブプロセスは<process>レベルのBPEL 2.0プロセスの一部として定義できます。構文を次の例に示します。

<process name="NCName" targetNamespace="anyURI" 
         xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable" ...>
    <!--
     ! All sub-process definitions must appear prior to the WS-BPEL artifacts of
     ! the process definition.
    -->

    <!-- Inline sub-process definition at process scope -->
    <bpelx:inlineSubProcess xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
      name="NCName">*
      ...
      <!-- Partner links and variables serve as sub-process arguments -->
      <partnerLinks>?
        <partnerLink name="NCName" partnerLinkType="QName" myRole="NCName"?
          partnerRole="NCName"?
      bpelx:argumentRequired=["yes"|"no"]? />+
      <partnerLinks>
      ...
      <variables>?
        <variable name="BPELVariableName"  messageType="QName"? type="QName"?
          element="QName"?
                  bpelx:argumentRequired=["yes"|"no"]?>+
          from-spec?
        </variable>
      </variables>
      ...
      <!--
       ! Standard process activity graph here, except that no <receive> or <pick>
       ! activities with createInstance = "yes" are allowed.
      -->
      activity 
    </bpelx:inlineSubprocess>

    <!--
     ! BPEL code stripped for brevity
    -->
</process>

BPELプロセス・インスタンスの最初の作成時には、すべてのサブプロセス参照が解決されます。このプロセスが特定のコール・アクティビティを実行する際は、インスタンスの作成時に解決済のサブプロセスが使用されます。したがって、たとえばサブプロセスのデフォルトのコンポジット・リビジョンが変更された場合など、同じプロセス内の2つの別のインスタンスが、別のバージョンの参照済サブプロセスを使用する可能性があります。

BPELプロセス・インスタンスがコール・アクティビティを実行する際は、プロセスの実行スペース内で実行され、状態を共有します。コール・アクティビティではコントロールをサブプロセスに送信し、その際、サブプロセス・スコープが次の引数の値で初期化されます。

  • 各パラメータは、コール・アクティビティからサブプロセスのスコープに(指定に応じて参照または値により)コピーされます。

  • コール・アクティビティのパラメータ・リストで参照されないオプションのパラメータ(デフォルト値で設定)は、デフォルト値で初期化されます。

  • 必要なすべてのパラメータが、コール・アクティビティによって指定される必要があります。

  • コール・アクティビティのパラメータによって指定されたすべての値は、サブプロセスで定義された対応する変数(またはパートナ・リンク)と互換性のあるタイプである必要があります。

  • サブプロセスの各変数(またはパートナ・リンク)は、コール・アクティビティのパラメータ・リストで1回のみ設定できます。

サブプロセスの完了時に、コントロールが親プロセスに返されます。通常は、コール・アクティビティの後、引き続き次のアクティビティが実行されます。サブプロセスが正常に完了しなかった場合は、WS-BPELの標準ライフ・サイクル・ルールに従って、親プロセスがこのプロセスを進めます。

サブプロセスの新規プロセス・インスタンスは、監視および管理ビューからは作成できません。親プロセス・インスタンスのコール・アクティビティで表されます。アクティビティを開く(移動する)と、サブプロセスの実行の詳細が表示されます。

実行時のリンク・エラーを最小限にするため、プロセスおよびサブプロセスのデプロイの際は、参照が解決されます。パラメータ・リストはデプロイ後のアクティビティとして検証されます。新規プロセス・インスタンスの作成の前処理では、プロセスのすべてのサブプロセス参照を検証します。解決されない参照がある場合、そのインスタンスは作成されません。かわりに、基本的に次のような意味のエラー・メッセージが返されます。

HTTP Status Code 503, "service not available

リンク・エラーがあると、サービス・コンシューマが待機中の場合、終了アクティビティ処理が行内に含まれたエラー・メッセージがコンシューマに送信されます。それ以外の場合、インスタンスは一時停止され、理由がlinkage errorに設定されます。適切なサブプロセスがデプロイされて参照が解決可能な場合は、一時停止されたインスタンスをリカバリして、自動リカバリにより通常実行を再開できます。

インライン・サブプロセスの作成の詳細は、「インライン・サブプロセスの作成方法」を参照してください。

39.3 Oracle SOA Suiteテンプレートと再利用可能なサブプロセスの違い

自社のビジネスで使用するには、テンプレートと再利用可能なサブプロセスではどちらが最適なソリューションかを判断する際は、相違点を理解することが重要です。

  • テンプレート

    テンプレートは、カスタマイズ可能な、骨組みの状態のプロジェクト、サービス・コンポーネントまたはスコープ・アクティビティです。テンプレートは、SOAコンポジット・アプリケーションまたはBPELプロセスにドラッグ・アンド・ドロップして、変更を加えることができます。基本的には、テンプレートをコピーして貼付けます。たとえば、テンプレートに50行のコードがあり、2回コピーして使用する場合、コードは100行になります。

  • 再利用可能なサブプロセス

    サブプロセスは、特定の目的を想定したBPELコード・スニペットです。以前に定義されたサブプロセスを呼び出してそのまま使用できます。50行のインライン・サブプロセスを2回呼び出しても、親プロセスのコードは100行ではなく、50行のままとなります。サブプロセスは、テンプレートよりもパフォーマンスが高く、メモリー・フットプリントも小さくなります。

39.4 Oracle SOA Suiteテンプレートの作成

次のタイプのテンプレートを作成できます。

  • SOAプロジェクト

  • サービス・コンポーネント

  • カスタムBPELスコープ・アクティビティ

テンプレートの概念の詳細は、「テンプレートの概要」および「Oracle SOA Suiteテンプレートと再利用可能なサブプロセスの違い」を参照してください。

39.4.1 SOAプロジェクト・テンプレートの作成および使用

この項では、SOAプロジェクトをテンプレートとして作成および使用する方法について説明します。

注意:

テンプレートの使用は、Oracle JDeveloperカスタマイズ・ロールではサポートされません。

39.4.1.1 SOAプロジェクト・テンプレートの作成方法

SOAプロジェクト・テンプレートを作成する手順は、次のとおりです。

  1. SOAコンポジット・アプリケーションを開きます。
  2. 「アプリケーション」ウィンドウで、次のいずれかを右クリックします。
    • composite_name

    • プロジェクト名

  3. 「SOAテンプレートの作成」を選択します。

    SOAテンプレートの作成ウィザードが表示されます。コンポジット名に基づくテンプレートのデフォルトの名前および保存場所が自動的に含められます。図39-1に詳細を示します。

    図39-1 「SOAテンプレートの作成」ウィザード - 「テンプレート情報の指定」ページ

    図39-1の説明が続きます
    「図39-1 「SOAテンプレートの作成」ウィザード - 「テンプレート情報の指定」ページ」の説明
  4. 必要に応じてデフォルト値を変更し、説明を入力して、「次へ」をクリックします。「保存先」フィールドの「参照」アイコンを使用して、ファイル・システムまたはMDSリポジトリOracle SOA Suiteデザインタイム・セクションにテンプレートを保存できます。

    SOAテンプレートの作成ウィザード - 「バンドルするファイル」ページが表示されます。図39-2に詳細を示します。このページには、パッケージされたすべてのファイルが、このテンプレートの一部として表示されます。

    測定(ビジネス・インジケータ)およびテスト・スイートを手動で選択して含めることもできます。コンポジットにドメイン値マップ(DVM)が含まれている場合(たとえば、DVM関数がBPELスコープ・アクティビティで参照されるなど)、それらもテンプレートに含まれます。

    ビジネス・インジケータの詳細は、「BPELプロセス分析の構成」を参照してください。テスト・スイートの詳細は、「コンポジット・テスト・フレームワークの概要」を参照してください。

    図39-2 SOAテンプレートの作成ウィザード -「バンドルするファイル」ページ

    図39-2の説明が続きます
    「図39-2 SOAテンプレートの作成ウィザード -「バンドルするファイル」ページ」の説明
  5. パッケージするファイルを表示して追加ファイルを選択し、「終了」をクリックします。
  6. テンプレートが正常に作成されたことを確認するよう求められたら、「OK」をクリックします。

39.4.1.2 別のSOAコンポジットでコンポジット・テンプレートを使用する方法

この項では、「SOAプロジェクト・テンプレートの作成方法」で作成したコンポジット・テンプレートを別のSOAコンポジット・アプリケーションで使用する方法について説明します。

別のSOAコンポジットでコンポジット・テンプレートを使用する方法は次のとおりです。

  1. Oracle JDeveloperで新規SOAコンポジット・アプリケーションを作成します。
  2. SOAアプリケーションの作成ウィザード - SOA設定の構成ページで、「SOAテンプレート」を選択します。図39-3に詳細を示します。

    図39-3 カスタム・テンプレートの選択

    図39-3の説明が続きます
    「図39-3 カスタム・テンプレートの選択」の説明

    使用可能なテンプレートのリストが表示されます。図39-4に詳細を示します。

    図39-4 選択可能なSOAテンプレート

    図39-4の説明が続きます
    「図39-4 選択可能なSOAテンプレート」の説明
  3. リストからテンプレートを選択し、「追加」をクリックして追加するテンプレートを選択します。
  4. 「終了」をクリックします。

    SOAコンポジット・エディタにカスタム・テンプレートが表示されます。テンプレートのファイルが「アプリケーション」ウィンドウに表示されます。

    バインディング・コンポーネントおよびプロセス名の変更など、必要に応じてコンポーネント名を変更できます。

  5. 右クリックし、「名前の変更」を選択します。

39.4.2 サービス・コンポーネント・テンプレートの作成および使用

この項では、サービス・コンポーネント・テンプレートを作成および使用する方法について説明します。

39.4.2.1 サービス・コンポーネント・テンプレートの作成方法

サービス・コンポーネント・テンプレートを作成する方法は次のとおりです。

  1. Oracle JDeveloperメイン・メニューから、「ファイル」「新規」を選択します。
  2. 「SOAプロジェクト」を選択し、「OK」をクリックします。
  3. プロジェクト名を入力し、「次へ」をクリックします。
  4. BPELプロジェクトを選択し、「終了」をクリックします。
  5. SOAコンポジット・アプリケーションを設計します。
  6. SOAコンポジット・エディタで、テンプレートを作成するサービス・コンポーネントを右クリックします。
  7. 「コンポーネント・テンプレートの作成」を選択します。

    コンポーネント・テンプレートの作成ウィザードが表示されます。

  8. オプションでパートナ・リンクのアイコンを選択するなど、適切なレスポンスを指定して、「次へ」をクリックします。図39-5に詳細を示します。

    図39-5 コンポーネント・テンプレートの作成ウィザード - 「テンプレート情報の指定」ページ

    図39-5の説明が続きます
    「図39-5 コンポーネント・テンプレートの作成ウィザード - 「テンプレート情報の指定」ページ」の説明

    コンポーネント・テンプレートの作成ウィザード - 「バンドルするファイル」ページが表示されます。

  9. パッケージされたファイルを表示して、必要に応じて追加ファイル(アダプタや測定など)を選択し、「終了」をクリックします。
  10. テンプレートが正常に作成されたことを確認するよう求められたら、「OK」をクリックします。

    サービス・コンポーネント・テンプレートが「コンポーネント」ウィンドウの「コンポーネント・テンプレート」セクションに追加されます。図39-6に詳細を示します。

    図39-6 「コンポーネント」ウィンドウの「コンポーネント・テンプレート」セクションのサービス・コンポーネント・テンプレート

    図39-6の説明が続きます
    「図39-6 「コンポーネント」ウィンドウの「コンポーネント・テンプレート」セクションのサービス・コンポーネント・テンプレート」の説明

39.4.2.2 別のSOAコンポジットでサービス・コンポーネント・テンプレートを使用する方法

この項では、「サービス・コンポーネント・テンプレートの作成方法」で作成したパッケージ済サービス・コンポーネント・テンプレートを別のSOAコンポジット・アプリケーションで使用する方法について説明します。

別のSOAコンポジットでサービス・コンポーネント・テンプレートを使用する方法は次のとおりです。

  1. Oracle JDeveloperで空のSOAコンポジット・アプリケーションを作成します。
  2. SOAコンポジット・エディタで、「SOA」リストから「SOAテンプレート」を選択します。図39-7に詳細を示します。

    図39-7 「SOA」メニューの「SOAテンプレート」オプション

    図39-7の説明が続きます
    「図39-7 「SOA」メニューの「SOAテンプレート」オプション」の説明
  3. サービス・コンポーネント・テンプレートをSOAコンポジット・エディタにドラッグします。

    これにより、図39-8 に示すように、「コンポーネント・テンプレートからSOAコンポーネントを作成」ダイアログが表示されます。このダイアログには、テンプレート名、説明、およびこのテンプレートに含まれるファイルが表示されます。

    図39-8 「コンポーネント・テンプレートからSOAコンポーネントを作成」ダイアログ

    図39-8の説明が続きます
    「図39-8 「コンポーネント・テンプレートからSOAコンポーネントを作成」ダイアログ」の説明
  4. 「OK」をクリックします。

    サービス・コンポーネント・テンプレートがSOAコンポジット・アプリケーションに表示されます。

  5. 「アプリケーション」ウィンドウを表示して、スキーマやWSDLなどのファイルがSOAコンポジット・アプリケーションに表示されることを確認します。
  6. サービス・コンポーネント・テンプレートを同じSOAコンポジット・アプリケーションに2回目に適用しようとすると、「コンポーネント・テンプレートからSOAコンポーネントを作成」ダイアログが表示され、スキーマおよびBPELファイルがそのコンポジットにすでに存在するため、競合することを示します。図39-9に詳細を示します。

    図39-9 「コンポーネント・テンプレートからSOAコンポーネントを作成」ダイアログ

    図39-9の説明が続きます
    「図39-9 「コンポーネント・テンプレートからSOAコンポーネントを作成」ダイアログ」の説明
  7. 「次へ」をクリックします。
  8. 「競合の解決」ページで、スキップするか、すべてのファイルまたは競合する特定のファイルを上書きするかを選択します。図39-10に詳細を示します。

    図39-10 競合しているファイル名

    図39-10の説明が続きます
    「図39-10 競合しているファイル名」の説明
  9. 完成したら、「終了」をクリックします。

39.4.3 BPELスコープ・アクティビティ・テンプレートの作成および使用

この項では、BPELスコープ・アクティビティ・テンプレートを作成および使用する方法について説明します。

39.4.3.1 BPELスコープ・アクティビティ・テンプレートの作成方法

BPELスコープ・アクティビティ・テンプレートを作成する手順は次のとおりです。

  1. Oracle BPELデザイナで、スコープ・アクティビティをBPELプロセスにドラッグします。

  2. スコープ・アクティビティのコンテンツを設計してアクティビティ、イベント・ハンドラおよび捕捉を含め、必要に応じて、フォルト変数を含むすべてのブランチを捕捉します。

  3. スコープからテンプレートを作成します。

    1. スコープを右クリックして、「カスタム・アクティビティ・テンプレートの作成」を選択します。

    または

    1. 図39-11 に示すように、スコープを展開して、「カスタム・アクティビティ・テンプレートの作成」を選択します。

      図39-11 スコープ・テンプレートの作成

      図39-11の説明が続きます
      「図39-11 スコープ・テンプレートの作成」の説明

    図39-12 に示すように、カスタム・アクティビティ・テンプレートの作成ウィザード - 「テンプレート情報の指定」ページが表示されます。

    図39-12 カスタム・アクティビティ・テンプレートの作成ウィザード - 「テンプレート情報の指定」ページ

    図39-12の説明が続きます
    「図39-12 カスタム・アクティビティ・テンプレートの作成ウィザード - 「テンプレート情報の指定」ページ」の説明
  4. 詳細を指定し、「次へ」をクリックします。

    カスタム・アクティビティ・テンプレートの作成ウィザード - 「変数」ページが表示されます。図39-13に詳細を示します。このページは、変数がスコープで使用されている場合に表示されます。このページは、スコープが空の場合、またはスコープで変数を使用しない場合は表示されません。

    図39-13 カスタム・アクティビティ・テンプレートの作成ウィザード -「変数」ページ

    図39-13の説明が続きます
    「図39-13 カスタム・アクティビティ・テンプレートの作成ウィザード -「変数」ページ」の説明
  5. 変数をローカル変数に変換することを選択します。この変数が、receiveアクティビティおよびreplyアクティビティのスコープ・アクティビティ外で使用される場合、この変換は推奨されません。変数がこのスコープ内でのみ使用される場合は、このチェック・ボックスはデフォルトで選択されています。

  6. 変数の説明(オプション)を入力し、「次へ」をクリックします。

    図39-2 に示したように、カスタム・アクティビティ・テンプレートの作成ウィザード - 「バンドルするファイル」ページが表示されます。このページには、パッケージされたすべてのファイルが、このテンプレートの一部として表示されます。テスト・スイートを手動で選択して含めることもできます。

  7. ファイルを選択し、「終了」をクリックします。

39.4.3.2 BPELスコープ・アクティビティ・テンプレートを別のBPELプロセスで使用する方法

この項では、BPELスコープ・アクティビティ・テンプレートを別のBPELプロセスで使用する方法について説明します。

BPELスコープ・アクティビティ・テンプレートを別のBPELプロセスで使用する方法は次のとおりです。

  1. 新規BPELプロセスを作成するか、既存のBPELプロセスを開きます。

  2. 「コンポーネント」ウィンドウの「カスタム・アクティビティ・テンプレート」セクションから、「BPELスコープ・アクティビティ・テンプレートの作成方法」で作成したスコープ・アクティビティ・テンプレートをBPELプロセスにドラッグします。図39-14に詳細を示します。

    注意:

    BPELサービス・コンポーネントのバージョンと互換性のあるスコープ・アクティビティ・テンプレートのみを使用できます。たとえば、BPEL 2.0のサービス・コンポーネントの場合、BPEL 2.0のスコープ・アクティビティ・テンプレートのみを選択できます。BPELバージョン1.1のスコープ・アクティビティ・テンプレートは表示されません。

    図39-14 スコープ・アクティビティ・テンプレート

    図39-14の説明が続きます
    「図39-14 スコープ・アクティビティ・テンプレート」の説明

    自分で設計したエラー処理(catchおよびcatchallアクティビティなど)や、自分で作成したスコープ変数も、BPELプロセスにコピーされます。

    図39-15 に示すように、「テンプレートからのカスタム・アクティビティの作成」ページが表示されます。

    図39-15 テンプレートからのカスタム・アクティビティの作成ウィザード

    図39-15の説明が続きます
    「図39-15 テンプレートからのカスタム・アクティビティの作成ウィザード」の説明
  3. 「次へ」をクリックします。

    競合がある場合は、図39-16 に示すように、テンプレートからのカスタム・アクティビティの作成ウィザード - 「競合の解決」ページが表示されます。

    図39-16 テンプレートからのカスタム・アクティビティの作成ウィザード - 「競合の解決」ページ

    図39-16の説明が続きます
    「図39-16 テンプレートからのカスタム・アクティビティの作成ウィザード - 「競合の解決」ページ」の説明
  4. すべてのファイル競合または個別のファイル競合をスキップする選択をして、「次へ」をクリックします。

    図39-17 に示すように、テンプレートからのカスタム・アクティビティの作成ウィザード - 「変数」ページが表示されます。

    「BPELスコープ・アクティビティ・テンプレートの作成方法」の手順5で、カスタム・アクティビティ・テンプレートの作成ウィザード - 「変数」ページで変数をローカル変数に変換することを選択した場合は、特別な処理は必要なく、このページに表示されません。ローカル変数に変換されなかった変数のみが、「テンプレートからのカスタム・アクティビティの作成」ウィザード - 「変数バインド」ページに表示されます。

    図39-17 「テンプレートからのカスタム・アクティビティの作成」ウィザード -「変数バインド」ページ

    図39-17の説明が続きます
    「図39-17 「テンプレートからのカスタム・アクティビティの作成」ウィザード -「変数バインド」ページ」の説明
  5. テンプレートおよびプロジェクトの両方にこの変数が含まれる場合、変数を再使用するか、または「BPEL変数」列のリストから新しい変数をバインドすることを選択できます。

    1. 新規変数へのバインドを選択した場合は、名前を入力し、変数をテンプレート・スコープ用にローカルに作成するか、BPELプロセス用にグローバルに作成するかを選択して、「OK」をクリックします。図39-18に詳細を示します。

      図39-18 「新規変数へのバインド」ダイアログ

      図39-18の説明が続きます
      「図39-18 「新規変数へのバインド」ダイアログ」の説明

      スコープB内のスコープA内にあるアクティビティ・テンプレートを削除した場合、スコープAとスコープBもリストに含まれます。これによって、変数を宣言可能なすべての場所から選択できます。

  6. 「次へ」をクリックします。

  7. スコープでパートナ・リンクを使用する場合は、「カスタム・アクティビティ・テンプレートの作成」ウィザード - 「パートナ・リンク」ページが表示されます。

  8. 「終了」をクリックします。

39.4.4 テンプレートの管理

使用可能なすべてのテンプレート・タイプを「プリファレンス」ダイアログで管理できます。

テンプレートを管理する手順は、次のとおりです。

  1. Oracle JDeveloperメイン・メニューから、「ツール」「プリファレンス」「SOA」「テンプレート」を選択します。

    図39-19 に示すように、「プリファレンス」ダイアログが表示されます。

    図39-19 SOAテンプレートのプリファレンス

    図39-19の説明が続きます
    「図39-19 SOAテンプレートのプリファレンス」の説明

    テンプレートは次の2つの場所に保存できます。

    • フォルダ: テンプレートをファイル・システムに保存できます。

    • SOA-MDS: テンプレートをMDSリポジトリに保存して共有できます。

  2. 図39-20 に示すように、フォルダを右クリックして、管理タスクのリストを表示します。

    表39-3 では、実行可能な管理タスクについて説明します。


    表39-3 テンプレートの管理タスク

    要素 説明

    参照

    特定のテンプレート名を参照します。

    「参照」オプションは、Windowsの場合はWindows Explorerを、Linuxの場合はファイル・ブラウザを使用して記憶域フォルダを参照します。テンプレートはファイルとして格納されるため、ファイルと同様に操作できます(つまり、FTPでのアップロード、電子メールによる送信、別のフォルダにコピーしてバックアップなど)。

    リフレッシュ

    テンプレートのリストをリフレッシュします。

    記憶域の追加

    既存のテンプレートを「プリファレンス」 - 「SOAテンプレート」ダイアログに追加します。

    削除

    フォルダおよびそのテンプレートを「プリファレンス」 - 「SOAテンプレート」ダイアログからのみ削除します。テンプレートは、ファイル・システムやMDSリポジトリから物理的には削除されません「記憶域の追加」を選択するか「追加」アイコンをクリックして、このダイアログに再度追加できます。テンプレートのコンテキスト・メニューには、テンプレートを物理的に削除する「削除」オプションがあります。

    すべてのテンプレート

    すべてのテンプレートを表示します。

    プロジェクト・テンプレート

    SOAプロジェクト・テンプレートのみを表示します。

    コンポーネント・テンプレート

    サービス・コンポーネント・テンプレートのみを表示します。

    アクティビティ・テンプレート

    BPELスコープ・アクティビティ・テンプレートのみを表示します。


  3. jdeveloper/integration/templatesディレクトリにテンプレートをインポートする場合は、「ファイル」「インポート」「SOAテンプレート」を選択します。ファイルは、「追加」アイコンをクリックするか、フォルダを右クリックして「記憶域の追加」を選択することで、「プリファレンス」ダイアログに追加できます。

39.5 BPELプロセスでのスタンドアロンおよびインラインBPELサブプロセスの作成

BPELプロセスで、SOAコンポジットではスタンドアロン・サブプロセスを、BPELプロセスではインラインBPELサブプロセスを作成できます。サブプロセスは、別個のプロセスが特定のプロセッサ内で再利用できるBPELコードのフラグメントです。

サブプロセスの概念の詳細は、「スタンドアロンおよびインラインBPELサブプロセスの起動の概要」および「Oracle SOA Suiteテンプレートと再利用可能なサブプロセスの違い」を参照してください。

注意:

  • 1つのBPELサブプロセスが再帰的にそのサブプロセス自体を呼び出すことに、制限はありません。同じBPELサブプロセスを再帰的に呼び出すかどうかと、サブプロセスを呼び出す回数を指定する必要があります。

  • スタンドアロン・サブプロセスのみを含むSOAコンポジット・アプリケーションは、作成して正常にデプロイできます。たとえば、SOAコンポジット・アプリケーションを作成して、サブプロセスのパラメータを2つ定義したスタンドアロン・サブプロセスを追加し、このサブプロセスでassignアクティビティを定義して、両方のパラメータの値を入れ替えます。ただし、スタンドアロン・サブプロセスのみを含み、他のコンポーネントは含まないSOAコンポジット・アプリケーションはデプロイできますが、実用的ではありません。

  • スタンドアロン・サブプロセスはMDSリポジトリで共有できません。ただし、サブプロセスを呼び出すコール・アクティビティを含むBPELプロセスは、MDSリポジトリで共有できます

39.5.1 スタンドアロンBPELサブプロセスの作成方法

この項では、スタンドアロン・サブプロセスを使用する簡単なアプリケーションの作成方法の例を示します。

注意:

スタンドアロン・サブプロセスには、インライン・サブプロセスを含めることができます。

スタンドアロンBPELサブプロセスを作成する手順は次のとおりです。

  1. BPEL 2.0プロセスを含むSOAコンポジット・アプリケーションを作成します。この例では、同期BPEL 2.0プロセスを作成します。
  2. BPEL 2.0プロセスを設計します。この例では、次のプロセスが設計されます。
    • タイプ文字列の変数が作成され(この例ではvariable1という名前)、パラメータとして渡されます。

    • assignアクティビティが作成され、そこでクライアント入力文字列がvariable1にマップされます。

    図39-21 はBPELプロセスの設計を示しています。

    図39-21 BPEL 2.0プロセスの設計

    図39-21の説明が続きます
    「図39-21 BPEL 2.0プロセスの設計」の説明
  3. Oracle BPELデザイナ上部の「composite_name」リンクをクリックして、SOAコンポジット・エディタにアクセスします。
  4. SOAコンポジット・エディタ内を右クリックし、「挿入」「サブプロセス」の順に選択するか、「コンポーネント」ウィンドウから「サブプロセス」アイコンをコンポジットにドラッグします。

    「サブプロセスの作成」ダイアログが表示されます。

  5. 適切な値を入力するか、デフォルト値をそのまま使用して、「OK」をクリックしてスタンドアロン・サブプロセスを作成します。図39-22に詳細を示します。この例では、指定されたサブプロセス名がSubprocess1となります。

    図39-22 「サブプロセスの作成」ダイアログ

    図39-22の説明が続きます
    「図39-22 「サブプロセスの作成」ダイアログ」の説明
  6. SOAコンポジット・エディタのサブプロセスを右クリックし、「編集」を選択します。
  7. サブプロセスのタイプ文字列の変数を作成し(この例の変数名はp1)、「OK」をクリックします。

    これで、スタンドアロン・サブプロセスで簡単なプロセス・ロジックを設計しました。

  8. 「コンポーネント」ウィンドウからプロセスに、assignアクティビティをドラッグします。
  9. assignアクティビティの「コピー・ルール」タブの「ターゲット」セクションで、「式ビルダー」アイコンをp1変数にドラッグします。
  10. concat式を作成して、サブプロセス内のパラメータから値を読み取り、その値で変数p1を更新します。
    concat($p1,",from subprocess")
    
  11. コンポジットを保存するか、「すべて保存」を選択して、BPEL 2.0プロセスを終了します。
  12. SOAコンポジット・エディタでBPELプロセスを右クリックして、「編集」を選択します。
  13. 「Oracle Extensions」サブセクションから、Oracle BPELデザイナのassignアクティビティの下にcallアクティビティをドラッグします。
  14. callアクティビティを右クリックし、「編集」を選択します。

    コールの編集ダイアログが表示されます。変数p1は、「名前」列の選択したSubprocess1の後に表示されることに注意してください。

  15. 「値」列内をクリックして、「変数チューザ」ダイアログを起動します。
  16. 「variable1」を選択し、「OK」をクリックします。これにより、変数p1がスタンドアロン・サブプロセスから、最初に作成したBPEL 2.0プロセスの変数variable1にマッピングされます。
  17. 「値によるコピー」チェック・ボックスを選択解除したままにします。

    このチェック・ボックスを選択解除のままにすると、変数が参照によってコピーされます。変数には、変数またはパートナ・リンクのみを使用でき、XPath関数問合せは使用できません。参照によるコピーは、入力および出力変数の両方をサポートします。値によるコピーは、値の入力のみをサポートします。

  18. 「コンポーネント」ウィンドウから、2番目のassignアクティビティをコール・アクティビティの下にドラッグします。
  19. assignアクティビティの「コピー・ルール」タブで、出力メッセージをvariable1で更新し、「OK」をクリックします。図39-23に詳細を示します。

    図39-23 assignの編集ダイアログ

    図39-23の説明が続きます
    「図39-23 assignの編集ダイアログ」の説明

    図39-24 は、サブプロセスを含むBPEL 2.0プロセスを示しています。このBPEL 2.0プロセスでは、次のロジックが設計されます。

    • Assign1の入力メッセージの文字列値が取得されて、callアクティビティのvariable1に割り当てられ、参照により渡されます。

    • assign2variable1を取得し、レスポンスを作成します。variable1の値は、サブプロセスによって更新されます。

  20. SOAコンポジット・エディタに移動し、BPELサブプロセスは現在、callアクティビティによってBPEL 2.0プロセスに接続されていることに注意してください。

    これで、SOAコンポジット・アプリケーションをデプロイし、Oracle Enterprise Manager Fusion Middleware Controlでビジネス・フロー・インスタンスを作成する準備ができました。

    Oracle Enterprise Manager Fusion Middleware Controlで作成されたビジネス・フロー・インスタンスの監査証跡にアクセスする際は、callアクティビティとそのコンポーネントが表示されることに注意してください。

    スタンドアロンBPELサブプロセスの詳細は、『Oracle SOA Suiteの理解』のデータベースで注文のステータスを更新するためのテンプレートおよびスタンドアロン・サブプロセスの使用方法に関する項を参照してください。

39.5.2 インライン・サブプロセスの作成方法

インライン・サブプロセスは、スタンドアロン・サブプロセスに類似していますが、インライン・サブプロセスが親プロセスに埋め込まれているという点が異なります。たとえば、顧客注文のステータスを更新するスコープ・アクティビティ内にassignアクティビティとinvokeアクティビティが含まれているBPEL 2.0プロセスがあるとします。これらの同じアクティビティを、後で同じプロセスで繰り返すというビジネス・ニーズがあるとします。スコープの同じassignアクティビティとinvokeアクティビティを、後でプロセス内で物理的に繰り返す方法がありますが、これはエラーが発生しやすい可能性があります。さらに、毎回変更する必要があり、それを両方のスコープに実装する必要があります。アクティビティを繰り返すかわりに、インライン・サブプロセスを使用できます。

注意:

既存のインライン・サブプロセス内にインライン・サブプロセスを作成することはサポートされません。

インライン・サブプロセスを作成する手順は次のとおりです。

  1. たとえば、顧客注文のステータスを更新するassignアクティビティとinvokeアクティビティが含まれている、BPEL 2.0プロセスのスコープ・アクティビティに移動します。

    注意:

    インライン・サブプロセスは、Oracle BPELデザイナの上部にある「プロパティ構造」メニューから「インライン・サブプロセス」を選択し、「インライン・サブプロセス」フォルダを選択して、「追加」クリックすることでもBPELプロセスに作成できます。

  2. スコープ・アクティビティを閉じます。図39-25に詳細を示します。
  3. スコープ・アクティビティを右クリックして、「サブプロセスに変換」を選択します。

    図39-26 に示すように、「インライン・サブプロセスの作成」ダイアログが表示されます。

    図39-26 「インライン・サブプロセスの作成」ダイアログ

    図39-26の説明が続きます
    「図39-26 「インライン・サブプロセスの作成」ダイアログ」の説明
  4. 環境に適した値を入力し、「OK」をクリックします。

    表39-4 「インライン・サブプロセスの作成」ダイアログ

    要素 説明

    名前

    名前を入力するか、デフォルト値をそのまま使用します。デフォルトはスコープ名になっています。

    サブプロセス・コールのあるスコープを置換

    選択すると、スコープをBPELコール・アクティビティで自動的に置き換えます(デフォルト選択)。インライン・サブプロセスを作成し、選択したスコープをプロセスで保持する場合は、このチェック・ボックスを選択解除します。

    ラベル

    オプションで説明を入力します。

    コメント

    コメントを最適に入力します。

    イメージ

    選択すると、標準のコール・アクティビティ・アイコンが独自のイメージに置き換えられます。


    図39-27 に示すように、スコープ・アクティビティがBPEL 2.0プロセスのcallアクティビティに変換されます。

    図39-27 callアクティビティ

    図39-27の説明が続きます
    「図39-27 callアクティビティ」の説明

    新規インライン・サブプロセスは、「コンポーネント」ウィンドウの「サブプロセス」セクションにも表示されます。図39-28に詳細を示します。

    図39-28 「コンポーネント」ウィンドウのインライン・サブプロセス

    図39-28の説明が続きます
    「図39-28 「コンポーネント」ウィンドウのインライン・サブプロセス」の説明
  5. Oracle BPELデザイナの上で、「サブプロセス - updateOrderStatusSP」を選択して、サブプロセスのコンテンツ(最初のスコープ・アクティビティと同じコンテンツ)を表示します。図39-29に詳細を示します。

    図39-29 Oracle BPELデザイナの上の「サブプロセス」セクション

    図39-29の説明が続きます
    「図39-29 Oracle BPELデザイナの上の「サブプロセス」セクション」の説明

    インライン・サブプロセスのコンテンツが表示されます。図39-30に詳細を示します。

    図39-30 インライン・サブプロセスのコンテンツ

    図39-30の説明が続きます
    「図39-30 インライン・サブプロセスのコンテンツ」の説明
  6. 必要に応じて、invokeアクティビティの追加など、サブプロセスに変更を加えます。

    必要に応じて、同じBPEL 2.0プロセスにサブプロセスを追加できます。

  7. 「コンポーネント」ウィンドウの「サブプロセス」セクションから、インライン・サブプロセスをBPEL 2.0プロセスの適切なセクションにドラッグします。図39-31に詳細を示します。

    図39-31 同じBPEL 2.0プロセスに追加されたサブプロセス

    図39-31の説明が続きます
    「図39-31 同じBPEL 2.0プロセスに追加されたサブプロセス」の説明

    図39-32 に示すように、サブプロセス名はCall番号に自動的に変更されます。

    図39-32 変更されたサブプロセス名

    図39-32の説明が続きます
    「図39-32 変更されたサブプロセス名」の説明

インラインBPELサブプロセスの使用方法の詳細は、『Oracle SOA Suiteの理解』のインラインBPELサブプロセスによる注文のステータスの更新に関する項を参照してください。

39.5.3 パートナ・リンクをパラメータとして取得するスタンドアロン・サブプロセスの作成方法

この項では、サブプロセスがパートナ・リンクをパラメータとして取得し、それを使用してパートナを呼び出し、結果を返す方法を示します。基本的には、サブプロセスからサブプロセスへパートナ・リンクを使用しています。

パートナ・リンクをパラメータとして取得するスタンドアロン・サブプロセスを作成する手順は次のとおりです。

  1. BPEL 2.0プロセスを含むSOAコンポジット・アプリケーションを作成します。この例では、同期BPEL 2.0プロセスを作成します。
  2. SOAコンポジット・エディタでSOAコンポジット・アプリケーションに移動します。
  3. 右クリックして、「挿入」「サブプロセス」を選択します。

    「サブプロセスの作成」ダイアログが表示されます。

  4. デフォルト値をそのまま使用し(たとえば、デフォルト名はSubprocess1)、「OK」をクリックします。

    これで、パートナ・リンクとして使用する2番目のプロセスを作成しました。

  5. SOAコンポジット・アプリケーションで2番目の同期BPEL 2.0プロセス(この例では、BPELProcess2)を作成します。これは、呼び出すプロセスです。
  6. 「コンポーネント」ウィンドウから、2番目のBPEL 2.0プロセスにassignアクティビティをドラッグします。
  7. 「コピー・ルール」タブの「ターゲット」セクションで、「式ビルダー」アイコンをresult変数にドラッグします。図39-33に詳細を示します。

    図39-33 assignの編集ダイアログ

    図39-33の説明が続きます
    「図39-33 assignの編集ダイアログ」の説明
  8. XPath式を構築し、「OK」をクリックします。
    string("hello from process2")
    
  9. 2番目のBPEL 2.0プロセスを保存して、サブプロセスに戻ります。
  10. 図39-34 に示すように、「パートナ・リンク」アイコンをクリックします。

    図39-34 パートナ・リンクの作成

    図39-34の説明が続きます
    「図39-34 パートナ・リンクの作成」の説明

    「パートナ・リンク」ダイアログが表示されます。

  11. 「追加」アイコンをクリックします。

    「パートナ・リンクの作成」ダイアログが表示されます。これで、このパートナ・リンクをパラメータとして定義しました。

  12. パラメータ・リンク(この例ではPartnerLink1という名前)を設計し、「OK」をクリックします。図39-35に詳細を示します。パートナ・リンクのロールはプロバイダとなります。

    図39-35 パートナ・リンクの作成

    図39-35の説明が続きます
    「図39-35 パートナ・リンクの作成」の説明

    「パートナ・リンク」ダイアログが図39-36 のように表示されます。

    図39-36 「パートナ・リンク」ダイアログ

    図39-36の説明が続きます
    「図39-36 「パートナ・リンク」ダイアログ」の説明

    図39-37 に、サブプロセスのコンテンツを示します。

    図39-37 サブプロセスのコンテンツ

    図39-37の説明が続きます
    「図39-37 サブプロセスのコンテンツ」の説明
  13. scopeアクティビティをサブプロセスにドラッグします。
  14. スコープ・アクティビティの「変数」アイコンをクリックして、リクエストおよびレスポンス・メッセージ・タイプ変数を作成します。図39-38に詳細を示します。

    図39-38 リクエストおよびレスポンス・メッセージ・タイプ変数の作成

    図39-38の説明が続きます
    「図39-38 リクエストおよびレスポンス・メッセージ・タイプ変数の作成」の説明
  15. sequenceアクティビティをサブプロセスにドラッグします。
  16. パートナ・リンクを起動するサブプロセスに「起動」アクティビティをドラッグします。
  17. 図39-39 に示すように、パートナ・リンクを起動するサブプロセスのinvokeアクティビティを設計します。この設計には、出力変数(Variable2)が含まれます。

    図39-39 「起動の編集」ダイアログ

    図39-39の説明が続きます
    「図39-39 「起動の編集」ダイアログ」の説明

    図39-40 に、サブプロセスを示します。

    図39-40 BPELサブプロセス

    図39-40の説明が続きます
    「図39-40 BPELサブプロセス」の説明
  18. サブプロセスの「変数」アイコンをクリックして、結果を返す文字列変数を作成します。

    「変数」ダイアログが表示されます。

  19. 「追加」アイコンをクリックして、「変数の作成」ダイアログを起動します。
  20. 文字列変数(この例ではresultという名前)を作成します。
  21. assignアクティビティをサブプロセスにドラッグします。
  22. 図39-41 に示すように、パートナ・リンク起動の結果をresult変数にマッピングして、「OK」をクリックします。

    図39-41 assignアクティビティの編集

    図39-41の説明が続きます
    「図39-41 assignアクティビティの編集」の説明

    これで、サブプロセスの設計は完了です。

  23. Oracle BPELデザイナのメインBPEL 2.0プロセス(BPELProcess1)に戻ります。
  24. プロセスの「変数」アイコンをクリックします。
  25. 「追加」アイコンをクリックして、手順22で構成して返した結果を含む文字列変数(この例ではVariable1という名前)を作成します。図39-42に詳細を示します。

    図39-42 「変数」ダイアログ

    図39-42の説明が続きます
    「図39-42 「変数」ダイアログ」の説明
  26. assignアクティビティを追加して、文字列値をVariable1に割り当てます。
  27. Oracle BPELデザイナのassignアクティビティの下にcallアクティビティをドラッグします。図39-43に詳細を示します。

    図39-43 メインBPEL 2.0プロセスに追加されたサブプロセス

    図39-43の説明が続きます
    「図39-43 メインBPEL 2.0プロセスに追加されたサブプロセス」の説明
  28. 「パートナ・リンク」スイムレーンを右クリックして、「パートナ・リンクの作成」を選択します。
  29. 図39-44 に示すように、BPELProcess2を起動するパートナ・リンクを設計します。

    図39-44 「パートナ・リンクの作成」ダイアログ

    図39-44の説明が続きます
    「図39-44 「パートナ・リンクの作成」ダイアログ」の説明
  30. callアクティビティを右クリックして、「編集」をクリックします。

    コールの編集ダイアログに、サブプロセスでこれまでに作成されたパートナ・リンクが表示されます。

  31. 「result」行の「値」列をクリックして、「変数チューザ」ダイアログを起動します。
  32. 「Variable1」を選択し、「OK」をクリックします。
  33. 「PartnerLink1」行の「値」列をクリックして、「パートナ・リンク・チューザ」ダイアログを起動します。
  34. 「PartnerLink1」を選択して「OK」をクリックします。図39-45 に、設計が完了したコールの編集ダイアログを示します。変数は参照によって送信されるので、なんらかの理由でサブプロセスがパートナ・リンクを変更すると(別のパートナ・リンクへのコピーなど)、コール・プロセスのパートナ・リンクが影響を受けます。これは、変数を含む場合と同じプロセスです。

    図39-45 コールの編集ダイアログ

    図39-45の説明が続きます
    「図39-45 コールの編集ダイアログ」の説明
  35. callアクティビティの下のassignアクティビティをドラッグして、結果を返します。
  36. 「コピー・ルール」タブで、Variable1resultにマッピングして、コール元に結果を返します。図39-46に詳細を示します。

    図39-46 assignの編集ダイアログ

    図39-46の説明が続きます
    「図39-46 assignの編集ダイアログ」の説明
  37. SOAコンポジット・アプリケーションをデプロイします。

39.5.4 サブプロセスの名前変更に関する必知事項

サブプロセスの名前を変更する際、起動中のコール・アクティビティでは更新されません。コール・アクティビティのサブプロセス名は手動で更新する必要があります。

次の手順を実行すると仮定します。

  1. 非同期BPEL 2.0プロセスを作成します。
  2. SOAコンポジット・エディタを右クリックし、「挿入」「サブプロセス」を選択します。
  3. SubProcessNewという名前のサブプロセスを作成します。
  4. 「SubProcessNew」を右クリックして、「編集」をクリックします。
  5. 「コンポーネント」ウィンドウからサブプロセスに、「空」のアクティビティをドラッグします。
  6. 非同期BPEL 2.0プロセスを開きます。
  7. 「コンポーネント」ウィンドウからプロセスに、「コール」アクティビティをドラッグします。
  8. SubProcessNewサブプロセスをcallアクティビティから起動します。
  9. SOAコンポジット・エディタに戻り、SubProcessNewサブプロセスの名前をSubProcessRenamedに変更します。
  10. 非同期BPEL 2.0プロセスのcallアクティビティを開き、「サブプロセス」フィールドが空であることに注意してください。
  11. 「サブプロセス」フィールドに、更新された名前のSubProcessRenamedを手動で入力します。