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の使用方法については、次のマニュアルを参照してください。 |
2レイヤーのBPMを有効にする手順は、次のとおりです。
表48-1 2レイヤーのBPMを有効にする手順
手順 | 情報 |
---|---|
Oracle WebLogic Serverのインストール |
『Oracle WebLogic Server Installation Guide』 |
SOAコンポジット・アプリケーションの設計 |
第4.2.1項「アプリケーションおよびプロジェクトの作成方法」 |
要素タイプ変数( |
|
phaseアクティビティの作成 |
|
動的ルーティング・デシジョン表の作成および編集 |
|
BPELプロセス・モデルへのassignアクティビティの追加 |
|
アプリケーション・デプロイメント・プロファイルの作成 |
|
アプリケーション・サーバー接続の作成 |
|
アプリケーションのデプロイ |
|
2レイヤーのBPMでは、フェーズはBPELプロセス・モデルのレベル1アクティビティです。 フェーズは、既存の上位レベルBPELアクティビティのビジネス・ルールおよびヒューマン・タスクを補完します。
フェーズをプロセスに宣言的に追加するには、Oracle JDeveloperのBPELデザイナを使用します。他のBPELアクティビティと同様に、「Phase」をBPELアクティビティおよびコンポーネント・パレットからプロセス・モデルにドラッグ・アンド・ドロップします。
注意: 参照WSDL(レイヤー2またはコールした参照)には、自動作成されるフェーズ参照と同じ抽象的なWSDLが必要です。 |
コンポジット・アプリケーションのphaseアクティビティは、「変数の作成」の説明に従って必要な変数を作成した後に作成します。
レベル1のBPELプロセスに「Phase」をドロップすると、様々な構成手順を支援するウィザードが起動します。 最初に、Phaseアクティビティの作成ダイアログが表示されるため、このダイアログでフェーズの入出力を指定します。
phaseアクティビティを作成する手順は、次のとおりです。
Phaseアクティビティの作成ダイアログで、次の操作を実行します。
「名前」フィールドに値を入力します。
緑のプラス記号(+)の「入力と出力」アイコンを選択します。「変数チューザ」ダイアログが表示されます。
「プロセス」→「変数」→「phaseIn」の順に選択し、「OK」をクリックします。 phaseIn変数が移入された状態の「Phase」ダイアログ・ボックスが表示されます。
「入力と出力」アイコンから「出力の選択」を選択します。 「変数チューザ」ダイアログ・ボックスが表示されます。「プロセス」→「変数」→「phaseOut」の順に選択します。
「OK」をクリックします。 入出力変数名が移入された状態の「Phase」ダイアログ・ボックスが表示されます。「OK」をクリックします。 BPELデザイナには、このプロセスの.bpel
ページが表示されます。
「ファイル」メニューから「すべて保存」をクリックします。 .bpel
ページを閉じます。
「composite.xml
」ページをクリックします。 SCAコンポジット・ダイアグラムが表示されます。
phaseアクティビティを作成すると、表48-2に記載されているアーチファクトが作成されます。
表48-2 phaseアクティビティとともに作成されるアーチファクト
アーチファクト | 説明 |
---|---|
BPELスコープ |
phaseアクティビティをドロップしたBPELプロセス・モデル内の場所に、新しいBPELスコープが作成されてBPELプロセスに挿入されます。 スコープには、phaseアクティビティの名前が指定されます。 スコープ内には一連の標準BPELアクティビティが作成されます。 最も重要なアクティビティは、メディエータへのinvokeアクティビティとメディエータからのreceiveアクティビティです。 |
メディエータ・コンポーネント |
BPELコンポーネントのSCAコンポジットとともに、新しいメディエータ・コンポーネントが作成され、BPELコンポーネントのphaseアクティビティに接続されます。このBPELコンポーネントは、プロセス・モデル内でphaseアクティビティがドロップされたレベル1のBPELプロセスを構成するコンポーネントです。 メディエータ・コンポーネントの入出力は、phaseアクティビティの入出力によって定義されます。 メディエータ・プラン(メディエータ・コンポーネントの処理命令)は非常に単純です。処理命令の作成はビジネス・ルール・コンポーネントに委任されます。 |
ビジネス・ルール・コンポーネント |
BPELコンポーネントのSCAコンポジット内に、新しいビジネス・ルール・コンポーネントが作成され、BPELプロセスのphaseアクティビティに関連付けられているメディエータ・コンポーネントに接続されます。 ビジネス・ルール・コンポーネントには、ルール・ディクショナリが含まれています。 ルール・ディクショナリには、ファクト・タイプ、ルールセット、ルール、デシジョン表や同様のアーチファクトなど、ルール・エンジン・アーチファクトのメタデータが含まれています。 ルール・ディクショナリは、ビジネス・ルール・コンポーネントの作成過程で、次のデータを使用して事前に初期化されます。
|
動的ルーティング・デシジョン表は、ビジネス・ルールによって評価されるデシジョン表です。 phaseアクティビティの入力データに対して条件が評価されます。 この評価の結果が、メディエータに対するルーティング指示になります。
phaseアクティビティを作成すると、ウィザードによってOracle JDeveloperのルール・デザイナが起動され、ルーティング・デシジョン表を編集できるようになります。 図48-3に、ルール・デザイナ内のデシジョン表のサンプルを示します。
デシジョン表は、レベル2のプロセス・フェーズをモデル化する際には空のままにし、ビジネス・アナリストのツールを使用してレベル1のプロセスをデプロイした後に完成させることができます。
ルーティング・デシジョン表を作成および編集すると、図48-4に示すように、新規のレベル1のphaseアクティビティがOracle JDeveloperのBPELプロセスに表示されます。
ルーティング・デシジョン表を作成することで、着信ペイロードに適用される条件を動的に評価し、対応するルーティング・ルールをメディエータに提供するデシジョン・サービスが構成されます。 メディエータは、これらのルールをレイヤー2のサービスの起動時に実行します。
ルーティング・デシジョン表を作成すると、具体的には、設計時に次の処理が行われます。
新しいデシジョン・コンポーネントがプロジェクトのコンポジットに作成されます。
新しいルール・ディクショナリがコンポジット・プロジェクトのディレクトリに作成されます。
ルール・ディクショナリに、フェーズ入力のデータ・モデルを反映するデータ・モデルが移入されます。つまり、フェーズ入力のXMLスキーマがルール・ディクショナリにインポートされます。
注意: ペイロードに対するトランスフォーメーション、割当てまたは検証は実行できません。 |
この項では、販売プロセスのユースケースについて説明します。 ユースケースを使用するには、次の手順を実行します。
『Oracle WebLogic Server Installation Guide』の説明に従って、サーバーをインストールします。
次のタスクを実行して、サンプルをモデル化します。
第48.4.1項「SOAコンポジットの設計」の説明に従って、SOAコンポジットを設計します。
第48.4.4項「BPELプロセス・モデルへのassignアクティビティの追加」の説明に従って、assignアクティビティをBPELプロセス・モデルに追加します。
第48.4.5項「JDeveloperを使用したサンプルのデプロイ」の説明に従って、JDeveloperを使用してサンプルをデプロイします。
JDeveloperでSOAコンポジット・アプリケーションを設計します。
SOAコンポジットを設計する手順は、次のとおりです。
JDeveloperで、「ファイル」メニューから「新規」を選択します。 「新規ギャラリ」ダイアログ・ボックスが表示されます。
「OK」をクリックします。 「アプリケーションの作成」ダイアログ・ボックスが表示されます。
「アプリケーション名」フィールドにLoanFlowRouterApp
と入力し、「OK」をクリックします。 「プロジェクトの作成」ダイアログ・ボックスが表示されます。
「プロジェクトの作成」ダイアログ・ボックスで「取消」をクリックします。
「LoanFlowRouterApp」メニューを右クリックし、「新規プロジェクト」を選択します。 「新規ギャラリ」ダイアログ・ボックスが表示されます。
「項目」リストから「SOAプロジェクト」を選択し、「OK」をクリックします。 「SOAプロジェクトの作成」ダイアログ・ボックスが表示されます。
「プロジェクト名」フィールドにLoanFlowRouter
と入力し、「コンポジット・テンプレート」リストで「BPELを使用するコンポジット」を選択して、「OK」をクリックします。 「BPELプロセスの作成」ページが表示されます。
「BPELプロセスの作成」ページの「名前」フィールドにLoanFlowRouterProcess
と入力し、「テンプレート」リストから「非同期BPELプロセス」を選択します。 「OK」をクリックします。
AutoLoanTypes.xsd
スキーマをプロジェクトのxsdフォルダにインポートします。 AutoLoanTyped.xsd
スキーマは、次のとおりです。
<?xml version="1.0"?> <xsd:schema attributeFormDefault="qualified" elementFormDefault="qualified" <xsd:schema attributeFormDefault="qualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.autoloan.com/ns/autoloan" xmlns:tns="http://www.autoloan.com/ns/autoloan"> <xsd:element name="loanApplication" type="tns:LoanApplicationType"/> <xsd:element name="loanOffer" type="tns:LoanOfferType"/> <xsd:element name="invalidApplication" type="tns:InvalidApplicationType"/> <xsd:element name="loan" type="tns:LoanType"/> <xsd:complexType name="InvalidApplicationType"> <xsd:sequence> <xsd:element name="error" type="xsd:string"/> <xsd:element name="application" type="tns:LoanApplicationType"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="LoanType"> <xsd:sequence> <xsd:element ref="tns:loanApplication"/> <xsd:element ref="tns:loanOffer"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="LoanApplicationType"> <xsd:sequence> <xsd:element name="SSN" type="xsd:string"/> <xsd:element name="email" type="xsd:string"/> <xsd:element name="customerName" type="xsd:string"/> <xsd:element name="loanAmount" type="xsd:double"/> <xsd:element name="carModel" type="xsd:string"/> <xsd:element name="carYear" type="xsd:string"/> <xsd:element name="creditRating" type="xsd:int"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="LoanOfferType"> <xsd:sequence> <xsd:element name="providerName" type="xsd:string"/> <xsd:element name="selected" type="xsd:boolean"/> <xsd:element name="approved" type="xsd:boolean"/> <xsd:element name="APR" type="xsd:double"/> </xsd:sequence> </xsd:complexType> </xsd:schema>
AutoLoanTypes.xsdスキーマのインポート後に、「LoanFlowRouterProcess.bpel
」ページを開きます。
変数の作成
注意: 要素タイプのフェーズ変数のみ使用できます。 |
「変数...」アイコンをクリックします。 「変数」ダイアログ・ボックスが表示されます。
「作成... (Alt + N)」アイコンをクリックします。「変数の作成」ダイアログ・ボックスが表示されます。
「名前」フィールドにphaseIn
と入力します。 「要素」オプションをクリックします。
「要素の参照」アイコンをクリックします。 「タイプ・チューザ」ダイアログ・ボックスが表示されます。
「プロジェクトのスキーマ・ファイル」→「AutoLoanTypes.xsd」→「loanApplication」の順に選択し、「OK」をクリックします。 要素名が移入された状態の「変数の作成」ダイアログ・ボックスが表示されます。
「OK」をクリックします。 変数名が移入された状態の「変数」ダイアログ・ボックスが表示されます。
「変数」ダイアログ・ボックスで、「作成... (Alt + N)」アイコンをクリックします。「変数の作成」ダイアログが表示されます。
「名前」フィールドにphaseOut
と入力します。 「要素」オプションをクリックします。 「要素の参照」アイコンをクリックします。「タイプ・チューザ」ダイアログが表示されます。
「プロジェクトのスキーマ・ファイル」→「AutoLoanTypes.xsd」→「loanOffer」の順に選択し、「OK」をクリックします。 要素名が移入された状態の「変数の作成」ダイアログ・ボックスが表示されます。
「OK」をクリックします。 入出力変数名が移入された状態の「変数」ダイアログ・ボックスが表示されます。
「OK」をクリックします。 変数の作成が完了し、「LoanFlowRouterProcess.bpel
」ページが表示されます。
JDeveloperを使用して、phaseアクティビティを作成します。
phaseアクティビティを作成する手順は、次のとおりです。
「LoanFlowRouterProcess.bpel」ページをクリックします。 phaseアクティビティを「BPEL」コンポーネント・パレットからプロセス・モデルにドラッグ・アンド・ドロップします。 「Phase」ダイアログ・ボックスが表示されます。
「名前」フィールドにrouteToLoanApplication
と入力します。 「入力と出力」プラス(+)アイコンから「入力の選択」を選択します。 「変数チューザ」ダイアログ・ボックスが表示されます。
「プロセス」→「変数」→「phaseIn」の順に選択し、「OK」をクリックします。 phaseIn変数が移入された状態の「Phase」ダイアログ・ボックスが表示されます。
「入力と出力」プラス(+)アイコンから「出力の選択」を選択します。 「変数チューザ」ダイアログ・ボックスが表示されます。
「プロセス」→「変数」→「phaseOut」の順に選択します。
「OK」をクリックします。 入出力変数名が移入された状態の「Phase」ダイアログ・ボックスが表示されます。
「OK」をクリックします。 「LoanFlowRouterProcess.bpel
」ページが表示されます。
「ファイル」メニューから「すべて保存」をクリックします。 「LoanFlowRouterProcess.bpel
」ページを閉じます。
「composite.xml
」ページをクリックします。 SCAコンポジット・ダイアグラムが表示されます。
注意:
|
Oracle JDeveloperを使用して、動的ルーティング・デシジョン表を作成して編集します。
動的ルーティング・デシジョン表を作成して編集する手順は、次のとおりです。
「LoanFlowRouterProcess.bpel
」ページを開きます。 プロセス・ダイアグラムでphaseアクティビティをダブルクリックします。 「Phase」ダイアログ・ボックスが表示されます。
「動的ルールの編集」ボタンをクリックします。 ルール・デザイナ・ページが表示されます。
「タイプ」リストで、「ルールセット」の下にある「Ruleset_1」をクリックします。 「Ruleset_1」ページが空のRoutingTableとともに表示されます。
「条件」の下にある矢印をクリックし、リストから「loanAmount」を選択します。 リストの上部にあるテキスト・フィールドにLoanApplicationType.loanAmount
が移入されます。
「loanApplicationType.loanAmount」条件を右クリックし、ローカルの範囲リストの編集を選択します。 「バケットセットの編集」ダイアログ・ボックスが表示されます。
範囲エディタの横にあるクリックして「次以下」範囲-位置を追加アイコン(最初の青いアイコン)をクリックします。 値0(ゼロ)が範囲軸(デフォルト範囲は-10000〜100000)の中央に表示されます
「最小」フィールドに0(ゼロ)を、「最大」フィールドに100000を入力します。 「最小」と「最大」の各フィールドに新規の値が移入されます。
範囲エディタで間隔アイコンのいずれかをクリックし、0(ゼロ)〜200000の範囲を作成します
ヒント: 範囲を調整するには、範囲軸に沿ってマウスで範囲を移動するか、範囲アイコンをクリックし、値を入力してキーボードの[Enter]キーを押します。 |
範囲エディタで間隔アイコンのいずれかをクリックし、200000〜500000の範囲を作成します。「OK」をクリックします。 「RoutingTable」ページが表示されます。
「LoanApplicationType.loanAmount」条件を右クリックし、「分割条件」を選択します。 loanAmount属性のバケットセット定義に従って、R1、R2、R3およびR4などの新規ルール列が条件とともに表示されます。
「RoutingTable」ページでプラス(+)アイコンをクリックし、「アクションの追加」を選択して、リストから「assert new」を選択します。 「アクションの作成」ダイアログ・ボックスが表示されます。
ファクト・タイプ属性に対してデフォルト値をいくつか入力します。 serviceBindingInfo属性に対して「パラメータ化」オプションを選択します。
「OK」をクリックします。 ルールR1〜R4に対してアクションが定義された状態の「RoutingTable」ページが表示されます。
各アクションのパラメータ化された属性に対する値を入力します。 入力する値については、表48-3を参照してください。 この入力によって、「RoutingTable」ページの編集が完了します。
表48-3 RoutingActionファクト・タイプの属性
属性 | デフォルト | 固定 | パラメータ化 | 必須 | 説明 |
---|---|---|---|---|---|
caseName |
いいえ |
はい |
いいえ |
説明テキスト(メディエータのmplanで使用) |
|
cbkOperation |
NULL |
はい |
いいえ |
いいえ |
|
executionType |
direct |
はい |
いいえ |
はい |
実行タイプには、「direct」または「queued」を指定できます。 |
onCbkOperation |
いいえ |
はい |
コールバック操作 |
||
serviceBindingInfo |
いいえ |
はい |
はい |
サービス・エンドポイントのURL |
|
serviceOperation |
いいえ |
はい |
はい |
サービス操作 |
|
serviceReference |
いいえ |
はい |
はい |
サービス参照 |
「LoanFlowRouterProcess.bpel」ページをクリックします。 「Phase」ダイアログ・ボックスで「OK」をクリックします。
「composite.xml」ページをクリックします。 ルーティング表の作成と編集の完了後にSCAコンポジット・ダイアグラムが表示されます。
「ファイル」メニューから「すべて保存」をクリックします。 「composite.xml
」ページを閉じます。
phaseアクティビティをデプロイする前に、Phase変数を初期化する必要があります。 これを実行するには、BPELプロセスのフェーズにassignアクティビティを追加します。
assignアクティビティをBPELプロセス・モデルに追加する手順は、次のとおりです。
「LoanFlowRouterProcess.bpel
」ページをクリックします。 assignアクティビティを、「BPEL」コンポーネント・パレットからプロセス・モデルのreceiveInputアクティビティとphaseアクティビティの間にドラッグ・アンド・ドロップします。 assignアクティビティがプロセス・モデルに追加されます。
assignアクティビティをダブルクリックします。「Assign」ダイアログ・ボックスが表示されます。
「一般」タブの「名前」フィールドにAssignInput
と入力します。
「コピー操作」タブを選択します。 プラス(+)アイコンをクリックし、リストから「コピー操作」を選択します。 「コピー操作の作成」ダイアログが表示されます。
「12345」
に対する入力のコピー操作を作成します。
手順5と同様に、次の表に記載されているコピー操作を作成します。
図48-4 assignアクティビティを追加するためのコピー操作
コピー元 | コピー先 |
---|---|
'scott.tiger@oracle.com' |
phaseIn/ns1:loanApplication/ns1:email |
inputVariable/payload/client:LoanFlowRouterProcessProcessRequest/client:input |
phaseIn/ns1:ratingrequest/ns1:customerName |
number(15000.0) |
phaseIn/ns1:loanApplication/ns1:loanAmount |
'BMW' |
phaseIn/ns1:loanApplication/ns1:carModel |
'2000' |
phaseIn/ns1:loanApplication/ns1:carYear |
number(300) |
phaseIn/ns1:loanApplication/ns1:creditRating |
「コピー操作の作成」ダイアログで「OK」をクリックします。 入力のコピー操作値が移入された状態の「Assign」ダイアログ・ボックスが表示されます。
「OK」をクリックします。 「LoanFlowRouterProcess.bpel
」ページが再度表示されます。
別のassignアクティビティを、「BPEL」コンポーネント・パレットからプロセス・モデルのphaseアクティビティとcallbackClientアクティビティの間にドラッグ・アンド・ドロップします。 新しいassignアクティビティがプロセス・モデルに追加されます。
assignアクティビティをダブルクリックします。 「Assign」ダイアログ・ボックスが表示されます。
「一般」タブの「名前」フィールドにAssignOutput
と入力します。
「コピー操作」タブを選択します。 プラス(+)アイコンをクリックし、リストから「コピー操作」を選択します。 「コピー操作の作成」ダイアログが表示されます。
出力のコピー操作を作成します。
「コピー操作の作成」ダイアログ・ボックスで「OK」をクリックします。 出力のコピー操作値が移入された状態の「Assign」ダイアログ・ボックスが表示されます。
「OK」をクリックします。 入出力のassignアクティビティが作成された後に、「LoanFlowRouterProcess.bpel
」ページが表示されます。
「ファイル」メニューから「すべて保存」をクリックします。
前述の手順で作成したSOAプロジェクトおよびアプリケーションのアプリケーション・プロファイルをデプロイする必要があります。 JDeveloperを使用してプロファイルをデプロイするには、次の手順を実行します。
アプリケーション・デプロイメント・プロファイルを作成する手順は、次のとおりです。
LoanFlowRouterAppプロジェクトに隣接する「アプリケーション・メニュー」ドロップダウンをクリックし、「アプリケーション・プロパティ」を選択します。 「アプリケーション・プロパティ」ダイアログ・ボックスが表示されます。
「デプロイメント」を選択します。 右側のペインに「デプロイメント」ページがある「アプリケーション・プロパティ」ダイアログ・ボックスが表示されます。「新規」をクリックします。 「デプロイメント・プロファイルの作成」ダイアログ・ボックスが表示されます。「アーカイブ・タイプ」から「OARファイル」を選択し、「名前」フィールドにphaseActivity
と入力します。「OK」をクリックします。 作成したデプロイメント・プロファイルの名前が「デプロイメント・プロファイル」ペインに表示されます。「デプロイメント・プロファイル」ペインで「phaseActivity」をダブルクリックします。 「OARデプロイメント・プロファイルのプロパティ」ダイアログ・ボックスが表示されます。「アプリケーション・アセンブリ」をクリックし、「sca_LoanFlowRouter」を選択して「OK」をクリックします。「OK」をクリックします。 phaseActivityという名前のデプロイメント・プロファイルが作成されました。
設計時環境とデプロイ先サーバー間の接続性を確立する必要があります。
アプリケーション・サーバー接続を作成する手順は、次のとおりです。
「ファイル」メイン・メニューから、「新規」→「接続」→「アプリケーション・サーバー接続」の順に選択します。
「OK」をクリックします。
「接続名」フィールドに、接続名を入力します。
「接続タイプ」リストで「WebLogic 10.3」を選択します。
「次へ」をクリックします。
「ユーザー名」フィールドに、weblogic
と入力します。
「パスワード」フィールドに、アプリケーション・サーバーに接続するためのパスワードを入力します。
「次へ」をクリックします。
SOAインフラストラクチャで構成されているアプリケーション・サーバーのホスト名を入力します。
「WLSドメイン」フィールドに、Oracle WebLogic Serverドメインを入力します。
「次へ」をクリックします。
「接続のテスト」をクリックします。 テストが成功した場合は、成功のメッセージが表示されます。
「終了」をクリックします。
「ファイル」メニューから「すべて保存」をクリックします。