ヘッダーをスキップ

Oracle Business Rules ユーザーズ・ガイド
10g(10.1.3.1.0)

B31866-02
目次
目次
索引
索引

戻る 次へ

5 JSR-94の使用

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

5.1 Oracle Business RulesでのJSR-94ルール実行セットの使用

Rule AuthorまたはRL Languageテキストのいずれかを使用して作成されたルールとともにJSR-94を使用するには、それらのルールをJSR-94ルール実行セットにマップする必要があります。JSR-94ルール実行セット(ルール実行セット)は、一括して実行することを目的としたルールのコレクションです。ルール実行セットは、実行する前に登録する必要があります。この登録によって、ルール実行セットがURIに関連付けられます。JSR-94ルール・セッションは、このURIを使用して作成できます。

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

5.1.1 ファイル・リポジトリのルールセットからのJSR-94ルール実行セットの作成

Rule Authorを使用して作成したルールは、ディクショナリ・ストレージ・プラグインを使用してディクショナリに保存できます。Rule Authorを使用して作成したルールとともにJSR-94を使用するには、Rule Authorディクショナリとその内容をJSR-94ルール実行セットにマップする必要があります。

Rule AuthorディクショナリをJSR-94とともに使用する手順は、次のとおりです。

  1. Rule Authorディクショナリのマッピング情報をXML文書に指定します。表5-1に、ルール実行セットの作成に必要なマッピング要素を示します。例5-1には、サンプルのXMLマッピング・ファイルを示します。

  2. 次に、このXML文書をJSR-94管理APIで使用して、ルール実行セットを作成します。作成したルール実行セットは、RuleAdministrationインスタンスを使用して、JSR-94ランタイムに登録されます。

    表 5-1    ファイル・リポジトリのJSR-94のXMLマッピング要素 
    要素  説明 

    <repository-location> 

    ファイル・リポジトリ・パス: このパスは、実行時の現行ディレクトリへの絶対パスまたは相対パスにできます。 

    <dictionary-name> 

    ディクショナリ名。 

    <dictionary-version> 

    ディクショナリのバージョン。 

    <ruleset-list> 

    ディクショナリから抽出するRule Authorルールセットのリスト。ルールセットは相互の依存性を解決するために、解析される順にリストされます。

    注意: データ・モデルに関連付けられたルールセットは<ruleset-list>要素に含まれません。JSR-94の実装では、この要素にルールセットがリストされる前に、データ・モデル・ルールセットがRules Engineにロードされます。 

    <ruleset-stack> 

    初期ルールセット・スタックを構成するルールセットのリストを指定します。リストに指定するルールセットの順序は、スタックの最上位から最下位です。 

    例 5-1    ファイル・リポジトリのJSR-94 XMLマッピング・ファイル

    <rule-execution-set xmlns="http://xmlns.oracle.com/rules/jsr94/configuration" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
       <name>CarRentalDemo</name>
       <description>The Car Rental Demo</description>
       <rule-source>
          <file-repository>
             <repository-location>dict/CarRepository</repository-location>
             <dictionary-name>CarRental</dictionary-name>
             <dictionary-version>HowTo</dictionary-version>
             <ruleset-list>
                <ruleset-name>vehicleRent</ruleset-name>
             </ruleset-list>
          </file-repository>
       </rule-source>
       <ruleset-stack>
          <ruleset-name>vehicleRent</ruleset-name>
       </ruleset-stack>
    </rule-execution-set>
    

    関連項目:

    $ORACLE_HOME/rules/lib/jsr94_obr.jarのXSDファイル(oracle/rules/jsr94/admin/jsr94-runtime-configuration-1.0.xsdにあります) 

5.1.2 WebDAVリポジトリからのJSR-94ルール実行セットの作成

Rule Authorを使用して作成したルールは、ディクショナリ・ストレージ・プラグインを使用してWebDAVリポジトリに保存できます。WebDAVリポジトリに格納されたルールとともにJSR-94を使用するには、1つ以上のルールセットをWebDAVリポジトリからJSR-94ルール実行セットにマップする必要があります。

ファイル・リポジトリに格納されたルールをJSR-94とともに使用する手順は、次のとおりです。

  1. WebDAVリポジトリのマッピング情報をXML文書に指定します。表5-2に、ルール実行セットの作成に必要なマッピング要素を示します。例5-2には、サンプルのXMLマッピング・ファイルを示します。

  2. 次に、このXML文書をJSR-94管理APIで使用して、ルール実行セットを作成します。作成したルール実行セットは、RuleAdministrationインスタンスを使用して、JSR-94ランタイムに登録されます。

    表 5-2    JSR-94のWebDAVリポジトリのXMLマッピング要素 
    要素  説明 

    <repository-url> 

    WebDAVリポジトリのURL。 

    <proxy-host> 

    プロキシ・ホスト名(プロキシがある場合)。これは、オプション要素です。 

    <proxy-port> 

    プロキシ・ポート(プロキシがある場合)。これは、オプション要素です。 

    <dictionary-name> 

    ディクショナリ名。 

    <dictionary-version> 

    ディクショナリのバージョン。 

    <ruleset-list> 

    ディクショナリから抽出するRule Authorルールセットのリスト。ルールセットは相互の依存性を解決するために、解析される順にリストされます。

    注意: データ・モデルに関連付けられたルールセットは<ruleset-list>要素に含まれません。JSR-94の実装では、この要素にルールセットがリストされる前に、データ・モデル・ルールセットがRules Engineにロードされます。 

    <ruleset-stack> 

    初期ルールセット・スタックを構成するルールセットのリストを指定します。リストに指定するルールセットの順序は、スタックの最上位から最下位です。 

    例 5-2    WebDAVリポジトリのJSR-94マッピング・ファイル

    <rule-execution-set xmlns="http://xmlns.oracle.com/rules/jsr94/configuration" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
       <name>CarRentalDemo</name>
       <description>The Car Rental Demo</description>
       <rule-source>
          <webdav-repository>
             <repository-url>
                http://www.some_server.com/rules_repository
             </repository-url>
             <dictionary-name>CarRental</dictionary-name>
             <dictionary-version>HowTo</dictionary-version>
             <ruleset-list>
                <ruleset-name>vehicleRent</ruleset-name>
             </ruleset-list>
          </webdav-repository>
       </rule-source>
       <ruleset-stack>
          <ruleset-name>vehicleRent</ruleset-name>
       </ruleset-stack>
    </rule-execution-set>
    

5.1.3 Oracle Business Rules RL Languageテキストからのルール実行セットの作成

JSR-94は、テキストとして保存されたRL Languageルールセットとともに使用できます。この場合、RL Languageテキストはルール実行セットに直接挿入されます。

RL Languageで指定したルールをJSR-94とともに使用する手順は、次のとおりです。

  1. RL Languageのマッピング情報をXML文書に指定します。表5-3に、ルール実行セットの作成に必要なマッピング要素を示します。例5-3には、RL LanguageテキストをJSR-94ルール実行セットにマッピングするためのサンプルのXML文書を示します。

  2. 次に、このXML文書をJSR-94管理APIで使用して、ルール実行セットを作成します。作成したルール実行セットは、RuleAdministrationインスタンスを使用して、JSR-94ランタイムに登録されます。

    表 5-3    JSR-94のOracle Business Rules RL LanguageテキストXMLマッピング要素 
    要素  説明 

    <rule-source> 

    <rl-text>タグが含まれます。このタグには、Oracle Business Rulesルールセットを含む明示的なRL Languageテキストが含まれます。複数の<rule-source>タグを使用して、複数のルールセットを指定できます(ルールセットは解析される順に指定します)。 

    <ruleset-stack> 

    初期ルールセット・スタックを構成するルールセットのリストを指定します。リストに指定するルールセットの順序は、スタックの最上位から最下位です。 


    注意:

    <rl-text>要素に、事前定義済のXMLエンティティを含めることはできません。これには、「&」、「>」、「<」、「"」および「¥」の各文字が含まれます。 


    例 5-3    RLプログラムで定義されたルールセットのXMLマッピング・ファイル

    <rule-execution-set xmlns="http://xmlns.oracle.com/rules/jsr94/configuration" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
       <name>CarRentalDemo</name>
       <description>The Car Rental Demo</description>
       <rule-source>
          <rl-text>
             ruleset DM {
                fact class carrental.Driver {
                   hide property ableToDrive, driverLicNum, licIssueDate, licenceType,
                   llicIssueDate, numPreAccidents, numPreConvictions,
                   numYearsSinceLicIssued, vehicleType;
                };
    
                   final String DeclineMessage = &quot;Rental declined &quot;;
    
                   public class Decision  supports xpath {
                      public String driverName;
                      public String type;
                      public String message;
                   }
    
                   function assertXPath(String package,
                                        java.lang.Object element, String xpath) {
                      //RL literal statement
                      main.assertXPath( package, element, xpath );
                   }
    
                   function println(String message) {
                      //RL literal statement
                      main.println(message);
                   }
    
    
                   function showDecision(DM.Decision decision) {
                      //RL literal statement
                      DM.println( &quot;Rental decision is &quot; + decision.type +
                                  &quot; for driver &quot; + decision.driverName +
                                  &quot; for reason &quot; + decision.message);
                   }
             }
          </rl-text>
       </rule-source>
       <rule-source>
          <rl-text>
             ruleset vehicleRent {
                rule UnderAge {
                   priority = 0;
                   if ((fact carrental.Driver v0_Driver &amp;&amp;
                      (v0_Driver.age &lt; 19))) {
                      DM.println( &quot;Rental declined: &quot; + v0_Driver.name +
                                  &quot; Under age, age is: &quot; + v0_Driver.age);
                      retract(v0_Driver);
                   }
                }
             }
          </rl-text>
       </rule-source>
       <ruleset-stack>
          <ruleset-name>vehicleRent</ruleset-name>
       </ruleset-stack>
    </rule-execution-set>
    

    関連項目:

    RL Languageテキストを挿入する際に使用できるJSR-94拡張機能については、「拡張されたcreateRuleExecutionSetを使用したルール実行セットの作成」を参照してください。 

5.1.4 URLで指定したRL Languageテキストからのルール実行セットの作成

JSR-94は、URLを使用して指定したRL Languageルールセットとともに使用できます。

RL Languageで指定したルールとともにJSR-94を使用する手順は、次のとおりです。

  1. RL Languageのマッピング情報をXML文書に指定します。表5-4に、ルール実行セットの作成に必要なマッピング要素を示します。例5-4には、RL LanguageテキストをJSR-94ルール実行セットにマッピングするためのサンプルのXML文書を示します。

  2. 次に、このXML文書をJSR-94管理APIで使用して、ルール実行セットを作成します。作成したルール実行セットは、RuleAdministrationインスタンスを使用して、JSR-94ランタイムに登録されます。

    表 5-4    JSR-94のOracle Business Rules RL Language URL XMLマッピング要素 
    要素  説明 

    <rule-source> 

    <rl-url>タグが含まれます。このタグには、RL Languageテキストの場所を指定するURLが含まれます。複数の<rule-source>タグを使用して、複数のルールセットを指定できます(ルールセットは解析される順に指定します)。 

    <ruleset-stack> 

    初期ルールセット・スタックを構成するルールセットのリストを指定します。リストに指定するルールセットの順序は、スタックの最上位から最下位です。 

    例 5-4    URLで定義されたルールセットのXMLマッピング・ファイル

    <?xml version="1.0" encoding="UTF-8"?>
    <rule-execution-set xmlns="http://xmlns.oracle.com/rules/jsr94/configuration" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
       <name>CarRentalDemo</name>
       <description>The Car Rental Demo</description>
       <rule-source>
          <rl-url>
             file:rl/DM.r1
          </rl-url>
       </rule-source>
       <rule-source>
          <rl-url>
             file:r1/VehicleRent.r1
          </rl-url>
       </rule-source>
       <ruleset-stack>
          <ruleset-name>vehicleRent</ruleset-name>
       </ruleset-stack>
    </rule-execution-set>
    

    関連項目:

    URLを指定する際に使用できるJSR-94拡張機能については、「拡張されたcreateRuleExecutionSetを使用したルール実行セットの作成」を参照してください。 

5.1.5 複数のソースからのルールセットを持つルール実行セットの作成

ルール実行セットには、複数のソースから導出されたルールを含めることができます。そのソースとして、Rule Authorで定義されたルールセットとRL Languageルールセットが混在しても構いません。この場合、XML要素<rule-execution-set>セットには、複数の<rule-source>要素を含めることができます(ルールの各ソースに対して1つ)。各<rule-source>は、Rules Engineで解析される順にリストする必要があります。


注意:

このリリースのOracle Business Rulesでは、JSR-94ルール実行セットで参照できるのは1つのRule Authorディクショナリのみです。 


5.2 JSR-94インタフェースをOracle Business Rulesとともに使用

この項では、JSR-94インタフェースに関してOracle Business Rules固有の事項を説明します。この項の内容は次のとおりです。

5.2.1 CreateRuleExecutionSetを使用したルール実行セットの作成

javax.rules.adminRuleExecutionSetProviderおよびLocalRuleExecutionSetProviderインタフェースには、RuleExecutionSetオブジェクトを作成するためのcreateRuleExecutionSetが含まれています。

createRuleExecutionSetメソッドを使用するために、最初の引数は表5-5に示すように解析されます。

表 5-5    createRuleExecutionSetメソッドの最初の引数の種類 
引数  説明 

org.w3c.dom.Element 

構成スキーマからの<rule-execution-set>要素のインスタンスを指定します。 

java.lang.String 

構成スキーマからの<rule-execution-set>要素のインスタンスであるXML文書の場所のURLを指定します。 

java.io.InputStream 

構成スキーマからの<rule-execution-set>要素のインスタンスであるXML文書を読み込むために使用する入力スキームを指定します。 

java.io.Reader 

構成スキーマからの<rule-execution-set>要素のインスタンスであるXML文書を読み込むために使用する文字読取装置を指定します。 


注意:

JSR-94には、java.lang.Object引数を取るcreateRuleExecutionSetメソッドも含まれます。この引数は、ルール実行セットの抽象的な構文ツリー用です。このリリースのOracle Business Rulesでは、この引数を取るメソッドの使用はサポートされていません。java.lang.Object引数を使用してメソッドを起動すると、RuleExecutionSetCreateException例外が発生します。 


createRuleExecutionSetメソッドの第2引数は、ベンダー固有プロパティのjava.util.Mapです。表5-6に、Oracle JSR-94実装に有効なプロパティを示します。

表 5-6    createRuleExceptionSetのOracle固有プロパティ 
プロパティ・キー  プロパティ値 

oracle.rules.jsr94.sensitiveDataCallback 

このプロパティは、選択したリポジトリ(たとえば、認証を要求するように構成されたWebDAVサーバー)で認証が必要な場合に設定されます。プロパティ値は、oracle.rules.sdk.repository.SensitiveDataCallbackインタフェースの実装である必要があります。 

5.2.2 createRuleSessionを使用したルール・セッションの作成

クライアントでは、RuleRuntimeクラスのcreateRuleSessionメソッドを使用して、JSR-94ルール・セッションを作成します。このメソッドは、ベンダー固有プロパティのjava.util.Map引数を取ります。この引数は、Oracle Business Rules oracle.rules.rl.RuleSessionに対して定義されたプロパティを渡すために使用できます。ルール実行セットにURLまたはリポジトリ・ルール・ソースが含まれる場合、そのソースからのルールは、新規のRuleSessionが作成されるたびに取得されます。

5.2.3 JSR-94メタデータの使用

JSR-94では、ルール実行セットおよびルール実行セット内のルールに対して、メタデータを使用できます。Oracle Business Rules実装では、JSR-94仕様以外のメタデータは追加されません。ルール実行セットの説明はオプション項目であるため、説明がない場合があります。説明がない場合は、空の文字列が戻されます。ルールについては、ルール名のみが使用可能で、説明は空の文字列で初期化されます。

5.2.4 Oracle Business RulesのJSR-94拡張機能の使用

この項では、JSR-94実装クラスで提供される次の拡張機能について説明します。

5.2.4.1 拡張されたcreateRuleExecutionSetを使用したルール実行セットの作成

Oracle Business Rulesには、RuleExecutionSetを作成する際に入力として必要なXML制御ファイルを簡単に作成するために、ヘルパー関数が用意されています。

RLLocalRuleExecutionSetProviderクラスのヘルパー・メソッドcreateRuleExecutionSetを使用できます。createRuleExecutionSetメソッドには、次のシグネチャがあります。

RuleExecutionSet createRuleExecutionSet(String name,
                                        String description,
                                        RuleSource[] sources,
                                        String[] rulesetStack,
                                        Map properties)

表5-7に、createRuleExecutionSetの引数を示します。

表 5-7    createRuleExecutionSetの引数 
引数  説明 

name 

ルール実行セットの名前を指定します。 

description 

ルール実行セットの説明を指定します。 

sources 

ルールのソースを指定する配列を指定します。このリリースでは、RL Languageテキスト、RL LanguageテキストへのURL、ファイル・リポジトリ(.jarファイル)およびWebDAVリポジトリの4種類のソースがサポートされています。RuleSourceは、RLTextSource(RL Languageテキスト)、RLUrlSource(RL Language URL)、JarRepositorySource(ファイル・リポジトリ)およびWebDAVRepositorySource(WebDAVリポジトリ)の各クラスによって実装されるインタフェースです。

詳細は、『Oracle Business Rules Java API Reference』のoracle.rules.jsr94.adminパッケージに関する説明を参照してください。 

rulesetstack 

ルールの実行前に設定されるRL Languageルールセット・スタックの初期内容を指定します。配列の内容は、スタックの最上位(0番目の要素)から最下位(最後の要素)の順に指定します。 

properties 

Oracle固有プロパティ。表5-6を参照してください。 

5.2.4.2 JSR-94でのRL Language関数の起動

JSR-94ルール・セッションとのステートフルな相互作用では、ユーザーが任意にRL Language関数を起動できることが必要です。JSR-94 StatefulRuleSessionインタフェースを実装するクラスによって、oracle.rules.rl.RuleSessionクラスのcallFunctionメソッドにアクセスできます。

例5-5に、JSR-94 StatefulRuleSessionで引数なしのRL Language関数を起動する方法を示します。

例 5-5    StatefulRuleSessionでのCallFunctionの使用

import javax.rules.*;
 ...
StatefulRuleSession session;
...
((oracle.rules.jsr94.RLStatefulRuleSession) session).callFunction("myFunction");

戻る 次へ
Oracle
Copyright © 2005, 2006, Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引