ヘッダーをスキップ
Oracle BPEL Process Manager Order Bookingチュートリアル
10g (10.1.3.1.0)
B31877-01
  目次
目次
索引
索引

戻る
戻る
次へ
次へ
 

8 ファイル・アダプタの読取り機能の使用

この章では、ファイル・アダプタを追加して、ファイルからデータを読み取り、OrderBooking BPELプロセスを外部サービスとしてコールする方法について説明します。

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

8.1 概要

チュートリアルのこのフェーズでは、第7章「変換ロジックの追加」で設計したプロセスに処理を追加します。このフェーズを実行する前に、前のフェーズが正常に完了したことを確認してください。このフェーズでは、ファイルからデータを読み取り、前に作成したOrderBooking BPELプロセスをサービスとしてコールするファイル・アダプタを追加します。次の主要タスクを実行します。

8.2 BPELプロセスをアクティブ化するためのファイル・アダプタの読取り機能の設計

この項では次のタスクを実行します。

8.2.1 Order Bookingバッチ・プロセスの作成およびスキーマのインポート

次の手順に従って、新規のOrder Bookingバッチ・プロジェクトを作成してスキーマをインポートします。このプロジェクトでは、空のBPELプロセスを作成し、非同期プロセスは作成しません。


注意:

プロジェクト、アクティビティまたは要素の名前に特殊文字(ピリオドなど)を使用しないでください。特殊文字を使用すると、プロジェクトのコンパイル時にエラーが発生します。

  1. 「OrderBookapplication」を右クリックして「新規プロジェクト」を選択します。

  2. 「カテゴリ」の下で、「General」を開いて「Projects」をクリックします。

  3. 「項目」の下で、「BPELプロセス・プロジェクト」をクリックして「OK」をクリックします。

  4. BPELプロジェクト作成ウィザード - プロジェクトの設定ウィンドウで、次の詳細を入力して「終了」をクリックします。

    フィールド
    名前 BatchOrderProcessing
    ネームスペース デフォルト・パスを使用します。
    デフォルトのプロジェクト設定を使用 BPELプロセスとBPELプロジェクトに同じ名前を使用し、デフォルトのプロジェクト・ディレクトリを使用するために、選択した状態にしておきます。
    テンプレート 空のBPELプロセス


    注意:

    「テンプレート」リストから、「空のBPELプロセス」を選択したことを確認してください。このプロジェクトは、以前に作成したプロジェクトとは異なります。

    これにより、Designerウィンドウの「アプリケーション・ナビゲータ」セクションに、bpel.xmlおよびBatchOrderProcessing.bpelファイルが作成されます。

  5. Designerウィンドウの「アプリケーション・ナビゲータ」セクションのBatchOrderProcessing.bpelをダブルクリックして、Designerウィンドウ左下のセクションに「構造」セクションを表示します。

  6. 「構造」セクションで「スキーマ」を選択し、右クリックします。

  7. 「インポート スキーマ」を選択します。

    スキーマのインポート・ウィンドウが表示されます。

  8. 「URL」フィールドの隣の懐中電灯のアイコンをクリックします。

  9. SOA_Oracle_Home\bpel\samples\tutorials\127.OrderBookingTutorial\PracticeFilesディレクトリからOrderBookingPO.xsdを選択し、「開く」をクリックします。

    スキーマのインポート・ウィンドウの「URL」フィールドに、このファイルが追加されます。

  10. 「OK」をクリックします。

  11. Designerウィンドウの「アプリケーション・ナビゲータ」セクションで、OrderBookingPO.xsdが、「BatchOrderProcessing」「インテグレーション・コンテンツ」「スキーマ」の下に表示されていることを確認します。 OrderBookingPO.xsdは、「構造」セクションの「スキーマ」にも表示されます。

8.2.2 ファイル・アダプタのファイル読取り機能を使用するパートナ・リンクの作成


概要:

ここでは、ファイル・アダプタを使用するインバウンドのパートナ・リンクを作成します。指定したディレクトリ内で特定の拡張子のファイルを15秒おきにチェックするように、このファイル・アダプタを構成します。このパートナ・リンクは、プロセスの入力ポイントとして機能し、ファイルを読み取ってプロセスに入力データを送信(インスタンスを作成)します。

  1. 「コンポーネント・パレット」セクションのドロップダウン・リストで「Services」が選択されていることを確認します。

  2. Designerのウィンドウの右側に、PartnerLinkアクティビティをドラッグ・アンド・ドロップします。

  3. 「名前」フィールドは空のままにしておきます。 名前は、アダプタ構成ウィザードの実行時に手順7で入力したサービス名をもとに自動的に作成されます。

  4. 上にある3番目のアイコン(「アダプタ・サービスの定義」アイコン)をクリックします。これにより、アダプタ構成ウィザードが起動します。

    adapter_service.gifの説明
    図adapter_service.gifの説明

  5. ようこそウィンドウで「次へ」をクリックします。

  6. アダプタ・タイプ・ウィンドウで「ファイル・アダプタ」を選択し、「次へ」をクリックします。

  7. サービス名ウィンドウの「サービス名」フィールドにFileReadと入力し、「次へ」をクリックします。

  8. 操作ウィンドウで、「操作タイプ」として「Read File」を選択し、「次へ」をクリックします。「操作名」フィールドには、自動的にReadと入力されます。

  9. 「ディレクトリ名は次の方法で指定します」では「物理パス」を選択します。

  10. 「着信ファイル用のディレクトリ(物理パス)」フィールドの隣の「参照」をクリックします。

  11. ファイルの読取り元のディレクトリ(Windowsオペレーティング・システムの場合はdrive_letter:\temp、UNIXオペレーティング・システムの場合は/temp)を選択します。このディレクトリが存在しない場合は、適切な権限で新規に作成する必要があります。

  12. 「選択」をクリックします。

  13. 「処理済ファイルをアーカイブ」チェック・ボックスが選択されていないことを確認します。

  14. 「正常な取得後にファイルを削除」チェック・ボックスが選択されていることを確認します。

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

  16. 「処理対象ファイルの名前パターン」フィールドにOrderBooking*.xmlと入力します。この表記規則により、このパターンの入力ファイルが処理対象として指定されます。

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

  18. 「ポーリング頻度」フィールドに15秒と入力します。

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

  20. メッセージ・ウィンドウの「スキーマの場所」フィールドの隣の「参照」をクリックして、タイプの選択ウィンドウを表示します。

  21. 「プロジェクトのスキーマ・ファイル」「OrderBookingPO.xsd」「PurchaseOrder」の順に選択します。

  22. 「OK」をクリックします。

    「スキーマの場所」フィールドおよび「スキーマ要素」フィールドに、それぞれの値(OrderBookingPO.xsdPurchaseOrder)が自動的に入力されます。

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

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

    パートナ・リンク・ウィンドウに戻ります。他のフィールドには、すべて値が自動的に入力されます。表示されるウィンドウは、次のような形式になります。

    フィールド
    名前 FileRead
    WSDLファイル file:/c:/oraJDev/jdev/mywork/OrderBookapplication/BatchOrderProcessing/bpel/FileRead.wsdl.

    注意: このドライブ文字を含んだディレクトリ・パスは、Windowsオペレーティング・システムの場合の例です。このチュートリアルをUNIXオペレーティング・システム上で実行している場合、ディレクトリ・パスは異なります。 また、oraJDevは、この例でのOracle JDeveloperのホーム・ディレクトリを表します。

    パートナ・リンク・タイプ Read_plt
    パートナ・ロール 何も指定しません。
    マイ・ロール Read_role

  25. 「OK」をクリックします。

  26. 「ファイル」メイン・メニューから「保存」を選択します。

    FileRead.wsdl「BatchOrderProcessing」「インテグレーション・コンテンツ」FileReadの下に表示されます。このファイルには、アダプタ構成ウィザードで指定したパラメータが含まれています。

8.2.3 Order Bookingパートナ・リンクの作成


概要:

ここでは、以前に作成したOrder BookingプロセスをBPELプロセスとしてコールするパートナ・リンクを作成します。

  1. 「コンポーネント・パレット」セクションからDesignerのウィンドウの右側にPartnerLinkアクティビティをドラッグ・アンド・ドロップします。

  2. 次の値を入力して、Order Bookingプロセス用パートナ・リンクを作成します。


    注意:

    次の「WSDLファイル」フィールドでは、懐中電灯(左から2番目にある「サービス・エクスプローラ」という名前のアイコン)をクリックしてサービス・エクスプローラ・ウィンドウにアクセスすると、OrderBookingサービスが自動的に選択されます。

    フィールド
    名前 OrderBooking
    WSDLファイル 「サービス・エクスプローラ」の懐中電灯アイコンをクリックし、BPELサービスmy_ integration_server_connection「プロセス」「デフォルト」→「OrderBooking」の順に開いて選択することで次のURLにアクセスします。

    http://localhost:8888/orabpel/default/OrderBooking/OrderBooking?wsdl

    関連項目: サービス・エクスプローラ・ウィンドウでWSDLファイルを追加しようとして解析エラーが表示された場合は、「Oracle JDeveloperのWebブラウザ設定でのホスト名の設定」を参照してください。

    パートナ・リンク・タイプ OrderBooking
    パートナ・ロール OrderBookingProvider
    マイ・ロール OrderBookingRequester

  3. 「OK」をクリックします。

  4. 「ファイル」メイン・メニューから「保存」を選択します。

8.2.4 ReceiveおよびInvokeアクティビティの作成


概要:

ここでは、ReceiveおよびInvokeアクティビティを作成します。Receiveアクティビティはファイルからデータを読み取ります。InvokeアクティビティはOrderBooking内のプロセスを呼び出します。

  1. 「コンポーネント・パレット」セクションから「Process Activities」を選択します。

  2. 「コンポーネント・パレット」セクションからDesignerのウィンドウにReceiveアクティビティをドラッグ・アンド・ドロップします。 「Order Bookingバッチ・プロセスの作成およびスキーマのインポート」で空のBPELプロセスを作成したため、Designerウィンドウには、非同期BPELプロセスで自動作成される「receiveInput」Receiveおよび「callbackClient」Invokeアクティビティは必要とされず、含まれません。

  3. Receiveアイコンをダブルクリックして、Receiveウィンドウを表示します。

  4. 次の詳細を入力します。

    フィールド
    名前 receive_FileIn
    パートナ・リンク FileRead
    インスタンスの作成 このチェック・ボックスを選択します。

    「操作」フィールドには、値(Read)が自動的に入力されます。

  5. 「変数」フィールドの右側にある最初のアイコンをクリックします。これは変数自動作成アイコンです。

  6. 表示される変数の作成ウィンドウで「OK」をクリックします。

    receive_FileIn_Read_InputVariableという変数が、「変数」フィールドに自動作成されます。この変数は、FileReadPurchaseOrder_msgというメッセージ・タイプに自動的に割り当てられます。

  7. 手順4で説明したとおり、「インスタンスの作成」チェック・ボックスが選択されていることを確認します。

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

  9. 「コンポーネント・パレット」セクションから「receive_FileIn」Receiveアクティビティの下にInvokeアクティビティをドラッグ・アンド・ドロップします。

  10. Invokeアイコンをダブルクリックして、Invokeウィンドウを表示します。

  11. 次の詳細を入力します。

    フィールド
    名前 invoke_OrderBooking
    パートナ・リンク OrderBooking

    「操作」フィールドには、値(initiate)が自動的に入力されます。

  12. 「入力変数」フィールドの右側にある最初のアイコンをクリックします。これは変数自動作成アイコンです。

  13. 表示される変数の作成ウィンドウで「OK」をクリックします。

    invoke_OrderBooking_initiate_InputVariableという変数が、「入力変数」フィールドに自動的に作成されます。この変数は、OrderBookingRequestMessageというメッセージ・タイプに自動的に割り当てられます。

  14. 「OK」をクリックします。

  15. 「ファイル」メイン・メニューから「保存」を選択します。

8.2.5 Assignアクティビティの作成


概要:

ここでは、OrderBookingプロセスでのアクティビティの開始に使用するinvoke_OrderBooking_initiate_InputVariable変数にファイルから読み取ったデータを渡すAssignアクティビティを作成します。

  1. 「コンポーネント・パレット」セクションから「receive_FileIn」Receiveアクティビティの下にAssignアクティビティをドラッグ・アンド・ドロップします。

  2. assignアイコンをダブルクリックして、割当てウィンドウを表示します。

  3. 「一般」タブをクリックします。

  4. 「名前」フィールドにassignOrderと入力します。

  5. 「適用」をクリックします。

  6. 「コピー操作」タブをクリックします。

  7. 「作成」をクリックし「コピー操作」を選択して、コピー操作の作成ウィンドウを表示します。

  8. 次の詳細を入力します。

    フィールド
    送信元
    • タイプ
    変数
    • 変数
    「変数」「receive_FileIn_Read_InputVariable」「PurchaseOrder」の順に開いて選択します。
    宛先
    • タイプ
    変数
    • 変数
    「変数」「invoke_OrderBooking_initiate_InputVariable」「ペイロード」の順に開いて選択します。

  9. 「OK」をクリックして、コピー操作の作成ウィンドウおよび割当てウィンドウを閉じます。

  10. 「ファイル」メイン・メニューから「保存」を選択します。

    完了後、Designerのウィンドウには次のように表示されます。

    obph7.gifの説明
    図obph7.gifの説明

8.2.6 注文プロセスの検証、コンパイルおよびデプロイ

  1. 「アプリケーション・ナビゲータ」セクションに移動します。

  2. 「BatchOrderProcessing」を右クリックします。

  3. 「デプロイ」my_integration_server_connection「defaultドメインにデプロイ」の順に選択します。

    これでBPELプロセスがコンパイルされます。 ウィンドウ下部のボタンをクリックしてエラーの有無を確認します。エラーが発生していなければ、デプロイは成功しています。 デプロイに失敗した場合は、手順4を参照してください。

8.2.7 注文プロセスの実行および確認

  1. 「スタート」「すべてのプログラム」「Oracle - Oracle_Home「Oracle BPEL Process Manager」「BPEL Control」の順に選択し、Oracle BPEL Controlにログインします(すでに開いている場合はページをリフレッシュします)。

  2. Oracle BPEL Controlにログインするために次の情報を入力して「ログイン」をクリックします。

    フィールド
    ユーザー名 oc4jadmin
    パスワード password

    passwordは、インストール時に「Oracle Application Server SOA Suiteのインストール」で入力した値です。

    Oracle BPEL Controlの「ダッシュボード」タブが表示されます。 BatchOrderProcessingというBPELプロセス、およびそれが依存している一連のサブプロセスが、「デプロイ済のBPELプロセス」リストに表示されます。

  3. OrderBookingPO_1.xmlファイルを、SOA_Oracle_Home\bpel\samples\tutorials\127.OrderBookingTutorial\PracticeFilesディレクトリから、手順11で指定したディレクトリ(Windowsオペレーティング・システムの場合はdrive_letter:\temp、UNIXオペレーティング・システムの場合は/temp)にコピーします。

  4. 手順18で設定した15秒間のポーリング周期が経過してから、Oracle BPEL Controlをリフレッシュします。プロセスの開始後、ファイルが読み取られ、削除され(読取りに成功した場合)、OrderBookingプロセスに送信されます。OrderBookingがレスポンスを返すと、処理は完了します。

  5. 手順11で説明したグラフィカル・ユーザー・インタフェースJSPページを使用して、SelectManufacturingの手動価格見積りタスクを完了します。

  6. Oracle BPEL Controlに戻ります。

  7. 上の「インスタンス」をクリックします。

  8. Oracle BPEL Controlをリフレッシュし、プロセス・インスタンスの作成および完了を確認します。

  9. インスタンスをクリックします。

  10. 「監査」リンクをクリックし、(サブプロセスの)他のインスタンスを順にクリックして実行します。

  11. アクティビティの詳細を表示するには、各シーケンスの「詳細」リンクをクリックします。(同様のインスタンス管理は、「フロー」リンクの下でグラフィカルに行うこともできます。)

8.3 まとめ

ファイルからデータを読み取り、前に作成したOrderBooking BPELプロセスをサービスとしてコールするファイル・アダプタを追加しました。次の主要タスクを実行しました。