• 検索結果がありません。

データベースへの「 Order 」情報の挿入

6. 起動アクティビティの左側にある矢印を使用して、起動アクティビティで OrderSequence サービスを指します。

6.4.6 データベースへの「 Order 」情報の挿入

次の手順では、データベースに「Order」情報を挿入する起動アクティビティを作成します。

起動アクティビティを作成するには、次の手順を実行します。

1. 「コンポーネント・パレット」の「BPELサービス」メニューから「set_order_id」割当 てアクティビティの下に「起動」をドラッグアンドドロップします。

2. 「起動」スコープをダブルクリックします。

「起動」ダイアログボックスが表示されます。

3. 起動アクティビティでOrder_Processing_Service Partner Linkを指します。

「起動の編集」ダイアログボックスが表示されます。

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

5. 「パートナ・リンク」フィールドには、自動的にOrder_Processing_Serviceと入力さ れます。デフォルト値をそのまま使用します。

6. 「操作」フィールドには、デフォルトでMergeと入力されます。デフォルト値をそのまま 使用します。

7. 「入力」フィールドの末尾にある「入力変数の自動作成」アイコンをクリックします。

「変数の作成」ダイアログボックスが表示されます。

8. 図6-27に示すように、「名前」フィールドにCreate_Order_merge_InputVariableと 入力してから、「OK」をクリックします。

6-27 「変数の作成」ダイアログ ボックス

「起動の編集」ダイアログボックスが再度表示されます。

9. 「起動の編集」ダイアログボックスで「OK」をクリックします。

これで、データベースに「Order」情報を挿入する起動アクティビティが作成されました。

図6-28に、すべての詳細を入力した後の「起動の編集」ダイアログボックスを示します。

6-28 「起動の編集」ダイアログ ボックス

6.4.7 変換アクティビティの作成

受信する「Purchase Order」の詳細を「Order」レコードにマッピングする必要があります。作 成されたこの注文に関するデータが、データベースに書き込まれる必要があります。データ ベースに書き込まれるデータは、特定の形式である必要があります(たとえば、フィールドの 名前はデータベース列と同じ名前である必要があります)。ただし、BPELプロセスのデータは 形式が異なっています。このため、変換を実行して、既存のデータをデータベースで要求され る形式に変更する必要があります。

変換は一般的な処理です。様々なサービスを起動してそれらのサービス間でデータを移動する 場合、ほとんどのデータのデータ形式は異なっているためです。この変換アクティビティでは、

TransformOrder.xslというファイルを作成して、受信注文情報をスキーマにマッピングし ます。

変換アクティビティを作成するには、次の手順を実行します。

1. 「コンポーネント・パレット」から「set_order_id」割当てアクティビティと

「Create_Order」起動アクティビティの間の空のスコープに「変換」アクティビティを ドラッグアンドドロップします。

2. 「変換」アクティビティをダブルクリックします。

「変換」ダイアログボックスが表示されます。

3. 図6-29に示すように、「一般」タブの「名前」フィールドにAssign_Create_Order_

Inputと入力します。

6-29 「変換」ダイアログ ボックスの「一般」タブ

4. 「トランスフォーメーション」タブで、次の詳細を指定します。

a. 「作成」ボタンをクリックして、ソース変数を指定します。

「ソース変数」ダイアログボックスが表示されます。

b. 「ソース変数」メニューでは、デフォルトで「inputvariable」が選択されています。

ここでは、選択されているデフォルトをそのまま使用します。

c. デフォルトでは、「ソース・パート」フィールドの値はPayloadです。ここでは、デ フォルト値をそのまま使用します。

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

「変換」ダイアログボックスの「変換」タブが、ソースの詳細が入力された状態で再 度表示されます。

e. 「ターゲット変数」メニューで、「Create_Order_merge_InputVariable」を選択しま す。

f. 「ターゲット・パート」フィールドには、自動的にOrdersCollectionと入力されます。

g. 「マッピングの参照」ボタンをクリックして、Transformation_1.xslファイルを検索し ます。

「SOAリソース・ブラウザ」ダイアログボックスが表示されます。

h. 図6-30に示すように、「Transformation_1.xsl」を選択して、「OK」をクリック

6-30 「SOAリソース・ブラウザ」ダイアログ ボックス

「マッパー・ファイル」フィールドには、マッパーファイル名が入力されます。

i. 「変換」ダイアログボックスで「OK」をクリックします。

「Oracle JDeveloper」ウィンドウでデータマッピングツールが開きます。

図6-31に、すべての詳細を指定した後の「変換」ダイアログボックスを示します。

6-31 「変換」ダイアログ ボックスの「トランスフォーメーション」タブ

5. データマッピングツールで、ソース側の「OrderInfo」およびターゲット側の

「Orders」を展開して、表6-1に示す単純なマッピングを作成します。

Oracle JDeveloperのデータマッピングツールでは、左の列にソース側、右の列にター

ゲット側が示されます。ソース側からターゲット側にラベルをドラッグアンドドロップし て、単純なマッピングを作成します。

図6-32に、「OrderInfo」から「Orders」へのマッピングを完了した後の「Oracle

JDeveloper」ウィンドウのデータマッピングツールを示します。

6-32 「OrderInfo」から「Orders」へのデータのマッピング 表6-1 「OrderInfo」から「Orders」へのデータのマッピング ソース client:SOAOrderBookingProcessRequest >

po:PurchaseOrder ターゲット > OrdersCollection > Orders

po:CustID custid

po:ID ordid

po:OrderItems itemsCollection

po:OrderInfo > po:OrderDate orderdate

po:OrderInfo > po:OrderPrice price

po:OrderInfo > po:OrderStatus status po:OrderInfo > po:OrderComments comments

6-33 「コンポーネント・パレット」の「XSLTコンストラクト」

c. 「XSLTコンストラクト」メニューの「for-each」をターゲット側の「項目」にドラッ グアンドドロップします。

図6-34に示すように、ターゲット側の「itemsCollection」と「項目」の間に

「for-each」ラベルが表示されます。

6-34 「for-each」ラベル

d. データマッピングツールのソース側で、「po:OrderItems」および「po: Item」を展開 します。

e. ソース側の「po:Item」をターゲット側の「for-each」にドラッグします。

ソース側の「po:Item」とターゲット側の「for-each」項目を結ぶ線が表示されます。

f. 表6-2に従って、項目フィールドをマッピングします。

7. ターゲット側の「itemid」をposition()関数にマッピングします。

8. 「ファイル」をクリックしてから、「すべて保存」をクリックしてTransformation_

1.xslファイルを保存します。

これで、ソースとターゲットの間でのデータのマッピングが完了しました。

図6-35に、変換アクティビティのマッピングが完了したデータマッパーを示します。

6-35 変換アクティビティのマッピング

6-2 詳細のマッピング

ソース >

client:SOAOrderBookingProcessRequest >

po:PurchaseOrder > po:OrderItems > po:Item

ターゲット > OrdersCollection > Orders >

itemsCollection > for-each > Items

po:ProductName productname

po:partnum partnum

po:price price

po:Quantity quantity

6.5 「Get Customer Information」プロセスの BPEL 実装の理解

ここでは、「Get_Customer_Information」プロセスのBPEL実装について説明します。

この「Get_Customer_Information」スコープは、CustomerSvcサービスを起動して、顧 客に関する情報を取得します。このプロセスの入力の一部には、「CustID」と呼ばれるフィー ルドがあり、購入を行った顧客のIDが入力されます。ただし、購入商品の発送先、購入代金請 求のためのクレジットカード情報などの顧客に関するその他の情報も必要となります。クレ ジットカードの詳細は、データベース内の顧客のアカウント情報の一部です。この情報はプロ セスには渡されませんが、受信する「Purchase Order」レコードのCustIDがあるため、この 情報を取得できます。クレジットカード情報を取得するには、顧客IDを入力するとその顧客に 関する情報を戻すサービスCustomerSvcを起動します。BPELプロセスでは、このデータが 後で使用されます。

図6-36に、「Order_Booking_To_Process」サンプルの完了した「Get_Customer_

Information」プロセスを示します。

6-36 「Get Customer Information」プロセス

「Get_Customer_Information」プロセスのBPEL実装には、次の項で説明するアクティビ ティが含まれています。

6.5.1項「「Invoke_Get_Customer_Information」起動アクティビティ」

6.5.2項「「Assign_Get_Customer_Information_Input」割当てアクティビティ」

6.5.1 Invoke_Get_Customer_Information 」起動アクティビティ

「Invoke_Get_Customer_Information」起動アクティビティの設計を参照するには、この アクティビティをダブルクリックします。

図6-37に、「Invoke_Get_Customer_Information」起動アクティビティを示します。

6-37 「Invoke_Get_Customer_Information」起動アクティビティ

「Invoke_Get_Customer_Information」起動アクティビティは、CustomerService

Partner Linkにアクセスし、findCustomerById操作を起動します。この操作は、「Assign_

Get_Customer_Information_Input」割当てアクティビティで割り当てられている顧客ID を使用して起動されます。操作の結果は、GetCustomerOutput変数に格納されます。

6.5.2 Assign_Get_Customer_Information_Input 」割当てアクティビティ

「Assign_Get_Customer_Information_Input」割当てアクティビティの設計を参照する には、このアクティビティをダブルクリックします。この割当てアクティビティでは、

findCustomerById操作に顧客IDが割り当てられます。

「Assign_Get_Customer_Information_Input」割当てアクティビティでは、

GetCustomerInput変数に顧客ID情報が割り当てられます。この変数は、Invoke_Get_

Customer_Information起動アクティビティの入力変数として使用されます。

注意: Oracle JDeveloperの「デザイナ」ページでは、割当てアクティビ

ティは起動アクティビティの前に配置されていますが、最初に起動アクティ ビティが作成されてから割当てアクティビティが作成されます。

6-38 「Get_Credit_Information」プロセス

「Get_Credit_Information」プロセスには、次の項で説明するアクティビティが含まれて います。

6.6.1項「「Invoke_Get_Credit_Information」起動アクティビティ」

6.6.2項「「Assign_GetCredit_Input」割当てアクティビティ」

6.6.1 Invoke_Get_Credit_Information 」起動アクティビティ

「Invoke_Get_Credit_Information」起動アクティビティの設計を参照するには、このア クティビティをダブルクリックします。

図6-39に、「Invoke_Get_Credit_Information」起動アクティビティを示します。

6-39 「Invoke_Get_Credit_Information」起動アクティビティ

「Invoke_Get_Credit_Information」起動アクティビティは、ValidateCredit Partner Linkにアクセスし、VerifyCC操作を起動します。VerifyCC操作は、クレジットカードの種 類および番号を使用して信用格付けを取得する場合に使用します。