この章では、条件分岐ロジックの作成方法について説明します。
この章の内容は次のとおりです。
チュートリアルのこのフェーズでは、第4章「パラレル・フローの追加」で設計したOrderBookingプロセスに処理を追加します。このフェーズを実行する前に、前のフェーズが正常に完了したことを確認してください。チュートリアルのこのフェーズでは、最低価格を提示したサプライヤを選択する条件分岐ロジックを作成します。次の主要タスクを実行します。
2つのサービス(Rapid DistributorsおよびSelect Manufacturing)から低価格を提示したサプライヤを選択する条件分岐ロジックを設計します。
BPELプロセスをデプロイします。
Oracle BPEL Controlから、注文フォームに記入してRapid DistributorsサービスとSelect Manufacturingサービスに並行して送信することで、デプロイ済のBPELプロセスを実行します。
Rapid DistributorsのURLにアクセスし、サプライヤ価格を手動で送信します。
Rapid DistributorsサービスおよびSelect Manufacturingサービスから返されたサプライヤ価格のうちどちらが安いかを調べます。
この項では次のタスクを実行します。
概要: 2つの提示額を比較し、その比較に基づいて決定を下すには、BPELフローにSwitchアクティビティが必要です。 Switchアクティビティには、2つのブランチ(<case>と<otherwise>)が含まれます。 最初のブランチは、(<case>ブランチ内で)定義された条件が満たされた場合に実行されます。 満たされなかった場合は、<otherwise>ブランチが実行されます。 |
「コンポーネント・パレット」セクションから「Process Activities」を選択します。
「コンポーネント・パレット」セクションから「GetPriceQuote」Flowアクティビティの下にSwitchアクティビティをドラッグ・アンド・ドロップします。
Switchアクティビティの疑問符をダブルクリックして、Switchウィンドウを表示します。
「名前」フィールドにSelectSupplierと入力します。
「OK」をクリックします。
「+」記号をクリックして、Switchアクティビティを開きます。
<case>をダブルクリックして、Switch Caseウィンドウを表示します。
「名前」フィールドに次の文字列を入力します。
'Is the Rapid Distributors price less than the Select Manufacturing price?'
「式」フィールドで[Ctrl]キー、スペース・バーの順に押して、表示されるリストから次の構文を選択(ダブルクリック)します。必要に応じて編集します。情報を入力すると、末尾にスラッシュが表示される場合があります。これは、追加情報の入力が求められていることを意味します。追加情報を入力するか、[Esc]キーを押して末尾のスラッシュを削除し、情報の入力を終了します。
bpws:getVariableData('receiveRD_onResult _InputVariable','payload','/ns1:SupplierInfo/ns1:SupplierPrice') < bpws:getVariableData('receiveSM_onResult 095;InputVariable','payload','/ns1:SupplierInfo/ns1:SupplierPrice')
「OK」をクリックします。
「ファイル」メイン・メニューから「保存」を選択します。
概要: このAssignアクティビティは、入力する注文の変数のサプライヤ部分にRapid Distributorsサプライヤを割り当てます。 |
「コンポーネント・パレット」セクションから、「SelectSupplier」Switchアクティビティの<case>セクションの下にAssignアクティビティをドラッグ・アンド・ドロップします。
Assignアクティビティをダブルクリックします。
「一般」タブをクリックします。
「名前」フィールドにSelectRapidDistributorsと入力します。
「適用」をクリックします。
「コピー操作」タブをクリックします。
「作成」をクリックし「コピー操作」を選択して、コピー操作の作成ウィンドウを表示します。
フィールド | 値 |
---|---|
送信元 | |
|
式 |
|
concat(bpws:getVariableData('inputVariable','payload','/ns1:PurchaseOrder/ns1:OrderInfo/ns1:OrderComments'), ' - Selected: Rapid Distributors')
注意: [Ctrl]キー、スペース・バーの順に押して、表示されるリストからこの構文を選択(ダブルクリック)します。ネームスペースの数値(ns1、ns2など)は変わる場合があります。 |
宛先 | |
|
変数 |
|
「変数」→「inputVariable」→「ペイロード」→「ns1:PurchaseOrder」→「ns1:OrderInfo」→「ns1:OrderComments」の順に開いて選択します。 |
「OK」をクリックして、コピー操作の作成ウィンドウを閉じます。
「コピー操作」タブをクリックします。
「作成」をクリックし「コピー操作」を選択して、コピー操作の作成ウィンドウを表示します。
次の詳細を入力して、2番目の文を作成します。
フィールド | 値 |
---|---|
送信元 | |
|
変数 |
|
「変数」→「receiveRD_onResult_InputVariable」→「ペイロード」→「ns1:SupplierInfo」の順に開いて選択します。
注意: このネームスペースの数値(ns1、ns2など)は変わる場合があります。自動的に表示されるネームスペース値を使用してください。 |
宛先 | |
|
変数 |
|
「変数」→「inputVariable」→「ペイロード」→「ns1:PurchaseOrder」→「ns1:SupplierInfo」の順に開いて選択します。 |
「OK」をクリックして、コピー操作の作成ウィンドウおよび割当てウィンドウを閉じます。
「ファイル」メイン・メニューから「保存」を選択します。
概要: このAssignアクティビティは、入力する注文の変数のサプライヤ部分にSelect Manufacturingサプライヤを割り当てます。 |
「コンポーネント・パレット」セクションから、「SelectSupplier」Switchアクティビティの<otherwise>セクションの下にAssignアクティビティをドラッグ・アンド・ドロップします。
Assignアクティビティをダブルクリックします。
「一般」タブをクリックします。
「名前」フィールドにSelectManufacturingと入力します。
「適用」をクリックします。
「コピー操作」タブをクリックします。
「作成」をクリックし「コピー操作」を選択して、コピー操作の作成ウィンドウを表示します。
次の詳細を入力します。
フィールド | 値 |
---|---|
送信元 | |
|
式 |
|
concat(bpws:getVariableData('inputVariable','payload','/ns1:PurchaseOrder/ns1:OrderInfo/ns1:OrderComments'), ' - Selected: SelectManufacturing')
注意: [Ctrl]キー、スペース・バーの順に押して、表示されるリストからこの構文を選択(ダブルクリック)します。ネームスペースの数値(ns1、ns2など)は変わる場合があります。 |
宛先 | |
|
変数 |
|
「変数」→「inputVariable」→「ペイロード」→「ns1:PurchaseOrder」→「ns1:OrderInfo」→「ns1:OrderComments」の順に開いて選択します。 |
「OK」をクリックして、コピー操作の作成ウィンドウを閉じます。
「コピー操作」タブをクリックします。
「作成」をクリックし「コピー操作」を選択して、コピー操作の作成ウィンドウを表示します。
次の詳細を入力して、2番目の文を作成します。
フィールド | 値 |
---|---|
送信元 | |
|
変数 |
|
「変数」→「receiveSM_onResult_InputVariable」→「ペイロード」→「ns1:SupplierInfo」の順に開いて選択します。
注意: このネームスペースの数値(ns1、ns2など)は変わる場合があります。自動的に表示されるネームスペース値を使用してください。 |
宛先 | |
|
変数 |
|
「変数」→「inputVariable」→「ペイロード」→「ns1:PurchaseOrder」→「ns1:SupplierInfo」の順に開いて選択します。 |
「OK」をクリックして、コピー操作の作成ウィンドウおよび割当てウィンドウを閉じます。
完了後、Designerのウィンドウには次のように表示されます。
「-」記号をクリックして Switchアクティビティを閉じます。
「ファイル」メイン・メニューから「保存」を選択します。
「アプリケーション・ナビゲータ」セクションに移動します。
「OrderBooking」を右クリックします。
「デプロイ」→「my_integration_server_connection」→「defaultドメインにデプロイ」の順に選択します。
プロンプトが表示されたら、プロジェクトのバージョン番号を増分(たとえば、1.3と入力)し、「OK」をクリックします。
これでBPELプロセスがコンパイルされます。 ウィンドウ下部のボタンをクリックしてエラーの有無を確認します。エラーが発生していなければ、デプロイは成功しています。 デプロイに失敗した場合は、手順4を参照してください。
「スタート」→「すべてのプログラム」→「Oracle - Oracle_Home」→「Oracle BPEL Process Manager」→「BPEL Control」の順に選択し、Oracle BPEL Controlにアクセスします(すでに開いている場合はページをリフレッシュします)。
Oracle BPEL Controlにログインするために次の情報を入力して「ログイン」をクリックします。
フィールド | 値 |
---|---|
ユーザー名 | oc4jadmin
|
パスワード | password
|
password
は、インストール時に入力した値です。
Oracle BPEL Controlの「ダッシュボード」タブが表示されます。
次のいずれかの方法で、手順4で増分したOrderBookingインスタンス・バージョンを起動します。
「デプロイ済のBPELプロセス」リストで「OrderBooking」をクリックし、HTMLフォームのすべてのフィールドに詳細を入力して「XMLメッセージの転送」をクリックします。
「デプロイ済のBPELプロセス」リストで「OrderBooking」をクリックし、「XMLソース」ラジオ・ボタンをクリックします。テキスト・エディタを使用して、OrderBookingPO_1.xml
ファイルの内容をコピーし、表示されるフィールドに貼り付けます。「XMLメッセージの転送」をクリックします。
「BPELプロセス」タブに次のようなメッセージが表示されます。
テスト・インスタンスが開始されました
手順11で説明したグラフィカル・ユーザー・インタフェースJSPページを使用して、SelectManufacturingの手動価格見積りタスクを完了します。
Oracle BPEL Controlに戻ります。
画面上部の「インスタンス」タブをクリックします。
OrderBooking、CreditRatingService、SelectManufacturingおよびRapidDistributorsインスタンスが作成されたことを確認します。これらはすべて「インスタンス」リストに表示されます。「最終更新日時」リストには、作成日時が表示されます。
インスタンスをクリックします。
アクティビティの詳細を表示するには、各シーケンスの「MORE」リンクをクリックします。
条件分岐の結果、見積り価格の値、条件ロジックの実行パスを確認します。(同様のインスタンス管理は、「フロー」リンクの下でグラフィカルに行うこともできます。)
ここでは、最低価格を提示したサプライヤを選択する条件分岐ロジックを作成しました。次の主要タスクを実行しました。
2つのサービス(Rapid DistributorsおよびSelect Manufacturing)から低価格を提示したサプライヤを選択する条件分岐ロジックを設計しました。
BPELプロセスをデプロイしました。
Oracle BPEL Controlから、注文フォームに記入してRapid DistributorsサービスとSelect Manufacturingサービスに並行して送信することで、デプロイ済のBPELプロセスを実行しました。
Rapid DistributorsのURLにアクセスし、サプライヤ価格を手動で送信しました。
Rapid DistributorsサービスおよびSelect Manufacturingサービスから返されたサプライヤ価格のうちどちらが安いかを調べました。2つのサプライヤ・サービス(Rapid DistributorsおよびSelect Manufacturing)から見積り価格が返された後、条件分岐により最低価格を提示したサプライヤが選択されました。