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