ヘッダーをスキップ
Oracle Fusion Middlewareリリース・ノート
11gリリース1(11.1.1) for Microsoft Windows x64
B55938-01
  目次
目次

戻る
戻る
 
次へ
次へ
 

18 Oracle Business Rules

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

18.1 一般的な問題および回避方法

この項では、一般的な問題および回避方法について説明します。内容は次のとおりです。

18.1.1 MigrateRuleRepositoryコマンドが不正なエラー・メッセージを返す

MigrateRuleRepositoryユーティリティを宛先パス内に既存の移行された辞書構造と組み合せて使用すると、次のエラーが返されます。

oracle.rules.tools.migrator.MigrationException: failed to connect to destination repository
C:\migration\FooRepository-migrated/Foo/INITIAL

このエラーは、宛先の場所に移行された辞書構造がすでにあることを示すメッセージです。

回避方法:

回避方法は、宛先パス内の移行された辞書構造を削除し、MigrateRuleRepositoryユーティリティを再度実行することです。

18.1.2 別名が適用されている一般的なJavaクラスの移行

Oracle Fusion Middleware 11gリリース1(11.1.1)には、他のすべての辞書によってリンクされているビルトイン辞書という概念があります。ビルトイン辞書には、ObjectStringBigIntegerBigDecimalCalendarXMLGregorianCalendarListJAXBElementなどの一般的なJavaクラスに対するファクト・タイプが含まれています。

リリース10.1.3.xの辞書をOracle Fusion Middleware 11gリリース1(11.1.1)へ移行する場合、制限があります。Oracle Business Rulesリリース10.1.3.xでは、デフォルトでインポートされるObjectを含むすべてのクラスを各辞書にインポートする必要がありました。これによってユーザーは一般的なJavaクラス・ファクト・タイプをインポートし、プロパティ、メソッドおよびフィールドの別名を変更することができました。Oracle Fusion Middleware 11gリリース1(11.1.1)では、そのようなクラスに対してユーザーはカスタムの別名を指定できません。また、これらのファクト・タイプは、Oracle Fusion Middleware 11gリリース1(11.1.1)へ移行するリリース10.1.3.xの辞書から移行されません。したがって、別名が、ビルトイン辞書に含まれている一般的なJavaクラスに適用されている場合、Oracle Fusion Middleware 11gリリース1(11.1.1)ではこれらの別名は破棄され、ルールに使用できません。

回避方法:

この問題の回避方法はありません。

18.1.3 別名と可視性の設定が移行先の辞書に適用されない場合がある

Oracle Business Rulesリリース10.1.3.xからの辞書の移行時、JavaクラスはOracle Fusion Middleware 11gリリース1(11.1.1)の新規辞書にインポートされ、別名と可視性の設定が適用されます。移行の不具合で、別名と可視性の設定を適用する一部のメソッドが識別されません。

回避方法:

このような場合、Oracle Business Rulesリリース10.1.3.xの辞書に適用されている別名と可視性の設定を、移行先のOracle Fusion Middleware 11gリリース1(11.1.1)の辞書に手動で適用する必要があります。

18.1.4 移行されたリリース10.1.3.xの辞書に必要な手動更新

制限付き単純型

Oracle Business Rulesリリース10.1.3.xでは、JAXB 1.0が使用されます。JAXB 1.0では、生成されたJavaクラスで制限付き単純型に対する特別なサポートはなく、制限付き単純型は単純型と同じ型のプロパティにマップされます。Oracle Fusion Middleware 11gリリース1(11.1.1)のOracle Business Rulesでは、JAXB 2.0が使用されます。JAXB 2.0では、文字列型の制限付き単純型はJavaのenum値に変換されます。この相違のため、リリース10.1.3.xの辞書の移行後、以前にRAW文字列を使用して制限付きの値を表していた辞書内の箇所は、Java enum値を使用するよう手動で更新する必要があります。

移行された辞書内のxsd:dateTime

Oracle Business Rulesリリース10.1.3.xでは、JAXB 1.0が使用されます。JAXB 1.0では、xsd:dateTime型はjava.util.Calendarにマップされます。Oracle Fusion Middleware 11gリリース1(11.1.1)のOracle Business Rulesでは、JAXB 2.0が使用されます。JAXB 2.0では、xsd:dateTime型は、xsd:dateTime要素の値をより正確に含むXMLGregorianCalendarにマップされます。つまり、CalendarはメソッドcompareToを実装し、XMLGregorianCalendarはメソッドcompareを実装するため、リリース10.1.3.xから移行された辞書では、プロパティ間の比較は適切に機能しません。比較を変更するには、辞書内を手動で変更する必要があります。また、Oracle Fusion Middleware 11gリリース1(11.1.1)では、Durationを使用して最も一般的な日付と時間の形式を比較できます。移行された辞書でこの変更を行うには、インポートされたファクト・タイプを使用するデータ・モデルとルールに手動で変更を行う必要があります。

移行された辞書内の無効な式

Oracle Fusion Middleware 11gリリース1(11.1.1)のOracle Business Rulesでは、詳細な型チェックがサポートされ、リリース10.1.3.xから移行された式が無効になる場合があります。たとえば、Integerのインスタンスを参照してintValue()メソッドをコールする場合、Integerがデータ・モデルにインポートされていないと、検証警告が出る場合があります。この問題の解決策は、Integerをデータ・モデルにインポートすることです。

RL関数を使用するコレクションでの索引ベースまたはイテレータ・ベースの反復

リリース10.1.3.xでは、RAW RLを使用するコレクションに対して関数およびRLアクションで索引ベースまたはイテレータ・ベースの反復を使用する必要がありました。Oracle Fusion Middleware 11gリリース1(11.1.1)では、事前定義のアクション・タイプ"for"で各反復ループ構文のforを実装し、これらの古い反復構文の大半を置き換えることができます。

新規変数インスタンスを返す関数のコール

リリース10.1.3.xでは、変数の初期化式でコンストラクタを起動することはできませんでした。Oracle Fusion Middleware 11gリリース1(11.1.1)では、変数はグローバルと呼ばれます。リリース10.1.3.xのこの制限のため、リリース10.1.3.xの一部の辞書には、式を初期化し、コンストラクタを起動して新規インスタンスを返す関数コールがあります。Oracle Fusion Middleware 11gリリース1(11.1.1)では、初期化式にnew演算子を使用できます。

18.1.5 マイグレータが特定のJavaファクト・タイプ・プロパティを移行しない

リリース10.1.3.xでは、ファクト・タイプがセッターまたはゲッターのいずれかを持つ場合、ファクト・タイプに対するプロパティが作成されました。Oracle Fusion Middleware 11gリリース1(11.1.1)では、プロパティにセッターとゲッターの両方がある場合にのみプロパティが作成されます。

18.1.6 マイグレータがRUL-05003警告を返す場合がある

Oracle Fusion Middleware 11gリリース1(11.1.1)では、辞書内のJavaおよびXMLファクト・タイプは、可視ファクト・タイプによって定められた単一継承タイプを持つという制限があります。この制限は、インタフェースを含む多重継承チェーンによってエンジンでランタイム例外が発生することを防ぎます。ユーザーは、継承とみなさないクラスを不可視としてマークすることで、単一継承チェーンを指定する必要があります。検証時に多重継承チェーンが検出されると、次の警告が返されます。

RUL-05003: The visible fact type "Foo" should only inherit from one visible fact type, 
but inherits from visible fact types "Bar" and "Baz".

この場合、BarまたはBazを不可視としてマークすると、この警告が解決されます。

18.1.7 辞書の実行時の変更によって決定点でエラーが起こる

辞書をリポジトリに保存すると、辞書が変更されていない場合でも、リポジトリを使用しているすべての決定点でルール・セッション・プールがリフレッシュされます。これによってパフォーマンスは低下しますが、エラーは通常発生しません。

削除通知が行われるアクションを実行すると、決定点でルール・セッション・プールのリフレッシュが試行されます。この例にはRuleRepository.saveAsがあります。これは、まずターゲット名の辞書を削除し、新規辞書をその名前で保存します。辞書の削除後、新規辞書の保存前に決定点で辞書のロードを試みると、これによって競合状態が起こります。

18.1.8 決定表のオーバーラップのギャップ検出が正しいルールを生成しない

兄弟セル値が最後以外の条件行でオーバーラップする決定表では、ギャップ分析機能によって推奨されるルールが誤っている場合があります。兄弟セルは、同じ親セルを持つ、あるいは親セルを持たない同じ行のセルです。オーバーラップの例は、"true"のセルと"-"の兄弟です。