この章では、ファイル・アダプタを追加して、ファイルからデータを読み取り、OrderBooking BPELプロセスを外部サービスとしてコールする方法について説明します。
この章の内容は次のとおりです。
チュートリアルのこのフェーズでは、第7章「変換ロジックの追加」で設計したプロセスに処理を追加します。このフェーズを実行する前に、前のフェーズが正常に完了したことを確認してください。このフェーズでは、ファイルからデータを読み取り、前に作成したOrderBooking BPELプロセスをサービスとしてコールするファイル・アダプタを追加します。次の主要タスクを実行します。
BatchOrderProcessingという名前のBPELプロセスを新規作成します。
ディレクトリからファイル(この場合は、受信した注文)を読み取った後に削除する、FileReadという名前のファイル・アダプタを使用するパートナ・リンクを作成します。
相互作用するパートナ・リンクを作成します(この場合は、以前に設計したOrderBooking BPELプロセスをサービスとして使用)。
OrderBookingおよびFileReadの両方を呼び出すBPELプロセスを設計します。
BatchOrderProcessing BPELプロセスをデプロイします。
デプロイしたBPELプロセスをOracle BPEL Controlから実行します。
任意のファイルをディレクトリ内に置き、OrderBookingからレスポンスが返された後、このファイルの読取りと削除が行われるかどうか確認します。
この項では次のタスクを実行します。
次の手順に従って、新規のOrder Bookingバッチ・プロジェクトを作成してスキーマをインポートします。このプロジェクトでは、空のBPELプロセスを作成し、非同期プロセスは作成しません。
「OrderBookapplication」を右クリックして「新規プロジェクト」を選択します。
「カテゴリ」の下で、「General」を開いて「Projects」をクリックします。
「項目」の下で、「BPELプロセス・プロジェクト」をクリックして「OK」をクリックします。
BPELプロジェクト作成ウィザード - プロジェクトの設定ウィンドウで、次の詳細を入力して「終了」をクリックします。
| フィールド | 値 |
|---|---|
| 名前 | BatchOrderProcessing |
| ネームスペース | デフォルト・パスを使用します。 |
| デフォルトのプロジェクト設定を使用 | BPELプロセスとBPELプロジェクトに同じ名前を使用し、デフォルトのプロジェクト・ディレクトリを使用するために、選択した状態にしておきます。 |
| テンプレート | 空のBPELプロセス |
|
注意: 「テンプレート」リストから、「空のBPELプロセス」を選択したことを確認してください。このプロジェクトは、以前に作成したプロジェクトとは異なります。 |
これにより、Designerウィンドウの「アプリケーション・ナビゲータ」セクションに、bpel.xmlおよびBatchOrderProcessing.bpelファイルが作成されます。
Designerウィンドウの「アプリケーション・ナビゲータ」セクションのBatchOrderProcessing.bpelをダブルクリックして、Designerウィンドウ左下のセクションに「構造」セクションを表示します。
「構造」セクションで「スキーマ」を選択し、右クリックします。
「インポート スキーマ」を選択します。
スキーマのインポート・ウィンドウが表示されます。
「URL」フィールドの隣の懐中電灯のアイコンをクリックします。
SOA_Oracle_Home\bpel\samples\tutorials\127.OrderBookingTutorial\PracticeFilesディレクトリからOrderBookingPO.xsdを選択し、「開く」をクリックします。
スキーマのインポート・ウィンドウの「URL」フィールドに、このファイルが追加されます。
「OK」をクリックします。
Designerウィンドウの「アプリケーション・ナビゲータ」セクションで、OrderBookingPO.xsdが、「BatchOrderProcessing」→「インテグレーション・コンテンツ」→「スキーマ」の下に表示されていることを確認します。 OrderBookingPO.xsdは、「構造」セクションの「スキーマ」にも表示されます。
|
概要: ここでは、ファイル・アダプタを使用するインバウンドのパートナ・リンクを作成します。指定したディレクトリ内で特定の拡張子のファイルを15秒おきにチェックするように、このファイル・アダプタを構成します。このパートナ・リンクは、プロセスの入力ポイントとして機能し、ファイルを読み取ってプロセスに入力データを送信(インスタンスを作成)します。 |
「コンポーネント・パレット」セクションのドロップダウン・リストで「Services」が選択されていることを確認します。
Designerのウィンドウの右側に、PartnerLinkアクティビティをドラッグ・アンド・ドロップします。
「名前」フィールドは空のままにしておきます。 名前は、アダプタ構成ウィザードの実行時に手順7で入力したサービス名をもとに自動的に作成されます。
上にある3番目のアイコン(「アダプタ・サービスの定義」アイコン)をクリックします。これにより、アダプタ構成ウィザードが起動します。
ようこそウィンドウで「次へ」をクリックします。
アダプタ・タイプ・ウィンドウで「ファイル・アダプタ」を選択し、「次へ」をクリックします。
サービス名ウィンドウの「サービス名」フィールドにFileReadと入力し、「次へ」をクリックします。
操作ウィンドウで、「操作タイプ」として「Read File」を選択し、「次へ」をクリックします。「操作名」フィールドには、自動的にReadと入力されます。
「ディレクトリ名は次の方法で指定します」では「物理パス」を選択します。
「着信ファイル用のディレクトリ(物理パス)」フィールドの隣の「参照」をクリックします。
ファイルの読取り元のディレクトリ(Windowsオペレーティング・システムの場合はdrive_letter:\temp、UNIXオペレーティング・システムの場合は/temp)を選択します。このディレクトリが存在しない場合は、適切な権限で新規に作成する必要があります。
「選択」をクリックします。
「処理済ファイルをアーカイブ」チェック・ボックスが選択されていないことを確認します。
「正常な取得後にファイルを削除」チェック・ボックスが選択されていることを確認します。
「次へ」をクリックします。
「処理対象ファイルの名前パターン」フィールドにOrderBooking*.xmlと入力します。この表記規則により、このパターンの入力ファイルが処理対象として指定されます。
「次へ」をクリックします。
「ポーリング頻度」フィールドに15秒と入力します。
「次へ」をクリックします。
メッセージ・ウィンドウの「スキーマの場所」フィールドの隣の「参照」をクリックして、タイプの選択ウィンドウを表示します。
「プロジェクトのスキーマ・ファイル」→「OrderBookingPO.xsd」→「PurchaseOrder」の順に選択します。
「OK」をクリックします。
「スキーマの場所」フィールドおよび「スキーマ要素」フィールドに、それぞれの値(OrderBookingPO.xsd、PurchaseOrder)が自動的に入力されます。
「次へ」をクリックします。
「終了」をクリックします。
パートナ・リンク・ウィンドウに戻ります。他のフィールドには、すべて値が自動的に入力されます。表示されるウィンドウは、次のような形式になります。
「OK」をクリックします。
「ファイル」メイン・メニューから「保存」を選択します。
FileRead.wsdlが「BatchOrderProcessing」→「インテグレーション・コンテンツ」→FileReadの下に表示されます。このファイルには、アダプタ構成ウィザードで指定したパラメータが含まれています。
|
概要: ここでは、以前に作成したOrder BookingプロセスをBPELプロセスとしてコールするパートナ・リンクを作成します。 |
「コンポーネント・パレット」セクションからDesignerのウィンドウの右側にPartnerLinkアクティビティをドラッグ・アンド・ドロップします。
次の値を入力して、Order Bookingプロセス用パートナ・リンクを作成します。
| フィールド | 値 |
|---|---|
| 名前 | OrderBooking |
| WSDLファイル | 「サービス・エクスプローラ」の懐中電灯アイコンをクリックし、BPELサービス→my_ integration_server_connection→「プロセス」→「デフォルト」→「OrderBooking」の順に開いて選択することで次のURLにアクセスします。
http://localhost:8888/orabpel/default/OrderBooking/OrderBooking?wsdl 関連項目: サービス・エクスプローラ・ウィンドウでWSDLファイルを追加しようとして解析エラーが表示された場合は、「Oracle JDeveloperのWebブラウザ設定でのホスト名の設定」を参照してください。 |
| パートナ・リンク・タイプ | OrderBooking |
| パートナ・ロール | OrderBookingProvider |
| マイ・ロール | OrderBookingRequester |
「OK」をクリックします。
「ファイル」メイン・メニューから「保存」を選択します。
|
概要: ここでは、ReceiveおよびInvokeアクティビティを作成します。Receiveアクティビティはファイルからデータを読み取ります。InvokeアクティビティはOrderBooking内のプロセスを呼び出します。 |
「コンポーネント・パレット」セクションから「Process Activities」を選択します。
「コンポーネント・パレット」セクションからDesignerのウィンドウにReceiveアクティビティをドラッグ・アンド・ドロップします。 「Order Bookingバッチ・プロセスの作成およびスキーマのインポート」で空のBPELプロセスを作成したため、Designerウィンドウには、非同期BPELプロセスで自動作成される「receiveInput」Receiveおよび「callbackClient」Invokeアクティビティは必要とされず、含まれません。
Receiveアイコンをダブルクリックして、Receiveウィンドウを表示します。
次の詳細を入力します。
| フィールド | 値 |
|---|---|
| 名前 | receive_FileIn |
| パートナ・リンク | FileRead |
| インスタンスの作成 | このチェック・ボックスを選択します。 |
「操作」フィールドには、値(Read)が自動的に入力されます。
「変数」フィールドの右側にある最初のアイコンをクリックします。これは変数自動作成アイコンです。
表示される変数の作成ウィンドウで「OK」をクリックします。
receive_FileIn_Read_InputVariableという変数が、「変数」フィールドに自動作成されます。この変数は、FileReadPurchaseOrder_msgというメッセージ・タイプに自動的に割り当てられます。
手順4で説明したとおり、「インスタンスの作成」チェック・ボックスが選択されていることを確認します。
「OK」をクリックします。
「コンポーネント・パレット」セクションから「receive_FileIn」Receiveアクティビティの下にInvokeアクティビティをドラッグ・アンド・ドロップします。
Invokeアイコンをダブルクリックして、Invokeウィンドウを表示します。
次の詳細を入力します。
| フィールド | 値 |
|---|---|
| 名前 | invoke_OrderBooking |
| パートナ・リンク | OrderBooking |
「操作」フィールドには、値(initiate)が自動的に入力されます。
表示される変数の作成ウィンドウで「OK」をクリックします。
invoke_OrderBooking_initiate_InputVariableという変数が、「入力変数」フィールドに自動的に作成されます。この変数は、OrderBookingRequestMessageというメッセージ・タイプに自動的に割り当てられます。
「OK」をクリックします。
「ファイル」メイン・メニューから「保存」を選択します。
|
概要: ここでは、OrderBookingプロセスでのアクティビティの開始に使用するinvoke_OrderBooking_initiate_InputVariable変数にファイルから読み取ったデータを渡すAssignアクティビティを作成します。 |
「コンポーネント・パレット」セクションから「receive_FileIn」Receiveアクティビティの下にAssignアクティビティをドラッグ・アンド・ドロップします。
assignアイコンをダブルクリックして、割当てウィンドウを表示します。
「一般」タブをクリックします。
「名前」フィールドにassignOrderと入力します。
「適用」をクリックします。
「コピー操作」タブをクリックします。
「作成」をクリックし「コピー操作」を選択して、コピー操作の作成ウィンドウを表示します。
| フィールド | 値 |
|---|---|
| 送信元 | |
|
変数 |
|
「変数」→「receive_FileIn_Read_InputVariable」→「PurchaseOrder」の順に開いて選択します。 |
| 宛先 | |
|
変数 |
|
「変数」→「invoke_OrderBooking_initiate_InputVariable」→「ペイロード」の順に開いて選択します。 |
「OK」をクリックして、コピー操作の作成ウィンドウおよび割当てウィンドウを閉じます。
「ファイル」メイン・メニューから「保存」を選択します。
完了後、Designerのウィンドウには次のように表示されます。
「アプリケーション・ナビゲータ」セクションに移動します。
「BatchOrderProcessing」を右クリックします。
「デプロイ」→「my_integration_server_connection」→「defaultドメインにデプロイ」の順に選択します。
これでBPELプロセスがコンパイルされます。 ウィンドウ下部のボタンをクリックしてエラーの有無を確認します。エラーが発生していなければ、デプロイは成功しています。 デプロイに失敗した場合は、手順4を参照してください。
「スタート」→「すべてのプログラム」→「Oracle - Oracle_Home」→「Oracle BPEL Process Manager」→「BPEL Control」の順に選択し、Oracle BPEL Controlにログインします(すでに開いている場合はページをリフレッシュします)。
Oracle BPEL Controlにログインするために次の情報を入力して「ログイン」をクリックします。
| フィールド | 値 |
|---|---|
| ユーザー名 | oc4jadmin
|
| パスワード | password
|
passwordは、インストール時に「Oracle Application Server SOA Suiteのインストール」で入力した値です。
Oracle BPEL Controlの「ダッシュボード」タブが表示されます。 BatchOrderProcessingというBPELプロセス、およびそれが依存している一連のサブプロセスが、「デプロイ済のBPELプロセス」リストに表示されます。
OrderBookingPO_1.xmlファイルを、SOA_Oracle_Home\bpel\samples\tutorials\127.OrderBookingTutorial\PracticeFilesディレクトリから、手順11で指定したディレクトリ(Windowsオペレーティング・システムの場合はdrive_letter:\temp、UNIXオペレーティング・システムの場合は/temp)にコピーします。
手順18で設定した15秒間のポーリング周期が経過してから、Oracle BPEL Controlをリフレッシュします。プロセスの開始後、ファイルが読み取られ、削除され(読取りに成功した場合)、OrderBookingプロセスに送信されます。OrderBookingがレスポンスを返すと、処理は完了します。
手順11で説明したグラフィカル・ユーザー・インタフェースJSPページを使用して、SelectManufacturingの手動価格見積りタスクを完了します。
Oracle BPEL Controlに戻ります。
上の「インスタンス」をクリックします。
インスタンスをクリックします。
アクティビティの詳細を表示するには、各シーケンスの「詳細」リンクをクリックします。(同様のインスタンス管理は、「フロー」リンクの下でグラフィカルに行うこともできます。)
ファイルからデータを読み取り、前に作成したOrderBooking BPELプロセスをサービスとしてコールするファイル・アダプタを追加しました。次の主要タスクを実行しました。
BatchOrderProcessingという名前のBPELプロセスを新規作成しました。
ディレクトリからファイル(この場合は、受信した注文)を読み取った後に削除する、FileReadという名前のファイル・アダプタを使用したパートナ・リンクを作成しました。
相互作用するパートナ・リンクを作成しました(この場合は、以前に設計したOrderBooking BPELプロセスをサービスとして使用)。
OrderBookingおよびFileReadの両方を呼び出すBPELプロセスを設計しました。
BatchOrderProcessing BPELプロセスをデプロイしました。
デプロイしたBPELプロセスをOracle BPEL Controlから実行しました。
任意のファイルをディレクトリ内に置き、OrderBookingからレスポンスが返された後、このファイルの読取りと削除が行われるかどうか確認しました。