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

戻る
戻る
次へ
次へ
 

7 変換ロジックの追加

この章では、BPELプロセスに変換ロジックを追加する方法について説明します。

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

7.1 概要

チュートリアルのこのフェーズでは、第6章「フォルト処理および例外管理の作成」で設計したプロセスに処理を追加します。このフェーズを実行する前に、前のフェーズが正常に完了したことを確認してください。チュートリアルのこのフェーズでは、新規BPELプロセスに変換ロジックを追加します。次の主要タスクを実行します。

7.2 変換ロジックの追加

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

7.2.1 POAcknowledgeプロジェクトの作成およびスキーマのインポート

Oracle JDeveloperから、次の手順に従ってPOAcknowledgeプロジェクトを作成しスキーマをインポートします。


注意:

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

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

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

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

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

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

  5. 「入力スキーマ要素」フィールドの右側にある懐中電灯アイコンをクリックします。

  6. スキーマの選択ウィンドウで、SOA_Oracle_Home\bpel\samples\tutorials\127.OrderBookingTutorial\PracticeFilesディレクトリからOrderBookingPO.xsdを選択し、「開く」をクリックします。

    これで注文スキーマがプロジェクトにインポートされます。

    タイプの選択ウィンドウが表示されます。

  7. 「インポートしたスキーマ」「OrderBookingPO.xsd」「PurchaseOrder」の順に開いて選択します。

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

    POAcknowledgeRequestMessageメッセージ・タイプに、入力メッセージ・パート名のpayloadとメッセージ・パート要素のPurchaseOrderが自動的に割り当てられます。

  9. 「出力スキーマ要素」フィールドの右側にある懐中電灯アイコンをクリックします。

    タイプの選択ウィンドウが表示されます。

  10. 右上隅にある最初のアイコン(「スキーマ・ファイルのインポート」)をクリックします。

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

  11. 「URL」フィールドの右側にある懐中電灯アイコンをクリックします。

  12. スキーマの選択ウィンドウで、SOA_Oracle_Home\bpel\samples\tutorials\127.OrderBookingTutorial\PracticeFilesディレクトリからPOAcknowledge.xsdを選択し、「開く」をクリックします。

  13. スキーマ・ファイルのインポート・ウィンドウで「OK」をクリックします。

    これで注文スキーマがプロジェクトにインポートされます。

    タイプの選択ウィンドウが表示されます。

  14. 2番目の「インポートしたスキーマ」POAcknowledge.xsdPOAcknowledgeを開いて選択します。

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

    POAcknowledgeResponseMessageメッセージ・タイプに、出力メッセージ・パート名のpayloadとメッセージ・パート要素のPOAcknowledgeが自動的に割り当てられます。

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

    次のファイルが「アプリケーション・ナビゲータ」に表示されます。

    • bpel.xmlPOAcknowledge.bpelおよびPOAcknowledge.wsdlファイルが、「POAcknowledge」「インテグレーション・コンテンツ」の下に表示されます。

    • POAcknowledge.xsdおよびOrderBookingPO.xsdファイルが、「POAcknowledge」「インテグレーション・コンテンツ」「スキーマ」の下に表示されます。

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

  18. BPELプロジェクトの作成時にメッセージ・タイプに自動的に割り当てられたメッセージ・パートの名前と要素を確認する場合は、POAcknowledge.bpelが表示されていることを確認し、次の手順を実行します。

    1. 「構造」セクションで「メッセージ・タイプ」「プロセスWSDL - POAcknowledge.wsdl」「POAcknowledgeRequestMessage」「ペイロード」の順に開きます。

    2. 「payload」を右クリックし、「編集 メッセージ・パート」を選択して、メッセージ・パートの編集ウィンドウを表示します。

    3. ここで、PurchaseOrder要素タイプの(入力パラメータ)メッセージ・パート名(「ペイロード」)が定義されます。

    4. 「取消」をクリックします。

    5. 「構造」セクションで「メッセージ・タイプ」「プロセスWSDL - POAcknowledge.wsdl」「POAcknowledgeResponseMessage」「ペイロード」の順に開きます。

    6. 「payload」を右クリックし、「編集 メッセージ・パート」を選択して、メッセージ・パートの編集ウィンドウを表示します。

    7. ここで、POAcknowledge要素タイプの(出力パラメータ)メッセージ・パート名(「ペイロード」)が定義されます。

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

7.2.2 Transformアクティビティの作成


概要:

ここでは、Transformアクティビティを使用して、受信した注文データを送信用の注文確認データにマップする変換ロジックを作成します。

  1. 「receiveInput」Receiveアクティビティと「callbackClient」Invokeアクティビティの間にTransformアクティビティをドラッグ・アンド・ドロップします。

  2. Transformアクティビティをダブルクリックします。

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

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

  5. 「トランスフォーメーション」タブをクリックして、トランスフォーメーション・ウィンドウを表示します。

  6. 「ソース変数」フィールドで「inputVariable」を選択します(自動的に「ソース・パート」フィールドで「payload」が選択されます)。

  7. 「ターゲット変数」フィールドで「outputVariable」を選択します(自動的に「ターゲット・パート」フィールドで「payload」が選択されます)。

  8. 「マッパー・ファイル」フィールドは「Transformation_1」を選択したままにしておきます。

  9. 「マッパー・ファイル」フィールドの右側にある2番目のアイコン(「マッピングの作成」アイコン)をクリックします。

    create_mapping.gifの説明
    図create_mapping.gifの説明

    ソース要素とターゲット要素をグラフィカルにマッピングするウィンドウが表示されます。このウィンドウでは、ソース要素をターゲット要素にドラッグ(マップ)できます。ファイルがすでに存在することを知らせるメッセージを受け取った場合は、3番目のアイコンをクリックしてトランスフォーメーション・ウィンドウにアクセスします。

  10. ソース・スキーマおよびターゲット・スキーマ(両方のリストの一番上にある要素)を右クリックし、「すべて開く」を選択します。

    obph6trans1.gifの説明
    obph6trans1.gifの説明

  11. 次のソース要素を次のターゲット要素にドラッグ・アンド・ドロップします。このタスクを実行すると、各ソースとターゲットが線で接続されます。


    注意:

    ソースに表示されるネームスペース値(ns1poなど)は一定ではありません。自動的に表示されるネームスペース値を使用してください。

    ドラッグするソース ターゲット
    po:CustID CustomerID
    po:ID ID
    po:ShipTo ShippingAddress

    注意: マッピングの確認を求めるプロンプトが表示されたら「OK」をクリックします。このソースとターゲットの接続によって、すべてのサブ要素が自動的に接続されます。


    トランスフォーメーション・ウィンドウには次のように表示されます。

    obph6trans2.gifの説明
    図obph6trans2.gifの説明


    注意:

    ソース要素を間違ったターゲット要素にドラッグ・アンド・ドロップした場合は、接続線を右クリックして「削除」を選択してください。

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

  13. トランスフォーメーション・ウィンドウの中央にconcat関数をドラッグ・アンド・ドロップします。

  14. 「po:ShipTo」「po:Name」ソース・セクションに移動します。

  15. 「po:ShipTo」「po:Name」の下にある「po:First」および「po:Last」ソース要素をconcat関数の左側にドラッグします。これで、concat関数に2本のソース・ラインが接続されます。

  16. 「ShippingAddress」ターゲット・セクションに移動します。

  17. 「Name」ターゲット要素をconcat関数の右側にドラッグします。これにより、concat関数にターゲット・ラインが引かれ、ソース要素の姓と名が連結されて、ターゲット要素内に1つの名前として表示されます。

    obph6trans3.gifの説明
    図obph6trans3.gifの説明

  18. 別のconcat関数を、トランスフォーメーション・ウィンドウの中央にドラッグ・アンド・ドロップし、ソースの「BillTo」をターゲットの「BillingAddress」にマップします。

  19. 「po:BillTo」「po:Name」ソース・セクションに移動します。

  20. 「po:BillTo」「po:Name」の下にある「po:First」および「po:Last」ソース要素をconcat関数の左側にドラッグします。これで、concat関数に2本のソース・ラインが接続されます。

  21. 「BillingAddress」ターゲット・セクションに移動します。

  22. 「Name」ターゲット要素をconcat関数の右側にドラッグします。これにより、concat関数にターゲット・ラインが引かれ、ソース要素の姓と名が連結されて、ターゲット要素内に1つの名前として表示されます。

    obph6trans5.gifの説明
    図obph6trans5.gifの説明

  23. ターゲットの「項目」を選択し、右クリックします。XSL関数のリストが表示されます。

  24. 「XSLノードの追加」「for-each」を選択します。

    ターゲットの「項目」の上にfor-eachノードが表示されます。

  25. ソースの「po:OrderItems」セクションに移動します。

  26. ソースの「po:Item」for-eachリンクにドラッグ・アンド・ドロップします。

  27. ソースの「po:Item」をターゲットの「項目」for-eachリンクの下)にドラッグ・アンド・ドロップします。

  28. マッピングの確認を求めるプロンプトが表示されたら、「OK」をクリックします。自動的にすべてのサブ要素がマップされます。

    obph6trans7.gifの説明
    図obph6trans7.gifの説明

    これにより、ソースとターゲット間の1対多(1:M)のマッピングを指定する関係が定義されます。

  29. 残りのソースの注文要素を、ターゲットの注文確認要素にドラッグ・アンド・ドロップします。

    ドラッグするソース ターゲット
    po:SupplierPrice SupplierPrice
    po:SupplierName SupplierName
    po:OrderDate OrderDate
    po:OrderPrice OrderPrice
    po:OrderStatus OrderStatus

    obph6trans8.gifの説明
    図obph6trans8.gifの説明

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

7.2.3 変換ロジックのテスト

  1. 変換マッピング・ウィンドウを右クリックし、「テスト」を選択します。

    XSLマップのテスト・ウィンドウが表示されます。

  2. 「ソースXMLファイルの生成」が選択されていることを確認します。

    これでサンプルのXMLテスト・ファイルが作成されます。

  3. すべてのデフォルト設定を使用します。

    obph6test.gifの説明
    図obph6test.gifの説明

  4. 「OK」をクリックして変換ロジックをテストします。

    サンプルのテスト結果が表示されます。 ソースXMLとターゲットXMLが並んでデータを表示し、その下にXSLのマップ・データが一緒に表示されます。 これがテスト結果のデフォルトのレイアウトです。

    obph6test2.gifの説明
    図obph6test2.gifの説明

  5. 結果を確認します。

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

  7. Transformation_1-Source.xmlTransformation_1-Target.xmlおよびTransformation_1.xslファイルを、それぞれのタイトル・タブの「x」ボタンをクリックして閉じます。

    obph9trans7.gifの説明
    図obph9trans7.gifの説明

    Transformation_1.xslという名前の変換ファイルが、「アプリケーション・ナビゲータ」セクションの「POAcknowledge」「インテグレーション・コンテンツ」の下に表示されます。

7.3 まとめ

BPELプロセスに変換ロジックを追加しました。次の主要タスクを実行しました。