Oracle Business Rules ユーザーズ・ガイド 10g(10.1.3.1.0) B31866-02 |
|
この章の内容は次のとおりです。
Rule AuthorまたはRL Languageテキストのいずれかを使用して作成されたルールとともにJSR-94を使用するには、それらのルールをJSR-94ルール実行セットにマップする必要があります。JSR-94ルール実行セット(ルール実行セット)は、一括して実行することを目的としたルールのコレクションです。ルール実行セットは、実行する前に登録する必要があります。この登録によって、ルール実行セットがURIに関連付けられます。JSR-94ルール・セッションは、このURIを使用して作成できます。
この項の内容は次のとおりです。
Rule Authorを使用して作成したルールは、ディクショナリ・ストレージ・プラグインを使用してディクショナリに保存できます。Rule Authorを使用して作成したルールとともにJSR-94を使用するには、Rule Authorディクショナリとその内容をJSR-94ルール実行セットにマップする必要があります。
Rule AuthorディクショナリをJSR-94とともに使用する手順は、次のとおりです。
RuleAdministration
インスタンスを使用して、JSR-94ランタイムに登録されます。
表 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>
Rule Authorを使用して作成したルールは、ディクショナリ・ストレージ・プラグインを使用してWebDAVリポジトリに保存できます。WebDAVリポジトリに格納されたルールとともにJSR-94を使用するには、1つ以上のルールセットをWebDAVリポジトリからJSR-94ルール実行セットにマップする必要があります。
ファイル・リポジトリに格納されたルールをJSR-94とともに使用する手順は、次のとおりです。
表 5-2 JSR-94のWebDAVリポジトリの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> <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>
JSR-94は、テキストとして保存されたRL Languageルールセットとともに使用できます。この場合、RL Languageテキストはルール実行セットに直接挿入されます。
RL Languageで指定したルールをJSR-94とともに使用する手順は、次のとおりです。
RuleAdministration
インスタンスを使用して、JSR-94ランタイムに登録されます。
表 5-3 JSR-94のOracle Business Rules RL Languageテキスト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 = "Rental declined "; 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( "Rental decision is " + decision.type + " for driver " + decision.driverName + " for reason " + decision.message); } } </rl-text> </rule-source> <rule-source> <rl-text> ruleset vehicleRent { rule UnderAge { priority = 0; if ((fact carrental.Driver v0_Driver && (v0_Driver.age < 19))) { DM.println( "Rental declined: " + v0_Driver.name + " Under age, age is: " + 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を使用したルール実行セットの作成」を参照してください。 |
JSR-94は、URLを使用して指定したRL Languageルールセットとともに使用できます。
RL Languageで指定したルールとともにJSR-94を使用する手順は、次のとおりです。
RuleAdministration
インスタンスを使用して、JSR-94ランタイムに登録されます。
表 5-4 JSR-94のOracle Business Rules RL Language 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>
ルール実行セットには、複数のソースから導出されたルールを含めることができます。そのソースとして、Rule Authorで定義されたルールセットとRL Languageルールセットが混在しても構いません。この場合、XML要素<rule-execution-set>
セットには、複数の<rule-source>
要素を含めることができます(ルールの各ソースに対して1つ)。各<rule-source>
は、Rules Engineで解析される順にリストする必要があります。
この項では、JSR-94インタフェースに関してOracle Business Rules固有の事項を説明します。この項の内容は次のとおりです。
javax.rules.admin
のRuleExecutionSetProvider
およびLocalRuleExecutionSetProvider
インタフェースには、RuleExecutionSet
オブジェクトを作成するためのcreateRuleExecutionSet
が含まれています。
createRuleExecutionSet
メソッドを使用するために、最初の引数は表5-5に示すように解析されます。
createRuleExecutionSet
メソッドの第2引数は、ベンダー固有プロパティのjava.util.Map
です。表5-6に、Oracle JSR-94実装に有効なプロパティを示します。
クライアントでは、RuleRuntime
クラスのcreateRuleSession
メソッドを使用して、JSR-94ルール・セッションを作成します。このメソッドは、ベンダー固有プロパティのjava.util.Map
引数を取ります。この引数は、Oracle Business Rules oracle.rules.rl.RuleSession
に対して定義されたプロパティを渡すために使用できます。ルール実行セットにURLまたはリポジトリ・ルール・ソースが含まれる場合、そのソースからのルールは、新規のRuleSession
が作成されるたびに取得されます。
JSR-94では、ルール実行セットおよびルール実行セット内のルールに対して、メタデータを使用できます。Oracle Business Rules実装では、JSR-94仕様以外のメタデータは追加されません。ルール実行セットの説明はオプション項目であるため、説明がない場合があります。説明がない場合は、空の文字列が戻されます。ルールについては、ルール名のみが使用可能で、説明は空の文字列で初期化されます。
この項では、JSR-94実装クラスで提供される次の拡張機能について説明します。
Oracle Business Rulesには、RuleExecutionSet
を作成する際に入力として必要なXML制御ファイルを簡単に作成するために、ヘルパー関数が用意されています。
RLLocalRuleExecutionSetProvider
クラスのヘルパー・メソッドcreateRuleExecutionSet
を使用できます。createRuleExecutionSet
メソッドには、次のシグネチャがあります。
RuleExecutionSet createRuleExecutionSet(String name, String description, RuleSource[] sources, String[] rulesetStack, Map properties)
表5-7に、createRuleExecutionSet
の引数を示します。
引数 | 説明 |
---|---|
|
ルール実行セットの名前を指定します。 |
|
ルール実行セットの説明を指定します。 |
|
ルールのソースを指定する配列を指定します。このリリースでは、RL Languageテキスト、RL LanguageテキストへのURL、ファイル・リポジトリ(.jarファイル)およびWebDAVリポジトリの4種類のソースがサポートされています。
詳細は、『Oracle Business Rules Java API Reference』の |
|
ルールの実行前に設定されるRL Languageルールセット・スタックの初期内容を指定します。配列の内容は、スタックの最上位(0番目の要素)から最下位(最後の要素)の順に指定します。 |
|
Oracle固有プロパティ。表5-6を参照してください。 |
JSR-94ルール・セッションとのステートフルな相互作用では、ユーザーが任意にRL Language関数を起動できることが必要です。JSR-94 StatefulRuleSession
インタフェースを実装するクラスによって、oracle.rules.rl.RuleSession
クラスのcallFunction
メソッドにアクセスできます。
例5-5に、JSR-94 StatefulRuleSession
で引数なしのRL Language関数を起動する方法を示します。
import javax.rules.*; ... StatefulRuleSession session; ... ((oracle.rules.jsr94.RLStatefulRuleSession) session).callFunction("myFunction");
|
![]() Copyright © 2005, 2006, Oracle Corporation. All Rights Reserved. |
|