BPEL WLIユーザーのためのOracle SOA Suite基礎講座

Oracle SOA Suiteにおける WebサービスとJCAアダプタのエンドポイントの動的な設定

Simone Geib著

WLIユーザーのためのOracle SOA Suite基礎講座シリーズの今回の記事では、Oracle SOA Suiteを使用して動的にアダプタ・エンドポイントを設定する方法と、Oracle WebLogic Integrationコントロールにおけるプロセスの類似点について説明します。

2010年3月公開

関連するダウンロード・リンク
 Oracle SOA Suite

はじめに

ほとんどのビジネス・プロセスにおいて、外部システムとの統合が何らかの形で使用されています。 これらの外部システムにはファイル・システムやWebサービス、メッセージ・キュー、データベース、またはバックエンド・アプリケーションがあります。 多くの場合、これらのシステムのエンドポイント(キュー名、URL、ファイル・ディレクトリなど)は開発、テスト、および本番環境でそれぞれ異なります。 また、アプリケーションのライフ・サイクル中にエンドポイントが変わる場合もあります。

このような状況において、開発者はビジネス・プロセス内で問題のエンドポイント・プロパティを変更してから、コンパイル、デプロイ、テ ストなどを再度繰り返します。 しかしこれでは明らかに時間がかかり、エラーも発生しやすくなります。 より良い方策として、変更される可能性のあるエンドポイントを動的に維持する方法があります。

理想的な方法は、管理者が管理コンソールを使用してエンドポイントのプロパティ値を設定することです。 この後で、実行時にビジネス・プロセスが値の読取りや設定を実行します。

この記事では、Oracle WebLogic Integration(Oracle WLI)とOracle SOA Suiteを使用した動的なエンドポイントの処理方法について説明します。

Oracle WLIにおける動的エンドポイント

Oracle WLIでは、ほとんどのコントロールに 動的プロパティを指定できます。動的プロパ ティは実行時にXML変数として渡され、 設計時にコントロールに対して定義されたプロパティを上書きします。

動的プロパティを設定するには、コントロールの動的プロパティのスキーマに適合し、コントロールの setProperties()メ ソッドで使用されるXML変数を作成する必要があります。 現在のプロパティ設定は、 getProperties()メ ソッドを使用して取得できます。

電子メールのコントロールを例に取ってみましょう。 このコントロールの setProperties()メ ソッドは、 EmailControlPropertiesDocumentパラメータを受け取ります。 EmailControlPropertiesDocumentの タイプはXML Beansクラスであり、 DynamicProperties.xsdに定義されたスキーマ要素のう ち相当する要素から生成されています。 DynamicProperties.xsdは、WLIアプリケーションの Schemasプロジェクトのシステム・フォルダに格納されています。

電子メール・コントロールの動的プロパティの設定に使用されるXML変数の例を次に示します。

 <EmailControlProperties>
                                    
<smtp-address>myorg.mymailserver.com:25</smtp-address>
<from-name>Joe User</from-name>
<from-address>joe.user@myorg.com</from-address>
<reply-to-address>reply@myorg.com</reply-to-address>
<reply-to-name>Joe User</reply-to-name>
</EmailControlProperties>

コントロール・プロパティは、多くの場合、XMLメタデータ・キャッシュ・コントロールを介して取得されます ( XML メタデータ・キャッシュ・コントロールを参照)。

このコントロールは、管理者がWLI管理コンソールで作成したWLIキャッシュから、実行時にXMLドキュメントを取得します。 XMLドキュメントのコンテンツは、デプロイ済みアプリケーションに影響を与えることなく、いつでも変更できます。

SOA Suiteにおける動的エンドポイント

デプロイ済みのSOA複合アプリケーションに含まれるWebサービス・バインディング・コンポーネント、またはJCAアダプタ・バイン ディング・コンポーネントに対して、メッセージ・ヘッダー・プロパティを設定することができます。 Oracle JCAアダプタは基盤となるバックエンド処理に固有のプロパティをヘッダー要素として公開しており、ビジネス・プロセス内でこれらの要素を操作できます。

Oracle JCAアダプタのヘッダー・プロパティの使用を参照)

Oracle JCAアダプタのプロパティは、Oracle Enterprise Manager Fusion Middleware Control Console(EM)からも追加、削除、または回復することができます。 次に挙げるプロパティは、プロパティの追加、削除、更新時のアダプタ動作に基づいて分類されています。

InteractionSpecプロパティとActivationSpecプロパティ

このグループのプロパティに対しては、アダプタのエンドポイントを再利用する必要があります。 このグループに含まれるプロパティの値はEMコンソールから変更できます。 ただし、プロパティに依存した制約を検証するには、Oracle JDeveloperを使用してこれらのプロパティ構成を変更(追加または削除)する必要があります。

InteractionSpec またはActivationSpecプロパティを参照)

エンドポイント・プロパティ

このグループのプロパティが変更された場合、エンドポイントを再起動しなくてもアダプタに通知が送られます。 このグループに属するプロパティは、追加または削除が可能です。 エンドポイント・プロパティは、アダプタで公開する補助的なチューニング・プロパティを表します。 補助的なチューニング・プロパティには各種の時間間隔、しきい値、その他の値が含まれます。 これらのエンドポイント・プロパティの公開には、interactionspecプ ロパティまたはactivationspecプロパティは使用されません。

エ ンドポイント・プロパティを参照)

アダプタのエンドポイント・プロパティの設定

invokereceivereplyな どの多数のBPELアクティビティや、pickアクティビティの onMessageブランチでは、 Propertiesタ ブが提供されています。 JCAアダプタのヘッダー・プロパティは、このタブを使用して設定できます。

この機能を使用するには、プロパティ値を文字列変数に割り当てる必要があります。 ユースケース例で後述するとおり、後からこの変数がPropertiesタブで使用されます。

(BPELアクティビティのPropertiesタブの説明については、 BPEL アクティビティの概要を参照)

SOA Suiteの ド メイン値マッピングは、Oracle WLIのXMLメタデータ・キャッシュと概念が似ています。 ドメイン値マッピングは、実行時に情報を取得するために使用できます。 ドメイン値マッピングの使用については、近日公開されるこのシリーズの記事で説明する予定です。

Enterprise ManagerのOracle JCAアダプタおよびWebサービスを介して、Webサービス・バインディング・コンポーネントまたはJCAアダプタのメッセージ・ヘッダー・プロパティ を構成するには、サービス・バインディング・コンポーネントまたは参照バインディング・コンポーネントを使用します。 バインディング・コンポーネントは、SOAプラットフォームを外部世界と接続するサービスおよびネットワーク・プロトコルです。 メッセージ・ヘッダー・プロパティは、Webサービス・バインディング・コンポーネントに対しても、JCAアダプタ・バインディング・コンポーネントに対 しても設定できます。

バ インディング・コンポーネントの理解を参照)

エンドポイント・プロパティについて詳しくは、『Oracle Fusion Middleware Oracle SOA Suite管理者ガイド』のサービス・バインディング・コンポーネントおよび参照バインディング・コンポーネントの構成の章を参照してください。

ヘッダー・プロパティをサポートしているアダプタは、次のとおりです。

Oracle JCAアダプタのプロパティについて詳しくは、 Oracle JCAアダプタのプロパティを参照してください。

JCAアダプタまたはWebサービスのプロパティを設定するには、Enterprise ManagerでアダプタまたはWebサービスのPropertiesタブを選択します。

サー ビス・バインディング・コンポーネントおよび参照バインディング・コンポーネントの構成を参照してください。)

次のセクションでは、このプロセスについて詳しく説明します。

Oracle Enterprise Managerを使用したアダプタのエンドポイント・プロパティの設定

Oracle SOA Suiteの各種管理(構成、監視、管理)タスクは、 Enterprise Managerコンソールから実行できます。 これらの管理タスクの1つに、JCAアダプタのエンドポイント・プロパティの設定があります。

アダプタのプロパティは通常、 Oracle JDeveloperを使用して設計時に定義します。 しかし、あらかじめ定義されたプロパティの編集または追加、もしくは新規プロパティの作成または削除を後から実行することもできます。

アダプタに事前定義されたプロパティの編集

インバウンド・アダプタの事前定義済みプロパティを編集するには、以下のいずれかの方法を使用してSOA複合アプリケーションへ移動し ます。

SOAインフラストラク チャ・メニューを使用する場合:
  1. Home」をクリックします。
    SOA Infrastructureページが表示されます。

  2. Deployed Composites」タブをクリックします。
    デプロイ済みの複合アプリケーションのリストが表示されます。

  3. Compositeセクションで、特定のSOA複合アプリケーションをクリックします。
    SOA compositeホームページが表示されます。

  4. 右側のパネルの Services and Referencesセクションから「 inbound/outbound adapter (service/reference)」をクリックします。
    Serviceホームページが表示されます。
ナビゲータのSOAフォル ダを使用する場合:
  1. soa-infraセクションで、特定のSOA複合アプリケーションをクリックします。
    SOA Compositeホームページが表示されます。

  2. 右側のパネルのServices and Referencesセクションから「 inbound/outbound adapter (service/reference)」をクリックします。
    Serviceホームページが表示されます。

事前定義済みプロパティの編集

  1. Properties」をクリックして、現在定義されているバインディング・プロパティの リストを表示します。

  2. 編集するプロパティを選択します。

  3. Valueテキスト・ボックスの値を編集します。

  4. Save」をクリックします。

事前定義されたアダプタ・プロパティの追加

事前定義されたアダプタ・プロパティを追加するには、以下の手順を実行します。

  1. 前述の方法に従って、SOA複合アプリケーションへ移動します。

  2. 事前定義済みプロパティを追加します。
    1. Properties」タブをクリックして、現在定義されているバインディング・ プロパティのリストを表示します。
    2. Add」ボタンをクリックします。 新しい空白行が既存のプロパティ・リストに追加されます。
    3. 新しい行の Nameフィールドにある「 Select Values」 アイコンをクリックします。
      Propertiesダイアログが表示されます。
    4. 特定のアダプタに有効なプロパティをプロパティ・リストから選択し、「 OK」をク リックします。
    5. Save」をクリックします。

新規アダプタ・プロパティの作成

インバウンド・アダプタに対して新しいプロパティを作成するには、以下の手順を実行します。

  1. 前述の方法に従って、SOA複合アプリケーションへ移動します。

  2. 新規プロパティを作成します。
    1. Properties」タブをクリックして、現在定義されているバインディング・ プロパティのリストを表示します。

    2. Add」ボタンをクリックします。
      新しい空白行が既存のプロパティ・リストに追加されます。
    3. 新しい行の Nameフィールドと Valueフィー ルドに、プロパティの名前と値を指定します。

    4. Save」をクリックします。

アダプタ・プロパティの削除

インバウンド・アダプタのプロパティを削除するには、以下の手順を実行します。

  1. 前述の方法に従って、SOA複合アプリケーションへ移動します。

  2. プロパティを削除します。
    1. Properties」をクリックして、現在定義されているバインディング・プロ パティのリストを表示します。
    2. 削除するプロパティを選択して「 Delete」をクリックします。
      アクションの確認を求めるメッセージが表示されます。
    3. 確認して「 OK」をクリックします。
    4. Save」をクリックします。

アダプタのプロパティ値の回復

各自が変更したプロパティのみ、元に戻すことができます。 回復操作を実行できるのは既存のプロパティ値に対してのみであり、事前定義プロパティ・リストから追加したものや各自が作成したものに対しては実行できま せん。

インバウンド・アダプタのプロパティ値を回復するには、以下の手順を実行します。

  1. 前述の方法に従って、SOA複合アプリケーションへ移動します。

  2. インバウンド・アダプタのプロパティ値を回復します。
    1. Properties」タブをクリックして、現在定義されているバインディング・ プロパティのリストを表示します。

    2. 回復するプロパティを選択し、「 Revert」をクリックします。
      アクションの確認を求めるメッセージが表示されます。
    3. 確認して「 OK」をクリックします。
    4. Save」をクリックします。

詳しくは、 イ ンバウンド・アダプタのエンドポイント・プロパティの構成および ア ウトバウンド・アダプタのエンドポイント・プロパティの構成を参照してください。

ユースケース例: ファイル書込み前のファイル名およびディレクトリの変更

この例では、ファイル・コントロール(Oracle WLIの場合)とファイル・アダプタ(SOA Suiteの場合)に対して、エンドポイント(ファイル名およびディレクトリ)を動的に変更する方法について説明します。 簡潔かつ要点を得た説明にするため、ここではファイルへのメッセージ書込み以外は何も実行しないプロセスを作成します。 実際のユースケースは、通常はるかに複雑になります。

Oracle WLIを使用したユースケースの実装

Oracle WLIを使用して動的ファイル・コントロールを実装する方法について、読者が理解しているという前提に立っているため、WLIユースケースについてここで は詳しく説明しません。 ここで焦点となるのは、SOA Suiteを使用したユースケースの実装です。

ローカル・ディレクトリに対してファイルを書き込むには、ファイル・コントロールを使用します。 その他多くのコントロールと同様にファイル・コントロールでも、エンドポイントを動的に設定できる動的プロパティが提供されています。

<?xml version = '1.0' encoding = 'UTF-8'?>
                                    
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
targetNamespace="http://demo/demoCustomer1"
xmlns:cu="http://demo/demoCustomer1">
<xs:element name="customer">
<xs:complexType>
<xs:sequence>
<xs:element ref="cu:key"/>
<xs:element ref="cu:firstname"/>
<xs:element ref="cu:lastname"/>
<xs:element ref="cu:address"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="key" type="xs:string"/>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
</xs:schema>

この例でWLIプロセスを起動するクライアント・リクエスト・ノードは、顧客のXMLドキュメントを入力として受け取ります。 次に、XMLメタデータ・キャッシュ・コントロールを使用して、ファイル・ディレクトリとファイル名の値を読み取ります。 変換コントロールを使用して、ファイル・コントロールのプロパティを作成します。 最後に、ファイル・コントロールのsetProperties()メソッドを使用してプロパティを設定します。 ファイル・コントロールの書込みメソッドを使用して、顧客メッセージをファイルに書き込みます。

このプロセスの一部のステップはまとめることができますが、例を簡単にするため、1つずつのステップとして表示しています。

図1に、JPDを示します。

図1: JPD

SOA Suiteを使用したユースケースの実装

ここでは、同じユースケースをSOA Suiteで実装する例について説明します。

このユースケースでは、顧客のXMLメッセージを含んだWebサービス・コールによってビジネス・プロセスが開始されます。 ビジネス・プロセスはファイル・アダプタを使用して、顧客情報をファイルに書き込みます。

次のセクションでは、プロセスのデプロイおよびテスト方法について説明します。次に、プロセス内のアダプタ・ヘッダー・プロパティまた はEnterprise Managerコンソールを使用して、アダプタのエンドポイント・プロパティを変更する方法を説明します。


SOAアプリケーションおよびプロジェクトの作成

はじめに、以下の手順を実行します。

  1. Oracle JDeveloperで新規SOAアプリケーションを作成します。
  1. アプリケーション名として SOASuiteWLIEssentialsを指定します。
  1. DynamicEndpointsという名前の新規プロジェクトを作成し ます。
  1. Finish」をクリックします。

BPELプロセスの作成

  1. コンポジットで、「 BPEL Process」コンポーネントをComponentsス イムレーンにドラッグ・アンド・ドロップします。
  1. Create BPEL Processダイアログで、次の値を指定します。
    1. Name:WriteCustomer
    2. Template: One Way BPEL Process
    3. Service Name: writecustomer_client
    4. Expose as a SOAP Service: チェックを付ける
    5. Input:
      1. 懐中電灯型アイコンをクリックして、Type Chooserウィンドウを開きます。
      2. Import Schema File」アイコンをクリックします。
  1. ローカル・ディスクから顧客のXMLスキーマを選択します。
  2. Copy to Project」にチェックを付けます。
  1. OK」をクリックします。
  2. OK」をクリックします。
  3. スキーマのルート要素を選択します。
  1. OK」をクリックします。
  1. OK」をクリックします。
  2. この情報を使用して、サービスのWSDLが自動的に作成されます。 ここで指定した入力タイプがこのサービスのWSDLに適用されます。

ファイル・アダプタの追加

  1. File Adapter」をExternal Referencesス イムレーンにドラッグ・アンド・ドロップします。 ファイル・アダプタは、それぞれの顧客をテキスト・ファイルに書き込みます。
  1. サービス名として WriteCustomerDataを指定します。
  1. Next」をクリックします。

  2. Define from operation and schema.」オプションを選択し ます。

    この機能を使用すると、ファイル操作とスキーマから自動的にWSDLが定義されます。
  1. Next」をクリックします。
  2. Write File」操作を選択します。
  1. Next」をクリックします。
  2. 以下の値を指定し、その他はデフォルト値のままとします。
    1. Directory for Outgoing Files: c:\temp
    2. File Naming Convention: customer_%SEQ%.xml。 これにより、ファイル名に連続した番号が付加されます。 フィールドに %を入力すると、ファイルに番号を付けるための その他のオプションが表示されます。
  1. Next」をクリックします。
  2. 書込みを行うコンテンツを表すスキーマ(customer.xsd)を参照します。
  1. ルート要素を選択します。
  1. OK」をクリックします。
  1. Next」に続いて「 Finish」をクリックし、 File Adapterウィザードを完了してコンポジットに戻ります。

BPELプロセスとファイル・アダプタの接続

次に、BPELプロセスとファイル・アダプタを接続して、インタフェース定義を完了します。

コンポーネントを接続すると、次のように表示されます。

コンポジットでコンポーネントを接続すると、BPELプロセス内に自動的にパートナー・リンク参照が作成されます。

BPELプロセスの設計

  1. BPELコンポーネントをダブルクリックして、BPELエディタを開きます。

    WriteCustomerDataパートナー・リンクはコンポジットで接続済みのため、Referencesス イムレーンにあらかじめ表示されています。 エディタによって、BPELプロセスとコンポジット間で参照が同期されます。
  2. Component Paletteから「 Invoke」アクティビティをドラッグし、 receiveInputア クティビティの下の挿入ポイントにドロップします。
  1. Invokeアクティビティから WriteCustomerDataパー トナー・リンクに直線をドラッグします。 これは、BPELプロセスからファイル・アダプタを起動することを示します。
  1. Edit Invokeダイアログで、次の値を指定します。
    1. Name: WriteCustomerData
    2. Input Variable:緑色のプラス記号アイコンをクリックし、「 OK」 をクリックして新規グローバル変数を作成したら、デフォルトの名前とタイプを受け入れます。

      入力に指定された変数には、サービスの起動時に送信されるデータが含まれます。 変数の作成時に、サービスが求める正しいタイプが自動的に設定されます。
  1. OK」をクリックします。
  1. OK」をクリックします。

BPELプロセスは次のようになります。

WriteCustomerDataサービスとのやり取りで使用する変数を作成しましたが、この変 数の値はまだ生成していません。 はじめに、入力変数の値から生成しましょう。

BPELでは、Assignアクティビティを使用して変数にデータを割り当てます。 ここでは、 WriteCustomerDataサー ビスに顧客情報を割り当てます。

  1. Assign」アクティビティをInvokeアクティビティの上にドラッ グ・アンド・ドロップします。
  1. Assign」アクティビティをダブルクリックして編集します。
  2. General」タブをクリックし、名前を assignCustomerDataに 変更します。
  1. Copy Operation」タブをクリックします。
  2. 緑色のプラス記号アイコンをクリックし、「 Copy Operation」を選択してCreate Copy Operation ダイアログを開きます。
  1. 次のように指定します。 From側で、「 Variables」→「 Process」 →「 Variables」→「 inputVariable」→「 payload」 →「 ns2:customer」の順に選択します。
  2. To側で、「 Variables」→「 Process」 →「 Variables」→「 WriteCustomerData_Write_InputVariable」 →「 body」→「 ns2:customer」の順に選択します。
  1. OK」をクリックします。

Assignダイアログは次のように表示されます。

  1. OK」をクリックして、BPELプロセスに戻ります。
  2. BPELプロセスの左上の緑色のチェック・ボタンをクリックして、プロセスを検証します。

すべての警告が消えています。 プロセスは下図のように表示されます。

これで、 WriteCustomerDataへの入力変数の値が生成されました。

  1. BPELプロセスを保存します。

SOAコンポジットのデプロイ

BPELプロセスをテストする前に、Oracle JDeveloperを使用してコンポジットをデプロイする必要があります。

デプロイを開始する前に、SOAサーバーが実行中であることを確認してください。

Oracle JDeveloperおよびスクリプト・ツールを使用したSOA複合アプリケーションのデプロイと、開発、テスト、本番環境間でのSOA複合アプリケー ションの移動を可能にする構成プランの作成については、 SOA コンポジット・アプリケーションのデプロイを参照してください。

また、Oracle Enterprise Manager Fusion Middleware Control Console(EM)を使用してSOA複合アプリケーションをデプロイ、再デプロイ、アンデプロイする方法についても、 SOA コンポジット・アプリケーションのデプロイを参照してください。

JDeveloper内でコンポジットをデプロイすると、ログは次の例のようになります。

[07:32:39 PM] ----  Deployment started.  ----
                                    
[07:32:39 PM] Target platform is (Weblogic 10.3).
[07:32:39 PM] Running dependency analysis...
[07:32:39 PM] Building...
[07:33:06 PM] Deploying profile...
[07:33:06 PM] Updating revision id for the SOA Project
'DynamicEndpoints.jpr' to '1.0'..
[07:33:06 PM] Wrote Archive Module to D:\1WLI\2SOASuiteMigration\testProjects\JDev\11gPS1\
SOASuiteWLIEssentials\DynamicEndpoints\deploy\sca_DynamicEndpoints_rev1.0.jar
[07:33:06 PM] Deploying sca_DynamicEndpoints_rev1.0.jar to AdminServer [SGEIB01.emea.bea.
com:7001]
[07:33:06 PM] Processing sar=/D:/1WLI/2SOASuiteMigration/testProjects/JDev/11gPS1/SOASuiteWLIE
ssentials/DynamicEndpoints/deploy/sca_DynamicEndpoints_rev1.0.jar
[07:33:06 PM] Adding sar file - D:\1WLI\2SOASuiteMigration\testProjects\JDev\11gPS1\SOASuite
WLIEssentials\DynamicEndpoints\deploy\sca_DynamicEndpoints_rev1.0.jar
[07:33:06 PM] Preparing to send HTTP request for deployment
[07:33:07 PM] Creating HTTP connection to host:SGEIB01.emea.bea.com,
port:7001
[07:33:08 PM] Sending internal deployment descriptor
[07:33:08 PM] Sending archive - sca_DynamicEndpoints_rev1.0.jar
[07:33:28 PM] Received HTTP response from the server, response code=200
[07:33:28 PM] Successfully deployed archive sca_DynamicEndpoints_rev1.0.jar to AdminServer
[SGEIB01.emea.bea.com:7001]
[07:33:28 PM] Elapsed time for deployment: 48 seconds
[07:33:28 PM] ---- Deployment finished. ----

BPELプロセスのテスト

デプロイに成功したら、Oracle Enterprise Manager Fusion Middleware Control Console(Oracle EM)からコンポジット・サービスを開始します。

  1. Enterprise Managerにログインするには、Internet Explorer 7、Mozilla Firefox 2.0.0.2またはFirefox 3.0.xを使用して、http://host_name:port/emへア クセスします。 ここで、host_nameはEnterprise Managerがインストールされているホストの名前であり、portは 管理サーバーのポート番号です。

  2. weblogic/passwordと入力し、「 Login」をクリック します。

    (詳しくは、 Oracle SOA Suiteの管理の開始を参照してください。)
  1. EMダッシュボードでSOA→soa_infraへ移動し、「 DynamicEndpoints」 コンポジットをクリックしてコンポジット・ホームページへアクセスします。
  1. ページが表示されたら、「 Test」ボタンをクリックしてコンポジット・サービスをテストし ます。
  1. ペイロードの値を入力します。
  1. Test Web Service」ボタンをクリックします。

すべて予定どおりに実行されると、C:\tempに新規ファイルcustomer_1.xmlが作成されます。

InvokeアクティビティのPropertiesタブを使用した、実行時のファイル・アダプタ・エンドポインドの変更

この例では、アダプタ・エンドポイントを実行時に変更する方法について説明します。 XMLメタデータ・キャッシュ・コントロールから情報を取得し、コントロールのプロパティとしてデータを設定するWLIユースケースと非常によく似ていま す。

上述のとおり、通常アダプタ・プロパティ値の取得にはドメイン値マッピングが使用されます。 サンプルのBPELプロセスでは、説明を簡単にするため、これらのプロパティの値としてハードコードした値を使用します。ドメイン値ペアの使用については 別に説明します。

.

プロパティ変数の作成

  1. Structureウィンドウ(通常はJDeveloperの左上に表示)が表示されていない場合、「 View」 →「 Structure」を選択します。

  2. Structureウィンドウで「 Variables」→「 Process」 →「 Variables」の順に選択し、緑色のプラス記号をクリックします。

  1. Create Variableウィンドウで、次の値を定義します。
    1. Name: outputFolder
    2. Simple Type:タイプ選択アイコンをクリックして、変数タイプを選択しま す。
  1. string」を選択します。
  1. OK」をクリックします。
  1. OK」をクリックします。
  1. 2番目の文字列変数 fileNameに対して、同じ手順を繰り返します。

変数への値の割当て

この手順は、実際のユースケースではドメイン値マッピングが使用されます。 この例では、ハードコードした値を使用します。

  1. BPELプロセスのassignCustomerDataとWriteCustomerDataの 間に「 assign」アクティビティを追加し、Nameに setPropertiesを 指定します。

  2. Copy Operationタブで、2つのコピー操作を追加します。
    1. 緑色のプラス記号をクリックして、「 Copy Operation」を選択します。
  1. 左側で「 Expression」を選択します。
  2. 新しい出力ファイル・ディレクトリを入力します(例:" C:\files\output")。
  3. 右側で変数「 outputFolder」を選択します。
  1. OK」をクリックします。

上記手順を繰り返して、変数filenameに新しい出力ファイル名を割り当てます。

Assignアクティビティは次のように表示されます。

  1. OK」をクリックします。

ファイル・アダプタ・プロパティの設定

  1. WriteCustomerDataのinvokeアクティビティを開きます。

  2. Propertiesタブに移動します。
    1. jca.file.Directoryが表示されるまでスクロールします。
    2. Valueフィールドの「 browse」ボタンをクリックします。
  1. 変数を参照します。
  1. 変数「 outputFolder」を選択します。
  1. OK」をクリックします。
  2. OK」をクリックします。
  1. jca.file.FileNameが表示されるまでスクロールします。
  2. 変数「 fileName」を選択します。
  1. OK」をクリックします。

BPELプロセスは次のように表示されます。

コンポジットを再デプロイし、BPELプロセスを再度テストします。 新しく選択したディレクトリに新しい名前のファイルが作成されています。

Enterprise Managerを使用したファイル・アダプタ・エンドポイントの変更

BPELプロセスで動的にプロパティを設定するかわりに、Enterprise ManagerからJCAアダプタおよびWebサービスのプロパティを変更することもできます。

  1. DynamicEndpoints」コンポジットをクリックし、Services and Referencesが表示されるまでスクロールします。
  1. WriteCustomerData」(ファイル・アダプタ)をクリックします。
  1. Properties」タブをクリックし、PhysicalDirectoryとFileNameConventionを 変更します。 出力ディレクトリが存在することを確認します。
  1. Apply」→「 Yes」の順にクリックして、「 OK」 をクリックします。

コンポジットを再デプロイし、BPELプロセスを再度テストします。 新しく選択したディレクトリに新しい名前のファイルが作成されています。

重要なポイントと推奨事項

Oracle SOA Suiteでは、JCAアダプタとWebサービスのエンドポイントを動的に設定する方法として、 BPELプロセスでヘッダー・プロパティを設定する方法(Oracle WLIの設定方法と同様)と、Enterprise Managerコンソールからヘッダー・プロパティを変更する方法の2種類の方法を提供しています。


Simone Geib Simone Geibは、Oracle CorporationのSOAテクノロジー担当Product Managerです。 オラクルがBEA Systemsを買収する前は、同社のWebLogic Integration担当Product Managerでした。 SimoneはSOAの戦略および実装に関して、さまざまな業種や地理の枠を越えた幅広い経験を有しています。
[ Oracle Mix / Blog / LinkedIn]