ヘッダーをスキップ
Oracle BPEL Process Manager開発者ガイド
10g(10.1.3.1.0)
B31874-03
  目次
目次
索引
索引

戻る
戻る
次へ
次へ
 

18 BPELプロセスとビジネス・ルールの統合

この章では、デシジョン・サービスを使用してBPELプロセスをビジネス・ルール・エンジンと統合することで、調整型ビジネス・プロセスを作成する方法について説明します。

この章の内容は次のとおりです。


関連項目:

AutoLoanDemoチュートリアルは、次の場所にあります。このチュートリアルは、ビジネス・ルールと連携してヒューマン・ワークフローを使用するBPELプロセスの設計方法を説明しています。
SOA_Oracle_Home¥bpel¥samples¥demos¥AutoLoanDemo

18.1 ビジネス・ルールとデシジョン・サービスの概要

この項では、ビジネス・ルールおよびビジネス・ルール・エンジンに対するOracle BPEL Process Managerのサポートの概要を説明します。

この項の内容は次のとおりです。

18.1.1 ビジネス・ルールとビジネス・ルール・エンジン

ビジネス・ルールは、会社の方針を記述した文です。ビジネス・ルールの例を次に示します。

  • 1回に$100以上の製品を購入するか65歳以上の顧客全員に10%の値引を適用

  • 在庫数量が10未満になって1日の保留注文が5件を超える場合に販売部門に通知

  • 顧客の年収が$10,000未満の場合は融資申請を却下

  • 顧客が前回の購入について遅延支払を発行した場合は次回の購入に2%の追加手数料を加算

ビジネス・ルール・エンジンは、ビジネス・ルールを管理して実行するシステムです。通常、ビジネス・ルール・システムはルール・リポジトリ、ルール・オーサーおよびルール・エンジンで構成されます。ルール・オーサーを使用すると、アプリケーション・コードとは別にビジネス・ルールを指定できます。ビジネス・ルールをコードから分離することで、ビジネス・アナリストはグラフィカル・ツールでビジネス・ポリシーをすばやく変更できます。ルール・エンジンによりビジネス・ルールが評価され、デシジョン(ビジネス・プロセスに使用されるファクト)が返されます。通常、ルールはデータベースまたはファイル・システム内のルール・リポジトリに格納されます。

18.1.2 デシジョン・サービス

Oracle BPEL Process Managerでは、デシジョン・サービスをサポートしています。デシジョン・サービスは、ルールおよびルール・セットを複数のビジネス・プロセスから起動できる再利用可能なサービスとしてパブリッシュするメカニズムです。デシジョン・サービスはスタンドアロン・デプロイメント・ユニットであり、次のコンポーネントで構成されます。

  • ルール・セッションを基礎となるルール・エンジンにラップするWebサービス。このサービスにより、ビジネス・プロセスがプロセスの一部としてファクトをアサートおよび取消しできます。すべてのファクトをビジネス・プロセスから1単位としてアサートできる場合があります。また、ビジネス・プロセスでファクトを段階的にアサートし、最後にルール・エンジンに推測を問い合せることができます。したがって、サービスはステートレスな相互作用とステートフルな相互作用の両方をサポートする必要があります。

  • デシジョン・サービスによりルール・エンジンを使用して評価されるルール。これらのルールはルール・オーサーを使用して定義し、ルール・リポジトリにロードします。

  • 特定のルールの評価に必要なファクトを記述したメタデータ。サービスとして公開されるルールは、それぞれ異なるファクトを使用します。これらのファクトはXSD定義を介して公開する必要があります。ルール評価に適切なWSDL操作を公開してください。

    たとえば、信用格付けルール・セットは顧客のSSN、過去の融資履歴などをファクトとして予想しますが、年金支払ルールは従業員の勤続年数、給与、年齢などをファクトとして予想します。

18.1.3 Oracle Business RulesとOracle BPEL Process Manager

Oracle BPEL Process Managerでは、Oracle Business Rulesをサポートしています。Oracle Business Rulesは、Oracle Application Serverのコンポーネントです。ビジネス・アナリストはOracle Business Rulesを使用して、アプリケーション・コードとは別にビジネス・ルールを作成および変更します。これにより、アナリストがビジネス・ルールを変更する際に、ビジネス・プロセスを停止したりプログラマを関与させる必要がありません。

Oracle Business Rulesでは、ファクトはOracle Business Rules Rules Engineでアサートされたデータ・オブジェクトです。たとえば、次のようになります。

  • ドライバの年齢にあわせてルールを作成するレンタカー会社の場合、ドライバの年齢はルールに使用されるファクトを表します。

  • 収入が指定レベルに達していない顧客からの融資申請を却下するためのルールを作成する融資会社の場合、収入レベルはルールで使用されるファクトを表します。

各データ・オブジェクト・インスタンスは1つのファクトに対応します。ルールは、このファクト情報に基づいて評価できる式です。

オブジェクトが再アサートされると(変更の有無に関係なく)、Oracle Business Rules Rules Engineが更新され、オブジェクトの新しい状態が反映されます。オブジェクトが再アサートされても、新規ファクトは作成されません。特定のファクト・タイプのファクトを複数使用するには、個別のオブジェクト・インスタンスをアサートする必要があります。Oracle Business Rules Rule Authorを使用して、データ・モデルの一部であるファクトを操作するルールを作成します。ファクト定義を使用して、ビジネス・オブジェクトとそのメソッドをOracle Business Rulesに認識させます。

Oracle Business Rulesは、次の主要コンポーネントで構成されています。

  • Oracle Business Rules Rule Author: ルールの作成および編集に使用するポイント・アンド・クリック方式のインタフェースを提供するWebブラウザ・ベースのツール。

  • Oracle Business Rules Rules Engine: ルールをファクトに適用し、ルールを定義して処理するJavaライブラリ。Oracle Business Rules Rules Engineでは、宣言的なルール言語が定義され、言語処理エンジンとデバッグ・ツールが提供されます。

    Oracle BPEL Process Managerは、ビジネス・ルールを格納する次のOracle Business Rules Rules Engineリポジトリをサポートしています。

    • Oracle Rules Engineのファイル・リポジトリ: ルールはファイル・リポジトリに格納されます。

    • Oracle Rules EngineのWebDAVリポジトリ: ルールはWeb Distributed Authoring and Versioning(WebDAV)リポジトリに格納されます。

    リポジトリにはディクショナリが格納されます。ディクショナリは、アプリケーションのルール・セットとデータ・モデルが格納されたXMLファイルのセットです。ルール・セットは、通常はまとめて評価され1単位として生成されるビジネス・ルールのグループです。ディクショナリのバージョンを複数使用できます。ディクショナリとディクショナリ・バージョンは、作成、削除、エクスポートおよびリポジトリへのインポートが可能です。

  • Oracle Business Rules SDK: カスタマイズされたルール・プログラムの記述に使用できるようにビジネス・ルール管理機能を提供するJavaライブラリ。

  • Oracle Business Rules RL Language: Oracle Business Rules Rules Engineのプログラムの構文を定義する言語。Oracle Business Rules RL Languageには、Javaセマンティクスをサポートするルールを定義するための、Javaに似た直感的な構文が含まれています。


関連項目:

次のドキュメントを参照してください。

  • 『Oracle Business Rulesユーザーズ・ガイド』

  • 『Oracle Business Rules Java API Reference』

  • 『Oracle Business Rulesランゲージ・リファレンス』


18.2 デシジョン・サービスのアーキテクチャ

この項では、デシジョン・サービスを構成するコンポーネントについて説明します。

この項の内容は次のとおりです。

18.2.1 デシジョン・サービスのコンポーネント

デシジョン・サービスは、次のコンポーネントで構成されます。

  • Rule Provider Interface(RPI): Oracle JDeveloperなど、デシジョン・サービスの設計時クライアントで使用するインタフェース。RPIにより、完全なルール・エンジン実装の詳細が隠されます。このため、RPIではすべてのプロバイダのすべてのルール・エンジンとのインタフェースを提供できます。RPIの主目的は、ルール・エンジン・メタデータ(ファクト・タイプ、ルール・セット、ディクショナリなど)の統一ビューを公開することです。

    設計時コンポーネント(Oracle JDeveloperなど)では、RPIを使用してバックエンド・ルール・エンジンのメタデータを参照できます。モデリング対象に従って、デシジョン・サービス・パートナ・リンクのメタデータ情報をデシジョン・サービス構成ファイル内でマテリアライズできます。

  • Decision Service Builder: デシジョン・サービス構成ファイルからメタデータ情報を読み取って、アプリケーション・サーバーにデプロイ可能な自己完結型のJ2EEエンタープライズ・アーカイブを作成します。

  • Decision Service Runtime: JAX-RPC Webサービス。Oracle Business Rulesなどのビジネス・ルール・エンジンに使用可能なWebサービスです。ランタイム自体は次のコンポーネントで構成されています。

    • Decision Service Cache: サービスで使用するルール・データ・モデルのメタデータ情報が保守されます。これには、ファクト・タイプ、ルール・セットおよびデシジョン・サービス構成に関するメタデータが含まれます。また、すべてのステートフル・ルール・セッションは、そのキャッシュに格納されます。Oracle Java Object Cache(JOC)が使用されます。したがって、キャッシュをクラスタ環境で実行するように構成できます。

    • Fact Converter: Oracle BPEL Process Managerからの着信データと送信データを、ルール・エンジンで認識される形式に変換します。Oracle Business Rules Rules Engineの場合、Fact ConverterではJAXB 1.0テクノロジ・スタックを使用して、BPEL変数データ(XML)とJavaオブジェクトの間の変換が実行されます。

    • Execution Unit: バックエンド・ルール・エンジンで相互作用パターンにより定義された各種ステップを実行します。Execution Unitでは、実行にRPIが使用されます。


関連項目:

クラスタ環境で使用するキャッシュ構成オプションについては、『Oracle Containers for J2EEサービス・ガイド』を参照してください。

18.2.2 他のコンポーネントとの相互作用

図18-1に、デシジョン・サービスと他のコンポーネントとの相互作用を示します。

図18-1 デシジョン・サービス・コンポーネントの相互作用

図bpmdg053.gifの説明が続きます
図bpmdg053.gifの説明

  1. ルール・オーサーがルールのモデリングに使用されます。

    ルール・モデルがルール・リポジトリに保存されます。ルール・リポジトリには、WebDavバックエンドにあるファイルまたはディレクトリを使用できます。

  2. 「デシジョン・サービス・ウィザード」で、デシジョン・サービスのRPIを使用してルール・リポジトリへの接続が作成され、リポジトリ・メタデータが参照されます。

  3. 「デシジョン・サービス・ウィザード」で、デシジョン・サービスのメタデータ構成ファイルが作成されます。メタデータは、使用中のバックエンド・ルール・エンジン(ルール・プロバイダ)に関する情報と、パートナ・リンク用にモデリングされた相互作用パターン(およびファクト・タイプ情報)で構成されます。

  4. デシジョン・サービス・ビルダーにより、アプリケーション・サーバーへのデプロイに使用するデシジョン・サービス・エンタープライズ・アーカイブが作成されます。この間に、手順3でモデリングした内容にあわせて調整されたメッセージ・タイプと操作を使用してWSDLが作成されます。

  5. decideアクティビティで、デシジョン・サービス・メタデータ情報を使用して、サービスで使用可能な操作のリストと、ルール・エンジンとの相互作用に使用されるファクトの数とタイプの詳細情報が表示されます。

  6. decideアクティビティで、BPELプロセス・モデル内の新規BPELスコープの生成が完了します。適切なassignアクティビティが作成され、BPEL変数からのデータがデシジョン・サービス(および重要なバックエンド・ルール・エンジン)で予想されるデータに変換されます。

  7. BPELプロセスが、デプロイ時にOracle BPEL Process Managerにデプロイされます。

  8. デシジョン・サービス・エンタープライズ・アーカイブがアプリケーション・サーバーにデプロイされます。

  9. BPELプロセス・インスタンスにより実行時にJAX-RPCデシジョン・サービスが起動されます。このサービスがバックエンド・ルール・エンジンと相互作用し、ルール・セットの実行や関数の起動などを行います。最後に結果がBPELプロセスに返されます。

18.2.3 デシジョン・サービス構成ファイルの内容

デシジョン・サービス構成ファイル(decisionservices.xml)では、デシジョン・サービスと設計時およびバックエンド・ルール・エンジンとの相互作用に関係する各種コンポーネント間の規定を定義します。デシジョン・サービス構成ファイルは、次の2つのパートで構成されます。

  • 第1パートでは、ルール・エンジン接続に関するメタデータを指定します。

  • 第2パートでは、バックエンド・ルール・エンジンとの特定の相互作用パターンに関するメタデータを提供します。

たとえば、次のようになります。

<decisionServices xmlns="http://xmlns.oracle.com/bpel/rules">
  <ruleEngineProvider provider="Oracle" name="CreditRatingRuleRepository">
    <repository type="File">
      <file>
/D:/bpeldev/10.1.3/demo/LoanDemoPlusRules/repository/CreditRatingRepository
      </file>
    </repository>
  </ruleEngineProvider>
  <ruleEngineProvider provider="Oracle" name="LoanAdvisorRepository">
    <repository type="File">
      <file>
/D:/bpeldev/10.1.3/demo/LoanDemoPlusRules/repository/CarLoanBrokerRepository
      </file>
    </repository>
  </ruleEngineProvider>
  <decisionService name="CreditRatingAgent"
                   targetNamespace="http://cr.org/CreditRatingAgent"
                   ruleEngineProviderReference="CreditRatingRuleRepository">
    <catalog>RatingFY06</catalog>
    <catalogVersion>Approved_060205</catalogVersion>
    <ruleset>PrivateCustomerRatingRules</ruleset>
    <pattern name="AssertExecuteWatchStateless">
      <arguments>
        <assert>creditrating.Ratingrequest</assert>
        <watch>creditrating.Rating</watch>
      </arguments>
    </pattern>
  </decisionService>
  <decisionService name="LoanAdvisorAgent"
                   targetNamespace="http://laa.org/LoanAdvisorAgent"
                   ruleEngineProviderReference="LoanAdvisorRepository">
    <catalog>LoanOfferings</catalog>
    <catalogVersion>REVIEWED_060518</catalogVersion>
    <pattern name="CallFunctionStateless">
      <arguments>
        <call>DM.computeAdvisePrivateFinancing</call>
      </arguments>
    </pattern>
  </decisionService>
</decisionServices>

構成ファイルには、次の要素が含まれています。

  • ruleEngineProvider: バックエンド・ルール・エンジン接続に関するメタデータを指定します。ルール・エンジン・プロバイダとは別に、ルール・リポジトリに関する情報を指定します。次のタイプのリポジトリを区別します。

    • File: ルール・リポジトリはファイルまたはディレクトリに格納されます。

    • WebDav: ルール・リポジトリはWebDavロケーションに格納されます。

  • decisionService: 名前、ターゲット・ネームスペース(オプション)および相互作用に使用するルール・エンジンへの参照(必須)で構成されます。ルール・エンジンとの完全な相互作用を指定します。これには、使用するカタログおよびカタログ・バージョンと、実行するルール・セットが含まれます。様々な相互作用パターンがサポートされています。パターン名とは別に、入力ファクトと出力ファクトまたは関数名に関してパターン・シグネチャを指定します。

18.3 ビジネス・プロセスとビジネス・ルールの統合のユースケース

Oracle BPEL Process Managerとビジネス・ルールは、補完的なテクノロジです。Oracle BPEL Process Managerではシステム、サービスおよびユーザーの調整にフォーカスが置かれます。ビジネス・ルールでは、意思決定とポリシーにフォーカスが置かれます。

デシジョン・サービスを使用できる状況の例を次に示します。

18.4 BPELプロセスとビジネス・ルールの統合

Oracle BPEL Process Managerには次の設計時コンポーネントが用意されており、BPELプロセスをビジネス・ルールと統合できます。

18.4.1 「新規ルール・エンジン接続の作成」ウィザード

「新規ルール・エンジン接続の作成」ウィザードを使用すると、ルール・エンジンへの接続を作成できます。この接続により、ビジネス・ルール・エンジンのルール・リポジトリのルール・ディクショナリ内で使用可能なルール・セットと関数を参照して選択できます。ルール・エンジンへの接続は1つのみ作成します。作成した接続は、複数のBPELプロジェクト間で共有されます。

  1. Oracle JDeveloperの「表示」メイン・メニューから「接続ナビゲータ」を選択します。

  2. 「ルール・エンジン」を右クリックして「新規ルール・エンジン接続」を選択します。

  3. 「ようこそ」ウィンドウで「次へ」をクリックします。

  4. 接続名を入力します。ルール・エンジン接続の作成が完了すると、この名前が接続ナビゲータ「ルール・エンジン」の下に表示されます。

  5. ルール・セットと関数が格納されるビジネス・ルール・エンジンのリポジトリのタイプを選択します。このリリースでは、Oracle Business Rules Rules Engineがサポートされています。

    図ds_name.gifの説明が続きます
    図ds_name.gifの説明

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

  7. フォルダ・アイコンをクリックしてファイル・リポジトリのディレクトリを選択します。「Oracle Rules EngineのWebDavリポジトリ」を選択した場合は、かわりにリポジトリへのWebDAV接続を選択するように要求されます。

    図ds_repos.gifの説明が続きます
    図ds_repos.gifの説明


    注意:

    接続ナビゲータ「WebDAVサーバー」を右クリックして「新規WebDAV接続」を選択すると、WebDAV接続を作成できます。

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

    「接続のテスト」ウィンドウが表示されます。

  9. 「テスト」をクリックします。

    ビジネス・ルール・リポジトリへの接続に成功すると、次のメッセージが表示されます。

    Success
    
    

    接続に失敗した場合は、「詳細」をクリックして失敗の理由を確認します。適切な修正処理を実行します。

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

    接続ナビゲータ「ルール・エンジン」の下に接続名が表示されます。接続の編集が必要な場合は、接続名をダブルクリックして構成詳細を表示します。

18.4.2 「デシジョン・サービス」ウィザード

「デシジョン・サービス」ウィザードを使用すると、BPELプロセスをOracle Business Rules Rules Engineで作成したビジネス・ルール(ルール・セットや関数など)と統合できます。この統合により、これらのルールに基づいてビジネス上の決定を下すことができます。

図18-3に、この統合プロセスの概要を示します。

図18-2 デシジョン・サービス

図bpmdg050.gifの説明が続きます
図bpmdg050.gifの説明

このウィザードでは次のタスクが実行されます。

  • リポジトリからのルール・セットまたは関数と実行する起動パターン(操作)を選択するように要求されます。

  • 選択内容がBPELプロセスで使用するWebサービスに変換されます。

このWebサービス用の新規デシジョン・サービス・パートナ・リンクが自動的に作成され、Oracle Business Rules Rules Engineとのインタフェースを提供します。ルール・セットに基づくWSDLファイルが生成されます。

「デシジョン・サービス・ウィザード」には、次のメリットがあります。

  • 動的処理(インテリジェント・ルーティング、プロセス内のポリシーの検証および制約チェックの提供)

  • 非定型ワークフローとの統合(ポリシー・ベースのタスク割当て、各種のエスカレーション・ポリシーおよびタスクのロード・バランシングの提供)

  • Business Activity Monitoringとの統合(特定のポリシーに基づくアラートの送信と、動的処理ベースのキー・パフォーマンス・インディケータ(KPI)の理由付け)

以降の各項では、「デシジョン・サービス・ウィザード」の機能詳細を説明します。

18.4.2.1 起動パターンの選択

「デシジョン・サービス・ウィザード」を使用すると、ビジネス・ルール・エンジンとの相互作用を記述した起動パターンを選択できます。

  1. コンポーネント・パレット「サービス」リストから、「デシジョン・サービス」をヘッダー「サービス」の下にあるデザイナ・ウィンドウの片側にドラッグ・アンド・ドロップします。

  2. 「サービス名」フィールドに名前を入力します。入力後は、この名前がパートナ・リンク名として使用されます。同じ名前のWSDLファイルも作成されます。

    「ネームスペース」フィールドには、「サービス名」フィールドへの入力内容が自動的に入力されます。プロジェクト内のWSDLごとに一意のネームスペースが必要です。これは、一部のBPEL変数がWSDLファイル内の要素から生成されるためです。

  3. ルール・セットまたは関数の起動に使用する起動パターンを選択します。ウィザードにより、選択した起動パターンに基づいてルール・セッションが作成されます。ステートフル・ルール・セッションとステートレス・ルール・セッションのどちらを選択するかを指定するオプションは用意されていません。

    図ds_invoc.gifの説明が続きます
    図ds_invoc.gifの説明

    選択できる起動パターンは、次のとおりです。

    • ルール・セットの実行

    • ファンクションの実行

  4. 「ルール・セット」または「関数」フィールドの横にある懐中電灯をクリックします。このフィールドは、「起動パターン」フィールドで選択した内容に基づく名前で表示されます。「ルール・エクスプローラ」ウィンドウが開きます。

18.4.2.2 ビジネス・ルールの選択

  1. 「すべてのバージョンを表示」をクリックして、ビジネス・ルール・エンジンのルール・リポジトリにあるルール・ディクショナリのカタログ・バージョンをすべて表示します。

  2. ディクショナリ(RatingFY06)、ディクショナリ・バージョン(Approved_060205)およびルール・セット(PrivateCustomerRatingRules)を順番に開いて選択します。

    図ds_showall.gifの説明が続きます
    図ds_showall.gifの説明


    注意:

    • ルール・エンジンへの接続を作成していないと、ルール・リポジトリ内のルール・セットと関数にアクセスできません。「新規ルール・エンジン接続の作成」ウィザードの右上にある最初のアイコンをクリックします。

    • ファイルベースのルール・リポジトリへの接続を作成するかわりに、ファイルをプロジェクトに直接インポートできます。各BPELプロジェクトでは、Webサービスの作成時にリポジトリ・ファイルをプロジェクトに物理的にコピーする必要があることに注意してください。ファイルのコピー後、元のファイルが変更されてもWebサービスには反映されません。右上の2番目のボタンをクリックして、インポートするファイルを参照します。このファイルは、有効なOracleルール・リポジトリ・ファイルである必要があります。それ以外の場合はエラーが表示されます。


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

    「ルール・セットまたは関数の選択」ウィンドウに戻ります。

18.4.2.3 入力ファクトと出力ファクトの指定

選択した起動パターンのタイプに基づいて、「ルール・セットまたは関数の選択」ウィンドウに表が表示され、下部に様々な詳細が表示されます。

18.4.2.3.1 ルール・セット

表には、ルール・セットの選択元となったカタログのデータ・モデル内のファクトが表示されます。アサートするファクトを選択(BPEL変数の値をファクトに設定)し、返される結果を取得します。選択したパターンがファクトをアサートするか、取得するか、あるいはその両方を実行するかに基づいて、各列が表示されます。

  1. 入力(アサート)ファクトと出力(監視)ファクト(オプション)を指定します。「ファクトをアサートしますか。」を選択すると、ルール・セットまたは関数に対してファクトをアサート(ファクト・データをビジネス・ルール・エンジンに送信)できます。「ファクトを監視しますか。」を選択すると、ルール・セットまたは関数の結果を返すことができます。「ファクトを監視しますか。」が表示されるのは、結果を取得する起動パターンを選択した場合のみです。

    図ds_facts.gifの説明が続きます
    図ds_facts.gifの説明

    「最上位レベル要素のすべての子をアサートするには、ここをクリックしてください。」チェック・ボックスを選択すると、選択したルール・セットまたは関数の子をすべてアサートできます。たとえば、注文書ルール・セットに3つのファクト・タイプが含まれているとします。このチェック・ボックスを選択すると、注文書と3つのファクト・タイプがすべてアサートされます。選択しなければ、注文書のみがアサートされます。

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

18.4.2.3.2 関数

表には、返される入力パラメータとパラメータ・タイプが表示されます。

図ds_func.gifの説明が続きます
図ds_func.gifの説明

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

18.4.2.4 スキーマ・ファイルのインポート

  1. 画面に表示されるメッセージを参照し、このプロジェクトに必要なXSDスキーマ・ファイルがすべてウィザードによりリポジトリにインポートされることを確認します。

    図ds_schema.gifの説明が続きます
    図ds_schema.gifの説明

    ウィザードでは、このプロジェクトへのインポートが必要なリポジトリ内の全スキーマ・ファイルの識別が試行されます。この試行に基づいて、このウィンドウに次のステータス・メッセージが表示されることがあります。

    • 「デシジョン・サービス・ウィザード」でインポート対象のスキーマ・ファイルが検出された場合は、このウィンドウの上部にファイルへのディレクトリ・パスが表示されます。ユーザー操作は不要です。

    • 「デシジョン・サービス・ウィザード」でインポート対象のスキーマ・ファイルが検出されない場合は、このウィンドウの上部にファイルへのディレクトリ・パスが表示されます。これらのファイルを指定のディレクトリに手動でコピーする必要があります。

    • このXSDスキーマ・ファイルが他のスキーマ・ファイルを含むかインポートする場合は、そのファイルが画面に表示されるBPELプロジェクトのbpel¥rules¥xsdサブディレクトリにコピーされることを確認してください。これらのスキーマ・ファイルには、相対ディレクトリ・パスのみを使用する必要があります。

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

    デシジョン・サービス・パートナ・リンクが作成されます。BPELプロジェクト内にdecisionservicesというディレクトリも作成されます。このdecisionservicesディレクトリに、サービス名と同じ名前のディレクトリが作成されます。

図ds_pl.gifの説明が続きます
図ds_pl.gifの説明


関連項目:

デシジョン・サービス・パートナ・リンクとともに作成されるディレクトリとファイルの詳細は、「デシジョン・サービス・パートナ・リンクのディレクトリ構造」を参照してください。

18.4.3 Decideアクティビティ

decideアクティビティを使用すると、「デシジョン・サービス・ウィザード」で作成したデシジョン・サービス・パートナ・リンクを起動するBPELプロセス・アクティビティを作成できます。また、ルール・セットまたは関数内のファクト・データとBPEL変数の間にコピー操作の割当てを作成できます。

作成を完了すると、デシジョン・サービス・パートナ・リンクに対するassignおよびinvokeアクティビティで構成されるdecideアクティビティが作成されます。

図18-3に、この統合プロセスの概要を示します。

図18-3 decideアクティビティ

図bpmdg049.gifの説明が続きます
図bpmdg049.gifの説明

18.4.3.1 BPEL変数への入力および出力ファクトのマッピング

  1. コンポーネント・パレット「プロセス・アクティビティ」リストからDecideアクティビティをBPELプロセスにドラッグ・アンド・ドロップします。

  2. 接続名を入力します。

  3. 作成したデシジョン・サービス・パートナ・リンクを選択します。デシジョン・サービスを作成していない場合は、「デシジョン・サービス」フィールドの右側にある最初のアイコンをクリックします。

  4. 実行する起動パターンの操作を選択します。手順3で選択した起動パターンに基づいて、選択可能な操作が表示されます。

    • 「ルール・セットの実行」を選択した場合

      • 「ファクトのアサートのみ」: 今後アサート(ファクト・データをルール・エンジンに送信)するルール・エンジン・ファクトを選択します。BPEL assignアクティビティを使用して、ファクトの必須データを割り当てます。基礎となるルール・セッションはステートフルである必要があります。ステートフル・セッションでなければ、アサートされたファクトを以降のルール・エンジンの起動で参照できません。

      • 「結果の取得」: ビジネス・ルール・エンジンから結果を取得します。これらの結果値は、これらのファクトを操作するルール・セットの過去の実行により変更されていることがあります。ウィザードでは、結果の取得元キャッシュにステートフル・ルール・セッションがあるものとみなされます。これは、BPELプロセス内で先に起動パターンの「ファクトのアサート、ルール・セットの実行」操作が実行された場合です。

      • 「ファクトのアサート、ルール・セットの実行」: 「ファクトのアサートのみ」と同じですが、ファクトのアサート後にルール・セットが実行されます。ウィザードでは、ステートフル・ルール・セッションが作成(または使用)されます。それ以外の場合、このパターンの実行結果は失われます。ビジネス・ルール・エンジンからは結果が取得されません。

      • 「ファクトのアサート、ルール・セットの実行、結果の取出し」: 「ファクトのアサート、ルール・セットの実行」と同じですが、ビジネス・ルール・エンジンから結果が取得されます。assignアクティビティを使用して、ルール・セットの実行結果をBPEL変数にマップします。ルール・セッションはアクティブなままです。このため、前にアサートしたファクトを再利用できます。

      • 「ファクトのアサート、ルール・セットの実行、結果の取出し、セッションのリセット」: 「ファクトのアサート、ルール・セットの実行、結果の取出し」と同じですが、Webサービスの次回起動に備えて結果がリセットされます。セッションのリセットにより、前にアサートしたファクト値が消去されます。

    • 「ファンクションの実行」を選択した場合

      • 「ファンクションの実行」: 関数を実行します。関数はディクショナリでも定義されます。ルール・セットの場合は、入力ファクトと出力ファクトを選択します。関数の場合は、入力パラメータと単一の戻り値で構成される固定セットが存在します。

      • 「関数の実行およびセッションのリセット」: 「ファンクションの実行」と同じですが、このパターン用のステートフル・ルール・セッションが作成されます。関数の戻り値が取得された後、すべてのファクト値がリセットされます。

  5. 「入力ファクトの割当て」「作成」を順番にクリックして入力ファクトのマッピングを作成します。これにより、アサートするファクトまたは関数の入力パラメータにBPEL変数を割り当てることができます。

    図ds_edit.gifの説明が続きます
    図ds_edit.gifの説明

    これにより、BPEL入力変数を「入力ファクトと出力ファクトの指定」に示す入力(アサート)ファクト・タイプ(この例ではRatingrequest)に対応して自動的に作成されたBPEL変数にマップするように、割当てを作成できます。

  6. 結果を取得する起動パターンを選択した場合は、「出力ファクトの割当て」「作成」を順番にクリックして出力ファクトのマッピングを作成します。これにより、関数戻り値またはルール・セットの結果からの値をBPEL変数に割り当てることができます。

    これにより、「入力ファクトと出力ファクトの指定」に示す出力(監視)ファクト・タイプ(この例ではRating)に対応して自動的に作成されたBPEL変数をBPEL入力変数にマップするように、割当てを作成できます。

  7. 選択の完了後に、「OK」をクリックします。

    デシジョン・サービス・パートナ・リンクに対するassignおよびinvokeアクティビティで構成されるdecideアクティビティが作成されます。

    図ds_finish.gifの説明が続きます
    図ds_finish.gifの説明

18.5 ルール・セットのモデリングおよびBPELプロセスとの統合方法

ルール・セットは、通常はまとめて評価され1単位として生成されるビジネス・ルールのグループです。この項では、ルール・オーサーでルール・セットをモデリングする方法を2つ説明します。

モデリングしたルール・セットは、Oracle JDeveloperでBPELプロセスと統合できます。Oracle JDeveloperでデシジョン・サービス・パートナ・リンクを作成するには、既存のルール・リポジトリが必要です。

この項の内容は次のとおりです。

18.5.1 推奨する方法

ルール・オーサーでルール・セットをモデリングする際には、次のステップに従うことをお薦めします。

  • XMLスキーマに基づくルール作成に使用するデータ・モデルを作成します。

  • ルール・オーサーで新規のルール・リポジトリとディクショナリを作成します。

  • XMLスキーマをXMLファクトとしてルール・ディクショナリのデータ・モデルにインポートします。

  • 新規のルール・セットとモデル・ルールを作成します。

  • 「デシジョン・サービス・ウィザード」を使用してパートナ・リンクを作成します。

18.5.2 方法1: XMLスキーマに基づくファクト・タイプのモデリング

この項では、信用格付け用の単純なルールをモデリングする方法について説明します。

完了後、「デシジョン・サービス・ウィザード」を使用してルール・セットをBPELプロセスと統合します。

18.5.2.1 タスク1: ルール作成に使用するデータ・モデルの作成

ルールをモデリングする際の最初のステップは、データ・モデルを定義することです。XMLスキーマに基づくデータ・モデルがサポートされています。この例では、まず信用格付け用の単純なデータ・モデルを使用して次の2つの要素を定義します。

  • ratingrequest

     <xsd:element name="ratingrequest">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="date" type="xsd:date" maxOccurs="1"/>
            <xsd:element name="SSN" type="xsd:string" maxOccurs="1"/>
            <xsd:element name="name" type="xsd:string" maxOccurs="1"/>
            <xsd:element name="age" type="xsd:int" maxOccurs="1"/>
            <xsd:element name="amount" type="xsd:double" maxOccurs="1"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    
    
  • rating

      <xsd:element name="rating">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="date" type="xsd:date" maxOccurs="1"/>
            <xsd:element name="SSN" type="xsd:string" maxOccurs="1"/>
            <xsd:element name="rating" type="xsd:int" maxOccurs="1"/>
            <xsd:element name="risk" type="xsd:string" maxOccurs="1"/>
            <xsd:element name="maxAmount" type="xsd:double" maxOccurs="1"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    
    

注意:

ルールのモデリングはXMLスキーマ・タイプ・レベルで実行されますが、BPELからデシジョン・サービスへのデータ転送は要素レベルで実行されることに注意する必要があります。

代替モデル(セマンティクスは同じ)では、次のXMLスキーマを定義します。

  <xsd:element name="ratingrequest" type="tRatingRequest"/>
  <xsd:element name="rating" type="tRating"/>
  <xsd:complexType name="tRatingRequest">
    <xsd:sequence>
      <xsd:element name="date" type="xsd:date" maxOccurs="1"/>
      <xsd:element name="SSN" type="xsd:string" maxOccurs="1"/>
      <xsd:element name="name" type="xsd:string" maxOccurs="1"/>
      <xsd:element name="age" type="xsd:int" maxOccurs="1"/>
      <xsd:element name="amount" type="xsd:double" maxOccurs="1"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="tRating">
    <xsd:sequence>
      <xsd:element name="date" type="xsd:date" maxOccurs="1"/>
      <xsd:element name="SSN" type="xsd:string" maxOccurs="1"/>
      <xsd:element name="rating" type="xsd:int" maxOccurs="1"/>
      <xsd:element name="risk" type="xsd:string" maxOccurs="1"/>
      <xsd:element name="maxAmount" type="xsd:double" maxOccurs="1"/>
    </xsd:sequence>
  </xsd:complexType>

  1. テキスト・エディタを開きます。

  2. スキーマの一方をCreditRatingTypes.xsdというファイルに保存します。スキーマ・ファイルに、適切なヘッダーおよびフッター開始および終了情報を追加する必要があります。

18.5.2.2 タスク2: ルール・オーサーでの新規ルール・リポジトリおよびディクショナリの作成

ここでは、ルール・オーサーで新規のルール・リポジトリとディクショナリを作成します。

  1. SOA_Oracle_Home¥rules¥fileRepositories¥ruleRepositoryファイルを、ファイル・システム内のディレクトリにコピーします。たとえば、次のようになります。

    C:¥CreditRatingRules¥model¥CreditRatingRepository
    
    

    これで、ルール・オーサーで新規リポジトリを開き、ルール・オーサーにログインして新規リポジトリに接続できます。

  2. ルール・オーサーにログインして新規リポジトリに接続します。

    http://hostname:8888/ruleauthor
    
    
  3. oc4jadmin/passwordと入力します。

    passwordは、インストール時にoc4jadminユーザー用に指定したパスワードです。

  4. 「リポジトリ」をクリックします。

    「接続」ページが表示されます。

  5. 「リポジトリ・タイプ」リストから「ファイル」を選択します。

  6. 「ファイルの場所」フィールドの右側にある「参照」をクリックします。

  7. 手順1で指定したリポジトリ・ファイルの場所を選択します。

  8. 「作成」をクリックします。

    リポジトリ接続が作成されたことを示すメッセージが表示されます。

  9. 「作成」サブタブをクリックします。

    「ディクショナリを作成」ページが表示されます。

  10. 「新規ディクショナリ名」フィールドにSampleDictionaryと入力して「作成」をクリックします。

    図ds_method1.gifの説明が続きます
    図ds_method1.gifの説明

    ディクショナリがインポートされたことを示すメッセージが表示されます。

    これで、XMLスキーマのデータ・モデルをルール・ディクショナリにインポートできます。

18.5.2.3 タスク3: ルール・ディクショナリのデータ・モデルへのXMLスキーマのインポート

ルール・ディクショナリを指定して、ルール作成に使用する基礎となるデータ・モデルを定義できます。

  1. 「定義」タブをクリックします。

  2. 左側の「定義」ツリーで「XMLファクト(0)」をクリックします。

    「XMLファクト・サマリー」ページが表示されます。

  3. 「作成」をクリックします。

    「XMLスキーマ・セレクタ」ページが表示されます。

    図ds_schemasel.gifの説明が続きます
    図ds_schemasel.gifの説明

  4. 次の詳細を入力します。

    フィールド
    XMLスキーマ 「タスク1: ルール作成に使用するデータ・モデルの作成」の手順2で作成したCreditRatingTypes.xsdファイルへの絶対パスを入力します。この例では、手順2で説明した第2のスキーマ・ファイル・モデルが使用されています。
    JAXBクラス・ディレクトリ JAXBクラスを作成するディレクトリを入力します。
    ターゲット・パッケージ名 XMLファクト・タイプに使用するJavaパッケージ名を入力します(creditratingなど)。

  5. 「スキーマの追加」をクリックします。

  6. 下部の「生成したJAXBクラス」ツリーを開きます。

  7. インポートするスキーマ内のオブジェクトを指定します。この例では、RatingrequestRatingTRatingRequestおよびTRatingが選択されています。

    図ds_import.gifの説明が続きます
    図ds_import.gifの説明

  8. 「インポート」をクリックします。

    4つのクラスまたはパッケージがインポートされたことを示す確認メッセージが表示されます。

    ここで、データ・モデルについてわかりやすいエイリアスを指定できます。このアクションはオプションですが、ルールのモデリングには適切な操作とみなされます。

  9. 「定義」ツリーで「XMLファクト(0)」をクリックします。

  10. 「XMLファクト・サマリー」表からcreditrating.TRatingRequestを選択します。

  11. 「編集」をクリックします。

    「プロパティ」セクションが表示されます。

  12. SSNageamountdateおよびnameの各プロパティの「エイリアス」列に、適切なテキストを入力します。

    図ds_alias.gifの説明が続きます
    図ds_alias.gifの説明

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


    注意:

    Oracle Business Rulesでは、XMLファクト・タイプにOracle JAXB 1.0が使用されます。そのため、次の制限が適用されます。
    • 要素と複合タイプには異なる名前を使用します。XMLスキーマ仕様では要素とタイプに同じ名前が許可されていますが、JAXBクラス・ジェネレータではサポートされていません。

    • ルール・オーサーにインポートされる各XMLスキーマに異なるターゲット・パッケージ名を使用します。JAXBクラスの生成中にファクトリ・クラスObjectFactoryが作成されます。第2のXMLスキーマをインポートして同じターゲット・パッケージ名を指定すると、JAXジェネレータにより初回インポート時のファクトリ・クラスが上書きされます。このため、ルール・エンジンに予期しない動作が発生します。

    ファクト・タイプにJAXBが使用されるため、ルールのモデリングはXMLスキーマ・タイプ・レベル(complexTypeレベル)で行う必要があります。これは、XML要素の場合、JAXBではマーカー・インタフェースのみが生成され、ルール・オーサーではこれらのインタフェースの属性とメソッドをルール・モデリング用にイントロスペクションできないためです。


    データ・モデルの一部としてRL関数を指定できます。これは、ルール・アクションのロジックをRL関数に外部化して、ルール・アクションの処理を簡素化する際に役立つ方法です。この場合、ルールの目的はルール適用対象の格付け申請を受け入れることです。ルールの実行結果は、ルールにより計算されたデータで構成される新規の格付けオブジェクトです。したがって、新規の格付けオブジェクトを作成してルール・エンジンでアサートするRL関数を作成すると便利です。

  14. 「定義」ツリーで「RL関数」をクリックします。

    「RL関数サマリー」ページが表示されます。

  15. 「作成」をクリックします。

    「RL関数」ページが表示されます。

  16. 次の詳細を入力します。

    フィールド
    名前 DM.assertRating
    エイリアス assertRating
    戻り型 void

    このページは次のように表示されます。

    図ds_function.gifの説明が続きます
    図ds_function.gifの説明

  17. 「関数本体」セクションに次の関数を入力します。

    // Create a new Rating object using JAXB ObjectFactory
    creditrating.ObjectFactory of = new creditrating.ObjectFactory();
    creditrating.Rating rating = of.createRating();
    // Get a calendar instance for the current date
    java.util.Calendar calendar = java.util.Calendar.getInstance();
    // Set Rating object attributes
    rating.setSSN(req.getSSN());
    rating.setDate(calendar);
    rating.setRating(cr);
    rating.setRisk(crisk);
    rating.setMaxAmount(cmax);
    // Assert Rating object in working memory
    assert (rating);
    
    
  18. 「適用」をクリックします。

    次の確認メッセージが表示されます。

    This entity has been updated successfully.
    

18.5.2.4 タスク4: 新規ルール・セットおよびモデル・ルールの作成

データ・モデルを定義した後、信用格付け用のルールを作成できます。

  1. 「ルール・セット」タブをクリックします。

  2. 「ルール・セット・サマリー」ページで「作成」をクリックします。

    「ルール・セット」ページが表示されます。

  3. 「名前」フィールドにSampleRulesetと入力します。

  4. (オプション)「説明」フィールドに説明を入力します。

    図ds_sampleruleset.gifの説明が続きます
    図ds_sampleruleset.gifの説明

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

  6. 左側の「ルール・セット」ツリーで「SampleRuleset」を選択します。

  7. 「ルール」セクションで「作成」をクリックします。

  8. 次の詳細を入力します。

    フィールド
    名前 YoungCustomer
    説明 Rule for young customers
    優先度 0

    完成した「ルール」ページは次のようになります。

    図ds_rule.gifの説明が続きます
    図ds_rule.gifの説明

  9. 「新規パターン」をクリックしてルール(パート照合ルール)の「if」パターンを定義します。

    YoungCustomerルールのパターンの入力を求める「パターン定義」ページが表示されます。

  10. 「パターンの選択」セクションで、一致に必要なファクトのオプション名を入力します。

  11. ドロップダウン・リストから「TRatingRequest」を選択します。

    これで、ルールを要素レベルではなくXMLスキーマ・タイプ・レベルでモデリングする意図が明確になります。

  12. 「パターンのテストを定義」セクションで「作成」をクリックします。

  13. 「フィールド」列で適切なオペランドを選択します。

    図ds_patterndef.gifの説明が続きます
    図ds_patterndef.gifの説明

  14. ルールについて複数の一致文を指定します。この例では、YoungCustomerルールは次の文が満たされている場合に実行されます。

    • 格付け申請が18歳以上35歳未満の顧客から発行された場合

    • 融資申請額が20,000以下の場合

    図ds_patterndef2.gifの説明が続きます
    図ds_patterndef2.gifの説明

  15. 「適用」をクリックします。

  16. ルールの「then」セクションを指定します。

    アクションの一部として、ルール・エンジンの作業メモリーから元の格付け申請オブジェクトを取り消し(削除し)、新規の格付けオブジェクトを作成してアサートできます。

  17. 「ルール」ページの「then」セクションで「新規アクション」をクリックし、元の申請オブジェクト(ルールの起動原因となったオブジェクト)を取り消します。

  18. 「アクション・タイプ」リストから「Retract」を選択します。

  19. 「ファクト・インスタンス」リストから「request」を選択します。

    図ds_newact.gifの説明が続きます
    図ds_newact.gifの説明

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

  21. 再度「新規アクション」をクリックし、「アクション・タイプ」リストから「Call」を選択します。

  22. 「関数」リストから「assertRating」を選択します。これは手順16で作成した関数です。

  23. 関数パラメータの値を指定します。この例では、ratingrequestcredit_ratingcredit_riskおよびcredit_max_amountです。ratingrequestおよびcredit_max_amountの値によりルールが起動され、ルール・アクション・パートで使用できます。

    図ds_addact.gifの説明が続きます
    図ds_addact.gifの説明

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

    ルールが次のように表示されます。

    図ds_rules4.gifの説明が続きます
    図ds_rules4.gifの説明

  25. ルールをダブルチェックし、「OK」をクリックして確認します。

    if文のパターンを使用しないルール(単にファクトを受け入れるルール)と、他のルールが起動されない場合に適切に定義された結果を生成するアクションをモデリングすることをお薦めします。たとえば、次のようになります。

    • 「優先度」フィールドで優先度を-10に設定します。これにより、他のルールがファクト・インスタンスのパターンと一致する場合、このルールは起動されません。

    • テスト・パターンを追加指定せずに、ファクト(「if」セクションの''request'' = ''TRatingRequest'')を受け入れます。

    • Oracle BPEL Process Managerで後から確認できるようにダミーの結果を提供します(「then」セクションのCall assertRating(request, 0, "Unknown", 0.0))。

    図ds_example.gifの説明が続きます
    図ds_example.gifの説明

  26. 右上隅の「ディクショナリの保存」をクリックします。

  27. プロンプトに対してディクショナリ名を入力して「保存」をクリックします。

    ルール・セットのモデリング・プロセスは完了です。これでルールをBPELプロセスに使用できます。


    関連項目:

    ルール・セットをBPELプロセスと統合するには、「BPELプロセスからのサンプル・ルール・セットの起動」を参照してください。

18.5.3 方法2: 既存のRLまたはJavaBeanファクト・タイプに基づくルールのモデリング

「方法1: XMLスキーマに基づくファクト・タイプのモデリング」では、Oracle BPEL Process Managerと統合できるようにXMLスキーマに基づくファクト・タイプをモデリングしました。この方法2では、ルールがRLまたはJavaBeanファクト・タイプに基づいてモデリングされている場合について説明します。

次の方法を使用しています。

  • XMLスキーマを使用してBPELとビジネス・ルール間の規定をモデリングします。

  • ルール・オーサーで、モデリングしたXMLスキーマのパラメータを受け入れるRL関数を作成します。それから次の手順を実行します。

    • パラメータ値をRLまたはJavaファクト・タイプ・オブジェクトに変換します。

    • 問題のルール・セットを実行します(ルールはRLまたはJavaデータ・モデルの上にモデリングされます)。

    • 結果のファクト・オブジェクト(RLまたはJava)を、RL関数の戻り型のオブジェクトに変換します。

  • Oracle JDeveloperでCall Functionパターン(選択可能な起動パターン)を使用します。

この項では、ルールがすでにRLまたはJavaBeanファクト・タイプに基づいてモデリングされているルール・セットのモデリング方法について説明します。

18.5.3.1 タスク1: BPELとビジネス・ルール間の規定の定義

BPELでモデリングされたプロセスとビジネス・ルールの間の規定を定義する必要があります。規定が次のように定義されているとします。

  • 入力: ratingrequest要素の格付け申請文書

  • 出力: rating要素の格付け文書

  • ルール・セット: 信用格付けの実行ルール

この規定は、次のシグネチャを使用してRL関数calculateCreditRatingで表現できます。

creditrating.Rating calculateCreditRating(creditrating.Ratingrequest request)

ルール・オーサーで関数を作成する前に、RLファクト・タイプに基づく新規データ・モデルと、RLファクト・タイプ・データ・モデルに基づく新規ルール・セットを定義します。

18.5.3.2 タスク2: RLファクト・タイプを使用した新規データ・モデルの作成

RLファクト・タイプを使用して、信用格付け用の新規データ・モデルを作成します。

  1. 「方法1: XMLスキーマに基づくファクト・タイプのモデリング」のサンプル・ディクショナリをルール・オーサーにロードします。

  2. 「定義」タブをクリックします。

  3. 「定義」ツリーで「RLファクト(0)」を選択します。

  4. MyRatingRequestという新規RLファクト・タイプを作成します。

    図ds_rlfact1.gifの説明が続きます
    図ds_rlfact1.gifの説明

  5. MyRatingという新規RLファクト・タイプを作成します。

    図ds_rlfact2.gifの説明が続きます
    図ds_rlfact2.gifの説明

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

    関数を正常に機能させるには、グローバル変数を作成し、ルールの実行結果を渡すプレースホルダとして使用する必要があります。

  7. 「定義」ツリーで「変数」を選択します。

  8. 「作成」を選択します。

  9. mr型のtheResultという変数を作成します。

    これは、RLファクト・タイプMyRatingのエイリアスです。

    図ds_var1.gifの説明が続きます
    図ds_var1.gifの説明

18.5.3.3 タスク3: 新規ルール・セットおよびルールの作成

  1. 「ルール・セット」タブをクリックします。

  2. 「ルール・セット・サマリー」ページで「作成」をクリックします。

  3. 「名前」フィールドにAlternateRulesetと入力します。

  4. (オプション)「説明」フィールドに説明を入力します。

    図ds_altrs.gifの説明が続きます
    図ds_altrs.gifの説明

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

  6. 左側の「ルール・セット」ツリーで「AlternateRuleset」を選択します。

  7. 「ルール」セクションで「作成」をクリックします。

  8. 「新規パターン」をクリックしてルール(パート照合ルール)の「if」パターンを入力します。

  9. ルールについて複数の一致文を指定します。この例では、次のように指定します。

    • 格付け申請が18歳以上35歳未満の顧客から発行された場合

    • 融資申請額が20,000以下の場合

    図ds_pattdef.gifの説明が続きます
    図ds_pattdef.gifの説明

    アクションの一部として、元の申請オブジェクトを取消し(削除)できます。

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

  11. 「then」セクションで「新規アクション」をクリックします。

  12. 「アクション・タイプ」リストから「Retract」を選択します。

  13. 「ファクト・インスタンス」リストから「req」を選択します。

    図ds_newact2.gifの説明が続きます
    図ds_newact2.gifの説明

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

  15. グローバル変数を適切な値に設定します。グローバル変数の設定方法の概要は、手順7から9までを参照してください。

18.5.3.4 タスク4: RL関数の規定の作成

ここでRL関数を作成します。

  1. 「定義」を選択します。

  2. 「定義」ツリーで「RL関数(3)」を選択します。

    「RL関数サマリー」ウィンドウが表示されます。

  3. 「作成」をクリックします。

  4. 次の詳細を入力します。

    フィールド
    名前 calculatCreditRating
    エイリアス calculateCreditRating
    戻り型 Rating
    拡張 選択解除

    このページは次のように表示されます。

    図ds_rlfunct.gifの説明が続きます
    図ds_rlfunct.gifの説明

  5. 「関数本体」セクションに次の関数を追加します。

    // Create JAXB object factory and result object
    creditrating.ObjectFactory of = new creditrating.ObjectFactory();
    creditrating.Rating result = of.createRating();
    // Get current calendar
    java.util.Calendar calendar = java.util.Calendar.getInstance();
    // Create new RL object and convert from JAXB to RL
    MyRatingRequest mrr = new MyRatingRequest();
    mrr.ssn = request.getSSN();
    mrr.name = request.getName();
    mrr.age = request.getAge();
    mrr.amount = request.getAmount();
    mrr.date = request.getDate().getTimeInMillis();
    // Assert the RL object and run Alternate Ruleset
    assert(mrr);
    run("AlternateRuleset");
    // Result is in variable theResult, convert back to JAXB and return
    result.setRating(theResult.rating);
    result.setRisk(theResult.risk);
    result.setMaxAmount(theResult.maxAmount);
    result.setDate(calendar);
    return result;
    
    
  6. 「OK」をクリックします。

    この関数にはXMLの規定があるためOracle BPEL Process Managerから使用できますが、基礎となるルール・データ・モデルはRLファクト・タイプに基づいています。


    関連項目:

    ルール・セットをBPELプロセスと統合するには、「BPELプロセスからのサンプル・ルール・セットの起動」を参照してください。

18.5.4 BPELプロセスからのサンプル・ルール・セットの起動

この項では、Oracle Business Rules Rule Authorで作成したルール・セットをBPELプロセスに統合する方法について説明します。

この項の内容は次のとおりです。

18.5.4.1 タスク1: ルール・エンジンへの接続の作成

  1. Oracle JDeveloperを再起動します。

  2. Oracle JDeveloperの「表示」メイン・メニューから「接続ナビゲータ」を選択します。

  3. 「ルール・エンジン」を右クリックして「新規ルール・エンジン接続」を選択します。

  4. 「ようこそ」ウィンドウで「次へ」をクリックします。

  5. 「接続名」フィールドにSampleRuleRepositoryと入力します。

  6. 接続先のビジネス・ルール・エンジンとして「Oracle Rules Engineのファイル・リポジトリ」を選択します。

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

    「接続」ウィンドウが表示されます。

  8. フォルダ・アイコンをクリックし、ファイル・リポジトリがあるディレクトリを選択します。

  9. C:¥CreditRatingRules¥model¥CreditRatingRepositoryディレクトリからCreditRatingRepositoryファイル・リポジトリを選択します。これは手順1で作成したリポジトリです。

  10. 「開く」をクリックします。

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

    「接続のテスト」ウィンドウが表示されます。

  12. 「テスト」をクリックします。

    ビジネス・ルール・エンジンへの接続に成功すると、次のメッセージが表示されます。

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

18.5.4.2 タスク2: BPELプロジェクトの作成

  1. 「アプリケーション・ナビゲータ」セクションでアプリケーションを右クリックします。

  2. 「新規プロジェクト」を選択し、新規のBPELプロセス・プロジェクトを定義します。

  3. 「項目」ウィンドウで「BPELプロセス・プロジェクト」をダブルクリックして、「BPELプロジェクト作成ウィザード」ウィンドウを表示します。

  4. 「名前」フィールドにSampleProcessと入力します。

  5. 「テンプレート」リストで「同期BPELプロセス」を選択します。

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

  7. 「入力スキーマ要素」フィールドの右側にある懐中電灯アイコンをクリックします。

  8. 「スキーマの選択」ウィンドウで、「タスク1: ルール作成に使用するデータ・モデルの作成」の手順2で保存したディレクトリからCreditRatingTypes.xsdを選択し、「開く」をクリックします。

    「タイプの選択」ウィンドウが表示されます。

  9. 「インポートしたスキーマ」「CreditRatingTypes.xsd」「ratingrequest」を順番に開いて選択します。

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

  11. 「出力スキーマ要素」フィールドの右側にある懐中電灯アイコンをクリックします。

    「タイプの選択」ウィンドウが表示されます。

  12. 「インポートしたスキーマ」「CreditRatingTypes.xsd」「rating」を順番に開いて選択します。

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

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

これで「BPELプロジェクト作成ウィザード」が完了します。新規のBPELプロセス・テンプレートが作成されます。このテンプレートには、ratingrequest要素を受け入れるreceiveアクティビティとrating要素を送信するreplyアクティビティがあります。

18.5.4.3 タスク3: デシジョン・サービス・パートナ・リンクの作成

  1. Oracle JDeveloperの右上にある「コンポーネント・パレット」セクションのドロップダウン・リストで、「サービス」が選択されていることを確認します。

  2. 「デシジョン・サービス」を、デザイナ・ウィンドウの右側でヘッダー「サービス」の下の任意の場所にドラッグ・アンド・ドロップします。

    「ルール・セットまたは関数の選択」ウィンドウが表示されます。このウィンドウで起動パターンを選択できます。

  3. 次の詳細を入力します。

    フィールド
    サービス名 CreditRatingService

    注意: 完了すると、これがパートナ・リンク名になります。

    ネームスペース http://xmlns.oracle.com/myLoanProcess/CreditRatingService

    注意: このフィールドには「サービス名」フィールドへの入力内容が自動的に入力されます。

    起動パターン ルール・セットの実行

  4. 「ルール・セット」フィールドの横にある懐中電灯アイコンをクリックします。

    「ルール・エクスプローラ」ウィンドウが表示されます。

    このウィンドウでは、「タスク4: 新規ルール・セットおよびモデル・ルールの作成」の手順3で変更したリポジトリのディクショナリ内でルール・セットを参照して選択できます。

  5. ウィンドウ下部の「すべてのバージョンを表示」をクリックして、ビジネス・ルール・エンジン内の指定のリポジトリにあるルール・ディクショナリのバージョンをすべて表示します。ビジネス・ルール・エンジンには、複数のルール・ディクショナリおよびバージョンが含まれていることがあります。

  6. 「SampleRuleRepository」「SampleDictionary」「INITIAL」「SampleRuleset」を順番に開いて選択します。

    図ds_ruleexp.gifの説明が続きます
    図ds_ruleexp.gifの説明

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

    「デシジョン・サービス・ウィザード」の「ルール・セットまたは関数の選択」ウィンドウに戻ります。ファクト表に、SampleRulesetルール・セットのファクト名がすべて表示されます。

  8. 相互作用パターンの詳細を指定します。

    • Ratingrequestファクト・タイプの「ファクトをアサートしますか。」チェック・ボックスを選択します。

      これにより、ファクトがルール・セットに対してアサート(ファクト・データの入力パラメータがビジネス・ルール・エンジンに送信)されます。

    • Ratingファクト・タイプの「ファクトを監視しますか。」チェック・ボックスを選択します。

      これにより、ビジネス・ルール・エンジンで作成された結果がルール・セットSampleRulesetの実行の一部として返されます。

    図ds_assert.gifの説明が続きます
    図ds_assert.gifの説明

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

    「XSDファイルのコピー」ウィンドウに、ウィザードでのインポート対象としてCreditRatingTypes.xsdスキーマ・ファイルへのディレクトリ・パスが表示されます。このファイルが検出されない場合は、SampleProcess BPELプロジェクトのrules/xsdディレクトリに手動でコピーする必要があります。

  10. 「次へ」と「終了」を順番にクリックします。

    手順3で指定した名前でパートナ・リンクが作成されます。このパートナ・リンクは、BPELプロセスとビジネス・ルール・エンジンの間のインタフェースを提供します。

    図ds_plink.gifの説明が続きます
    図ds_plink.gifの説明

  11. 「ファイル」メイン・メニューから「保存」を選択します。

18.5.4.4 タスク4: Decideアクティビティの作成

  1. コンポーネント・パレット「プロセス・アクティビティ」リストから、Decideアクティビティをデザイナ・ウィンドウ内のreceiveInput receiveアクティビティの下にドラッグ・アンド・ドロップします。

    編集Decideウィンドウが表示されます。

  2. 次の値を入力します。

    フィールド
    名前 GetRating
    デシジョン・サービス CreditRatingService
    操作 ファクトのアサート、ルール・セットの実行、結果の取出し、セッションのリセット

  3. 「入力ファクトの割当て」をクリックします。

    ここで、BPEL入力変数を、Ratingrequest入力(アサート)ファクト・タイプに対応して自動的に作成されたBPEL変数にマップします。

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

    「From」セクションにプロセスのBPEL変数が表示され、「To」セクションにパートナ・リンク相互作用のために選択したファクトが表示されます。BPELプロセスでファクト・タイプのXMLスキーマ・ファイルを再利用したため、BPEL入力変数inputVariableのトップレベルのratingrequest要素をファクトに割り当ててアサートできます。

  5. 次の詳細を入力します。

    フィールド
    送信元
    • タイプ
    変数
    • 変数
    「変数」「inputVariable」「payload」「ns2:ratingrequest」を順番に開いて選択します。

    注意: ネームスペース番号値(ns1ns2など)は変更される場合があります。自動的に表示されるネームスペース値を使用します。

    宛先
    • タイプ
    変数
    • 変数
    「変数」「creditrating_Ratingrequest_i」「ns2:ratingrequest」を順番に開いて選択します。

    このウィンドウは次のように表示されます。

    図ds_factmap.gifの説明が続きます
    図ds_factmap.gifの説明

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

  7. 「出力ファクトの割当て」をクリックします。

    ここで、ルール・セットの実行結果をBPEL変数に割り当てます。出力ファクトの割当ての場合、「From」セクションにはデシジョン・サービス・パートナ・リンクの相互作用でモデリングされたファクトが表示され、「To」セクションにはBPELプロセスの変数が表示されます。

  8. 次の詳細を入力します。

    フィールド
    送信元
    • タイプ
    変数
    • 変数
    「変数」「creditrating_Rating_o」「ns2:rating」を順番に開いて選択します。
    宛先
    • タイプ
    変数
    • 変数
    「変数」「outputVariable」「payload」「ns2:rating」を順番に開いて選択します。

    このウィンドウは次のように表示されます。

    図ds_factmap2.gifの説明が続きます
    図ds_factmap2.gifの説明

  9. 「OK」をクリックして「デシジョン・ファクト・マップ」ウィンドウと編集Decideウィンドウを閉じます。

    これでdecideアクティビティの構成は完了です。BPELプロセス・モデルがGetRating decideアクティビティで更新され、BPELプロセスをデプロイする準備ができました。

    図ds_dec.gifの説明が続きます
    図ds_dec.gifの説明

18.5.5 方法のまとめ

この項では、ルール・セットの設計前に考慮しておく問題のまとめを示します。

  • ビジネス・ルールのモデリングを開始する前に、データ・モデルをプランニングします。

  • XMLスキーマの構成メンバーを使用してデータ・モデルを指定します。

  • XMLスキーマをXMLファクト・タイプとしてルール・オーサーにインポートします。

  • JAXBの制限事項(要素と複合タイプのネーミング、複数のスキーマのターゲット・パッケージなど)に注意します。

  • ルールのパターンとアクションに使用できるRL関数を指定します。

  • if文のテスト・パターンを含まないルールをモデリングし、ルール・セットの実行中に他のルールが開始されなければデフォルトの結果が生成されるように低優先度に設定します。

  • ルールをXMLスキーマ・タイプ・レベルでモデリングします。

  • BPELではデータ交換がXML要素レベルで行われることに注意します。

  • RLまたはJavaファクト・タイプに基づく既存のデータ・モデルの場合は、RL関数を使用した代替アプローチを実行できることに注意します。

18.6 デシジョン・サービスのデプロイとランタイム

この項では、デシジョン・サービス・パートナ・リンクの作成、デプロイおよびランタイムの問題について説明します。

この項の内容は次のとおりです。

18.6.1 デシジョン・サービス・パートナ・リンクのディレクトリ構造

設計時には、デシジョン・サービス・パートナ・リンクの作成中に、次のディレクトリにサブディレクトリとファイルが作成されます。

JDev_Oracle_Home¥jdev¥mywork¥application_name¥
process_name¥decisionservices¥DecisionService

  • ear: J2EEエンタープライズ・アーカイブ(EAR)用のトップレベル・ディレクトリ

  • war: Webアーカイブ(WAR)用のトップレベル・ディレクトリ

DecisionServiceは、「デシジョン・サービス・ウィザード」の「サービス名」フィールドに入力した名前です。

表18-1に、earおよびwarディレクトリのサブディレクトリとファイルを示します。

表18-1 earおよびwarディレクトリの内容

ear/ META-INF war/public_html war/ WEB-INF/lib war/ WEB-INF/wsdl war/ WEB-INF/ war/ WEB-INF/classes war/WEB-INF/repository
application.xml GetDecisionServiceInfo.jsp ファイルなし common.xsd web.xml decisionservices.xml Oracle Business Rulesのファイル・リポジトリ
orion-application.xml

BpelProcess.xsd webservices.xml XMLファクト・タイプから生成されたJAXBクラス



DecisionService.xsd oracle-webservices.xml




DecisionServiceMessages.xsd java-wsdl-mapping.xml




rpi.xsd





DecisionService.wsdl





ファクト・タイプのXMLスキーマ・ファイル



デシジョン・サービス・パートナ・リンクの作成中に、次のステップが自動的に実行されます。

  • 次のディレクトリに新規ディレクトリ構造(表18-1を参照)が作成されます。

    JDev_Oracle_Home¥jdev¥mywork¥application_name¥
    process_name¥decisionservices¥DecisionService
    
    
  • EARデプロイメント・ディスクリプタが生成され、EARのMETA-INFサブディレクトリに格納されます。

  • JavaServer PagesファイルGetDecisionServiceInfo.jspが生成され、WARのpublic_htmlディレクトリに格納されます。

  • デシジョン・サービス依存のWSDLファイルDecisionService.wsdlが生成され、WARのWEB-INF/wsdlディレクトリに格納されます。すべての依存XMLスキーマ・ファイルも、このディレクトリにコピーされます。依存スキーマ・ファイルには、Webサービス・メッセージと規定の定義と、ビジネス・ルール・エンジンのXMLファクト・タイプのXMLスキーマ・ファイルが含まれています。

  • デシジョン・サービス構成ファイルdecisionservices.xmlが生成され、WARのWEB-INF/classesディレクトリにコピーされます。

  • ルール・リポジトリの場所が次のように解決されます。

    • ルール・リポジトリがファイル・リポジトリの場合は、リポジトリ・ファイルが元の場所からWARのWEB-INF/repositoryディレクトリにコピーされ、構成ファイルdecisionservices.xmlが新しい場所を参照するように変更されます。

    • ルール・リポジトリがWebDAVリポジトリの場合、構成ファイルは編集されません。

  • JAXB生成ステップが実行されます。

    • パートナ・リンクで使用されているXMLファクト・タイプ用のXMLスキーマ・ファイルのリストが取得されます。

    • Oracle JAXBジェネレータを使用して、XMLファクト・タイプのJAXBクラスがWARのディレクトリWEB-INF/classesに生成されます。

  • Webサービスのデプロイメント・ディスクリプタとJAX-RPCマッピング・ファイルが、WARのディレクトリWEB-INFに生成されます。

decisionservices.xmlデシジョン・サービス構成ファイルには、相互作用パターン固有のWSDLを生成するために必要な情報が含まれています。

構成ファイル内の次の情報から、

<pattern name="AssertExecuteWatchStateless">
  <arguments>
    <assert>creditrating.Ratingrequest</assert>
    <watch>creditrating.Rating</watch>
  </arguments>
</pattern>

WSDL生成に関するメッセージと操作を理解できます。

次のセクションでは、XMLファクト・タイプのXMLスキーマ・ファイルがdecisionservices.wsdlファイルにインポートされます。これにより、ファクト要素が参照可能になります。

<types>
  <schema xmlns="http://www.w3.org/2001/XMLSchema" ...>
    <include schemaLocation="CreditRatingAgentTypes.xsd"/>
  </schema>
  <schema xmlns="http://www.w3.org/2001/XMLSchema" ...>
    <import namespace="http://samples.otn.com/bpel/demo"
            schemaLocation="CreditRatingTypes.xsd"/>
    <import namespace="http://xmlns.oracle.com/bpel"/>
    . . .
    . . .

次のセクションでは、ファクトcreditrating.Ratingrequestに対応するXMLスキーマ要素が示されています。

      . . .
      . . .
      <element name="assertExecuteWatchStateless">
        <complexType>
          <sequence>
            <element name="configURL" type="string" maxOccurs="1"/>
            <element name="bpelInstance" type="bpelpm:tBpelProcess"
                     maxOccurs="1"/>
            <element name="assertList" minOccurs="1" maxOccurs="1">
              <complexType>
                <sequence>
                  <element ref="ns1:ratingrequest"/>
                </sequence>
              </complexType>
            </element>
          </sequence>
          <attribute name="name" type="NCName" use="required"/>
        </complexType>
      </element>
      . . .
      . . .

次のセクションでは、ファクトcreditrating.Ratingに対応するXMLスキーマ要素が示されています。

      . . .
      . . .
      <element name="assertExecuteWatchStatelessDecision">
        <complexType>
          <sequence>
            <element name="resultList" minOccurs="1" maxOccurs="1">
              <complexType>
                <sequence>
                  <element ref="ns1:rating"/>
                </sequence>
              </complexType>
            </element>
          </sequence>
        </complexType>
      </element>
    </schema>
  </types>
  . . .
  . . .

次のセクションでは、相互作用パターンに関する適切なメッセージが作成されます。

  . . .
  . . .
  <message name="assertExecuteWatchStatelessMessage">
    <part name="payload" element="tns:assertExecuteWatchStateless"/>
  </message>
  <message name="assertExecuteWatchStatelessDecisionMessage">
    <part name="payload"
          element="tns:assertExecuteWatchStatelessDecision"/>
  </message>
  <message name="decisionServiceError">
    <part name="payload" element="tns:errorInfo"/>
  </message>
  . . .
  . . .

次のセクションでは、選択したファクト・タイプに対応する入力メッセージと出力メッセージを使用して、相互作用パターンに対する操作が作成されます。

  . . .
  . . .
  <portType name="IDecisionService">
    <operation name="assertExecuteWatchStateless">
      <input name="assertExecuteWatchStatelessInput"
             message="tns:assertExecuteWatchStatelessMessage"/>
      <output name="assertExecuteWatchStatelessOutput"
              message="tns:assertExecuteWatchStatelessDecisionMessage"/>
      <fault name="operationErroredFault"
             message="tns:decisionServiceError"/>
    </operation>
  </portType>

18.6.2 デプロイ

BPELプロジェクト内でモデリングしたデシジョン・サービスは、BPELプロセスとともにデプロイされます。BPELプロセスのデプロイ中に、プロジェクト内のすべてのデシジョン・サービスに対して次のステップが実行されます。

  • Javaコンパイラ(javac)を使用して、サブディレクトリWEB-INF/classes内のJavaクラスがすべてコンパイルされます。

  • デシジョン・サービスのearエンタープライズ・アーカイブ・サブディレクトリに、Webアーカイブ・ファイルDecisionService.warが作成されます。Webアーカイブは、デシジョン・サービスのwarディレクトリの全ファイルで構成されます。

  • デシジョン・サービスのトップレベル・ディレクトリに、エンタープライズ・アーカイブ・ファイルDecisionService.earが作成されます。エンタープライズ・アーカイブは、デシジョン・サービスのearディレクトリ内の全ファイルと、前述のステップで作成されたWebアーカイブで構成されます。

  • エンタープライズ・アーカイブDecisionService.earが、特定のコンテナの管理者ツールを使用して基礎となるJ2EEコンテナにデプロイされます。

デシジョン・サービスDecisionServiceのJ2EEコンテキスト・ルートは、次のとおりです。

http://${hostname}:${http_port}/rules/${domain_id}/${process_id}/${process_revision}/DecisionService

この構文のパラメータの定義は、次のとおりです。

パラメータ 説明
${hostname} アプリケーション・サーバーがインストールされているホストの名前
${http_port} アプリケーション・サーバーのHTTPポート
${domain_id} BPELドメイン
${process_id} BPELプロセス名
${process_revision} BPELプロセスのバージョン

特定のBPELプロセスおよびリビジョンに対するデシジョン・サービスは、Oracle Enterprise Manager 10g Grid Controlコンソールを使用して識別できます。


関連項目:

「ランタイム」

18.6.3 ランタイム

デシジョン・サービスのランタイム・コンポーネントは、標準J2EE JAX-RPC Webサービスです。

この項では、次のコンソールからデシジョン・サービスを管理する方法について説明します。

18.6.3.1 Oracle Enterprise Manager 10g Application Server Controlコンソールのサポート

自己完結型エンタープライズ・アーカイブとしてのデシジョン・サービスのデプロイには、いくつか考慮事項があります。最も重要なのは、Oracle Enterprise Manager 10g Application Server Controlコンソールを使用して、各デシジョン・サービスをBPELプロセスの起動に依存せずに個別に管理できることです。

たとえば、Oracle BPEL Process Managerに組み込まれているAutoLoanDemoサンプルの場合、AutoLoanFlow BPELプロセスは次の2つのデシジョン・サービス・パートナ・リンクで構成されています。

  • LoanAdvisor

  • CreditRating

  1. Oracle Enterprise Manager 10g Application Server Controlコンソールにログインします。

    http://hostname:port/em
    
    
  2. 「Webサービス」をクリックします。

    2つのデシジョン・サービスLoanAdvisorAgentおよびCreditRatingAgentが表示されます。

    図ds_em6.gifの説明が続きます
    図ds_em6.gifの説明

    他のWebサービスと同様に、デシジョン・サービスを管理および診断できます。

  3. CreditRatingAgentPortをクリックしてCreditRatingAgentデシジョン・サービスの詳細を受信します。

    図ds_em5.gifの説明が続きます
    図ds_em5.gifの説明

  4. 「操作」をクリックしてその他の詳細にアクセスします。

    図ds_em7.gifの説明が続きます
    図ds_em7.gifの説明

18.6.3.2 Oracle BPEL Controlサポート

Oracle BPEL Controlを介してデシジョン・サービスを監視および診断できます。デシジョン・サービス・パートナ・リンクの構成情報を参照するBPELスーツケースには、decisionServiceDetailsプロパティが追加されます。

  1. Oracle BPEL Controlにログインします。

  2. Oracle BPEL ControlでAutoLoanFlow BPELプロセスをクリックします。

  3. 「ディスクリプタ」をクリックします。

    「ディスクリプタ」タブに、AutoLoanDemoサンプルに含まれているAutoLoanFlowプロセスのプロセス・ディスクリプタが表示されます。

    図ds_em1.gifの説明が続きます
    図ds_em1.gifの説明

    このプロセスには、2つのデシジョン・サービス・パートナ・リンクが構成されています。

    • CreditRatingAgentPL: 信用格付け用

    • LoanAdvisorAgentPL: 融資相談用

  4. 「ルール・サービスの詳細」をクリックして、デシジョン・サービス・パートナ・リンクのその他の詳細(CreditRatingAgentPLの詳細など)にアクセスします。

    図ds_em2.gifの説明が続きます
    図ds_em2.gifの説明

    次のような情報が表示されます。

    • ルール・エンジン情報

      • バックエンド・ルール・エンジン・プロバイダ(この場合はOracle)

      • ルール・リポジトリの物理位置

      • そのパートナ・リンクに使用されているルール・カタログの名前

      • (オプション)使用されているルール・カタログのバージョン

      • (オプション)パートナ・リンクで使用されたルール・セット

    • 相互作用情報

      • パートナ・リンクで使用された相互作用パターン

      • 相互作用パターンで使用された入力ファクト・タイプと出力ファクト・タイプ

  5. ルール・オーサーを開いてルール・セットを更新する場合は、ルール・オーサーを開くをクリックします。

    「フロー」ウィンドウにはdecideアクティビティの詳細も表示されます。

  6. 「インスタンス」タブをクリックします。

  7. 「インスタンス」リストで特定のインスタンスをクリックします。

  8. 「フロー」をクリックします。

  9. プロセス・インスタンス・フローでdecideアクティビティをクリックして同じ情報(この例ではLoanAdvisorAgent)にアクセスします。

    図ds_em3.gifの説明が続きます
    図ds_em3.gifの説明

    次の情報が表示されます。

    図ds_em4.gifの説明が続きます
    図ds_em4.gifの説明

18.7 拡張デシジョン・サービス機能

この項では、拡張デシジョン・サービス機能について説明します。この種の機能には制限があるか、ユーザー・インタフェース・サポートが提供されません。かわりに、これらの機能を使用するようにデプロイメント記述ファイルおよび構成ファイルを手動で編集します。

この項の内容は次のとおりです。

18.7.1 WSIFバインディングの使用

「デシジョン・サービスのコンポーネント」で説明したように、デシジョン・サービスはJAX-RPC Webサービスです。したがって、デシジョン・サービスで使用するプロトコルはSOAPです。ただし、WSIFコンテキストでデシジョン・サービスを使用するようにBPELプロセスを構成できます。

次の手順を実行します。

  1. BPELプロセスのbpel.xmlデプロイメント・ディスクリプタ・ファイルから、デシジョン・サービス・パートナ・リンクのwsdlRuntimeLocationプロパティを削除します。

  2. Oracle BPEL Process Managerのクラスパスにファクト・タイプのJavaクラスを追加します。

    1. デシジョン・サービス・パートナ・リンクが前にデプロイされている場合は、次のディレクトリからすべてのファイルをコピーできます。

      JDev_Oracle_Home¥jdev¥mywork¥application_name¥
      process_name¥decisionservices¥DecisionService¥war¥WEB-INF¥classes
      
      

      コピー先ディレクトリは次のとおりです。

      SOA_Oracle_Home¥bpel¥system¥classes
      
      
    2. それ以外の場合は、次のディレクトリにあるJavaクラスをコンパイルする必要があります。

      JDev_Oracle_Home¥jdev¥mywork¥application_name¥
      process_name¥decisionservices¥DecisionService¥war¥WEB-INF¥classes
      
      

      コンパイル後は次のようになります。

      SOA_Oracle_Home¥bpel¥system¥classes
      
      
  3. BPELプロセスをデプロイします。

18.7.2 Oracle Business Rulesのルール・セッション・イベントのロギングの有効化

Oracle Business Rules Rules Engineでは、監視対象の複数のルール・セッション・イベントが定義されています。(詳細は、『Oracle Business Rulesランゲージ・リファレンス』を参照。)デシジョン・サービスには、これらのイベントを有効化して出力をOracle BPEL Process Managerログ・ファイルに記録するためのオプションが用意されています。

イベントは、デシジョン・サービス構成ファイル(decisionservices.xml)内のプロパティを介して有効化されます。表18-2に、設定できるプロパティを示します。

表18-2 デシジョン・サービス構成ファイルのパラメータ

プロパティ 説明
watchRules ルールの起動(アクティブ化の実行)に関する情報。
watchActivations 予定表からのアクティブ化の追加または削除。
watchFacts 作業用メモリー内のファクトのアサート、取消しまたは変更。
watchFocus ルール・セット・スタックのプッシュまたはポップ。
watchCompilations ルールの条件がネットワークに追加されると、既存のルールとの条件パーツの共有方法に関する情報が出力されます。「=」は共有を示します。
watchAll 前述のすべてのイベントからの情報が含まれます。

  1. ファイルを開きます。

    JDev_Oracle_Home¥jdev¥mywork¥application_name¥
    process_name¥decisionservices¥DecisionService¥war¥WEB-INF¥
    classes¥decisionservices.xml
    
    
  2. ruleEngineProviderセクションのrepository要素の後にプロパティを追加します。

    <?xml version = '1.0' encoding = 'UTF-8'?>
    <decisionServices xmlns="http://xmlns.oracle.com/bpel/rules">
      <ruleEngineProvider name="CreditRatingRuleRepository"
                          provider="Oracle">
        <repository type="File">
          <file>repositoryresource:CreditRatingRepository</file>
        </repository>
        <properties>
          <property name="watchRules">true</property>
          <property name="watchActivations">true</property>
          <property name="watchFacts">true</property>
          <property name="watchCompilations">true</property>
        </properties>
      </ruleEngineProvider>
      <decisionService name="CreditRatingAgent"
                       targetNamespace="http://xmlns.oracle.com/AutoLoanFlow/CreditRatingAgent"
                       ruleEngineProviderReference="CreditRatingRuleRepository">
        <catalog>RatingFY06</catalog>
        <catalogVersion>Approved_060205</catalogVersion>
        <ruleset>PrivateCustomerRatingRules</ruleset>
        <pattern name="AssertExecuteWatchStateless">
          <arguments>
            <assert>creditrating.Ratingrequest</assert>
            <watch>creditrating.Rating</watch>
          </arguments>
        </pattern>
      </decisionService>
    </decisionServices>
    
    
  3. デシジョン・サービスを再デプロイします。AutoLoanFlowプロセスの信用格付けエージェントから取り込んだサンプル出力を次に示します。

    <2006-07-05 10:18:13,710> <DEBUG> <default.collaxa.cube.services>
     <OracleRuleSession::executeUnitOfWork> Execution plan for AutoLoanFlow:202
    <2006-07-05 10:18:13,710> <DEBUG> <default.collaxa.cube.services>
     <OracleRuleSession::executeUnitOfWork> assert fact creditrating.Ratingrequest
    <2006-07-05 10:18:13,710> <DEBUG> <default.collaxa.cube.services>
     <OracleRuleSession::executeUnitOfWork>  ==> f-1
     creditrating.RatingrequestImpl(SSN : "12345", age : 41, amount : 60000.0, date
     : null, name : "Irving Stone", DOMNode : <ratingrequest
     xmlns="http://samples.otn.com/bpel/demo">
    .....
    <2006-07-05 10:18:13,750> <DEBUG> <default.collaxa.cube.services>
     <OracleRuleSession::executeUnitOfWork> ==> Activation: creditrating.__
    xpath.retractDeadRatingrequest :  f-1,
    <2006-07-05 10:18:13,750> <DEBUG> <default.collaxa.cube.services>
     <OracleRuleSession::executeUnitOfWork> ==> Activation: creditrating.__
    xpath.retractDeadRatingrequestType :  f-1,
    <2006-07-05 10:18:13,750> <DEBUG> <default.collaxa.cube.services>
     <OracleRuleSession::executeUnitOfWork> ==> Activation:
     PrivateCustomerRatingRules.Default :  f-1
    <2006-07-05 10:18:13,790> <DEBUG> <default.collaxa.cube.services>
     <OracleRuleSession::executeUnitOfWork> ==> Activation:
     PrivateCustomerRatingRules.YoungCustomers :  f-1
    <2006-07-05 10:18:13,790> <DEBUG> <default.collaxa.cube.services>
     <OracleRuleSession::executeUnitOfWork> ==> Activation:
     PrivateCustomerRatingRules.HighRiskCustomers :  f-1
    <2006-07-05 10:18:13,790> <DEBUG> <default.collaxa.cube.services>
     <OracleRuleSession::executeUnitOfWork> Execute rule set
     PrivateCustomerRatingRules
    <2006-07-05 10:18:13,790> <DEBUG> <default.collaxa.cube.services>
     <OracleRuleSession::executeUnitOfWork> Fire 1
     PrivateCustomerRatingRules.YoungCustomers f-1
    <2006-07-05 10:18:13,790> <DEBUG> <default.collaxa.cube.services>
     <OracleRuleSession::executeUnitOfWork>  <== f-1
     creditrating.RatingrequestImpl(SSN : "12345", age : 41, amount : 60000.0, date
     : null, name : "Irving Stone", DOMNode : <ratingrequest
     xmlns="http://samples.otn.com/bpel/demo">
    ....
    <2006-07-05 10:18:13,820> <DEBUG> <default.collaxa.cube.services>
     <OracleRuleSession::executeUnitOfWork> <== Activation: creditrating.__
    xpath.retractDeadRatingrequest :  f-1,
    <2006-07-05 10:18:13,820> <DEBUG> <default.collaxa.cube.services>
     <OracleRuleSession::executeUnitOfWork> <== Activation: creditrating.__
    xpath.retractDeadRatingrequestType :  f-1,
    <2006-07-05 10:18:13,820> <DEBUG> <default.collaxa.cube.services>
     <OracleRuleSession::executeUnitOfWork> <== Activation:
     PrivateCustomerRatingRules.Default :  f-1
    <2006-07-05 10:18:13,820> <DEBUG> <default.collaxa.cube.services>
     <OracleRuleSession::executeUnitOfWork> <== Activation:
     PrivateCustomerRatingRules.HighRiskCustomers :  f-1
    <2006-07-05 10:18:13,830> <DEBUG> <default.collaxa.cube.services>
     <OracleRuleSession::executeUnitOfWork>  ==> f-2
     creditrating.RatingImpl(DOMNode : oracle.xml.parser.v2.XMLElement@1b1d896)
    <2006-07-05 10:18:13,830> <DEBUG> <default.collaxa.cube.services>
     <OracleRuleSession::executeUnitOfWork> ==> Activation: creditrating.__
    xpath.retractDeadRating :  f-2,
    <2006-07-05 10:18:13,830> <DEBUG> <default.collaxa.cube.services>
     <OracleRuleSession::executeUnitOfWork> ==> Activation: creditrating.__
    xpath.retractDeadRatingType :  f-2,
    <2006-07-05 10:18:13,830> <DEBUG> <default.collaxa.cube.services>
     <OracleRuleSession::executeUnitOfWork> Ruleset PrivateCustomerRatingRules
     executed, 1 rules fired.
    

18.7.3 assertXPathのカスタマイズ

Oracle Business Rulesでは、ファクトのアサート時にXPath式を指定できます。これによりアサーションの数が減少し、単一のassert文で複数のファクトをアサートする便利なメカニズムが得られます。

この機能はOracle JDeveloperで使用可能です。「デシジョン・サービス・ウィザード」の「ルール・セットまたは関数の選択」ウィンドウで「最上位レベル要素のすべての子をアサートするには、ここをクリックしてください。」を選択します。このオプションを選択すると、アサートするファクト用にデフォルトのXPath "//*"が作成されます。これにより、ファクト要素のすべての子が実行時にアサートされます。

このXPath式は、次のファイル内のデシジョン・サービス構成を変更して手動でカスタマイズできます。

JDev_Oracle_Home¥jdev¥mywork¥application_name¥
process_name¥decisionservices¥DecisionService¥war¥WEB-INF¥
classes¥decisionservices.xml

次の例に、このオプションがファクト・タイプに対して有効化されている様子を示します。

<?xml version = '1.0' encoding = 'UTF-8'?>
<decisionServices xmlns="http://xmlns.oracle.com/bpel/rules">
  <ruleEngineProvider name="CreditRatingRuleRepository"
                      provider="Oracle">
    <repository type="File">
      <file>repositoryresource:CreditRatingRepository</file>
    </repository>
  </ruleEngineProvider>
  <decisionService name="CreditRatingAgent"
                   targetNamespace="http://xmlns.oracle.com/AutoLoanFlow/CreditRatingAgent"
                     ruleEngineProviderReference="CreditRatingRuleRepository">
    <catalog>RatingFY06</catalog>
    <catalogVersion>Approved_060205</catalogVersion>
    <ruleset>PrivateCustomerRatingRules</ruleset>
    <pattern name="AssertExecuteWatchStateless">
      <arguments>
        <assert xpath="//*">creditrating.Ratingrequest</assert>
        <watch>creditrating.Rating</watch>
      </arguments>
    </pattern>
  </decisionService>
</decisionServices>

デシジョン・サービスをデプロイする前に、属性xpath="//*"をカスタマイズできます。

18.8 BPELプロセスとビジネス・ルールの統合例

この項では、BPELプロセスを設計してビジネス・ルール・エンジンのビジネス・ルールと統合する方法について説明します。この例はより大きいチュートリアルの一部です。そのチュートリアルでは、ヒューマン・ワークフローを使用するように、このBPELプロセスを設計する方法も説明しています。この項では、BPELプロセスとビジネス・ルールの統合を説明している部分のみを使用しています。

この項の内容は次のとおりです。


関連項目:

完全なAutoLoanDemoチュートリアルは、次の場所にあります。このチュートリアルは、ビジネス・ルールと連携してヒューマン・ワークフローを使用するBPELプロセスの設計方法を説明しています。
SOA_Oracle_Home¥bpel¥samples¥demos¥AutoLoanDemo

18.8.1 タスク1: Oracle Business Rules Rule Authorを使用したルールの更新

この項では、Oracle Business Rules Rule Authorにアクセスし、後でBPELプロセスと統合するビジネス・ルールを変更する方法について説明します。

  1. Oracle Business Rules Rule Authorにログインします。

    http://hostname:port/ruleauthor
    
    

    Oracle Business Rules Rule Authorは、SOA Suiteの「基本インストール」タイプで自動的にインストールされます。

  2. oc4jadmin/passwordとしてログインします。

    passwordは、インストール時に入力したoc4jadminのパスワードです。

  3. 上部の「リポジトリ」タブをクリックします。

  4. 「リポジトリ・タイプ」リストから「ファイル」を選択します。

  5. 「参照」をクリックし、SOA_Oracle_Home¥bpel¥samples¥demos¥AutoLoanDemo¥repositoryディレクトリからCreditRatingRepositoryファイル・リポジトリを選択します。

    このページには次の詳細が表示されます。

    図ds_rules1.gifの説明が続きます
    図ds_rules1.gifの説明

  6. 「接続」をクリックします。

    リポジトリへの接続が確立されたことを示すメッセージが表示されます。

  7. 上部の「カスタマイズ」タブをクリックします。

  8. 手順5で選択したリポジトリからルール・ディクショナリとそのバージョンをロードするために、次の詳細を入力します。

    フィールド
    既存のディクショナリ RatingFY06
    バージョン Approved_060205

    このページには次の詳細が表示されます。

    図ds_rules2.gifの説明が続きます
    図ds_rules2.gifの説明

  9. 「ロード」をクリックします。

    確認メッセージが表示されます。

    Dictionary 'RatingFY06 (Approved_060205)' has been loaded
    
    
  10. 上部の「カスタマイズ」タブをクリックします。ここでルール・セット内のルールを変更します。

  11. YoungCustomersルールをクリックし、request.customer age <40から45に変更します。

    このページには次の詳細が表示されます。

    図ds_rules3.gifの説明が続きます
    図ds_rules3.gifの説明

  12. 「適用」をクリックします。

    カスタマイズ内容が適用されたことを示すメッセージが表示されます。

  13. HighRiskCustomersルールをクリックし、request.customer age >=40から45に変更します。

  14. 「適用」をクリックします。

  15. 上部の「ディクショナリの保存」をクリックします。

  16. 「保存」をクリックします。

    これにより、現行のディクショナリのコンテンツ(更新内容を含む)がCreditRatingRepositoryリポジトリに保存されます。

  17. 「ログアウト」をクリックします。

18.8.2 タスク2: ビジネス・ルール・リポジトリへの接続の作成

この項では、ビジネス・ルール・リポジトリへの接続の作成方法について説明します。

  1. Oracle JDeveloperの「表示」メイン・メニューから「接続ナビゲータ」を選択します。

  2. 「ルール・エンジン」を右クリックして「新規ルール・エンジン接続」を選択します。

  3. 「ようこそ」ウィンドウで「次へ」をクリックします。

  4. 「接続名」フィールドにCreditRatingRuleRepositoryと入力します。

  5. 接続先ビジネス・ルール・エンジンのタイプとして「Oracle Rules Engineのファイル・リポジトリ」を選択します。

    図ds_name.gifの説明が続きます
    図ds_name.gifの説明

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

    「接続」ウィンドウが表示されます。

  7. フォルダ・アイコンをクリックし、ファイル・リポジトリがあるディレクトリを選択します。

  8. SOA_Oracle_Home¥bpel¥samples¥demos¥AutoLoanDemo¥repositoryディレクトリからCreditRatingRepositoryファイル・リポジトリを選択します。これは手順5でロードしたリポジトリです。

  9. 「開く」をクリックします。

    図ds_repos.gifの説明が続きます
    図ds_repos.gifの説明

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

    「接続のテスト」ウィンドウが表示されます。

  11. 「テスト」をクリックします。

    ビジネス・ルール・リポジトリへの接続に成功すると、次のメッセージが表示されます。

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

18.8.3 タスク3: BPELプロセスの作成とスキーマのインポート

ここでは、「タスク1: Oracle Business Rules Rule Authorを使用したルールの更新」で変更したビジネス・ルール・エンジンのビジネス・ルールを統合するBPELプロセスを作成します。

  1. 「アプリケーション・ナビゲータ」セクションでアプリケーションを右クリックします。

  2. 「新規プロジェクト」を選択し、新規のBPELプロセス・プロジェクトを定義します。

  3. 「項目」ウィンドウで「BPELプロセス・プロジェクト」をダブルクリックして、「BPELプロジェクト作成ウィザード」ウィンドウを表示します。

  4. 「名前」フィールドにAutoLoanFlowと入力します。他のすべてのフィールドは、非同期BPELプロセスの作成用として適切な値にデフォルト設定されます。

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

  6. 「入力スキーマ要素」フィールドの右側にある懐中電灯アイコンをクリックします。

  7. 「スキーマの選択」ウィンドウで、SOA_Oracle_Home¥bpel¥samples¥demos¥AutoLoanDemo¥AutoLoanFlow¥bpelディレクトリからAutoLoanTypes.xsdを選択して「開く」をクリックします。

    「タイプの選択」ウィンドウが表示されます。

  8. 「インポートしたスキーマ」「AutoLoanTypes.xsd」「loanApplication」を順番に開いて選択します。

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

  10. 「出力スキーマ要素」フィールドの右側にある懐中電灯アイコンをクリックします。

    「タイプの選択」ウィンドウが表示されます。

  11. 「インポートしたスキーマ」「AutoLoanTypes.xsd」「loanOffer」を順番に開いて選択します。

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

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

18.8.4 タスク4: デシジョン・サービス・パートナ・リンクの作成

ここでは、「デシジョン・サービス・ウィザード」を使用してビジネス・ルール・エンジンに接続し、「タスク1: Oracle Business Rules Rule Authorを使用したルールの更新」で変更したルール・セットを、BPELプロセスで使用するWebサービスに変換します。完了すると、デシジョン・サービス・パートナ・リンクが作成されます。

  1. Oracle JDeveloperの右上にある「コンポーネント・パレット」セクションのドロップダウン・リストで、「サービス」が選択されていることを確認します。

  2. 「デシジョン・サービス」を、デザイナ・ウィンドウの右側でヘッダー「サービス」の下の任意の場所にドラッグ・アンド・ドロップします。

    「ルール・セットまたは関数の選択」ウィンドウが表示されます。

    このウィンドウで起動パターンを選択できます。

  3. 次の詳細を入力します。

    フィールド
    サービス名 CreditRatingAgent

    注意: 完了すると、これがパートナ・リンク名になります。

    ネームスペース http://xmlns.oracle.com/myLoanProcess/CreditRatingAgent

    注意: このフィールドには「サービス名」フィールドへの入力内容が自動的に入力されます。

    起動パターン ルール・セットの実行

    これで、ウィンドウは次のようになります。

    図ds_create.gifの説明が続きます
    図ds_create.gifの説明

  4. 「ルール・セット」フィールドの横にある懐中電灯アイコンをクリックします。

    「ルール・エクスプローラ」ウィンドウが表示されます。

    このウィンドウでは、「タスク1: Oracle Business Rules Rule Authorを使用したルールの更新」で変更したリポジトリのディクショナリ内でルール・セットを参照して選択できます。

  5. ウィンドウ下部の「すべてのバージョンを表示」をクリックして、指定のリポジトリにあるルール・ディクショナリのカタログ・バージョンをすべて表示します。ビジネス・ルール・リポジトリには、複数のルール・ディクショナリおよびバージョンが含まれていることがあります。

  6. 「CreditRatingRuleRepository」「RatingFY06」「Approved_060205」「PrivateCustomerRatingRules」を順番に開いて選択します。

    図ds_showall.gifの説明が続きます
    図ds_showall.gifの説明

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

    「デシジョン・サービス・ウィザード」の「ルール・セットまたは関数の選択」ウィンドウに戻ります。ファクト表に、PrivateCustomerRatingRulesルール・セットのファクト名がすべて表示されていることに注意してください。

  8. 入力(「ファクトをアサートしますか。」)および出力(「ファクトを監視しますか。」)ファクト・タイプを選択します。

    • Ratingrequestファクト・タイプの「ファクトをアサートしますか。」チェック・ボックスを選択します。

      これにより、ファクトがルール・セットに対してアサート(ファクト・データがビジネス・ルール・エンジンに送信)されます。

    • Ratingファクト・タイプの「ファクトを監視しますか。」チェック・ボックスを選択します。

      これにより、ルール・セットから結果が返されます。手順3で結果を取得する起動パターンを選択したため、この表列のみが表示されます。

    図ds_facts.gifの説明が続きます
    図ds_facts.gifの説明

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

    このウィンドウには、ウィザードでインポートするスキーマ・ファイルが表示されます。

    図ds_schema.gifの説明が続きます
    図ds_schema.gifの説明

  10. 「次へ」と「終了」を順番にクリックします。

    手順3で指定した名前でパートナ・リンクが作成されます。このパートナ・リンクは、BPELプロセスとビジネス・ルール・エンジンの間のインタフェースを提供します。

    図ds_pl.gifの説明が続きます
    図ds_pl.gifの説明

  11. 「ファイル」メイン・メニューから「保存」を選択します。

18.8.5 タスク5: Decideアクティビティの作成

ここでは、「デシジョン・サービス・ウィザード」で作成したデシジョン・サービス・パートナ・リンクを起動するdecideアクティビティを作成します。decideアクティビティを使用すると、ルール・セット(現在はパートナ・リンクに含まれています)のファクト・タイプとBPEL変数の間でコピー操作割当てを作成できます。ルール・セットへの入力ファクトを提供して結果を取得します。これにより、BPELプロセスからルールを起動できます。完了すると、デシジョン・サービス・パートナ・リンクに対するassignおよびinvokeアクティビティで構成されるdecideアクティビティが作成されます。

  1. Decideアクティビティをデザイナ・ウィンドウのreceiveInput receiveアクティビティの下にドラッグ・アンド・ドロップします。

  2. 次の値を入力します。

    フィールド
    名前 GetCreditRating
    デシジョン・サービス CreditRatingAgent
    操作 ファクトのアサート、ルール・セットの実行、結果の取出し、セッションのリセット

  3. 「入力ファクトの割当て」をクリックします。

    ここで、BPEL入力変数を、Ratingrequest入力(アサート)ファクト・タイプに対応して自動的に作成されたBPEL変数にマップします。

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

  5. 次の詳細を入力します。

    フィールド
    送信元
    • タイプ
    変数
    • 変数
    「変数」「inputVariable」「payload」「ns1:loanApplication」「ns1:SSN」を順番に開いて選択します。

    注意: ネームスペース番号値(ns1ns2など)は変更される場合があります。自動的に表示されるネームスペース値を使用します。

    宛先
    • タイプ
    変数
    • 変数
    「変数」「creditrating_Ratingrequest_i」「ns3:ratingrequest」「ns3:SSN」を順番に開いて選択します。

    このウィンドウは次のように表示されます。

    図ds_assign.gifの説明が続きます
    図ds_assign.gifの説明

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

  7. 再度「作成」をクリックして第2のコピー操作を作成します。

  8. 次の詳細を入力します。

    フィールド
    送信元
    • タイプ
    変数
    • 変数
    「変数」「inputVariable」「payload」「ns1:loanApplication」「ns1:customerName」を順番に開いて選択します。
    宛先
    • タイプ
    変数
    • 変数
    「変数」「creditrating_Ratingrequest_i」「ns3:ratingrequest」「ns3:name」を順番に開いて選択します。

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

  10. 再度「作成」をクリックして第3のコピー操作を作成します。

  11. 次の詳細を入力します。

    フィールド
    送信元
    • タイプ
    変数
    • 変数
    「変数」「inputVariable」「payload」「ns1:loanApplication」「ns1:loanAmount」を順番に開いて選択します。
    宛先
    • タイプ
    変数
    • 変数
    「変数」「creditrating_Ratingrequest_i」「ns3:ratingrequest」「ns3:amount」を順番に開いて選択します。

  12. 「適用」をクリックします。

    編集Decideウィンドウに次の入力ファクト・マッピングが表示されます。

    図ds_decide.gifの説明が続きます
    図ds_decide.gifの説明

  13. 「出力ファクトの割当て」をクリックします。

    ここで、Rating出力ファクト・タイプに対応して自動的に作成されたBPEL変数をBPEL入力変数にマップします。

  14. 「作成」をクリックします。

  15. 次の詳細を入力して出力ファクトを作成します。

    フィールド
    送信元
    • タイプ
    変数
    • 変数
    「変数」「creditrating_Rating_o」「ns2:rating」「ns2:rating」を順番に開いて選択します。

    注意: ネームスペース番号値(ns1ns2など)は変更される場合があります。自動的に表示されるネームスペース値を使用します。

    宛先
    • タイプ
    変数
    • 変数
    「変数」「inputVariable」「payload」「ns3:loanApplication」「ns3:creditRating」を順番に開いて選択します。

    このウィンドウは次のように表示されます。

    図ds_assign1.gifの説明が続きます
    図ds_assign1.gifの説明

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

  17. 再度「作成」をクリックして第2のコピー操作を作成します。

  18. 次の詳細を入力します。

    フィールド
    送信元
    • タイプ
    変数
    • 変数
    「変数」「creditrating_Rating_o」「ns2:rating」「ns2:risk」を順番に開いて選択します。
    宛先
    • タイプ
    変数
    • 変数
    「変数」「inputVariable」「payload」「ns3:loanApplication」「ns3:creditRisk」を順番に開いて選択します。

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

  20. 再度「作成」をクリックして第3のコピー操作を作成します。

  21. 次の詳細を入力します。

    フィールド
    送信元
    • タイプ
    変数
    • 変数
    「変数」「creditrating_Rating_o」「ns2:rating」「ns2:maxAmount」を順番に開いて選択します。
    宛先
    • タイプ
    変数
    • 変数
    「変数」「inputVariable」「payload」「ns3:loanApplication」「ns3:creditMaxAmount」を順番に開いて選択します。

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

    編集Decideウィンドウに次の出力ファクト・マッピングが表示されます。

    図ds_decide2.gifの説明が続きます
    図ds_decide2.gifの説明

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

    作成を完了すると、デシジョン・サービス・パートナ・リンクに対するassignおよびinvokeアクティビティで構成されるdecideアクティビティが作成されます。

    図ds_finish.gifの説明が続きます
    図ds_finish.gifの説明

  24. 「+」記号をクリックしてGetCreditRating decideアクティビティを開き、assignアクティビティとinvokeアクティビティを表示します。

    これでBPELプロセスがビジネス・ルール・エンジンのビジネス・ルールと統合されました。後でビジネス・ルールの内容を変更する場合、BPELプロセスを再設計する必要はありません。

  25. 「ファイル」メイン・メニューから「保存」を選択します。