ヘッダーをスキップ
Oracle Application Server リリース・ノート
10g リリース3(10.1.3.1.0)for Linux on POWER
E05290-03
  目次
目次

戻る
戻る
 
 

17 Oracle Business Rules

この章では、Oracle Business Rulesに関する問題について説明します。内容は次のとおりです。

17.1 スタンドアロンOC4JへのRule Authorのインストール

Rule AuthorをスタンドアロンOC4Jにインストールするには、次の手順を実行します。

  1. Rule Author EARファイルをデプロイします。Rule Author EARファイルは/Disk2/rules/webapps/ruleauthor_s.earに格納されています。

  2. セキュリティ・グループ「rule-administrators」を作成します。

  3. Rule Authorユーザー(ruleadminなど)を作成し、このユーザーをrule-administratorsグループに追加します。

  4. Oracle Application Serverのインストール先にある「rules」ディレクトリを、スタンドアロンOC4Jインストール環境のORACLE_HOMEへコピーします。

  5. OC4Jを停止し、再起動します。

17.2 XMLファクト使用時の多重継承の例外

XMLファクトの使用時に、assertXPathコールを試行すると次のエラーが発生する場合があります。

Oracle Business Rules RL: RL code error
RLRuntimeException: fact class multiple inheritance not supported
at line 1 column 1 in main

caused by

MultipleInheritanceException: fact class 'mypkgname.MyClassNameImpl' cannot extend
both 'mypkgname.MyClassNameType' and 'mypkgname.MyClassName'

これは、生成されたRLで、ObjectFactoryのファクト・クラス宣言が他のJAXBクラスのファクト・クラス宣言よりも前にくるために発生します。

この問題に対処するには、インポートしたXMLファクト・リストからObjectFactoryを削除します。このクラスを使用してルールが記述される既知のシナリオはないので、削除しても安全です。

これで問題が解決しない場合、生成されたRLにおけるトップレベルのXMLオブジェクトのファクト・クラス宣言を防止する必要があります。

この問題を解決するには、トップレベル・オブジェクトの「XPathアサーションのサポート」の選択を解除します。前述のエラー・メッセージの場合、これは「mypkgname.MyClassName」となります。

17.3 Oracle以外のコンテナにおけるRule Authorのデプロイ

『Oracle Business Rulesユーザーズ・ガイド』の第C.3項では、サポートされているOracle以外のコンテナに対応するOracle以外の.earファイルのOracleAS Companion CD Diskにおける場所が誤って示されています。一部のプラットフォームでは、これらの.earファイルは記載されているOracleAS Companion CD DiskのDisk2ではなくDisk3にあります。

17.4 RL serviceDateValidationエラー: ファクト・クラスは事前に宣言する必要がある

場合によって、次のRL生成エラーが発生することがあります。

「ファクト・クラスは事前に宣言する必要があります」

たとえば、データ・モデルで次の生成されたRLがあるとします。

ruleset DM {
 function CreateDataAndTestRules()
 {
 servOrders.ServiceOrderTypeImpl sot = new
servOrders.ServiceOrderTypeImpl();
.
.
.

この場合は、Typeがファクト・クラス化される前に、実装されるImplクラスが自動的にファクト・クラス化されます。その後、Typeがルールにおいて参照されると、次のエラーがスローされます。

ClassName: 構文エラーが見つかりました。エラー: ファクト・クラスは事前に宣言する必要がありますat line 5 column 3 in serviceDateValidation」

この問題を解決する方法を説明します。

それぞれがクラスを拡張してインタフェースを実装するような複雑な型の階層を持つクラスでは、特定の順序でクラスを参照する必要があります。クラスが正しい順序で参照されないと、ルール・エンジンはクラス階層を正しく判断できません。

この問題を解決するには、次の2つの方法があります。