この章では、ファイル・アダプタに書込み機能を追加して、注文フォームに入力されたデータを受け取る方法について説明します。
この章の内容は次のとおりです。
チュートリアルのこのフェーズでは、第8章「ファイル・アダプタの読取り機能の使用」で設計したプロセスに処理を追加します。このフェーズを実行する前に、前のフェーズが正常に完了したことを確認してください。このフェーズでは、ファイル・アダプタに書込み機能を追加し、第7章「変換ロジックの追加」で設計した変換ロジックを使用します。次の主要タスクを実行します。
POAcknowledge BPELプロセスに戻り、ファイル・アダプタを使用してディレクトリにファイルを書き込む(この場合は、送信する注文確認)、FileOutInboundという名前のパートナ・リンクを作成します。
FileOutInboundを呼び出すPOAcknowledgeを設計します。
POAcknowledgeをデプロイします。
OrderBooking BPELプロセスに戻り、POAcknowledgeと相互作用するWritePOAという名前のパートナ・リンクを作成します。
WritePOAを呼び出すOrderBookingを設計します。
OrderBooking BPELプロセスをデプロイします。
Oracle BPEL Controlから、注文フォームに記入してRapid DistributorsサービスおよびSelect Manufacturingサービスに送信することで、OrderBookingを実行します。
読取り用の注文ファイルをディレクトリにコピーします。
Rapid DistributorsのURLにアクセスし、サプライヤ価格を手動で送信します。
注文ファイルが削除され、注文確認ファイルがディレクトリ内に書き込まれたかどうか確認します。 また、受信した注文ファイルの内容が、送信する注文確認に変換されたかどうか確認します。
この項では次のタスクを実行します。
|
概要: ここでは、ファイル・アダプタを使用するアウトバウンドのパートナ・リンクを作成します。ファイルを特定のディレクトリに書き込むようにファイル・アダプタを構成します。このフェーズでは、POAcknowledgeプロジェクトから作業を開始します。 |
Designerウィンドウの「アプリケーション・ナビゲータ」セクションで「POAcknowledge」プロジェクトをクリックします。
「POAcknowledge.bpel」をダブルクリックします。
「コンポーネント・パレット」セクションから「Services」を選択します。
「コンポーネント・パレット」セクションからDesignerのウィンドウの右側にPartnerLinkアクティビティをドラッグ・アンド・ドロップします。
「名前」フィールドは空のままにしておきます。 名前は、アダプタ構成ウィザードの実行時に手順9で入力したサービス名をもとに自動的に作成されます。
上にある3番目のアイコン(「アダプタ・サービスの定義」アイコン)をクリックします。これにより、アダプタ構成ウィザードが起動します。
ようこそウィンドウで「次へ」をクリックします。
サービス名ウィンドウの「サービス名」フィールドにFileWriteと入力し、「次へ」をクリックします。
操作ウィンドウで、「操作タイプ」に「Write File」を選択し、「次へ」をクリックします。「操作名」フィールドには、自動的にWriteと入力されます。
「ディレクトリは次のように指定します」では「物理パス」を選択します。
「発信ファイルのディレクトリ(物理パス)」フィールドの隣の「参照」をクリックします。
作成するファイルを保管するディレクトリ(Windowsオペレーティング・システムの場合はdrive_letter:\temp、UNIXオペレーティング・システムの場合は/temp)を選択します。このディレクトリが存在しない場合は、適切な権限で新規に作成する必要があります。
「選択」をクリックします。
ファイル・ネーミング規則フィールドにpo_%と入力します。
ネーミング規則のリストが自動的に表示されます。
表示されるリストからyyMMddHHmmssを選択します。
終わりの%記号は自動的に付加されます。
選択の最後に.xmlを入力します。
これで、po_%yyMMddHHmmss%.xmlという名前がファイル・ネーミング規則フィールドに表示されています。
「メッセージ数の到達」、「経過時間の超過」および「ファイル・サイズの超過」チェック・ボックスの選択を解除し、「次へ」をクリックします。
メッセージ・ウィンドウの「スキーマの場所」フィールドの隣の「参照」をクリックします。
タイプの選択ウィンドウで、「プロジェクトのスキーマ・ファイル」→「POAcknowledge.xsd」→「POAcknowledge」の順に選択します。
「OK」をクリックします。
「スキーマの場所」フィールドおよび「スキーマ要素」フィールドに、それぞれの値(POAcknowledge.xsd、POAcknowledge)が自動的に入力されます。
「次へ」をクリックします。
「終了」をクリックします。
パートナ・リンク・ウィンドウに戻ります。他のフィールドには、すべて値が自動的に入力されます。表示されるウィンドウは、次のような形式になります。
| フィールド | 値 |
|---|---|
| 名前 | FileWrite |
| WSDLファイル | file:/c:/oraJDev/jdev/mywork/OrderBookapplication/POAcknowledge/bpel/FileWrite.wsdl
注意: このドライブ文字を含んだディレクトリ・パスは、Windowsオペレーティング・システムの場合の例です。このチュートリアルをUNIXオペレーティング・システム上で実行している場合、ディレクトリ・パスは異なります。 また、oraJDevは、この例でのOracle JDeveloperのホーム・ディレクトリを表します。 |
| パートナ・リンク・タイプ | Write_plt |
| パートナ・ロール | Write_role |
| マイ・ロール | 何も指定しません。 |
「OK」をクリックします。
「ファイル」メイン・メニューから「保存」を選択します。
FileWrite.wsdlが「POAcknowledge」→「インテグレーション・コンテンツ」→「FileWrite」の下に表示されます。このファイルには、アダプタ構成ウィザードで指定したパラメータが含まれています。
|
概要: このInvokeアクティビティでは、注文確認データの結果をファイルに書き込みます。 |
「コンポーネント・パレット」セクションから「Process Activities」を選択します。
「コンポーネント・パレット」セクションから「transformPO」Transformアクティビティの下にInvokeアクティビティをドラッグ・アンド・ドロップします。
Invokeアイコンをダブルクリックして、Invokeウィンドウを表示します。
次の詳細を入力します。
| フィールド | 値 |
|---|---|
| 名前 | invokeFileOut |
| パートナ・リンク | FileWrite |
「操作」フィールドには、値(Write)が自動的に入力されます。
「入力変数」フィールドの右側にある最初のアイコンをクリックします。これは変数自動作成アイコンです。
表示される変数の作成ウィンドウで「OK」をクリックします。
invokeFileOut_write_InputVariableという変数が、「入力変数」フィールドに自動作成されます。この変数は、FileWritePOAcknowledge_msgというメッセージ・タイプに自動的に割り当てられます。
「OK」をクリックします。
「ファイル」メイン・メニューから「保存」を選択します。
「コンポーネント・パレット」セクションから「invokeFileOut」Invokeアクティビティの上にAssignアクティビティをドラッグ・アンド・ドロップします。
assignアイコンをダブルクリックして、割当てウィンドウを表示します。
「一般」タブをクリックします。
「名前」フィールドにassignFileWriteInと入力します。
「適用」をクリックします。
「コピー操作」タブをクリックします。
「作成」をクリックし「コピー操作」を選択して、コピー操作の作成ウィンドウを表示します。
| フィールド | 値 |
|---|---|
| 送信元 | |
|
変数 |
|
「変数」→「outputVariable」→「ペイロード」の順に開いて選択します。 |
| 宛先 | |
|
変数 |
|
「変数」→「invokeFileOut_Write_InputVariable」→「POAcknowledge」の順に開いて選択します。 |
「OK」をクリックして、コピー操作の作成ウィンドウおよび割当てウィンドウを閉じます。
「ファイル」メイン・メニューから「保存」を選択します。
「アプリケーション・ナビゲータ」セクションに移動します。
「POAcknowledge」を右クリックします。
「デプロイ」→「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 BPEL Controlの「ダッシュボード」タブが表示されます。作業中のBPELプロセスであるPOAcknowledgeが、「デプロイ済のBPELプロセス」リスト内に表示されます。
POAcknowledgeをクリックします。
「HTMLフォーム」のすべてのフィールドに詳細を入力し、「XMLメッセージの転送」をクリックします。
Oracle BPEL Controlをリフレッシュします。
「インスタンス」タブをクリックします。
POAcknowledgeインスタンスをクリックします。
手順13で選択したディレクトリ(Windowsオペレーティング・システムの場合はdrive_letter:\temp、UNIXオペレーティング・システムの場合は/temp)に書き込まれた出力ファイルを確認します。
|
概要: ここでは、元のOrderBookingプロセスを拡張して、新規作成したPOAcknowledgeサービスをコールし、注文確認をファイルに書き込みます。これらの手順は、OrderBookingプロセスで実行します。 |
「アプリケーション・ナビゲータ」セクションのOrderBookingプロセスを開きます。
「OrderBooking.bpel」をダブルクリックします。
「コンポーネント・パレット」セクションから「Services」を選択します。
「コンポーネント・パレット」セクションからDesignerのウィンドウの右側にPartnerLinkアクティビティをドラッグ・アンド・ドロップします。
次の値を入力して、OrderBookingプロセス用パートナ・リンクを作成します。
| フィールド | 値 |
|---|---|
| 名前 | WritePOA
注意: WritePOAは、「WSDLファイル」を選択した後に入力してください。 これは、名前が「WSDLファイル」フィールドの選択を基に自動的にPOAcknowledgeにデフォルト設定されるためです。 |
| WSDLファイル | 「サービス・エクスプローラ」の懐中電灯アイコンをクリックし、BPELサービス→「my_ integration_server_connection」→「プロセス」→「デフォルト」→「POAcknowledge」の順に開いて選択することで次のURLにアクセスします。
http://localhost:8888/orabpel/default/POAcknowledge/POAcknowledge?wsdl 関連項目: サービス・エクスプローラ・ウィンドウでWSDLファイルを追加しようとして解析エラーが表示された場合は、「Oracle JDeveloperのWebブラウザ設定でのホスト名の設定」を参照してください。 |
| パートナ・リンク・タイプ | POAcknowledge |
| パートナ・ロール | POAcknowledgeProvider |
| マイ・ロール | POAcknowledgeRequester |
「OK」をクリックします。
「ファイル」メイン・メニューから「保存」を選択します。
|
概要: ここでは、Scopeアクティビティを作成して、実行する論理的な手順を形成するすべてのアクティビティをグループ化します。 |
「コンポーネント・パレット」セクションから「Process Activities」を選択します。
「コンポーネント・パレット」セクションから「SelectSupplier」Switchアクティビティの下にScopeアクティビティをドラッグ・アンド・ドロップします。
scopeアイコンをダブルクリックして、Scopeウィンドウを表示します。
「一般」タブの「名前」フィールドにWritePOAcknowledgementと入力します。
「OK」をクリックします。
このフェーズでは、このScopeアクティビティの中にInvoke、ReceiveおよびAssignアクティビティを作成します。
+記号をクリックして、Scopeアクティビティを開きます。
「ファイル」メイン・メニューから「保存」を選択します。
|
概要: ここでは、InvokeおよびReceiveアクティビティを作成します。Invokeアクティビティは、入力データを送信する初期操作となります。Receiveアクティビティは、外部サービスが処理された後、データを受信するコールバック・インタフェースとなります。 |
「コンポーネント・パレット」セクションから「WritePOAcknowledgement」Scopeアクティビティの中にInvokeアクティビティをドラッグ・アンド・ドロップします。
Invokeアイコンをダブルクリックして、Invokeウィンドウを表示します。
次の詳細を入力します。
| フィールド | 値 |
|---|---|
| 名前 | invokeFileWrite |
| パートナ・リンク | WritePOA |
「操作」フィールドには、値(initiate)が自動的に入力されます。
表示される変数の作成ウィンドウで「OK」をクリックします。
invokeFileWrite_initiate_InputVariableという変数が、「入力変数」フィールドに自動作成されます。この変数は、POAcknowledgeRequestMessageというメッセージ・タイプに自動的に割り当てられます。
「OK」をクリックします。
「コンポーネント・パレット」セクションから「WritePOAcknowledgement」Scopeアクティビティの中の「invokeFileWrite」Invokeアクティビティの下にReceiveアクティビティをドラッグ・アンド・ドロップします。
Receiveアイコンをダブルクリックして、Receiveウィンドウを表示します。
次の詳細を入力します。
| フィールド | 値 |
|---|---|
| 名前 | receiveFileWrite |
| パートナ・リンク | WritePOA |
「操作」フィールドには、値(onResult)が自動的に入力されます。
表示される変数の作成ウィンドウで「OK」をクリックします。
receiveFileWrite_onResult_InputVariableという変数が、「変数」フィールドに自動作成されます。この変数は、POAcknowledgeResponseMessageというメッセージ・タイプに自動的に割り当てられます。
「OK」をクリックします。
「ファイル」メイン・メニューから「保存」を選択します。
「コンポーネント・パレット」セクションから「WritePOAcknowledgement」Scopeアクティビティの中の「invokeFileWrite」Invokeアクティビティの上にAssignアクティビティをドラッグ・アンド・ドロップします。
assignアイコンをダブルクリックして、割当てウィンドウを表示します。
「一般」タブをクリックします。
「名前」フィールドにassignFileWriteInと入力します。
「適用」をクリックします。
「コピー操作」タブをクリックします。
「作成」をクリックし「コピー操作」を選択して、コピー操作の作成ウィンドウを表示します。
| フィールド | 値 |
|---|---|
| 送信元 | |
|
変数 |
|
「変数」→「inputVariable」→「ペイロード」の順に開いて選択します。 |
| 宛先 | |
|
変数 |
|
「変数」→「invokeFileWrite_initiate_InputVariable」→「ペイロード」の順に開いて選択します。 |
「OK」をクリックして、コピー操作の作成ウィンドウおよび割当てウィンドウを閉じます。
「ファイル」メイン・メニューから「保存」を選択します。
「コンポーネント・パレット」セクションから「WritePOAcknowledgement」Scopeアクティビティの中の「receiveFileWrite」Receiveアクティビティの下にAssignアクティビティをドラッグ・アンド・ドロップします。
assignアイコンをダブルクリックして、割当てウィンドウを表示します。
「一般」タブをクリックします。
「名前」フィールドにassignFileWriteCommentsと入力します。
「適用」をクリックします。
「コピー操作」タブをクリックします。
「作成」をクリックし「コピー操作」を選択して、コピー操作の作成ウィンドウを表示します。
| フィールド | 値 |
|---|---|
| 送信元 | |
|
式 |
|
concat(bpws:getVariableData('inputVariable','payload','/ns1:PurchaseOrder/ns1:OrderInfo/ns1:OrderComments'), ' - Write POAck complete') |
| 宛先 | |
|
変数 |
|
「変数」→「inputVariable」→「ペイロード」→「ns1:PurchaseOrder」→「ns1:OrderInfo」→「ns1:OrderComments」の順に開いて選択します。 |
「OK」をクリックして、コピー操作の作成ウィンドウおよび割当てウィンドウを閉じます。
完了後、Designerのウィンドウには次のように表示されます。
-記号をクリックして、「WritePOAcknowledgement」Scopeアクティビティを閉じます。
「ファイル」メイン・メニューから「保存」を選択します。
「スタート」→「すべてのプログラム」→「Oracle - Oracle_Home」→「Oracle BPEL Process Manager」→「BPEL Control」の順に選択し、Oracle BPEL Controlにログインします(すでに開いている場合はページをリフレッシュします)。
Oracle BPEL Controlにログインするために次の情報を入力して「ログイン」をクリックします。
| フィールド | 値 |
|---|---|
| ユーザー名 | oc4jadmin |
| パスワード | password
|
Oracle BPEL Controlの「ダッシュボード」タブが表示されます。作業中のBPELプロセスであるPOAcknowledgeおよびOrderBookingが「デプロイ済のBPELプロセス」リスト内に表示されます。
手順4で増分したOrderBookingインスタンスのバージョンをクリックし、次のいずれかの方法で起動します。
以前に選択したディレクトリ(Windowsオペレーティング・システムの場合はdrive_letter:\temp、UNIXオペレーティング・システムの場合は/temp)にOrderBookingPO_1.xmlファイルをコピーして、プロセス・インスタンスを呼び出します。この手順は、「注文プロセスの実行および確認」セクションのBatchOrderProcessingプロセスが完了している場合はオプションです。
手順11で説明したグラフィカル・ユーザー・インタフェースJSPページを使用して、SelectManufacturingの手動価格見積りタスクを完了します。
Oracle BPEL Controlに戻ります。
Oracle BPEL Controlをリフレッシュします。
画面上部の「インスタンス」タブをクリックします。
インスタンスが作成されたかどうか確認します。これらはすべて「インスタンス」リストに表示されます。「最終更新日時」リストには、作成日時が表示されます。
インスタンスをクリックします。
ディレクトリ(Windowsオペレーティング・システムの場合はdrive_letter:\temp、UNIXオペレーティング・システムの場合は/temp)のコンテンツを確認します。po_timestamp.xmlという名前の出力ファイルが作成されます。属性を確認します(姓と名の連結など)。
ファイル・アダプタに書込み機能を追加し、注文フォームに入力されたデータを受け取りました。この入力データは注文確認に変換され、その結果がファイルに書き込まれました。次の主要タスクを実行しました。
POAcknowledgeBPELプロセスに戻り、ファイル・アダプタを使用してディレクトリにファイルを書き込む(この場合は、送信する注文確認)FileOutInboundという名前のパートナ・リンクを作成しました。
FileOutInboundを呼び出すPOAcknowledgeを設計しました。
POAcknowledgeをデプロイしました。
OrderBooking BPELプロセスに戻り、POAcknowledgeと相互作用するWritePOAという名前のパートナ・リンクを作成しました。
WritePOAを呼び出すOrderBookingを設計しました。
OrderBooking BPELプロセスをデプロイしました。
Oracle BPEL Controlから、注文フォームに記入してRapid DistributorsサービスおよびSelect Manufacturingサービスに送信することで、OrderBookingを実行しました。
読取り用の注文ファイルをディレクトリにコピーしました。
Rapid DistributorsのURLにアクセスし、サプライヤ価格を手動で送信しました。
注文ファイルが削除され、注文確認ファイルがディレクトリ内に書き込まれたかどうか確認しました。 また、受け取った注文ファイルの内容が、送信する注文確認に変換されたかどうかを確認しました。