この章では、同期サービスの呼出し方法について説明します。
この章の内容は次のとおりです。
このチュートリアルの第1フェーズでは、クライアントからの注文を受け取り、信用格付けを取得する単純な非同期BPELプロセスの作成方法を学習します。次の主要タスクを実行します。
同期信用格付けサービスをデプロイ(開始)します。
OrderBookingという名前の新規BPELプロセスを作成します。
同期信用格付けサービスと相互作用するパートナ・リンクを作成します。
同期信用格付けサービスを呼び出すBPELプロセスを設計します。
BPELプロセスをデプロイします。
デプロイしたBPELプロセスをOracle BPEL Controlから実行し、信用格付けサービスに社会保障カード番号を送信して、クライアントの信用履歴をチェックします。
信用格付けサービスからクライアントに返された信用格付け結果を調べます。
この項は次のトピックで構成されています。
Oracle BPEL ServerとOracle JDeveloperが起動していることを確認します。手順は、「Oracle BPEL Process Managerコンポーネントの起動」を参照してください。
このチュートリアルで設計するBPELプロセスは、信用格付けサービスと通信します。まず、このサービスをデプロイし、実行されていることをテストする必要があります。
「スタート」→「すべてのプログラム」→「Oracle - Oracle_Home」→「Oracle BPEL Process Manager」→Developer Promptを選択して、SOA_Oracle_Home
\bpel\samples
ディレクトリでオペレーティング・システムのコマンド・プロンプトを開きます。
utils\CreditRatingService
サブディレクトリに移動します。
cd utils\CreditRatingService
次のコマンドを入力します。
ant
これで、このチュートリアルを使用するために必要なサービスがデプロイされ、開始されます。成功すると、最後に次のようなメッセージが表示されます。
BUILD SUCCESSFUL Total time: 3 seconds oraBPELPM\bpel\samples\utils\CreditRatingService>
パスが見つからないというエラー・メッセージが表示された場合は、環境パスがSOA_Oracle_Home
\bpel\bin
ディレクトリに設定されていることを確認してください。
Internet Explorerを使用してOracle BPEL Controlにアクセスし、必要なすべてのサービスが実行されていることを確認します。 「スタート」→「すべてのプログラム」→「Oracle - Oracle_Home」→「Oracle BPEL Process Manager」→「BPEL Control」を選択します。
Oracle BPEL Controlにログインするために次の情報を入力して「ログイン」をクリックします。
フィールド | 値 |
---|---|
ユーザー名 | oc4jadmin
|
パスワード | password
|
password
は、インストール時に「Oracle Application Server SOA Suiteのインストール」で入力した値です。
「ダッシュボード」タブに、「CreditRatingService」、「TaskActionHandler」および「TaskManager」が表示されている場合、このチュートリアルのサービスは実行されています。
Order Bookingプロジェクトを作成する前に、Oracle JDeveloperから次の手順に従ってアプリケーションを作成します。
「アプリケーション・ナビゲータ」で、「アプリケーション」を右クリックして「新規アプリケーション」を選択します。
アプリケーションの作成ウィンドウで、次の詳細を入力して「OK」をクリックします。
フィールド | 値 |
---|---|
アプリケーション名 | OrderBookapplication |
ディレクトリ名 | デフォルト・パスを使用します。 |
アプリケーション・パッケージの接頭辞 | 何も指定しません。 |
アプリケーション・テンプレート | テンプレートなし[すべてのテクノロジ] |
プロジェクトの作成ウィンドウで「取消」をクリックします。
Oracle JDeveloperから、次の手順に従ってOrder Bookingプロジェクトを作成してスキーマをインポートします。
作成したばかりのアプリケーション名(OrderBookapplication)を右クリックして「新規プロジェクト」 を選択します。
「カテゴリ」の下で、「General」を開いて「Projects」をクリックします。
「項目」の下で、「BPELプロセス・プロジェクト」をクリックして「OK」をクリックします。
BPELプロジェクト作成ウィザード - プロジェクトの設定ウィンドウで、次の詳細を入力して「次へ」をクリックします。
フィールド | 値 |
---|---|
名前 | OrderBooking |
ネームスペース | デフォルト・パスを使用します。 |
デフォルトのプロジェクト設定を使用 | BPELプロセスとBPELプロジェクトに同じ名前を使用し、デフォルトのプロジェクト・ディレクトリを使用するために、選択した状態にしておきます。 |
テンプレート | 非同期BPELプロセス |
「入力スキーマ要素」フィールドの右側にある懐中電灯アイコンをクリックします。
スキーマの選択ウィンドウで、SOA_Oracle_Home
\bpel\samples\tutorials\127.OrderBookingTutorial\PracticeFiles
ディレクトリからOrderBookingPO.xsd
を選択し、「開く」をクリックします。
タイプの選択ウィンドウが表示されます。
「インポートしたスキーマ」→「OrderBookingPO.xsd」→「PurchaseOrder」の順に開いて選択します。
「OK」をクリックします。
OrderBookingRequestMessageメッセージ・タイプに、入力メッセージ・パート名のpayloadとメッセージ・パート要素のPurchaseOrderが自動的に割り当てられます。
「出力スキーマ要素」フィールドの右側にある懐中電灯アイコンをクリックします。
タイプの選択ウィンドウが表示されます。
「インポートしたスキーマ」→「OrderBookingPO.xsd」→「PurchaseOrder」の順に開いて選択します。
「OK」をクリックします。
OrderBookingResponseMessageメッセージ・タイプに、出力メッセージ・パート名のpayloadとメッセージ・パート要素のPurchaseOrderが自動的に割り当てられます。
「終了」をクリックします。
これで、GlobalCompanyスキーマがプロジェクトにインポートされます。このスキーマでは、送信する注文の構造を定義します。
次のファイルがOracle JDeveloperの「アプリケーション・ナビゲータ」セクションに表示されます。
bpel.xml、OrderBooking.bpelおよびOrderBooking.wsdlファイルが、「OrderBooking」→「インテグレーション・コンテンツ」の下に表示されます。
OrderBookingPO.xsdファイルが、「OrderBooking」→「インテグレーション・コンテンツ」→「スキーマ」の下に表示されます。
必要な場合、「OrderBookingPO.xsd」をダブルクリックすると、このファイルの設計およびソース・モードを表示できます。
OrderBookingPO.xsdを表示した場合、ウィンドウを閉じるには、タイトル・タブの「X」ボタンをクリックします。
OrderBooking.bpelをダブルクリックして、ウィンドウの左下に「構造」セクションを表示します。
注意: 「構造」セクションを表示するには、「ダイアグラム」タブを有効にする必要があります。 |
OrderBookingPO_1.xml
を、SOA_Oracle_Home
\bpel\samples\tutorials\127.OrderBookingTutorial\PracticeFiles
ディレクトリからJDev_Oracle_Home
\jdev\mywork\OrderBookapplication\OrderBooking
ディレクトリにコピーします。
「ファイル」メイン・メニューから「保存」を選択します。
BPELプロジェクトの作成時にメッセージ・タイプに自動的に割り当てられたメッセージ・パートの名前と要素を確認する場合は、次のようにします。
「構造」セクションで、「メッセージ・タイプ」→「プロセスWSDL - OrderBooking.wsdl」→「OrderBookingRequestMessage」→「ペイロード」の順に開きます。
「payload」を右クリックし、「編集 メッセージ・パート」を選択して、メッセージ・パートの編集ウィンドウを表示します。
ここで、PurchaseOrder要素タイプの(入力パラメータ)メッセージ・パート名(「ペイロード」)が定義されます。
「取消」をクリックします。
「構造」セクションで、「メッセージ・タイプ」→「プロセスWSDL - OrderBooking.wsdl」→「OrderBookingResponseMessage」→「ペイロード」の順に開きます。
「payload」を右クリックし、「編集 メッセージ・パート」を選択して、メッセージ・パートの編集ウィンドウを表示します。
ここで、PurchaseOrder要素タイプの(出力パラメータ)メッセージ・パート名(「ペイロード」)が定義されます。
「取消」をクリックします。
BPELプロジェクトの設計時に、黄色の小さなフラグがアクティビティの上側に表示される場合があります。 これらのアクティビティは、正常に構成されていも検証が済んでいない場合があります。
プロセスを検証するには、Designerウィンドウの上部の「検証」をクリックします。
アクティビティの検証が正常な場合、フラグの表示がなくなります。
黄色のフラグが残っている場合は、アクティビティに検証エラーがあるか、プロセスの設計が未完成の可能性があります。
検証エラーの詳細と解決方法を表示するには、アクティビティの上にある黄色のフラグをクリックします。
注意: プロセスをデプロイするとき、「Order Bookingプロセスの検証、コンパイルおよびデプロイ」に説明されているように、プロセスが自動的に検証、コンパイルされ、正常に終了した場合にデプロイも実行されます。 |
概要: ここでは、信用格付けサービスのパートナ・リンクを作成します。 これは、「サービスの開始およびテスト」でant を実行したときに開始されたサービスです。パートナ・リンクでは、OrderBooking BPELプロセスと相互作用する外部サービスを定義できます。パートナ・リンク・タイプでは、各サービスが対話中に果すロールを定義し、対話のコンテキスト内でメッセージを受信するために各サービスが提供するポート・タイプを指定することで、2つのサービス間での対話の関係が決まります。
|
Oracle JDeveloperの右上にある「コンポーネント・パレット」セクションのドロップダウン・リストで、「Services」が選択されていることを確認します。 「Services」のリストには、各種アダプタ、パートナ・リンクおよびデシジョン・サービスが表示され、Designerウィンドウにドラッグ・アンド・ドロップできます。
PartnerLinkアクティビティを、Designerウィンドウの右側の「サービス」ヘッダーの下の任意の位置にドラッグ・アンド・ドロップします。Designerのウィンドウの両側に、パートナ・リンクを配置できるセクションがあります。
次の値を入力して、信用格付けサービスのパートナ・リンクを作成します。 下側の「WSDLファイル」フィールドでは、「サービスの開始およびテスト」でデプロイした信用格付けサービスを自動的に選択するために、懐中電灯(左から2番目の「サービス・エクスプローラ」という名前のアイコン)をクリックして、サービス・エクスプローラ・ウィンドウにアクセスします。
フィールド | 値 |
---|---|
名前 | CreditRatingService |
WSDLファイル | 「サービス・エクスプローラ」の懐中電灯アイコンをクリックし、BPELサービス→「my_integration_server_connection」→「プロセス」→「デフォルト」→「CreditRatingService」の順に開いて選択することで次のURLにアクセスします。
my_integration_server_connectionは、手順17で指定したサーバー接続名です。 http://localhost:8888/orabpel/default/CreditRatingService/CreditRatingService?wsdl 関連項目: サービス・エクスプローラ・ウィンドウでWSDLファイルを追加しようとして解析エラーが表示された場合は、「Oracle JDeveloperのWebブラウザ設定でのホスト名の設定」を参照してください。 |
パートナ・リンク・タイプ | CreditRatingService |
パートナ・ロール | CreditRatingServiceProvider |
マイ・ロール | 同期サービスなので指定しません。 |
「OK」をクリックします。
「ファイル」メイン・メニューから「保存」を選択します。
概要: ここでは、OrderBookingプロセスから同期信用格付けサービスにリクエスト・データを送信し、レスポンスを受信するInvokeアクティビティを作成します。Order Bookingスキーマからの顧客のcustID変数が信用格付けの取得に使用されます。 OrderBookingプロセスを実行するときに、「Order Bookingプロセスの実行」の手順4でCustIDの値を指定します。 |
Oracle JDeveloperの右上にある「コンポーネント・パレット」セクションのドロップダウン・リストで、「Process Activities」が選択されていることを確認します。 「Process Activities」のリストには、Designerウィンドウにドラッグ・アンド・ドロップできるアクティビティが表示されています。
「コンポーネント・パレット」セクションから「receiveInput」Receiveアクティビティの下にScopeアクティビティをドラッグ・アンド・ドロップします。Scopeアクティビティを配置する場所には常に注意してください。このチュートリアルの全フェーズを通して、アクティビティを何度もドラッグ・アンド・ドロップします。
アクティビティを初めてドラッグ・アンド・ドロップすると、Scope_1などの一般的な名前が付けられます。
scopeアイコンをダブルクリックして、Scopeウィンドウを表示します。
「一般」タブの「名前」フィールドにGetCreditRatingと入力します。
「OK」をクリックします。
+記号をクリックして、Scopeアクティビティを開きます。このScopeアクティビティに、1つのInvokeアクティビティと2つのAssignアクティビティを追加します。
「コンポーネント・パレット」セクションから「GetCreditRating」Scopeアクティビティの中にInvokeアクティビティをドラッグ・アンド・ドロップします。
Invokeアイコンをダブルクリックして、Invokeウィンドウを表示します。
次の詳細を入力します。
フィールド | 値 |
---|---|
名前 | invokeCR |
パートナ・リンク | CreditRatingService |
「操作」フィールドには、値(process)が自動的に入力されます。
「入力変数」フィールドの右側にある最初のアイコンをクリックします。これは変数自動作成アイコンです。
変数の作成ウィンドウで「OK」をクリックします。
「入力変数」フィールドに、invokeCR_process_InputVariableという名前の変数が自動的に作成されます。この変数には、自動的にCreditRatingServiceRequestMessageメッセージ・タイプが割り当てられます。
「出力変数」フィールドの右側にある最初のアイコンをクリックします。
変数の作成ウィンドウで「OK」をクリックします。
「出力変数」フィールドに、invokeCR_process_OutputVariableという名前の変数が自動的に作成されます。この変数には、自動的にCreditRatingServiceResponseMessageメッセージ・タイプが割り当てられます。
「OK」をクリックします。
「ファイル」メイン・メニューから「保存」を選択します。
概要: ここでは、このフェーズで使用する2つのAssignアクティビティの最初の1つを作成します。このAssignアクティビティは、Order Bookingスキーマから顧客のcustID要素を取り出し、この要素をinvokeCR_process_InputVariableに割り当てます。これは、リクエストを信用格付けサービスに送信するために使用する変数です。 |
「コンポーネント・パレット」セクションから「invokeCR」Invokeアクティビティの上、および「GetCreditRating」Scopeアクティビティの中にAssignアクティビティをドラッグ・アンド・ドロップします。
assignアイコンをダブルクリックして、割当てウィンドウを表示します。
「一般」タブをクリックします。
「名前」フィールドにassignCRと入力します。
「適用」をクリックします。
「コピー操作」タブをクリックします。
「作成」をクリックし「コピー操作」を選択して、コピー操作の作成ウィンドウを表示します。
フィールド | 値 |
---|---|
送信元 | |
|
変数 |
|
「変数」→「inputVariable」→「ペイロード」→「ns1:PurchaseOrder」→「ns1:CustID」の順に開いて選択します。
注意: このネームスペースの数値(ns1、ns2など)は変わる場合があります。 自動的に表示されるネームスペース値を使用してください。 |
宛先 | |
|
変数 |
|
「変数」→「invokeCR_process_InputVariable」→「ペイロード」→「ns2:ssn」の順に開いて選択します。 |
次のコピー操作の作成ウィンドウが表示されます。
「OK」をクリックして、コピー操作の作成ウィンドウおよび割当てウィンドウを閉じます。
「ファイル」メイン・メニューから「保存」を選択します。
概要: このAssignアクティビティは、信用格付けサービスから受け取ったレスポンスを取り出し、コメント・フィールドに入力します。 |
「コンポーネント・パレット」セクションから「invokeCR」Invokeアクティビティの下、および「GetCreditRating」Scopeアクティビティの中にAssignアクティビティをドラッグ・アンド・ドロップします。
assignアイコンをダブルクリックして、割当てウィンドウを表示します。
「一般」タブをクリックします。
「名前」フィールドにassignRatingと入力します。
「適用」をクリックします。
「コピー操作」タブをクリックします。
「作成」をクリックし「コピー操作」を選択して、コピー操作の作成ウィンドウを表示します。
フィールド | 値 |
---|---|
送信元 | |
|
式 |
|
concat('Good credit, Rating = ', bpws:getVariableData('invokeCR_process_OutputVariable','payload','/ns2:rating'))
注意: [Ctrl]キー、スペース・バーの順に押して、表示されるリストからこの構文を選択(ダブルクリック)します。ネームスペースの数値(ns1、ns2など)は変わる場合があります。自動的に表示されるネームスペース値を使用してください。 |
宛先 | |
|
変数 |
|
「変数」→「inputVariable」→「ペイロード」→「ns1:PurchaseOrder」→「ns1:OrderInfo」→「ns1:OrderComments」の順に開いて選択します。 |
「OK」をクリックして、コピー操作の作成ウィンドウおよび割当てウィンドウを閉じます。
-記号をクリックして「GetCreditRating」Scopeアクティビティを閉じます。
閉じると、「GetCreditRating」Scopeアクティビティは次のように表示されます。
「ファイル」メイン・メニューから「保存」を選択します。
「コンポーネント・パレット」セクションから「GetCreditRating」Scopeアクティビティの下、および「callbackClient」アクティビティの上にAssignアクティビティをドラッグ・アンド・ドロップします。
assignアイコンをダブルクリックして、割当てウィンドウを表示します。
「一般」タブをクリックします。
「名前」フィールドにassignOutputと入力します。
「適用」をクリックします。
「コピー操作」タブをクリックします。
「作成」をクリックし「コピー操作」を選択して、コピー操作の作成ウィンドウを表示します。
フィールド | 値 |
---|---|
送信元 | |
|
変数 |
|
「変数」→「inputVariable」→「ペイロード」の順に開いて選択します。 |
宛先 | |
|
変数 |
|
「変数」→「outputVariable」→「ペイロード」の順に開いて選択します。 |
「OK」をクリックして、コピー操作の作成ウィンドウおよび割当てウィンドウを閉じます。
「ファイル」メイン・メニューから「保存」を選択します。
完了後、Designerのウィンドウには次のように表示されます。
「アプリケーション・ナビゲータ」セクションに移動します。
「OrderBooking」を右クリックします。
「デプロイ」→「my_integration_server_connection」→「defaultドメインにデプロイ」の順に選択します。
my_integration_server_connectionは、手順17で指定した統合サーバー接続名です。
これでBPELプロセスがコンパイルされます。
ウィンドウ下部のボタンをクリックしてエラーの有無を確認します。 「メッセージ」ボタンで表示されないエラーを、「Apache Ant」ボタンで表示できる場合があります。
エラーが発生していなければ、デプロイは成功しています。 エラーがある場合は、そのエラーをダブルクリックしてエラーのタイプと場所の詳細を表示します。
修正し、もう一度デプロイします。
新規注文に適用する準備ができました。
Internet Explorerを使用してOracle BPEL Controlにアクセスするか、すでに開いている場合はページをリフレッシュします。 「スタート」→「すべてのプログラム」→「Oracle - Oracle_Home」→「Oracle BPEL Process Manager」→「BPEL Control」を選択します。
Oracle BPEL Controlにログインするために次の情報を入力して「ログイン」をクリックします。
フィールド | 値 |
---|---|
ユーザー名 | oc4jadmin
|
パスワード | password
|
password
は、インストール時に入力した値です。
Oracle BPEL Controlの「ダッシュボード」タブが表示されます。
「デプロイ済のBPELプロセス」リストでOrderBookingをクリックします。
「HTMLフォーム」のCustIDフィールドに0以外から始まる9桁の整数値を入力し、「XMLメッセージの転送」をクリックします。他のフィールドは無視します。
「BPELプロセス」タブに次のようなメッセージが表示されます。
テスト・インスタンスが開始されました
インスタンス'39e706a46ad531be:858bf1:fcc240f310:-7ffc'は非同期で処理中です。
画面上部の「インスタンス」タブをクリックします。
OrderBookingおよびCreditRatingServiceインスタンスが作成されたことを確認します。どちらも「インスタンス」リストに表示されます。「最終更新日時」リストには、作成日時が表示されます。
次のようなメッセージが表示されます。
このインスタンスの状態は完了です
「監査」リンクをクリックして、インスタンスの実行プロセスを調べます。「監査」リンクには、次の詳細が表示されます。
フローの下部の「callbackClient」をクリックして結果を表示します。
信用格付けの値を調べます。コメント・フィールドに、信用格付けが560として返されたことが示されます。この値も、変数invokeCR_process_OutputVariableで返されました。
ここでは、クライアントから注文を受け取り、同期信用格付けサービスから信用格付けを取得する単純な非同期BPELプロセスを作成しました。次の主要タスクを実行しました。
同期信用格付けサービスをデプロイしました。
OrderBookingという名前の新規プロジェクトを作成しました。同じ名前のBPELプロセスが自動的に作成されました。
BPELプロセスと相互作用する外部サービス(デプロイ済の信用格付けサービス)を定義できるパートナ・リンクを作成しました。
BPELプロセスを設計し、必要なすべてのアクティビティを作成して信用格付けサービスを呼び出しました。
Oracle BPEL ControlにBPELプロセスをデプロイしました。
Oracle BPEL ControlからBPELプロセスを実行し、信用格付けサービスに社会保障カード番号を送信して、クライアントの信用履歴をチェックしました。
信用格付けサービスからクライアントに返された信用格付け結果を調べました。