この章では、ビジネス・ルール・サービス・コンポーネントを使用して、SOAコンポジット・アプリケーションをOracle Business Rulesに統合する方法について説明します。ビジネス・ルール・サービス・コンポーネントはデシジョン・コンポーネントとも呼ばれます。ビジネス・ルールは、SCAアプリケーションの一部またはBPELプロセスの一部として追加できます。
項目は次のとおりです。
Oracle Business Rulesの使用例は、『Oracle Fusion Middleware Oracle Business Rulesユーザーズ・ガイド』を参照してください。
デシジョン・コンポーネント(ビジネス・ルール・サービス・コンポーネントとも呼ばれる)は、SOAコンポジット・アプリケーションでのOracle Business Rulesの使用をサポートしています。デシジョン・コンポーネントは、次のようにSOAコンポジットで使用できます。
デシジョン・コンポーネントは、SOAコンポジット内で使用してBPELコンポーネントに接続できます。
デシジョン・コンポーネントは、SOAコンポジット内で使用してビジネス・ルールの実行に直接使用できます。
デシジョン・コンポーネントは、メディエータの動的ルーティング機能とともに使用できます。
詳細は、第20章「Oracle Mediatorルーティング・ルールの作成」を参照してください。
デシジョン・コンポーネントは、ヒューマン・ワークフローの拡張ルーティング・ルールとともに使用できます。
詳細は、第28.4項「ヒューマン・タスク・サービス・コンポーネントとBPELプロセスの関連付け」を参照してください。
BPELプロセス、ビジネス・ルールおよびヒューマン・タスク・コンポーネントを含むSOAコンポジット・アプリケーションを作成できます。これらのコンポーネントは補完的な技術です。BPELプロセスではシステム、サービスおよびユーザーのオーケストレーションにフォーカスが置かれます。ビジネス・ルールでは、意思決定とポリシーにフォーカスが置かれます。ヒューマン・タスクを使用すると、エンドツーエンド・プロセス・フローの一部として実行するタスクをユーザーまたはグループに対して説明するワークフローをモデリングできます。
ビジネス・ルールを使用できる状況の例を次に示します。
動的処理
ルールにより、サービス・レベル合意(SLA)や他のガイドラインに基づいて、ビジネス・プロセス内でインテリジェント・ルーティングを実行できます。たとえば、顧客が1日以内のレスポンスを必要とする場合は、融資申請をQuickLoan融資エージェントにのみ送信します。顧客に1日以上の余裕がある場合は、申請を3つの異なる融資エージェントにルーティングします。
プロセスのビジネス・ルールの外部化
通常ビジネス・プロセスの一部として評価する必要がある条件が多くあります。ただし、これらの条件のパラメータはプロセスに関係なく変更できます。たとえば、信用度が650以上の顧客にのみ融資を提供するとします。この値は、ビジネス・アナリストが設定した新規ガイドラインに基づいて動的に変更できます。
データ検証および制約チェック
ルールは入力文書を検証したり、リクエストに応じて追加制約を適用できます。たとえば、新規顧客リクエストには、常に雇用確認書と銀行勘定詳細を添付する必要があります。
ヒューマン・タスクのルーティング
ビジネス・プロセスでは、次のようにヒューマン・タスクでルールが頻繁に使用されます。
ポリシー・ベースのタスク割当てでは、タスクが特定のロールやユーザーにディスパッチされます。たとえば、ポータルからの着信リクエストを処理するプロセスでは、融資申請と見積保険料を異なるロール・セットにルーティングできます。
ユーザー間のタスクのロード・バランシング。タスクが一連のユーザーまたはロールに割り当てられると、そのロールの各ユーザーはタスク・セットを取得して、指定された時間内にタスクの処理を行います。新規タスクを受け取った場合は、ポリシーを適用してタスクに優先度が設定され、特定のユーザー・キューに入れられます。たとえば、特定の1人の融資エージェントに対して割り当てる融資を、常に最大で10件にするなどです。
ヒューマン・タスク・コンポーネントのヒューマン・タスク・エディタでビジネス・ルールを作成する方法については、第28.3.7.2項「ビジネス・ルールを使用した詳細なタスク・ルーティングの指定」を参照してください。
Oracle JDeveloperのSOAコンポジット・アプリケーションにビジネス・ルール・サービス・コンポーネントを作成した後は、そのサービス・コンポーネントをビジネス・ルール・デザイナを使用して設計できます。このデザイナは、SOAコンポジット・エディタでビジネス・ルールをダブルクリックすると表示されます。
ビジネス・ルール・デザイナは、図25-1に示す主要なセクションで構成されています。これらのセクションでは、Oracle JDeveloperのビジネス・ルールを使用できます。
「アプリケーション・ナビゲータ」には、プロジェクト内のファイルが表示されます。各プロジェクトに格納できるのは、1つのコンポジットのみです。ただし、各コンポジットには、同じタイプまたは異なるタイプ(ビジネス・ルール、BPELプロセス、Oracle Mediatorおよびヒューマン・ワークフロー)の複数のコンポーネントを指定できます。
ビジネス・ルールの設計時には、その他のファイル、フォルダおよび要素が「アプリケーション・ナビゲータ」に表示されることがあります。
ルール・デザイナ・ウィンドウには、選択したディクショナリ・コンポーネントのビジュアル・ビューが表示されます。ルール・デザイナのナビゲーション・タブを使用して、使用するディクショナリの様々な部分を選択します。ルール・デザイナ・ウィンドウは、次のいずれかの処理を実行すると表示されます。
コンポジット内でビジネス・ルール・コンポーネントをダブルクリックした場合
SOAコンポジット・エディタでビジネス・ルール・コンポーネントをダブルクリックした場合
BPELプロセス内でビジネス・ルールをダブルクリックした場合
「アプリケーション・ナビゲータ」で、ビジネス・ルールのディクショナリ・ファイル(.rules拡張子付きのファイル)をダブルクリックした場合
.rulesファイルが選択されている状態の「設計」タブをクリックした場合
表25-1では、ルール・デザイナでディクショナリを使用する際の情報を検索できるナビゲーション領域について説明します。
表25-1 ルール・デザイナのナビゲーション領域の説明
ルール・デザイナのナビゲーション・タブ | 説明 |
---|---|
ファクト |
ファクトは、ルールによる推論対象のオブジェクトです。 |
関数 |
Oracle Business Rulesでは、関数は標準の算術関数を指します。 |
グローバル |
Oracle Business Rulesでは、グローバルはJavaにおけるパブリックな静的変数に類似しています。 |
バケットセット |
バケットセットは、ファクト・プロパティのデータ型を定義します。 |
リンク |
リンクは、同じアプリケーションまたは別のアプリケーション内のディクショナリにリンクする際に使用します。 |
デシジョン関数 |
デシジョン関数は、RL Languageプログラミングを使用せずに宣言的に構成された関数です。 |
ルールおよびデシジョン表を含むルールセット |
ルールセットは、ルールおよびデシジョン表の実行単位を提供します。デシジョン表は、データ処理タスクを記述するためのメカニズムを提供します。 |
ルール・デザイナのナビゲーション領域とその説明は、『Oracle Fusion Middleware Oracle Business Rulesユーザーズ・ガイド』を参照してください。
「構造」ウィンドウには、ルール・デザイナ・ウィンドウで現在選択しているビジネス・ルール・ディクショナリのデータが構造的に表示されます。このセクションで要素を選択または右クリックすると、次のような様々なタスクを実行できます。
ファクト、関数、グローバル、バケットセット、ディクショナリ・リンク、デシジョン関数などの要素の管理(作成、編集、リフレッシュおよび削除)
ルールセット、ルールおよびデシジョン表へのアクセス
図25-2に、「構造」ウィンドウを示します。
ルール・デザイナでは、図25-3に示すように、ビジネス・ルール検証ログにディクショナリ検証のステータスが表示されます。
ディクショナリが無効な場合、ルール・デザイナでは警告メッセージのリストが生成されて関連ディクショナリ・オブジェクトがリスト表示されるため、ディクショナリ・オブジェクトの検索と問題の解決に使用できます。ルール・デザイナを使用したルールの作成時に表示される検証警告は、無視しても問題ありません。検証警告はルールを作成すると削除されますが、ルール作成時の中間ステップ中は表示されます。ルールをテストまたはデプロイする際は、関連ディクショナリに警告が表示されていない必要があります。
ビジネス・ルール検証の詳細は、『Oracle Fusion Middleware Oracle Business Rulesユーザーズ・ガイド』を参照してください。
この項では、ビジネス・ルールを開始する方法について説明し、ビジネス・ルールの設計に使用するOracle JDeveloperの主要なセクションについて簡単に紹介します。
ビジネス・ルール・コンポーネントは、SOAコンポジット・エディタを使用して追加できます。
ビジネス・ルール・コンポーネントを作成する手順は、次のとおりです。
表25-2の説明に従って、Oracle JDeveloperを起動します。
次のいずれかの方法を使用して、ビジネス・ルール・サービス・コンポーネントを作成します。
既存のSOAコンポジット・アプリケーションのサービス・コンポーネントとして追加する方法:
「コンポーネント・パレット」からSOAコンポジット・エディタに「Business Rule」サービス・コンポーネントをドラッグします。
新規アプリケーションに追加する方法:
「アプリケーション・ナビゲータ」で、「ファイル」→「新規」→「アプリケーション」→「SOAアプリケーション」の順に選択します。
これにより、SOAアプリケーションの作成ウィザードが起動します。
「アプリケーションの名前付け」ページで、「名前」フィールドにアプリケーション名を入力します。
「ディレクトリ」フィールドに、SOAコンポジット・アプリケーションおよびプロジェクトを作成するディレクトリ・パスを入力します。
「次へ」をクリックします。
「プロジェクトの名前付け」ページで、「プロジェクト名」フィールドに一意のプロジェクト名を入力します。プロジェクト名は、SOAコンポジット・アプリケーション全体で一意である必要があります。これは、コンポジットの一意性は、そのコンポジットのプロジェクト名によって確定されるためです。たとえば、表25-3に説明するような操作は実行しないでください。
1番目のデプロイ済プロジェクト(コンポジット)は、デプロイメント時に2番目のデプロイ済プロジェクト(コンポジット)によって上書きされます。
「次へ」をクリックします。
SOA設定の構成ページで、「ビジネス・ルールを使用するコンポジット」を選択します。
「終了」をクリックします。
どちらの方法でも、図25-4に示す「ビジネス・ルールの作成」ダイアログが表示されます。
必要な詳細を指定します。このダイアログでの入力や出力の指定および「ディクショナリのインポート」オプションの使用方法の詳細は、『Oracle Fusion Middleware Oracle Business Rulesユーザーズ・ガイド』を参照してください。
「OK」をクリックします。
デシジョン・コンポーネント(ビジネス・ルール・サービス・コンポーネントとも呼ばれる)を使用すると、BPELプロセスでビジネス・ルールを実行できます。
ビジネス・ルールは、「Business Rule」コンポーネントを使用してBPELプロセスに追加します。ビジネス・ルール・コンポーネントをBPELプロセスに追加する場合は、ルールに対して入力を提供し、ビジネス・ルールから結果を取得するために、入力変数と出力変数を指定する必要があります。
ビジネス・ルール・コンポーネントを使用して、ビジネス・ルールを実行し、ルールに基づいてビジネス上の意思決定を作成できます。ビジネス・ルール・コンポーネント(デシジョン・コンポーネントとも呼ばれる)を作成するには、「コンポーネント・パレット」から「Business Rule」をBPELプロセスにドラッグ・アンド・ドロップします。
ビジネス・ルールをBPELプロセスに追加する手順は、次のとおりです。
BPELプロセス・サービス・コンポーネントを作成します。詳細は、第4.1項「BPELプロセス・サービス・コンポーネントの概要」を参照してください。
BPELプロセスを開きます。たとえば、図25-5に示すように、BPELプロセスを開いてreceiveInput
およびcallbackClient
を表示します。
「コンポーネント・パレット」にある「BPELアクティビティとコンポーネント」セクションで「Business Rule」を選択し、ビジネス・ルールを必要としている場所まで「Business Rule」をドラッグ・アンド・ドロップします。たとえば、図25-6に示すようにreceiveInput
とcallbackClient
の間に「Business Rule」をドラッグ・アンド・ドロップします。
ビジネス・ルールがOracle JDeveloperのダイアグラムに表示されます。ビジネス・ルール領域では、既存のOracle Business Rulesディクショナリを選択するか、新たに作成するディクショナリの名前を入力できます。ビジネス・ルール領域には、ビジネス・ルール名を入力するためのフィールドがあります。「名前」フィールドに名前を入力します。たとえば、図25-7に示すように、GetCreditRating
と入力します。事前にディクショナリを作成した場合は、「ディクショナリ」フィールドで、既存のディクショナリを選択します。
ビジネス・ルール領域の「ビジネス・ルール ディクショナリ」で、「ディクショナリの作成」アイコンをクリックし、「ビジネス・ルールの作成」ダイアログを表示します。
「ビジネス・ルールの作成」ダイアログで、次の操作を実行します。
Oracle Business Rulesディクショナリの名前とパッケージ名を指定します。
ビジネス・ルールの入力および出力データ要素を指定します。たとえば、GetCreditRating
というサンプル・デシジョン・コンポーネントでは、入力は信用格付け申込書です。出力はビジネス・ルールの実行時に生成されます。この例では信用格付け文書です。たとえば、GetCreditRating
ルールの入力および出力データを受け渡すRatingRequest
とRating
という新しい2つの変数をBPELで作成できます。
Oracle Business Rulesディクショナリの名前を入力します。たとえば、図25-8に示すように、GetCreditRating
と入力します。
ビジネス・ルールの入力を追加する手順は、次のとおりです。
「ビジネス・ルールの作成」ダイアログで、「追加」アイコンの横にあるドロップダウン・メニューから「入力変数の追加...」を選択し、入力変数を作成します。
「入力変数の追加」ダイアログが表示されます。
「入力変数の追加」ダイアログで、「プロセス」フォルダを開き、「プロセス」のすぐ下の「変数」フォルダを選択します。
図25-9に示すように、「変数」フォルダを右クリックし、ドロップダウン・リストから「変数の作成...」を選択します。
「変数の作成」ダイアログが表示されます。
「変数の作成」ダイアログで、「名前」フィールドに値を入力します。たとえば、図25-10に示すように、RatingRequest
と入力します。
「変数の作成」の「タイプ」領域で、「要素の参照」アイコンをクリックします。ナビゲータを使用して、入力変数のスキーマ要素タイプを検索します。たとえば、ratingrequest
タイプを選択します。タイプ・チューザを使用して必要なタイプを追加します。
「スキーマ・ファイルのインポート」アイコンをクリックし、スキーマをインポートします。たとえば、CreditRatingTypes.xsd
をインポートします。アプリケーションに必要なその他のスキーマもインポートします。
「タイプ・チューザ」ダイアログで「ratingrequest」を選択し、「OK」をクリックします。
「変数の作成」ダイアログで「OK」をクリックします。
「入力変数の追加」ダイアログで「OK」をクリックします。
ビジネス・ルールの出力を追加する手順は、次のとおりです。
「ビジネス・ルールの作成」ダイアログで、「追加」アイコンの横にあるドロップダウン・メニューから「出力変数の追加...」を選択します。「出力変数の追加」ダイアログが表示されます。このダイアログを使用して出力変数を作成します。たとえば、入力変数の作成と同様の方法でGetCreditRating
の出力変数を作成します。
「出力変数の追加」ダイアログで、「プロセス」の下の「変数」フォルダを選択することで、スコープを選択します。
右クリックして、ドロップダウン・リストから「変数の作成...」を選択します。「変数の作成」ダイアログが表示されます。
「変数の作成」ダイアログで、「名前」フィールドに出力変数名を入力します。たとえば、Rating
と入力します。
「変数の作成」ダイアログの「タイプ」領域で、「要素の参照」アイコンを選択し、「タイプ・チューザ」ダイアログを使用して出力変数のタイプを入力します。たとえば、CreditRatingTypes.xsd
を開き、rating
という要素タイプを選択します。
「タイプ・チューザ」ダイアログで「OK」をクリックします。
「変数の作成」ダイアログで「OK」をクリックします。
「出力変数の追加」ダイアログで「OK」をクリックします。
図25-11に示すように、「ビジネス・ルールの作成」ダイアログが表示されます。
オプションを設定して、デシジョン・サービスとビジネス・ルール・ディクショナリを作成する手順は、次のとおりです。
デフォルトのサービス名を使用しない場合は、「詳細」タブを選択し、「サービス名」フィールドにサービス名を入力します。たとえば、CreditRatingService
というサービス名を入力します。
デシジョン・コンポーネントがステートフルかステートレスかの区別は、「セッションのリセット」で決まります。詳細は、第25.4.5項「デシジョン・コンポーネントのステートフル操作に関する注意事項」を参照してください。
「ビジネス・ルールの作成」ダイアログで「OK」をクリックします。図25-12に示すように、Oracle JDeveloperでデシジョン・コンポーネントとディクショナリが作成され、ルール・デザイナが表示されます。
ルール・デザイナの詳細は、『Oracle Fusion Middleware Oracle Business Rulesユーザーズ・ガイド』を参照してください。
ビジネス・ルールをBPELプロセスに追加すると、Oracle JDeveloperによってデシジョン・コンポーネントが作成され、ビジネス・ルール・サービス・エンジンを使用してビジネス・ルールが制御および実行されます。
デシジョン・コンポーネントの構成内容は次のとおりです。
ルール・エンジンを使用して評価されるルールまたはデシジョン表。これらはルール・デザイナを使用して定義され、ビジネス・ルール・ディクショナリに格納されます。
特定のルールを評価する際に必要なファクト、およびコールするデシジョン関数の説明。ルールまたはデシジョン表が格納される各ルールセットは、入力および出力されるファクトとOracle Business Rulesデシジョン関数の名前が指定されているサービスとして公開されます。ファクトは、ビジネス・ルールの入力および出力を定義する際に、XSD定義を介して公開されます。デシジョン関数は、Oracle Business Rulesディクショナリに格納されます。詳細は、『Oracle Fusion Middleware Oracle Business Rulesユーザーズ・ガイド』を参照してください。
入力、出力および基礎となるビジネス・ルール・サービス・エンジンのコールがラップされているWebサービス。
ビジネス・プロセスでは、このWebサービスを使用して、プロセスの一環としてファクトをアサートしたり取り消すことができます。ビジネス・プロセスからすべてのファクトを1単位としてアサートできる場合があります。それ以外の場合、ビジネス・プロセスはファクトを段階的にアサートし、最終的にルール・エンジンに推論を求めます。したがって、サービスはステートレスとステートフルの両方の相互作用をサポートしています。
このような様々なデシジョン・コンポーネントを作成できます。
詳細は、『Oracle Fusion Middleware Oracle Business Rulesユーザーズ・ガイド』を参照してください。
アプリケーション、プロジェクトおよびルール・ディクショナリを作成すると、Oracle JDeveloperの構造ペインにルール・ディクショナリが表示され、メイン・キャンバスにルール・デザイナが開きます。
「ビジネス・ルールの作成」ダイアログの一環として選択した既存のディクショナリまたは新規ルール・ディクショナリは、事前にロードされている次のデータを使用して作成されます。
ビジネス・ルールの入力および出力情報に基づいたXMLファクト・タイプ・モデル。
ルールまたはデシジョン表を追加して完成させる必要があるルールセット。既存のディクショナリでは、インポート・オプションを使用して、ルールまたはデシジョン表がすでに組み込まれているディクショナリを指定します。
デシジョン・コンポーネントの入力および出力が規定されているサービス・コンポーネント。
ルール・ディクショナリのデシジョン・コンポーネント、およびBPELプロセスへのワイヤ。
注意: ビジネス・ルールの入出力を作成すると、関連ディクショナリに作成されるXMLファクト・タイプには、「ビジネス・ルールの作成」ダイアログで指定した入出力のスキーマ・タイプに基づいて名前が指定されます。入力と出力のスキーマ・タイプを指定すると、ルール・デザイナでは、入力と出力のタイプ選択に関連するファクト・タイプと別名が定義されます。入力と出力の両方に単一のタイプを使用した場合のみ、デシジョン・コンポーネントで単一のファクトが作成され、Rules Designerの「ファクト」タブに表示されます。このファクトには、指定したファクト・タイプが示され、入力変数名と出力変数名を連結した別名が使用されます。ファクト・タイプのデフォルトの命名方式を使用しない場合は、この別名をルール・デザイナで変更できます。 |
ビジネス・ルールをBPELプロセスに追加すると、Oracle JDeveloperによって、指定の入力情報を使用したOracle Business Rulesのコールと、結果が格納された出力の取得をサポートするデシジョン・サービスが作成されます。デシジョン・サービスは、実行時にWebサービスとしてOracle Business Rulesエンジンへのアクセスを提供します。詳細は、『Oracle Fusion Middleware Oracle Business Rulesユーザーズ・ガイド』を参照してください。
ビジネス・ルール・サービス・エンジンで実行されるデシジョン・コンポーネントは、ステートフルまたはステートレス操作をサポートしています。これら2つの操作モードのサポートは、「ビジネス・ルールの作成」ダイアログの「セッションのリセット」チェック・ボックスによって提供されます。
デフォルトでは、「セッションのリセット」チェック・ボックスが選択されています。これはステートレス操作を示します。ステートレス操作とは、実行時にデシジョン・コンポーネントが起動した後、ルール・セッションがリリースされることを意味します。
「セッションのリセット」チェック・ボックスの選択が解除されている場合は、基礎となるOracle Business Rulesオブジェクトが独立した場所にあるビジネス・ルール・サービス・エンジンのメモリーに保持されます(したがって、オブジェクトは操作終了時にルール・セッション・プールに返されません)。その後のデシジョン・コンポーネントの使用では、callFunctionStateful
の起動以降にキャッシュされたすべてのRuleSessionオブジェクトとその状態情報が再利用され、callFunctionStateless
操作の終了後にルール・セッション・プールにリリースされます。したがって、「セッションのリセット」の選択が解除されている場合は、後続リクエストのためにルール・セッションが保存され、同じBPELプロセスからの一連のデシジョン・サービスの起動が常にステートレス起動で終了する必要があります。
Oracle Business RulesをSOAコンポジット・アプリケーションで使用するには、アプリケーションを作成してビジネス・ルールを追加します。
ビジネス・ルール・サービス・コンポーネントを使用して、SOAコンポジット・アプリケーションとビジネス・ルールを統合できます。これによってビジネス・ルール・ディクショナリが作成され、ビジネス・ルールの実行と、ルールに基づくビジネス上の意思決定の作成が可能になります。
Oracle JDeveloperでプロジェクトを作成した後は、そのプロジェクト内にビジネス・ルール・サービス・コンポーネントを作成する必要があります。ビジネス・ルールを追加する場合は、サービス・コンポーネントに入力を提供したり、サービス・コンポーネントから結果を取得するための入力変数と出力変数を作成できます。
Oracle JDeveloperでビジネス・ルールを使用するには、次の準備が必要です。
ビジネス・ルール・サービス・コンポーネントの追加
サービス・コンポーネントに対する入力変数および出力変数の作成
Oracle Business Rulesディクショナリの作成
SOAコンポジット・アプリケーションでOracle Business Rulesを使用するには、Oracle JDeveloperを使用してアプリケーションとプロジェクトを作成し、ビジネス・ルール・コンポーネントを追加します。
ビジネス・ルールを使用するSOAアプリケーションを作成する手順は、次のとおりです。
SOAアプリケーションおよびプロジェクトを作成します。詳細は、第2.1.1項「SOAアプリケーションおよびプロジェクトの作成方法」を参照してください。ビジネス・ルールを使用するSOAコンポジットでは、アプリケーションに必要なテクノロジを選択します。たとえば、ビジネス・ルールを使用するSOAアプリケーションには、ADF Business Components、Java、XMLなどが必要な場合があります。「プロジェクト・テクノロジ」タブで、これらの項目を「選択済」領域に移動します。
「アプリケーション・ナビゲータ」にSOAコンポジット・エディタが表示されていない場合は、プロジェクトの「SOAコンテンツ」フォルダを開き、composite.xml
をダブルクリックしてSOAコンポジット・エディタを起動します。
図25-13に示すように、「コンポーネント・パレット」で、「SOA」メニューの「サービス・コンポーネント」領域からSOAコンポジット・エディタの「コンポーネント」スイムレーンに、「Business Rule」をドラッグ・アンド・ドロップします。
「Business Rule」をドラッグ・アンド・ドロップすると、図25-14に示すように、Oracle JDeveloperの「ビジネス・ルールの作成」ダイアログが表示されます。
ビジネス・ルールの入力を追加する手順は、次のとおりです。
「ビジネス・ルールの作成」ダイアログで、「追加」アイコンの横にあるドロップダウン・メニューから「入力...」を選択し、ビジネス・ルールの入力を追加します。「タイプ・チューザ」ダイアログが表示されます。
「タイプ・チューザ」ダイアログで入力を追加します。「プロジェクトのスキーマ・ファイル」でスキーマが使用可能になっている場合は、手順9に移動して適切なスキーマを選択します。
「スキーマ・ファイルのインポート...」アイコンをクリックします。「スキーマ・ファイルのインポート」ダイアログが表示されます。
「スキーマ・ファイルのインポート」ダイアログで、「リソースの参照」をクリックし、入力するXMLスキーマ要素を選択します。「SOAリソース・ブラウザ」ダイアログが表示されます。
「SOAリソース・ブラウザ」ダイアログで、ナビゲートしてビジネス・ルールを入力するスキーマを検索します。たとえば、order.xsd
スキーマ・ファイルを選択して、「OK」をクリックします。
図25-15に示すように、「スキーマ・ファイルのインポート」ダイアログで、「プロジェクトにコピー」を選択します。
「スキーマ・ファイルのインポート」ダイアログで「OK」をクリックします。
「ファイルのローカライズ」ダイアログで「OK」をクリックします。
「タイプ・チューザ」ダイアログのナビゲータを使用して、スキーマから入力を検索して選択し、「OK」をクリックします。たとえば、入力としてCustomerOrder
要素を選択します。
ビジネス・ルールの出力を追加する手順は、次のとおりです。
「ビジネス・ルールの作成」ダイアログで、「追加」アイコンの横にあるドロップダウン・メニューから「出力...」を選択します。
「タイプ・チューザ」ダイアログで、入力の追加と同様の方法で出力を追加します。たとえば、order.xsd
からOrderApproval
を選択し、「OK」をクリックします。
図25-16に示すように、「ビジネス・ルールの作成」ダイアログが表示されます。
オプションを設定して、デシジョン・サービスとビジネス・ルール・ディクショナリを作成する手順は、次のとおりです。
「ビジネス・ルールの作成」ダイアログで、「コンポジット・サービスとして公開」を選択します。
デフォルトのサービス名を使用しない場合は、「詳細」タブを選択し、「サービス名」フィールドにサービス名を入力します。
「ビジネス・ルールの作成」ダイアログで「OK」をクリックします。これにより、ビジネス・ルール・コンポーネント(デシジョン・コンポーネントとも呼ばれる)が作成され、図25-17に示すように、Oracle JDeveloperのキャンバス・ワークスペースにビジネス・ルール・コンポーネントが表示されます。
デシジョン・コンポーネント(たとえば、「OracleRules1」ビジネス・ルール)をダブルクリックします。図25-18に示すように、ルール・デザイナが開きます。検証ログには、入力および出力ファクトに関する検証警告が表示されます。ルール・デザイナを使用してルールまたはデシジョン表を定義することで、これらの警告メッセージを取り除きます。
図25-18 SOAコンポジット・アプリケーションの新規ディクショナリが表示されているルール・デザイナ
ルール・デザイナの詳細は、『Oracle Fusion Middleware Oracle Business Rulesユーザーズ・ガイド』を参照してください。
Oracle Business Rulesをコンポジット・アプリケーションのコンポーネントとしてコールするために、1つ以上のデシジョン関数を入力として指定できます。たとえば、Oracle Business Rulesディクショナリで複数のデシジョン関数が使用可能な場合は、特定のデシジョン関数を入力として指定できます。
コンポジット・アプリケーションでデシジョン関数を指定する手順は、次のとおりです。
デシジョン関数をOracle Business Rulesディクショナリに追加します。詳細は、『Oracle Fusion Middleware Oracle Business Rulesユーザーズ・ガイド』を参照してください。
ビジネス・ルール・コンポーネントをコンポジット・アプリケーションに追加します。詳細は、第25.5.1項「SOAコンポジット・アプリケーションへのビジネス・ルールの追加方法」を参照してください。
図25-19に示すように、ビジネス・ルール・コンポーネントを選択します。
目的のデシジョン関数ポートを選択します。たとえば、図25-20に示すように、DF_2のポートを選択します。
ポートを選択すると、Oracle JDeveloperの「プロパティ・インスペクタ」にポート情報が表示されます。
ポートをダブルクリックすると、図25-21に示すように、そのポートの「インタフェースの更新」ダイアログが表示されます。
図25-21 ビジネス・ルール・デシジョン・ポートのデシジョン関数に対する「インタフェースの更新」ダイアログ
ビジネス・ルールは、SOAコンポジット・アプリケーションのデシジョン・コンポーネントの一部として実行します。ビジネス・ルールは、ビジネス・ルール・サービス・エンジンによって実行されます。Oracle Enterprise Manager Fusion Middleware Controlコンソールを使用して、ビジネス・ルール・サービス・エンジンを監視したり、デシジョン・コンポーネントが含まれているSOAコンポジット・アプリケーションをテストできます。詳細は、『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド』を参照してください。
Oracle ADF Business Componentsファクト・タイプおよびActionTypes
は、ビジネス・ルール・サービス・エンジンから使用できます。通常、デシジョン・コンポーネントはSOAコンポジット内で使用され、BPELコンポーネントおよびXMLタイプに関するOracle Business Rulesのルールに接続できます。ビジネス・ルール・サービス・エンジンは、XMLスキーマ・タイプのインスタンスを含むペイロードが指定されたWebサービスとしてコールされ、同様の方法でレスポンスを返します。
Oracle ADF Business Componentsファクト・タイプはデシジョン・コンポーネントから使用することもできます。Oracle ADF Business Componentsファクト・タイプ・インスタンスをロードしてビジネス・ルール・サービス・エンジンに渡すかわりに、Oracle ADF Business Componentsビュー・オブジェクト行のロード方法を記述した構成情報を指定してビジネス・ルール・サービス・エンジンをコールします。その結果、DecisionPointDictionary
の特別なOracle Business Rulesデシジョン関数およびOracle Business Rules SDKデシジョン・ポイントAPIのクラスによって行がロードされ、Oracle ADF Business Componentsファクト・タイプ・インスタンスがアサートされます。Oracle ADF Business Componentsファクト・タイプを使用する場合は、基礎となるデータベース行を更新するようなOracle ADF Business Componentsファクト・タイプ・インスタンスの変更など、操作に影響を与えるActionTypeから継承するユーザー定義Javaクラスを使用するルールを記述します。
デシジョン・コンポーネントには、入力としてXML文書が必要です。Oracle Business Rulesデシジョン・ポイント・ディクショナリには、この入力として機能するSimpleDecisionPointInput
というXMLファクト・タイプが用意されています。ビジネス・ルール・サービス・コンポーネントには、Oracle ADF Business Componentsの主キーが渡されます。ビジネス・ルール・サービス・コンポーネントはユーザー定義のデシジョン関数を起動します。このデシジョン関数は、Oracle ADF Business Componentsビュー・オブジェクト・インスタンスをロードし、ルール・エンジンでアサートし、結果を次の順にマーシャリングします。
DecisionPointDictionary.DecisionPoint_Preprocessing_Webserviceルールセット: 事前処理ルールセットがデータベースからビジネス・コンポーネントを読み取り、ファクトとしてアサートします。
ユーザー定義ルールセット: ユーザー・ルールセットがこれらのファクトを照合し、ビジネス・コンポーネントを更新するためにActionType
を拡張するファクトをアサートします。
DecisionPointDictionary.DecisionPoint_Postprocessing_Webserviceルールセット: 実際の更新は、事後処理ルールセットによって実行されます。ActionTypes
の使用はオプションです。
ビジネス・ルール・サービス・エンジンからOracle ADF Business Componentsファクト・タイプおよびActionTypes
を使用する方法は、Oracle Business Rules固有のオンライン・サンプルのソース・コードを参照してください。
http://www.oracle.com/technology/sample_code/products/rules
SOAオンライン・サンプルも参照してください。