25 Oracle Business Rulesのスタート・ガイド

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

Oracle Business Rulesのその他の例は、Oracle Business Process Managementによるビジネス・ルールの設計を参照してください。

一部のスクリーン・ショットは以前のバージョンを表している場合がありますが、内容は適用できます。

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

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

デシジョン・コンポーネントは、次のようにSOAコンポジットで使用できます。

  • デシジョン・コンポーネントは、SOAコンポジット内で使用してBPELコンポーネントに接続できます。

  • デシジョン・コンポーネントは、SOAコンポジット内で使用してビジネス・ルールの実行に直接使用できます。

  • デシジョン・コンポーネントは、メディエータの動的ルーティング機能とともに使用できます。

    詳細は、「ルーティング・ルールの作成」を参照してください。

  • デシジョン・コンポーネントは、ヒューマン・ワークフローの拡張ルーティング・ルールとともに使用できます。

    詳細は、「ヒューマン・タスクとBPELプロセスの関連付け」を参照してください。

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

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

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

  • 動的処理

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

SOAインストールには、動詞ルールおよびビジネス・フレーズがないことに注意してください。これはBPMの機能です。

25.2.1 「アプリケーション」ウィンドウ

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

ビジネス・ルールの設計時には、追加ファイル、フォルダおよび要素を「アプリケーション」ウィンドウに表示できます。

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

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

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

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

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

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

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

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

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

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

ファクト

https://docs.oracle.com/pls/topic/lookup?ctx=en/middleware/soa-suite/soa/12.2.1.3/develop&id=ASRUG243ファクトとは、ルールによる判断の根拠となるオブジェクトです。

関数

https://docs.oracle.com/pls/topic/lookup?ctx=en/middleware/soa-suite/soa/12.2.1.3/develop&id=ASRUG296Oracle Business Rulesにおける関数とは、標準的な数学関数のことです。

グローバル

https://docs.oracle.com/pls/topic/lookup?ctx=en/middleware/soa-suite/soa/12.2.1.3/develop&id=ASRUG277Oracle Business Rulesで言うグローバルは、Javaにおけるpublic static変数とほぼ同じです。

値セット

https://docs.oracle.com/pls/topic/lookup?ctx=en/middleware/soa-suite/soa/12.2.1.3/develop&id=ASRUG243値セットは、デシジョン表で選択する値または値の範囲に制約を課します。

リンク

https://docs.oracle.com/pls/topic/lookup?ctx=en/middleware/soa-suite/soa/12.2.1.3/develop&id=ASRUG271リンクは、同じアプリケーションまたは他のアプリケーションのディクショナリへのリンクに使用されます。

デシジョン関数

https://docs.oracle.com/pls/topic/lookup?ctx=en/middleware/soa-suite/soa/12.2.1.3/develop&id=ASRUG99955デシジョン関数とは、宣言的に構成される関数です。構成されているルールセットに基づいて入力に推論を行い出力で受信する他のコンポーネント(BPEL、タスク)により起動できます。

変換

これは、ルールおよびそれらのアーティファクトのローカライズに役立ちます。

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

ルールセットは、ルールおよびデシジョン表の実行単位を提供します。デシジョン表は、表形式で記述された一連のルールです。デシジョン表は、表内でグループ化されたルールに追加機能を提供します(競合、完全度など)。

ルール・デザイナのナビゲーション領域の詳細および説明は、『Oracle Business Process Managementによるビジネス・ルールの設計』を参照してください。

25.2.3 「構造」ウィンドウ

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

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

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

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

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

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

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

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

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

ビジネス・ルールの検証の詳細は、『Oracle Business Process Managementによるビジネス・ルールの設計』を参照してください。

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

図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コンポジット・アプリケーションのサービス・コンポーネントとして、「ビジネス・ルール」サービス・コンポーネントを「コンポーネント」ウィンドウからSOAコンポジット・エディタにドラッグします

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

    1. 「アプリケーション」ウィンドウから、「ファイル」「新規」「アプリケーション」「SOAアプリケーション」の順に選択します。

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

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

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

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

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

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

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

      Application1

      Project1

      Application2

      Project1

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

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

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

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

    それぞれの方法を実行すると、「ビジネス・ルールの作成」ダイアログが表示されます。

  3. 必要な詳細を指定します。入力および出力に関する情報およびこのダイアログで「ディクショナリのインポート」オプションを使用する方法の詳細は、『Oracle Business Process Managementによるビジネス・ルールの設計』を参照してください。

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

25.3.2 ルール・デザイナでのビジネス・ルールの使用

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

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

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

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

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

ビジネス・ルールをBPELプロセスに追加するには:

  1. BPELプロセス・サービス・コンポーネントを作成します。詳細は、「BPELプロセス・サービス・コンポーネントの概要」を参照してください。
  2. プロセス項目をダブルクリックして、BPELプロセスを開きます。たとえば、図25-4に示すように、BPELプロセスを開いてreceiveInputおよびcallbackClientを表示します。

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

    図25-4の説明が続きます
    「図25-4 BPELプロセスへのビジネス・ルールの追加」の説明
  3. 「コンポーネント」ウィンドウにある「SOAコンポーネント」セクションで「ビジネス・ルール」を選択し、ビジネス・ルールを必要としている場所まで「ビジネス・ルール」をドラッグ・アンド・ドロップします。たとえば、図25-5に示すようにreceiveInputcallbackClientの間に「Business Rule」をドラッグ・アンド・ドロップします。

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

    図25-5の説明が続きます
    「図25-5 BPELプロセスへの「Business Rule」のドラッグ・アンド・ドロップ」の説明
  4. ビジネス・ルールがOracle JDeveloperのダイアグラムに表示されます。ビジネス・ルール・コンポーネントをダブルクリックすると、「ルール」ダイアログ・ボックスが表示されます。

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

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

    図25-6の説明が続きます
    「図25-6 自動融資BPELプロセスに追加されたビジネス・ルール」の説明
  5. ビジネス・ルール領域の「ビジネス・ルール ディクショナリ」で、「ディクショナリの作成」アイコンをクリックし、「ビジネス・ルールの作成」ダイアログを表示します。
  6. 「ビジネス・ルールの作成」ダイアログで、次の操作を実行します。
    • Oracle Business Rulesディクショナリの名前とパッケージ名を指定します。

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

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

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

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

25.4.1 ビジネス・ルールの入力の追加方法

ビジネス・ルールの入力を追加するには:

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

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

  2. 「入力変数の追加」ダイアログ・ボックスで、「プロセス」フォルダを開き、「プロセス」のすぐ下の「変数」フォルダを選択します。
  3. 図25-8に示すように、「変数」フォルダを右クリックし、リストから「変数の作成...」を選択します。

    図25-8 入力変数の追加

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

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

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

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

    図25-9の説明が続きます
    「図25-9 「変数の作成」ダイアログ」の説明
  5. 「変数の作成」の「タイプ」領域で、「要素の参照」アイコンをクリックします。ナビゲータを使用して、入力変数のスキーマ要素タイプを検索します。たとえば、ratingrequestタイプを選択します。タイプ・チューザを使用して必要なタイプを追加します。
  6. 「スキーマ・ファイルのインポート」アイコンをクリックし、スキーマをインポートします。たとえば、CreditRatingTypes.xsdをインポートします。アプリケーションに必要なその他のスキーマもインポートします。
  7. 「タイプ・チューザ」ダイアログで「ratingrequest」を選択し、「OK」をクリックします。
  8. 「変数の作成」ダイアログで「OK」をクリックします。
  9. 「入力変数の追加」ダイアログで「OK」をクリックします。

25.4.2 ビジネス・ルールの出力の追加方法

ビジネス・ルールの出力を追加するには:

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

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

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

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

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

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

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

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

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

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

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

25.4.3 オプションを設定してデシジョン・サービスとビジネス・ルール・ディクショナリを作成する方法

デシジョン・サービスとビジネス・ルール・ディクショナリを作成するには:

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

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

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

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

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

ルール・デザイナの詳細は、『Oracle Business Process Managementによるビジネス・ルールの設計』を参照してください。

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

ビジネス・ルールをBPELプロセスに追加すると、Oracle JDeveloperによってデシジョン・コンポーネントが作成され、ビジネス・ルール・サービス・エンジンを使用してビジネス・ルールが制御および実行されます。

デシジョン・コンポーネントの構成内容は次のとおりです。

  • Rules Engineを使用して評価されるルールまたはデシジョン表。これらはルール・デザイナを使用して定義され、ビジネス・ルール・ディクショナリに格納されます。

  • 特定のルールを評価する際に必要なファクト、およびコールするデシジョン関数の説明。ルールまたはデシジョン表が格納される各ルールセットは、入力および出力されるファクトとOracle Business Rulesデシジョン関数の名前が指定されているサービスとして公開されます。ファクトは、ビジネス・ルールの入力および出力を定義する際に、XSD定義を介して公開されます。デシジョン関数は、Oracle Business Rulesディクショナリに格納されます。詳細は、『Oracle Business Process Managementによるビジネス・ルールの設計』を参照してください。

  • 入力、出力および基礎となるビジネス・ルール・サービス・エンジンのコールがラップされているWebサービス。

    ビジネス・プロセスでは、このWebサービスを使用して、プロセスの一環としてファクトをアサートしたり取り消すことができます。すべてのファクトをビジネス・プロセスから1単位としてアサートできる場合があります。また、ビジネス・プロセスでファクトを増分アサートし、最終的にルール・エンジンによる推論を参照する場合もあります。したがって、サービスはステートレスとステートフルの両方の相互作用をサポートしています。

    このような様々なデシジョン・コンポーネントを作成できます。

    詳細は、『Oracle Business Process Managementによるビジネス・ルールの設計』を参照してください。

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

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

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

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

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

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

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

ノート:

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

25.4.6 BPELプロセスでのビジネス・ルールの起動に関する必知事項

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

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

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

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

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

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

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

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

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

ビジネス・ルールをOracle JDeveloperで使用する手順は、次のとおりです。

  • ビジネス・ルール・サービス・コンポーネントを追加します。

  • サービス・コンポーネントの入力変数および出力変数を作成します。

  • Oracle Business Rulesディクショナリの作成

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

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

ビジネス・ルールを使用するSOAアプリケーションを作成するには:

  1. SOAアプリケーションおよびプロジェクトを作成します。詳細は、「SOAアプリケーションおよびプロジェクトの作成方法」を参照してください。ビジネス・ルールを使用するSOAコンポジットでは、アプリケーションに必要なテクノロジを選択します。たとえば、ビジネス・ルールを使用するSOAアプリケーションには、ADF Business Components、Java、XMLなどが必要な場合があります。「プロジェクト・テクノロジ」タブで、これらの項目を「選択済」領域に移動します。
  2. 「アプリケーション」ウィンドウにSOAコンポジット・エディタが表示されていない場合は、プロジェクトの「SOAコンテンツ」フォルダを開き、「composite.xml」をダブルクリックしてSOAコンポジット・エディタを起動します。
  3. 図25-12に示すように、「コンポーネント」ウィンドウで、「SOA」メニューの「サービス・コンポーネント」領域から、SOAコンポジット・エディタの「コンポーネント」レーンに、「ビジネス・ルール」をドラッグ・アンド・ドロップします。

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

    図25-12の説明が続きます
    「図25-12 SOAコンポジット・アプリケーションへのビジネス・ルールの追加」の説明
  4. 「ビジネス・ルール」をドラッグ・アンド・ドロップすると、図25-13に示すように、Oracle JDeveloperの「ビジネス・ルールの作成」ダイアログが表示されます。

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

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

ビジネス・ルールに入力を追加するには:

  1. 「ビジネス・ルールの作成」ダイアログ・ボックスで、「追加」アイコンの横にあるメニューから「入力...」を選択し、ビジネス・ルールの入力を追加します。「タイプ・チューザ」ダイアログが表示されます。
  2. 「タイプ・チューザ」ダイアログで入力を追加します。「プロジェクトのスキーマ・ファイル」でスキーマが使用可能になっている場合は、ステップ9に移動して適切なスキーマを選択します。
  3. 「スキーマ・ファイルのインポート...」アイコンをクリックします。「スキーマ・ファイルのインポート」ダイアログが表示されます。
  4. 「スキーマ・ファイルのインポート」ダイアログで、「リソースの参照」をクリックし、入力するXMLスキーマ要素を選択します。「SOAリソース・ブラウザ」ダイアログが表示されます。
  5. 「SOAリソース・ブラウザ」ダイアログで、ナビゲートしてビジネス・ルールを入力するスキーマを検索します。たとえば、order.xsdスキーマ・ファイルを選択して、「OK」をクリックします。
  6. 図25-14に示すように、「スキーマ・ファイルのインポート」ダイアログで、「プロジェクトにコピー」を選択します。

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

    図25-14の説明が続きます
    「図25-14 ビジネス・ルールを入力するスキーマのインポート」の説明
  7. 「スキーマ・ファイルのインポート」ダイアログで「OK」をクリックします。
  8. 「ファイルのローカライズ」ダイアログで「OK」をクリックします。
  9. 「タイプ・チューザ」ダイアログのナビゲータを使用して、スキーマから入力を検索して選択し、「OK」をクリックします。たとえば、入力としてCustomerOrder要素を選択します。
25.5.1.2 ビジネス・ルールへの出力の追加方法

ビジネス・ルールに出力を追加するには:

  1. 「ビジネス・ルールの作成」ダイアログで、「追加」アイコンの横にあるドロップダウン・メニューから「出力...」を選択します。
  2. 「タイプ・チューザ」ダイアログで、入力の追加と同様の方法で出力を追加します。たとえば、order.xsdからOrderApprovalを選択し、「OK」をクリックします。
  3. 図25-15に示すように、「ビジネス・ルールの作成」ダイアログが表示されます。

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

    図25-15の説明が続きます
    「図25-15 入力と出力が指定された「ビジネス・ルールの作成」ダイアログ」の説明
25.5.1.3 オプションを設定してデシジョン・サービスとビジネス・ルール・ディクショナリを作成する方法

デシジョン・サービスとビジネス・ルール・ディクショナリを作成するには:

  1. 「ビジネス・ルールの作成」ダイアログで、「コンポジット・サービスとして公開」を選択します。
  2. デフォルトのサービス名を使用しない場合は、「詳細」タブを選択し、「サービス名」フィールドにサービス名を入力します。
  3. 「ビジネス・ルールの作成」ダイアログで「OK」をクリックします。これにより、ビジネス・ルール・コンポーネント(デシジョン・コンポーネントとも呼ばれます)が作成され、図25-16に示すように、Oracle JDeveloperのキャンバス・ワークスペースにビジネス・ルール・コンポーネントが表示されます。

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

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

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

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

ルール・デザイナの詳細は、『Oracle Business Process Managementによるビジネス・ルールの設計』を参照してください。

SOAインストールには、動詞ルールおよびビジネス・フレーズがないことに注意してください。これはBPMの機能です。

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

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

コンポジット・アプリケーションでデシジョン関数を指定するには:

  1. デシジョン関数をOracle Business Rulesディクショナリに追加します。詳細は、『Oracle Business Process Managementによるビジネス・ルールの設計』を参照してください。
  2. ビジネス・ルール・コンポーネントをコンポジット・アプリケーションに追加します。詳細は、「SOAコンポジット・アプリケーションへのビジネス・ルールの追加方法」を参照してください。
  3. 図25-18に示すように、ビジネス・ルール・コンポーネントを選択します。

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

    図25-18の説明が続きます
    「図25-18 コンポジット・アプリケーションでのビジネス・ルール・コンポーネントの選択」の説明
  4. 目的のデシジョン関数ポートを選択します。たとえば、図25-19に示すように、DF_2のポートを選択します。

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

    図25-19の説明が続きます
    「図25-19 ビジネス・ルール・コンポーネントでのデシジョン関数ポートの選択」の説明
  5. ポートを選択すると、Oracle JDeveloperの「プロパティ・インスペクタ」にポート情報が表示されます。
  6. ポートをダブルクリックすると、図25-20に示すように、そのポートの「インタフェースの更新」ダイアログが表示されます。

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

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

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

ビジネス・ルールは、SOAコンポジット・アプリケーションのデシジョン・コンポーネントの一部として実行します。ビジネス・ルールは、ビジネス・ルール・サービス・エンジンによって実行されます。

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

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

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

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

図25-21の説明が続きます
「図25-21 スタンドアロン・デシジョン・サービスのテストの起動」の説明

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

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

図25-22の説明が続きます
「図25-22 サンプル.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サンプルに使用可能なルール・デザイナ固有のサンプルのソース・コードを参照してください。