この章では、2レイヤーのビジネス・プロセス管理(BPM)の使用方法について説明します。2レイヤーのBPMを使用すると、動的ビジネス・プロセスを作成できます。動的ビジネス・プロセスの実行は、設計時に事前定義された要素ではなく、そのビジネス・プロセスが実行されるコンテキストの要素に基づいています。このような要素の例には、顧客のタイプ、地理的位置、チャネルなどがあります。
具体的に説明するために、様々なプロセスを使用してマルチチャネル・バンキングを実行するアプリケーションを使用していると仮定します。このシナリオでは、各プロセスの実行は、特定のプロセス・インスタンスごとのチャネルに基づいています。
項目は次のとおりです。
2レイヤーのBPMを使用すると、レイヤー・アプローチを使用してビジネス・プロセスをモデル化できます。このモデルの第1レベルは、ビジネス・プロセスに関する抽象的な仕様です。第1レベルのプロセスのアクティビティは、第2レベルのプロセスまたはサービスに作業を委任します。図48-1に、この動作を示します。
図48-1では、ビジネス・プロセスのPhase Iアクティビティは、その作業を対応するレイヤーIIのプロセスのタスク1.1、タスク1.2またはタスク1.3のいずれかに委任できます。
2レイヤーのBPM機能を使用すると、重要な要素(つまり、phaseアクティビティ)を宣言的に作成できます。
Oracle Business Rulesのデザインタイムおよびランタイム(DT@RT)機能を使用すると、さらにチャネルを動的に追加できます。ビジネス・プロセスを再デプロイする必要はありません。DT@RTでは、実行時に複数のルール(複数の列)を動的ルーティング・デシジョン表に追加できます。実行中にビジネス・プロセス・インスタンスはそれらの新規ルールを考慮し、最終的にリクエストを別のチャネルにルーティングします。
また、Oracle Business RulesのDT@RT機能を使用すると、phaseアクティビティから起動されるサービスのエンドポイント参照を別のサービスを指し示すように変更できます。
注意: Oracle Fusion Middleware 11g リリース1(11.1.1)では、Oracle Business RulesのDT@RT機能はOracle Business Rules SDKを介してのみ使用できます。Oracle Business Rules SDKの使用方法については、次のマニュアルを参照してください。
|
表48-1に、2レイヤーのBPMを有効にする手順を示します。
表48-1 2レイヤーのBPMを有効にする手順
手順 | 情報 |
---|---|
Oracle WebLogic Serverのインストール |
『Oracle WebLogic Server Installation Guide』 |
SOAコンポジット・アプリケーションの設計 |
|
要素タイプ変数( |
|
phaseアクティビティの作成 |
|
動的ルーティング・デシジョン表の作成および編集 |
|
BPELプロセス・モデルへのassignアクティビティの追加 |
|
アプリケーション・デプロイメント・プロファイルの作成 |
|
アプリケーション・サーバー接続の作成 |
第41.7.1.1.1項「アプリケーション・サーバー接続の作成」 |
アプリケーションのデプロイ |
|
2レイヤーのBPMでは、フェーズはBPELプロセスのレベル1アクティビティです。フェーズは、既存の上位レベルのOracle Business Rulesおよびヒューマン・タスクBPELアクティビティを補完します。
Oracle BPELデザイナで、フェーズをプロセスに宣言的に追加するには、「コンポーネント・パレット」の「アクティビティとコンポーネント」セクションからプロセス・モデルにフェーズをドラッグ・アンド・ドロップします。図48-2に詳細を示します。
注意: 参照WSDL(レイヤー2またはコールした参照)には、自動作成されるフェーズ参照と同じ抽象的なWSDLが必要です。 |
コンポジット・アプリケーションのphaseアクティビティは、第48.4.1項「SOAコンポジットの設計」の説明に従って必要な変数を作成した後に作成します。
レベル1のBPELプロセスにphaseアクティビティをドロップすると、様々な構成手順を支援するウィザードが起動します。最初に、phaseアクティビティの作成ダイアログが表示されるため、このダイアログでフェーズの入出力変数を指定します。
phaseアクティビティを作成する手順は、次のとおりです。
phaseアクティビティの作成ダイアログで、次の操作を実行します。
「名前」フィールドに、値を入力します。
「入力変数および出力変数」セクションで、入出力変数を追加するアイコンを選択します。
「入力変数の追加」を選択します。変数を選択するためのダイアログが表示されます。
「プロセス」→「変数」→「phaseIn」の順に選択し、「OK」をクリックします。phaseIn変数が移入された状態の「Phase」ダイアログが表示されます。
「入力変数および出力変数」アイコンから「出力変数の追加」を選択します。変数を選択するためのダイアログが表示されます。「プロセス」→「変数」→「phaseOut」の順に選択します。
「OK」をクリックします。入出力変数名が移入された状態の「Phase」ダイアログが表示されます。「OK」をクリックします。Oracle BPELデザイナにBPELプロセスが表示されます。
「ファイル」メニューから「すべて保存」を選択します。
BPELプロセスを閉じます。
Oracle BPELデザイナの「composite.xml」リンクをクリックします。SOAコンポジット・エディタが表示されます。
phaseアクティビティを作成すると、表48-2に記載されているアーチファクトが作成されます。
表48-2 phaseアクティビティとともに作成されるアーチファクト
phaseアクティビティの入力は、実行時に動的ルーティング・デシジョン表を評価するために使用されます。評価は、phaseアクティビティの特定のデシジョン・コンポーネントによって実行されます。この評価の結果が、Oracle Mediatorに対する指示になります。Oracle Mediatorは、デシジョン・コンポーネントからの指示に基づいて、リクエストをサービスにルーティングします。
注意: 現在のリリースでは、非同期のphaseアクティビティがサポートされています。同期または一方向のphaseアクティビティはサポートされていません。 |
phaseアクティビティを作成する場合は、次の事項について理解している必要があります。
デシジョン・サービスで構成または作成する必要のあるルール。これは、ルールの評価に使用するペイロードのデータに基づきます。
デシジョン・サービスで作成した各ルールがtrueと評価されたときに起動する必要のある、対応するエンドポイントURLを認識している必要があります。Oracle Mediatorでは、このエンドポイントURLを使用してレイヤー2のサービスを起動します。
エンドポイントの指定方法の詳細は、第48.4.3項「動的ルーティング・デシジョン表の作成および編集」を参照してください。
注意: ペイロードに対するトランスフォーメーション、割当てまたは検証は実行できません。 |
動的ルーティング・デシジョン表は、Oracle Business Rulesによって評価されるデシジョン表です。phaseアクティビティの入力データに対して条件が評価されます。この評価の結果が、Oracle Mediatorに対するルーティング指示になります。
phaseアクティビティを作成すると、ウィザードによってOracle JDeveloperのOracle Business Rulesデザイナが起動され、動的ルーティング・デシジョン表を編集できるようになります。図48-3に、Oracle Business Rulesデザイナ内のデシジョン表のサンプルを示します。
デシジョン表は、レベル2のプロセス・フェーズをモデル化する際には空のままにし、ビジネス・アナリストのツールを使用してレベル1のプロセスをデプロイした後に完成させることができます。
動的ルーティング・デシジョン表を作成および編集すると、図48-4に示すように、新規のレベル1のphaseアクティビティがOracle JDeveloperのBPELプロセスに表示されます。
動的ルーティング・デシジョン表を作成することで、着信ペイロードに適用される条件を動的に評価し、対応するルーティング・ルールをOracle Mediatorに提供するデシジョン・サービスが構成されます。Oracle Mediatorは、これらのルールをレイヤー2のサービスの起動時に実行します。
動的ルーティング・デシジョン表を作成すると、具体的には、設計時に次の処理が行われます。
新しいデシジョン・コンポーネントがプロジェクトのコンポジットに作成されます。
新しいルール・ディクショナリがコンポジット・プロジェクトのディレクトリに作成されます。
ルール・ディクショナリに、フェーズ入力のデータ・モデルを反映するデータ・モデルが移入されます。つまり、フェーズ入力のXMLスキーマがルール・ディクショナリにインポートされます。
この項では、顧客の注文をルーティングするサンプル・アプリケーションの作成方法について説明します。このアプリケーションを作成する前に、次の場所からBPELPhaseActivityサンプルをダウンロードする必要があります。
http://www.oracle.com/technology/sample_code/products/bpel/index.html
『Oracle WebLogic Server Installation Guide』の説明に従って、サーバーをインストールします。
次のタスクを実行して、サンプルをモデル化します。
第48.4.1項「SOAコンポジットの設計」の説明に従って、SOAコンポジットを設計します。
第48.4.2項「phaseアクティビティの作成」の説明に従って、phaseアクティビティを作成します。
第48.4.3項「動的ルーティング・デシジョン表の作成および編集」の説明に従って、動的ルーティング・デシジョン表の作成と編集を実行します。
第48.4.4項「BPELプロセス・モデルへのassignアクティビティの追加」の説明に従って、assignアクティビティをBPELプロセス・モデルに追加します。
第48.4.5項「サンプルのデプロイおよびテスト」の説明に従って、Oracle JDeveloperを使用してサンプルをデプロイします。
Oracle JDeveloperでSOAコンポジット・アプリケーションを設計します。
SOAコンポジットを設計する手順は、次のとおりです。
Oracle JDeveloperで、「ファイル」メニューから「新規」を選択します。「新規ギャラリ」ダイアログが表示されます。デフォルトでは、「汎用アプリケーション」が選択されています。
「OK」をクリックします。汎用アプリケーションの作成ウィザードの第1ページが表示されます。
「アプリケーション名」フィールドにBPELPhaseActivity
と入力し、「次へ」をクリックします。汎用アプリケーションの作成ウィザードの第2ページが表示されます。
「プロジェクト名」フィールドに、BPELPhaseCustomerRouter
と入力します。
「プロジェクト・テクノロジ」タブの「選択可能」セクションから、「SOA」を選択して「選択済」セクションに移動します。
「次へ」をクリックします。汎用アプリケーションの作成ウィザードの第3ページが表示されます。
「コンポジット・テンプレート」リストからBPELプロセスを使用するコンポジットを選択し、「終了」をクリックします。
「BPELプロセスの作成」ダイアログが表示されます。
「BPELプロセスの作成」ダイアログの「名前」フィールドに、CustomerRouterBPELProcess
と入力します。
「テンプレート」リストから、「同期BPELプロセス」を選択します。
CustomerData.xsdスキーマをプロジェクトのxsdフォルダにインポートします。XMLスキーマ定義(XSD)には、XML文書に表示する要素や属性のタイプ、それらの相互の関係、その中に含まれるデータのタイプなどを指定します。
CustomerData.xsdファイルをインポートする手順は、次のとおりです。
「入力」フィールドで、「入力要素の参照」アイコンをクリックします。
「タイプ・チューザ」ダイアログが表示されます。
図48-5に示すように、「スキーマ・ファイルのインポート」アイコンをクリックします。
「スキーマ・ファイルのインポート」ダイアログが表示されます。
「URL」フィールドの右側にある「リソースの参照」アイコンをクリックします。
「SOAリソース・ブラウザ」が表示されます。
「ファイルシステム」を選択し、「場所」セクションで、artifacts/schemaフォルダのCustomerData.xsdを検索し、「OK」をクリックします。
「スキーマのインポート」ダイアログで、「URL」フィールドにCustomerData.xsdファイルが表示され、「プロジェクトにコピー」オプションが選択されていることを確認して、「OK」をクリックします。
「ファイルのローカライズ」ダイアログに、CustomerData.xsdスキーマ・ファイルおよび付随するファイルのインポートに関するプロンプトが表示されます。
「インポートされたファイルの元のディレクトリ構造を保持」オプションの選択を解除し、「OK」をクリックしてファイルをインポートします。
「タイプ・チューザ」ダイアログが表示されます。
図48-6に示すように、「プロジェクトのスキーマ・ファイル」→「CustomerData.xsd」→「Customer」の順に開き、「OK」をクリックします。
CustomerData.xsd
スキーマをインポートした後、「CustomerRouterBPELProcess」BPELプロセスを開きます。
変数を作成する手順は、次のとおりです。
注意: 要素タイプのフェーズ変数のみを使用できます。 |
「変数」アイコンをクリックします。「変数」ダイアログが表示されます。
「作成」アイコンをクリックします。「変数の作成」ダイアログが表示されます。
「名前」フィールドに、InputPhaseVariable
と入力します。
「要素」オプションをクリックします。
「要素の参照」アイコンをクリックします。「タイプ・チューザ」ダイアログが表示されます。
「プロジェクトのスキーマ・ファイル」→「CustomerData.xsd」→「Customer」の順に選択し、「OK」.をクリックします。要素名が移入された状態の「変数の作成」ダイアログが表示されます。
「OK」をクリックします。変数名が移入された状態の「変数」ダイアログが表示されます。
「変数」ダイアログで、「作成」アイコンをクリックします。「変数の作成」ダイアログが表示されます。
「名前」フィールドに、OutputPhaseVariable
と入力します。
「タイプ」セクションで、「要素」オプションを選択します。
「要素の参照」アイコンをクリックします。「タイプ・チューザ」ダイアログが表示されます。
「プロジェクトのスキーマ・ファイル」→「CustomerData.xsd」→「Customer」の順に選択し、「OK」.をクリックします。要素名が移入された状態の「変数の作成」ダイアログが表示されます。
「OK」をクリックします。入出力変数名が移入された状態の「変数」ダイアログが表示されます。
「OK」をクリックします。変数の作成が完了し、「CustomerRouterBPELProcess」BPELプロセスが表示されます。
phaseアクティビティを作成する手順は、次のとおりです。
「CustomerRouterBPELProcess」BPELプロセスで、phaseアクティビティを、「コンポーネント・パレット」からプロセス・モデルの「receiveInput」と「replyOutput」の間にドラッグ・アンド・ドロップします。「Phase」ダイアログが表示されます。
「名前」フィールドに、CustomerRoutingPhase_1
と入力します。
「入力変数および出力変数」アイコンから「入力変数の追加」を選択します。「入力変数の追加」ダイアログが表示されます。
「プロセス」→「変数」→「phaseIn」の順に選択し、「OK」をクリックします。InputPhaseVar変数が移入された状態の「Phase」ダイアログが表示されます。
「入力変数および出力変数」アイコンから「出力変数の追加」を選択します。「出力変数の追加」ダイアログが表示されます。
「プロセス」→「変数」→「OutputPhaseVar」の順に選択します。
「OK」をクリックします。「Phase」ダイアログに入力変数名および出力変数名が表示されます。
「OK」をクリックします。「CustomerRouterBPELProcess」BPELプロセスが表示されます。
「ファイル」メニューから「すべて保存」を選択します。
「CustomerRouterBPELProcess」BPELプロセスを閉じます。
「composite.xml」をクリックします。SOAコンポジット・エディタが表示されます。
注意:
|
動的ルーティング・デシジョン表を作成して編集する手順は、次のとおりです。
「CustomerRouterBPELProcess」BPELプロセスを開き、プロセス・ダイアグラムでphaseアクティビティをダブルクリックします。「Phase」ダイアログが表示されます。
「動的ルールの編集」ボタンをクリックします。Oracle Business Rulesデザイナ・ページが表示されます。
「ルールセット」の下にある「Ruleset_1」をクリックします。図48-7に示すように、「Ruleset_1」ページに空のルーティング表が表示されます。
「DecitionTable_1」で、「追加」アイコン→「アクション」→「新規アサート」の順にクリックします。表の「アクション」セクションが表示されます。
「serviceBindingInfo」で、SOAPエンドポイントを指定し、ホスト名とホスト・ポートをSOAサーバーの詳細で置換します。サンプルでは、ホスト・サーバーにlocalhost
、ホスト・ポートに8001
が指定されています。
「otherwise」列に、次の値を入力します。
http://hostname:host_port /soa-infra/services/default/CustomerRouter!1.0/ DefaultCustomerRouterService
「Intel」列に、次の値を入力します。
http://hostname:host_port/soa-infra/services/default/CustomerRouter!1.0/ SilverCustomerRouterService
「Cisco」列に、次の値を入力します。
http://hostname:host_port/soa-infra/services/default/CustomerRouter!1.0/ GoldCustomerRouterService
「HP」列に、次の値を入力します。
http://hostname:host_port/soa-infra/services/default/CustomerRouter!1.0/ PlatinumCustomerRouterService
phaseアクティビティをデプロイする前に、フェーズ変数を初期化する必要があります。これを実行するには、BPELプロセスのフェーズにassignアクティビティを追加します。
assignアクティビティをBPELプロセス・モデルに追加する手順は、次のとおりです。
「CustomerRouterBPELProcess」BPELプロセスをクリックします。
assignアクティビティを、「コンポーネント・パレット」からプロセス・モデルのreceiveInputアクティビティとphaseアクティビティの間にドラッグ・アンド・ドロップします。assignアクティビティがプロセス・モデルに追加されます。
assignアクティビティをダブルクリックします。「Assign」ダイアログが表示されます。
「一般」タブを選択します。
「名前」フィールドに、AssignInput
と入力します。
「コピー操作」タブを選択します。
「追加」アイコンをクリックし、リストから「コピー操作」を選択します。「コピー操作の作成」ダイアログが表示されます。
「From」セクションで、「変数」→「プロセス」→「変数」→「inputVariable」→「payload」→「ns1:Customer」の順に移動します。
「To」セクションで、「変数」→「プロセス」→「変数」→「inputVariable」→「payload」→「ns1:Customer」の順に移動します。図48-8に詳細を示します。
「OK」をクリックします。表48-3に示すような入力のコピー操作が記録された「コピー操作」ページに戻ります。
「コピー操作の作成」ダイアログで「OK」をクリックします。入力のコピー操作値が移入された状態の「Assign」ダイアログが表示されます。
「OK」をクリックします。「CustomerRouterBPELProcess」プロセスが再度表示されます。
別のassignアクティビティを、「コンポーネント・パレット」からプロセス・モデルのphaseアクティビティとreplyOutputアクティビティの間にドラッグ・アンド・ドロップします。新しいassignアクティビティがプロセス・モデルに追加されます。
assignアクティビティをダブルクリックします。「Assign」ダイアログが表示されます。
「一般」タブの「名前」フィールドにAssignOutput
と入力します。
「コピー操作」タブを選択します。
「追加」アイコンをクリックし、リストから「コピー操作」を選択します。「コピー操作の作成」ダイアログが表示されます。
「From」セクションで、「変数」→「プロセス」→「変数」→「OutputPhaseVar」→「payload」→「ns1:Customer/ns1:status」の順に移動します。
「To」セクションで、「プロセス」→「変数」→「outputVariable」→「payload」→「client:processResponse」→「client:result」の順に移動します。図48-9に詳細を示します。
「OK」をクリックします。表48-4に示すような出力のコピー操作が記録された「コピー操作」タブに戻ります。
「コピー操作の作成」ダイアログで「OK」をクリックします。出力のコピー操作値が移入された状態の「Assign」ダイアログが表示されます。
「OK」をクリックします。入出力のassignアクティビティが作成された後に、「CustomerRouterBPELProcess」BPELプロセスが表示されます。
「ファイル」メニューから「すべて保存」を選択します。
サンプルをデプロイする方法については、第41.7項「SOAコンポジット・アプリケーションのデプロイ」を参照してください。
コンポジット・インスタンスをOracle Enterprise Manager Fusion Middleware Controlコンソールでテストする方法については、『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド』を参照してください。