ヘッダーをスキップ
Oracle® Fusion Middleware Oracle SOA Suite開発者ガイド
11g リリース1 (11.1.1.6.2)
B56238-06
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

25 Oracle Business Rulesの開始

この章では、ビジネス・ルール・サービス・コンポーネントを使用して、SOAコンポジット・アプリケーションをOracle Business Rulesに統合する方法について説明します。ビジネス・ルール・サービス・コンポーネントはデシジョン・コンポーネントとも呼ばれます。ビジネス・ルールは、SOAコンポジット・アプリケーションの一部またはBPELプロセスの一部として追加できます。

この章には次の項が含まれます:

Oracle Business Rulesの使用例は、『Oracle Fusion Middleware Oracle Business Rulesユーザーズ・ガイド』を参照してください。

25.1 ビジネス・ルール・サービス・コンポーネントの概要

デシジョン・コンポーネント(ビジネス・ルール・サービス・コンポーネントとも呼ばれます)は、SOAコンポジット・アプリケーションでのOracle Business Rulesの使用をサポートしています。デシジョン・コンポーネントは、次のようにSOAコンポジットで使用できます。

25.1.1 BPELプロセス、ビジネス・ルールおよびヒューマン・タスクの統合

BPELプロセス、ビジネス・ルールおよびヒューマン・タスク・コンポーネントを含むSOAコンポジット・アプリケーションを作成できます。これらのコンポーネントは補完的な技術です。BPELプロセスではシステム、サービスおよびユーザーのオーケストレーションにフォーカスが置かれます。ビジネス・ルールでは、意思決定とポリシーにフォーカスが置かれます。ヒューマン・タスクを使用すると、エンドツーエンド・プロセス・フローの一部として実行するタスクをユーザーまたはグループに対して説明するワークフローをモデリングできます。

ビジネス・ルールを使用できる状況の例を次に示します。

  • 動的処理

    ルールにより、サービス・レベル合意や他のガイドラインに基づいて、ビジネス・プロセス内でインテリジェント・ルーティングを実行できます。たとえば、顧客が1日以内のレスポンスを必要とする場合は、融資申請をQuickLoan融資エージェントにのみ送信します。顧客に1日以上の余裕がある場合は、申請を3つの異なる融資エージェントにルーティングします。

  • プロセスのビジネス・ルールの外部化

    通常ビジネス・プロセスの一部として評価する必要がある条件が多くあります。ただし、これらの条件のパラメータはプロセスに関係なく変更できます。たとえば、信用度が650以上の顧客にのみ融資を提供するとします。この値は、ビジネス・アナリストが設定した新規ガイドラインに基づいて動的に変更できます。

  • データ検証および制約チェック

    ルールは入力文書を検証したり、リクエストに応じて追加制約を適用できます。たとえば、新規顧客リクエストには、常に雇用確認書と銀行勘定詳細を添付する必要があります。

  • ヒューマン・タスクのルーティング

    ビジネス・プロセスでは、次のようにヒューマン・タスクでルールが頻繁に使用されます。

    • ポリシー・ベースのタスク割当てでは、タスクが特定のロールやユーザーにディスパッチされます。たとえば、ポータルからの着信リクエストを処理するプロセスでは、融資申請と見積保険料を異なるロール・セットにルーティングできます。

    • ユーザー間のタスクのロード・バランシング。タスクが一連のユーザーまたはロールに割り当てられると、そのロールの各ユーザーはタスク・セットを取得して、指定された時間内にタスクの処理を行います。新規タスクを受け取った場合は、ポリシーを適用してタスクに優先度が設定され、特定のユーザー・キューに入れられます。たとえば、特定の1人の融資エージェントに対して割り当てる融資を、常に最大で10件にするなどです。

ヒューマン・タスク・コンポーネントのヒューマン・タスク・エディタでのビジネス・ルール作成の詳細は、第29.5.2項「ビジネス・ルールを使用した詳細タスク・ルーティングの指定方法」を参照してください。

25.2 ルール・デザイナ・エディタ環境の概要

Oracle JDeveloperのSOAコンポジット・アプリケーションにビジネス・ルール・サービス・コンポーネントを作成した後は、そのサービス・コンポーネントをビジネス・ルール・デザイナを使用して設計できます。このデザイナは、SOAコンポジット・エディタでビジネス・ルールをダブルクリックすると表示されます。

ビジネス・ルール・デザイナは、図25-1に示す主要なセクションで構成されています。これらのセクションでは、Oracle JDeveloperのビジネス・ルールを使用できます。

図25-1 Oracle JDeveloperのルール・デザイナ

図25-1の説明が続きます
「図25-1 Oracle JDeveloperのルール・デザイナ」の説明

25.2.1 アプリケーション・ナビゲータ

「アプリケーション・ナビゲータ」には、プロジェクト内のファイルが表示されます。各プロジェクトに格納できるのは、1つのコンポジットのみです。ただし、各コンポジットには、同じタイプまたは異なるタイプ(ビジネス・ルール、BPELプロセス、Oracle Mediatorおよびヒューマン・ワークフロー)の複数のコンポーネントを指定できます。

ビジネス・ルールの設計時には、その他のファイル、フォルダおよび要素が「アプリケーション・ナビゲータ」に表示されることがあります。

25.2.2 ルール・デザイナ・ウィンドウ

ルール・デザイナ・ウィンドウには、選択したディクショナリ・コンポーネントのビジュアル・ビューが表示されます。ルール・デザイナのナビゲーション・タブを使用して、使用するディクショナリの様々な部分を選択します。ルール・デザイナ・ウィンドウは、次のいずれかの処理を実行すると表示されます。

  • コンポジット内でビジネス・ルール・コンポーネントをダブルクリックした場合

  • SOAコンポジット・エディタでビジネス・ルール・コンポーネントをダブルクリックした場合

  • BPELプロセス内でビジネス・ルールをダブルクリックした場合

  • 「アプリケーション・ナビゲータ」で、ビジネス・ルールのディクショナリ・ファイル(.rules拡張子付きのファイル)をダブルクリックした場合

  • .rulesファイルが選択されている状態の「設計」タブをクリックした場合

表25-1では、ルール・デザイナでディクショナリを使用する際の情報を検索できるナビゲーション領域について説明します。

表25-1 ルール・デザイナのナビゲーション領域の説明

ルール・デザイナのナビゲーション・タブ 説明

ファクト

ファクトは、ルールによる推論対象のオブジェクトです。

関数

Oracle Business Rulesでは、関数は標準の算術関数を指します。

グローバル

Oracle Business Rulesでは、グローバルはJavaにおけるパブリックな静的変数に類似しています。

バケットセット

バケットセットは、ファクト・プロパティのデータ型を定義します。

リンク

リンクは、同じアプリケーションまたは別のアプリケーション内のディクショナリにリンクする際に使用します。

デシジョン関数

デシジョン関数は、RL言語プログラミングを使用せずに宣言的に構成された関数です。

ルールおよびデシジョン表を含むルールセット

ルールセットは、ルールおよびデシジョン表の実行単位を提供します。デシジョン表は、データ処理タスクを記述するためのメカニズムを提供します。


ルール・デザイナのナビゲーション領域とその説明は、『Oracle Fusion Middleware Oracle Business Rulesユーザーズ・ガイド』を参照してください。

25.2.3 「構造」ウィンドウ

「構造」ウィンドウには、ルール・デザイナ・ウィンドウで現在選択しているビジネス・ルール・ディクショナリのデータが構造的に表示されます。このセクションで要素を選択または右クリックすると、次のような様々なタスクを実行できます。

  • ファクト、関数、グローバル、バケットセット、ディクショナリ・リンク、デシジョン関数などの要素の管理(作成、編集、リフレッシュおよび削除)

  • ルールセット、ルールおよびデシジョン表へのアクセス

図25-2に、「構造」ウィンドウを示します。

図25-2 ルール・デザイナ・ディクショナリが表示された「構造」ウィンドウ

ルール・デザイナ・ディクショナリが表示された「構造」ウィンドウ
「図25-2 ルール・デザイナ・ディクショナリが表示された「構造」ウィンドウ」の説明

25.2.4 「ビジネス・ルール検証 - ログ」ウィンドウ

ルール・デザイナでは、図25-3に示すように、ビジネス・ルール検証ログにディクショナリ検証のステータスが表示されます。

ディクショナリが無効な場合、ルール・デザイナでは警告メッセージのリストが生成されて関連ディクショナリ・オブジェクトがリスト表示されるため、ディクショナリ・オブジェクトの検索と問題の解決に使用できます。ルール・デザイナを使用したルールの作成時に表示される検証警告は、無視しても問題ありません。検証警告はルールを作成すると削除されますが、ルール作成時の中間ステップ中は表示されます。ルールをテストまたはデプロイする際は、関連ディクショナリに警告が表示されていない必要があります。

ビジネス・ルール検証の詳細は、『Oracle Fusion Middleware Oracle Business Rulesユーザーズ・ガイド』を参照してください。

図25-3 ルール・デザイナの「ビジネス・ルール検証 - ログ」

ルール・デザイナの「ビジネス・ルール検証 - ログ」
「図25-3 ルール・デザイナの「ビジネス・ルール検証 - ログ」」の説明

25.3 ビジネス・ルールの作成および編集の概要

この項では、ビジネス・ルールを開始する方法について説明し、ビジネス・ルールの設計に使用するOracle JDeveloperの主要なセクションについて簡単に紹介します。

25.3.1 ビジネス・ルール・コンポーネントの作成方法

ビジネス・ルール・コンポーネントは、SOAコンポジット・エディタを使用して追加できます。

ビジネス・ルール・コンポーネントを作成する手順は、次のとおりです。

  1. 表25-2の説明に従って、Oracle JDeveloperを起動します。

    表25-2 Oracle JDeveloperの起動

    起動対象 Windowsでの手順 UNIXでの手順

    Oracle JDeveloper


    JDev_Oracle_Home\JDev\bin\jdev.exeをクリックするか、ショートカットを作成します。

    $ORACLE_HOME/jdev/bin/jdev


  2. 次のいずれかの方法を使用して、ビジネス・ルール・サービス・コンポーネントを作成します。

    既存のSOAコンポジット・アプリケーションのサービス・コンポーネントとして追加する方法:

    1. 「コンポーネント・パレット」からSOAコンポジット・エディタに「Business Rule」サービス・コンポーネントをドラッグします。

    新規アプリケーションに追加する方法:

    1. 「アプリケーション・ナビゲータ」で、「ファイル」「新規」「アプリケーション」「SOAアプリケーション」の順に選択します。

      これにより、SOAアプリケーションの作成ウィザードが起動します。

    2. 「アプリケーションの名前付け」ページで、「名前」フィールドにアプリケーション名を入力します。

    3. 「ディレクトリ」フィールドに、SOAコンポジット・アプリケーションおよびプロジェクトを作成するディレクトリ・パスを入力します。

    4. 「次へ」をクリックします。

    5. 「プロジェクトの名前付け」ページで、「プロジェクト名」フィールドに一意のプロジェクト名を入力します。プロジェクト名は、SOAコンポジット・アプリケーション間で一意である必要があります。これは、コンポジットの一意性は、そのコンポジットのプロジェクト名によって確定されるためです。たとえば、表25-3に説明するような操作は実行しないでください。

      表25-3 SOAプロジェクトの名前付けに関する制限

      作成するアプリケーション名 SOAプロジェクト名

      Application1

      Project1

      Application2

      Project1


      デプロイメント時に、2番目にデプロイされたプロジェクト(コンポジット)が最初にデプロイされたプロジェクト(コンポジット)を上書きします。

    6. 「次へ」をクリックします。

    7. 「SOA設定の構成」ページで、「ビジネス・ルールを使用するコンポジット」を選択します。

    8. 「終了」をクリックします。

    どちらの方法でも、図25-4に示す「ビジネス・ルールの作成」ダイアログが表示されます。

    図25-4 「ビジネス・ルールの作成」ダイアログ

    図25-4の説明が続きます
    「図25-4 「ビジネス・ルールの作成」ダイアログ」の説明

  3. 必要な詳細を指定します。このダイアログでの入力や出力の指定および「ディクショナリのインポート」オプションの使用方法の詳細は、『Oracle Fusion Middleware Oracle Business Rulesユーザーズ・ガイド』を参照してください。

  4. 「OK」をクリックします。

25.3.2 ルール・デザイナでのビジネス・ルールの使用に関する概要

ビジネス・ルールを使用している場合は、Oracle JDeveloperにルール・デザイナが表示されます。

25.4 BPELプロセスへのビジネス・ルールの追加

デシジョン・コンポーネント(ビジネス・ルール・サービス・コンポーネントとも呼ばれます)を使用すると、BPELプロセスでビジネス・ルールを実行できます。

25.4.1 BPELプロセスへのビジネス・ルールの追加方法

ビジネス・ルールは、「Business Rule」コンポーネントを使用してBPELプロセスに追加します。ビジネス・ルール・コンポーネントをBPELプロセスに追加する場合は、ルールに対して入力を提供し、ビジネス・ルールから結果を取得するために、入力変数と出力変数を指定する必要があります。

ビジネス・ルール・コンポーネントを使用して、ビジネス・ルールを実行し、ルールに基づいてビジネス上の意思決定を作成できます。ビジネス・ルール・コンポーネント(デシジョン・コンポーネントとも呼ばれます)を作成するには、「コンポーネント・パレット」から「Business Rule」をBPELプロセスにドラッグ・アンド・ドロップします。

ビジネス・ルールをBPELプロセスに追加する手順は、次のとおりです。

  1. BPELプロセス・サービス・コンポーネントを作成します。詳細は、第4.1項「BPELプロセス・サービス・コンポーネントの概要」を参照してください。

  2. プロセス項目をダブルクリックして、BPELプロセスを開きます。たとえば、図25-5に示すように、BPELプロセスを開いてreceiveInputおよびcallbackClientを表示します。

    図25-5 BPELプロセスへのビジネス・ルールの追加

    図25-5の説明が続きます
    「図25-5 BPELプロセスへのビジネス・ルールの追加」の説明

  3. 「コンポーネント・パレット」にある「SOAコンポーネント」セクションで「Business Rule」を選択し、ビジネス・ルールを必要としている場所まで「Business Rule」をドラッグ・アンド・ドロップします。たとえば、図25-6に示すようにreceiveInputcallbackClientの間に「Business Rule」をドラッグ・アンド・ドロップします。

    図25-6 BPELプロセスへの「Business Rule」のドラッグ・アンド・ドロップ

    図25-6の説明が続きます
    「図25-6 BPELプロセスへの「Business Rule」のドラッグ・アンド・ドロップ」の説明

  4. ビジネス・ルールがOracle JDeveloperのダイアグラムに表示されます。ビジネス・ルール・コンポーネントをダブルクリックすると、「ルール」ダイアログ・ボックスが表示されます。「ルール」ダイアログ・ボックスには、「一般」、「ディクショナリ」、「相関セット」などのタブがあり、既存のOracle Business Rulesディクショナリを選択するか、新たに作成するディクショナリの名前を入力できます。「一般」タブの「名前」フィールドに、ビジネス・ルールの名前を入力します。たとえば、図25-7に示すように、GetCreditRatingと入力します。事前にディクショナリを作成した場合は、「ディクショナリ」タブの「ディクショナリ」フィールドで、既存のディクショナリを選択します。

    図25-7 自動融資BPELプロセスに追加されたビジネス・ルール

    図25-7の説明が続きます
    「図25-7 自動融資BPELプロセスに追加されたビジネス・ルール」の説明

  5. ビジネス・ルール領域の「ビジネス・ルール ディクショナリ」で、「ディクショナリの作成」アイコンをクリックし、「ビジネス・ルールの作成」ダイアログを表示します。

  6. 「ビジネス・ルールの作成」ダイアログで、次の操作を実行します。

    • Oracle Business Rulesディクショナリの名前とパッケージ名を指定します。

    • ビジネス・ルールの入力および出力データ要素を指定します。たとえば、GetCreditRatingというサンプル・デシジョン・コンポーネントでは、入力は信用格付け申込書です。出力はビジネス・ルールの実行時に生成されます。この例では信用格付け文書です。たとえば、GetCreditRatingルールの入力および出力データを受け渡すRatingRequestRatingという新しい2つの変数をBPELで作成できます。

    Oracle Business Rulesディクショナリの名前を入力します。たとえば、図25-8に示すように、GetCreditRatingと入力します。

    図25-8 GetCreditRatingビジネス・ルール・ディクショナリの追加

    図25-8の説明が続きます
    「図25-8 GetCreditRatingビジネス・ルール・ディクショナリの追加」の説明

ビジネス・ルールの入力を追加する手順は、次のとおりです。

  1. 「ビジネス・ルールの作成」ダイアログで、「追加」アイコンの横にあるメニューから「入力変数の追加...」を選択し、入力変数を作成します。

    「入力変数の追加」ダイアログ・ボックスが表示されます。

  2. 「入力変数の追加」ダイアログ・ボックスで、「プロセス」フォルダを開き、「プロセス」のすぐ下の「変数」フォルダを選択します。

  3. 図25-9に示すように、「変数」フォルダを右クリックし、リストから「変数の作成...」を選択します。

    図25-9 入力変数の追加

    図25-9の説明が続きます
    「図25-9 入力変数の追加」の説明

    「変数の作成」ダイアログ・ボックスが表示されます。

  4. 「変数の作成」ダイアログ・ボックスで、「名前」フィールドに値を入力します。たとえば、図25-10に示すように、RatingRequestと入力します。

    図25-10 「変数の作成」ダイアログ

    図25-10の説明が続きます
    「図25-10 「変数の作成」ダイアログ」の説明

  5. 「変数の作成」の「タイプ」領域で、「要素の参照」アイコンをクリックします。ナビゲータを使用して、入力変数のスキーマ要素タイプを検索します。たとえば、ratingrequestタイプを選択します。タイプ・チューザを使用して必要なタイプを追加します。

  6. 「スキーマ・ファイルのインポート」アイコンをクリックし、スキーマをインポートします。たとえば、CreditRatingTypes.xsdをインポートします。アプリケーションに必要なその他のスキーマもインポートします。

  7. 「タイプ・チューザ」ダイアログで「ratingrequest」を選択し、「OK」をクリックします。

  8. 「変数の作成」ダイアログで「OK」をクリックします。

  9. 「入力変数の追加」ダイアログで「OK」をクリックします。

ビジネス・ルールの出力を追加する手順は、次のとおりです。

  1. 「ビジネス・ルールの作成」ダイアログで、「追加」アイコンの横にあるドロップダウン・メニューから「出力変数の追加...」を選択します。「出力変数の追加」ダイアログが表示されます。このダイアログを使用して出力変数を作成します。たとえば、入力変数の作成と同様の方法でGetCreditRatingの出力変数を作成します。

  2. 「出力変数の追加」ダイアログで、「プロセス」の下の「変数」フォルダを選択することで、スコープを選択します。

  3. 右クリックして、ドロップダウン・リストから「変数の作成...」を選択します。「変数の作成」ダイアログが表示されます。

  4. 「変数の作成」ダイアログで、「名前」フィールドに出力変数名を入力します。たとえば、Ratingと入力します。

  5. 「変数の作成」ダイアログの「タイプ」領域で、「要素の参照」アイコンを選択し、「タイプ・チューザ」ダイアログを使用して出力変数のタイプを入力します。たとえば、CreditRatingTypes.xsdを開き、ratingという要素タイプを選択します。

  6. 「タイプ・チューザ」ダイアログで「OK」をクリックします。

  7. 「変数の作成」ダイアログで「OK」をクリックします。

  8. 「出力変数の追加」ダイアログで「OK」をクリックします。

    図25-11に示すように、「ビジネス・ルールの作成」ダイアログが表示されます。

    図25-11 入力変数と出力変数が指定された「ビジネス・ルールの作成」ダイアログ

    図25-11の説明が続きます
    「図25-11 入力変数と出力変数が指定された「ビジネス・ルールの作成」ダイアログ」の説明

オプションを設定して、デシジョン・サービスとビジネス・ルール・ディクショナリを作成する手順は、次のとおりです。

  1. デフォルトのサービス名を使用しない場合は、「詳細」タブを選択し、「サービス名」フィールドにサービス名を入力します。たとえば、CreditRatingServiceというサービス名を入力します。

  2. デシジョン・コンポーネントがステートフルかステートレスかの判断は、「セッションのリセット」を使用して行います。詳細は、第25.4.5項「デシジョン・コンポーネントのステートフル操作に関する注意事項」を参照してください。

  3. 「ビジネス・ルールの作成」ダイアログで「OK」をクリックします。図25-12に示すように、Oracle JDeveloperでデシジョン・コンポーネントとディクショナリが作成され、ルール・デザイナが表示されます。

図25-12 ビジネス・ルールを使用するルール・デザイナのキャンバス

図25-12の説明が続きます
「図25-12 ビジネス・ルールを使用するルール・デザイナのキャンバス」の説明

ルール・デザイナの詳細は、『Oracle Fusion Middleware Oracle Business Rulesユーザーズ・ガイド』を参照してください。

25.4.2 BPELプロセスへのビジネス・ルール追加時の処理内容

ビジネス・ルールを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ユーザーズ・ガイド』を参照してください。

25.4.3 ビジネス・ルール・ディクショナリ作成時の処理内容

アプリケーション、プロジェクトおよびルール・ディクショナリを作成すると、Oracle JDeveloperの構造ペインにルール・ディクショナリが表示され、メイン・キャンバスにルール・デザイナが開きます。

「ビジネス・ルールの作成」ダイアログの一環として選択した既存のディクショナリまたは新規ルール・ディクショナリは、事前にロードされている次のデータを使用して作成されます。

  • ビジネス・ルールの入力および出力情報に基づいたXMLファクト・タイプ・モデル。

  • ルールまたはデシジョン表を追加して完成させる必要があるルールセット。既存のディクショナリでは、インポート・オプションを使用して、ルールまたはデシジョン表がすでに組み込まれているディクショナリを指定します。

  • デシジョン・コンポーネントの入力および出力が規定されているサービス・コンポーネント。

  • ルール・ディクショナリのデシジョン・コンポーネント、およびBPELプロセスへのワイヤ。


注意:

ビジネス・ルールの入出力を作成すると、関連ディクショナリに作成されるXMLファクト・タイプには、「ビジネス・ルールの作成」ダイアログで指定した入出力のスキーマ・タイプに基づいて名前が指定されます。入力と出力のスキーマ・タイプを指定すると、ルール・デザイナでは、入力と出力のタイプ選択に関連するファクト・タイプと別名が定義されます。入力と出力の両方に単一のタイプを使用した場合にのみ、デシジョン・コンポーネントで単一のファクトが作成され、ルール・デザイナの「ファクト」タブに表示されます。このファクトには、指定したファクト・タイプが示され、入力変数名と出力変数名を連結した別名が使用されます。ファクト・タイプのデフォルトの命名方式を使用しない場合は、この別名をルール・デザイナで変更できます。


25.4.4 BPELプロセスでのビジネス・ルールの起動に関する注意事項

ビジネス・ルールをBPELプロセスに追加すると、Oracle JDeveloperによって、指定の入力情報を使用したOracle Business Rulesのコールと、結果が格納された出力の取得をサポートするデシジョン・サービスが作成されます。デシジョン・サービスは、実行時にWebサービスとしてOracle Business Rulesエンジンへのアクセスを提供します。詳細は、『Oracle Fusion Middleware Oracle Business Rulesユーザーズ・ガイド』を参照してください。

25.4.5 デシジョン・コンポーネントのステートフル操作に関する注意事項

ビジネス・ルール・サービス・エンジンで実行されるデシジョン・コンポーネントは、ステートフルまたはステートレス操作をサポートしています。これら2つの操作モードのサポートは、「ビジネス・ルールの作成」ダイアログの「セッションのリセット」チェック・ボックスによって提供されます。

デフォルトでは、「セッションのリセット」チェック・ボックスが選択されています。これはステートレス操作を示します。ステートレス操作とは、実行時にデシジョン・コンポーネントが起動した後、ルール・セッションがリリースされることを意味します。

「セッションのリセット」チェック・ボックスの選択が解除されている場合は、基礎となるOracle Business Rulesオブジェクトが独立した場所にあるビジネス・ルール・サービス・エンジンのメモリーに保持されます(したがって、オブジェクトは操作終了時にルール・セッション・プールに返されません)。その後のデシジョン・コンポーネントの使用では、callFunctionStatefulの起動以降にキャッシュされたすべてのRuleSessionオブジェクトとその状態の情報が再利用され、callFunctionStateless操作の終了後にルール・セッション・プールにリリースされて戻されます。したがって、「セッションのリセット」の選択が解除されている場合は、後続リクエストのためにルール・セッションが保存され、同じBPELプロセスからの一連のデシジョン・サービスの起動が常にステートレス起動で終了する必要があります。

25.5 SOAコンポジット・アプリケーションへのビジネス・ルールの追加

Oracle Business RulesをSOAコンポジット・アプリケーションで使用するには、アプリケーションを作成してビジネス・ルールを追加します。

ビジネス・ルール・サービス・コンポーネントを使用して、SOAコンポジット・アプリケーションとビジネス・ルールを統合できます。これによってビジネス・ルール・ディクショナリが作成され、ビジネス・ルールの実行と、ルールに基づくビジネス上の意思決定の作成が可能になります。

Oracle JDeveloperでプロジェクトを作成した後は、そのプロジェクト内にビジネス・ルール・サービス・コンポーネントを作成する必要があります。ビジネス・ルールを追加する場合は、サービス・コンポーネントに入力を提供したり、サービス・コンポーネントから結果を取得するための入力変数と出力変数を作成できます。

Oracle JDeveloperでビジネス・ルールを使用するには、次の準備が必要です。

25.5.1 SOAコンポジット・アプリケーションへのビジネス・ルールの追加方法

SOAコンポジット・アプリケーションでOracle Business Rulesを使用するには、Oracle JDeveloperを使用してアプリケーションとプロジェクトを作成し、ビジネス・ルール・コンポーネントを追加します。

ビジネス・ルールを使用するSOAアプリケーションを作成する手順は、次のとおりです。

  1. SOAアプリケーションおよびプロジェクトを作成します。詳細は、第2.1.1項「SOAアプリケーションおよびプロジェクトの作成方法」を参照してください。ビジネス・ルールを使用するSOAコンポジットでは、アプリケーションに必要なテクノロジを選択します。たとえば、ビジネス・ルールを使用するSOAアプリケーションには、ADF Business Components、Java、XMLなどが必要な場合があります。「プロジェクト・テクノロジ」タブで、これらの項目を「選択済」領域に移動します。

  2. 「アプリケーション・ナビゲータ」にSOAコンポジット・エディタが表示されていない場合は、プロジェクトの「SOAコンテンツ」フォルダを開き、composite.xmlをダブルクリックしてSOAコンポジット・エディタを起動します。

  3. 図25-13に示すように、「コンポーネント・パレット」で、「SOA」メニューの「サービス・コンポーネント」領域からSOAコンポジット・エディタの「コンポーネント」スイムレーンに、「Business Rule」をドラッグ・アンド・ドロップします。

    図25-13 SOAコンポジット・アプリケーションへのビジネス・ルールの追加

    図25-13の説明が続きます
    「図25-13 SOAコンポジット・アプリケーションへのビジネス・ルールの追加」の説明

  4. 「Business Rule」をドラッグ・アンド・ドロップすると、図25-14に示すように、Oracle JDeveloperの「ビジネス・ルールの作成」ダイアログが表示されます。

    図25-14 SOAコンポジットへのビジネス・ルールの追加およびディクショナリの作成

    図25-14の説明が続きます
    「図25-14 SOAコンポジットへのビジネス・ルールの追加およびディクショナリの作成」の説明

ビジネス・ルールの入力を追加する手順は、次のとおりです。

  1. 「ビジネス・ルールの作成」ダイアログ・ボックスで、「追加」アイコンの横にあるメニューから「入力...」を選択し、ビジネス・ルールの入力を追加します。「タイプ・チューザ」ダイアログが表示されます。

  2. 「タイプ・チューザ」ダイアログで入力を追加します。「プロジェクトのスキーマ・ファイル」でスキーマが使用可能になっている場合は、ステップ9に移動して適切なスキーマを選択します。

  3. 「スキーマ・ファイルのインポート...」アイコンをクリックします。「スキーマ・ファイルのインポート」ダイアログが表示されます。

  4. 「スキーマ・ファイルのインポート」ダイアログで、「リソースの参照」をクリックし、入力するXMLスキーマ要素を選択します。「SOAリソース・ブラウザ」ダイアログが表示されます。

  5. 「SOAリソース・ブラウザ」ダイアログで、ナビゲートしてビジネス・ルールを入力するスキーマを検索します。たとえば、order.xsdスキーマ・ファイルを選択して、「OK」をクリックします。

  6. 図25-15に示すように、「スキーマ・ファイルのインポート」ダイアログで、「プロジェクトにコピー」を選択します。

    図25-15 ビジネス・ルールを入力するスキーマのインポート

    図25-15の説明が続きます
    「図25-15 ビジネス・ルールを入力するスキーマのインポート」の説明

  7. 「スキーマ・ファイルのインポート」ダイアログで「OK」をクリックします。

  8. 「ファイルのローカライズ」ダイアログで「OK」をクリックします。

  9. 「タイプ・チューザ」ダイアログのナビゲータを使用して、スキーマから入力を検索して選択し、「OK」をクリックします。たとえば、入力としてCustomerOrder要素を選択します。

ビジネス・ルールの出力を追加する手順は、次のとおりです。

  1. 「ビジネス・ルールの作成」ダイアログで、「追加」アイコンの横にあるドロップダウン・メニューから「出力...」を選択します。

  2. 「タイプ・チューザ」ダイアログで、入力の追加と同様の方法で出力を追加します。たとえば、order.xsdからOrderApprovalを選択し、「OK」をクリックします。

  3. 図25-16に示すように、「ビジネス・ルールの作成」ダイアログが表示されます。

    図25-16 入力と出力が指定された「ビジネス・ルールの作成」ダイアログ

    図25-16の説明が続きます
    「図25-16 入力と出力が指定された「ビジネス・ルールの作成」ダイアログ」の説明

オプションを設定して、デシジョン・サービスとビジネス・ルール・ディクショナリを作成する手順は、次のとおりです。

  1. 「ビジネス・ルールの作成」ダイアログで、「コンポジット・サービスとして公開」を選択します。

  2. デフォルトのサービス名を使用しない場合は、「詳細」タブを選択し、「サービス名」フィールドにサービス名を入力します。

  3. 「ビジネス・ルールの作成」ダイアログで「OK」をクリックします。これにより、ビジネス・ルール・コンポーネント(デシジョン・コンポーネントとも呼ばれます)が作成され、図25-17に示すように、Oracle JDeveloperのキャンバス・ワークスペースにビジネス・ルール・コンポーネントが表示されます。

    図25-17 SOAコンポジットのビジネス・ルール・コンポーネント

    図25-17の説明が続きます
    「図25-17 SOAコンポジットのビジネス・ルール・コンポーネント」の説明

  4. デシジョン・コンポーネント(たとえば、「OracleRules1」ビジネス・ルール)をダブルクリックします。図25-18に示すように、ルール・デザイナが開きます。検証ログには、入力および出力ファクトに関する検証警告が表示されます。ルール・デザイナを使用してルールまたはデシジョン表を定義することで、これらの警告メッセージを取り除きます。

    図25-18 SOAコンポジット・アプリケーションの新規ディクショナリが表示されているルール・デザイナ

    図25-18の説明が続きます
    「図25-18 SOAコンポジット・アプリケーションの新規ディクショナリが表示されているルール・デザイナ」の説明

ルール・デザイナの詳細は、『Oracle Fusion Middleware Oracle Business Rulesユーザーズ・ガイド』を参照してください。

25.5.2 ビジネス・ルール・コンポーネントでのデシジョン関数の選択および変更方法

Oracle Business Rulesをコンポジット・アプリケーションのコンポーネントとしてコールするために、1つ以上のデシジョン関数を入力として指定できます。たとえば、Oracle Business Rulesディクショナリで複数のデシジョン関数が使用可能な場合は、特定のデシジョン関数を入力として指定できます。

コンポジット・アプリケーションでデシジョン関数を指定する手順は、次のとおりです。

  1. デシジョン関数をOracle Business Rulesディクショナリに追加します。詳細は、『Oracle Fusion Middleware Oracle Business Rulesユーザーズ・ガイド』を参照してください。

  2. ビジネス・ルール・コンポーネントをコンポジット・アプリケーションに追加します。詳細は、第25.5.1項「SOAコンポジット・アプリケーションへのビジネス・ルールの追加方法」を参照してください。

  3. 図25-19に示すように、ビジネス・ルール・コンポーネントを選択します。

    図25-19 コンポジット・アプリケーションでのビジネス・ルール・コンポーネントの選択

    図25-19の説明が続きます
    「図25-19 コンポジット・アプリケーションでのビジネス・ルール・コンポーネントの選択」の説明

  4. 目的のデシジョン関数ポートを選択します。たとえば、図25-20に示すように、DF_2のポートを選択します。

    図25-20 ビジネス・ルール・コンポーネントでのデシジョン関数ポートの選択

    図25-20の説明が続きます
    「図25-20 ビジネス・ルール・コンポーネントでのデシジョン関数ポートの選択」の説明

  5. ポートを選択すると、Oracle JDeveloperの「プロパティ・インスペクタ」にポート情報が表示されます。

  6. ポートをダブルクリックすると、図25-21に示すように、そのポートの「インタフェースの更新」ダイアログが表示されます。

    図25-21 ビジネス・ルール・デシジョン・ポートのデシジョン関数に対する「インタフェースの更新」ダイアログ

    図25-21の説明が続きます
    「図25-21 ビジネス・ルール・デシジョン・ポートのデシジョン関数に対する「インタフェースの更新」ダイアログ」の説明

25.6 コンポジット・アプリケーションでのビジネス・ルールの実行

ビジネス・ルールは、SOAコンポジット・アプリケーションのデシジョン・コンポーネントの一部として実行します。ビジネス・ルールは、ビジネス・ルール・サービス・エンジンによって実行されます。Oracle Enterprise Manager Fusion Middleware Controlを使用して、ビジネス・ルール・サービス・エンジンを監視したり、デシジョン・コンポーネントが含まれているSOAコンポジット・アプリケーションをテストできます。詳細は、Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイドを参照してください。

25.6.1 スタンドアロン・デシジョン・サービス・コンポーネントのテストに関する注意事項

Oracle Enterprise Manager Fusion Middleware Controlを使用してスタンドアロン・デシジョン・サービス・コンポーネントをテストするには、図25-22に示すように、「Webサービスのテスト」ページのペイロード名フィールドの値としてデシジョン・サービスの名前を指定する必要があります。

図25-22 スタンドアロン・デシジョン・サービスのテストの起動

スタンドアロン・デシジョン・サービスのテスト
「図25-22 スタンドアロン・デシジョン・サービスのテストの起動」の説明

ペイロードのnameは、図25-23のサンプル.decsファイルに示すように、デシジョン・サービス名にする必要があります。

図25-23 サンプル.decsファイル

サンプル.decsファイル
「図25-23 サンプル.decsファイル」の説明

デシジョン・サービス名がない場合、ペイロードおよびエンドポイントの詳細のみではスタンドアロン・デシジョン・サービスを起動できません。

25.7 ビジネス・ルールとOracle ADF Business Componentsファクト・タイプの使用

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ビュー・オブジェクト・インスタンスをロードし、ルール・エンジンでアサートし、結果を次の順にマーシャリングします。

  1. DecisionPointDictionary.DecisionPoint_Preprocessing_Webserviceルールセット: 事前処理ルールセットがデータベースからビジネス・コンポーネントを読み取り、ファクトとしてアサートします。

  2. ユーザー定義ルールセット: ユーザー・ルールセットがこれらのファクトを照合し、ビジネス・コンポーネントを更新するためにActionTypeを拡張するファクトをアサートします。

  3. DecisionPointDictionary.DecisionPoint_Postprocessing_Webserviceルールセット: 実際の更新は、事後処理ルールセットによって実行されます。ActionTypesの使用はオプションです。

ビジネス・ルール・サービス・エンジンからOracle ADF Business Componentsファクト・タイプおよびActionTypesを使用する方法の詳細は、Oracle SOA Suiteサンプルに使用可能なOracle Business Rules固有のサンプルのソース・コードを参照してください。