Oracle Application Serverリリース・ノート 10gリリース3(10.1.3.2.0) for AIX 5L Based Systems(64-bit) E05162-02 |
|
戻る |
次へ |
この章では、Oracle Business Rulesに関連する問題について説明します。内容は次のとおりです。
Rule AuthorをスタンドアロンOC4Jにインストールするには、次のようにします。
/Disk2/rules/webapps/ruleauthor_s.ear
にあるRule Author EARファイルをデプロイします。
セキュリティ・グループrule-administratorsを作成します。
Rule Authorユーザー(ruleadmin
など)を作成し、このユーザーをrule-administratorsグループに追加します。
Oracle Application Serverのインストール先からrulesディレクトリを、スタンドアロンOC4JインストールのORACLE_HOMEへコピーします。
OC4Jを停止し、再起動します。
場合によっては、次のRL生成エラーが発生することがあります。
ファクト・クラスは事前に宣言する必要があります...
たとえば、データ・モデルで次の生成されたRLがあるとします。
ruleset DM { function CreateDataAndTestRules() { servOrders.ServiceOrderTypeImpl sot = new servOrders.ServiceOrderTypeImpl(); . . .
この場合、Typeがファクト・クラス化される前に、実装されるImpl
クラスが自動的にファクト・クラス化されます。その後、Typeがルールにおいて参照されると、次のエラーがスローされます。
ClassName: 構文エラーが見つかりました。エラー: ファクト・クラスは事前に宣言する必要がありますat line 5 column 3 in serviceDateValidation
この問題を解決する方法を説明します。
それぞれがクラスを拡張してインタフェースを実装するような複雑な型の階層を持つクラスでは、特定の順序でクラスを参照する必要があります。クラスが正しい順序で参照されないと、ルール・エンジンはクラス階層を正しく判断できません。
この問題を解決するには、次の2つの方法があります。
ServiceOrderType
クラスの「supports XPath」をチェックします。この方法はパフォーマンス・コストがわずかにかかります。
CreateDataAndTestRules
関数内のコードを変更します。たとえば、インスタンスの作成を次のように変更します。
servOrders.ServiceOrderType sot = new servOrders.ServiceOrderTypeImpl();
これにより適切な順序で解析が行われ、実装クラスより前にスーパークラスが作成されます。