私の会社では、いくつかのプロジェクトで Drools を BRE として使用する予定です。ここで、いくつかのベスト プラクティスを定義しようとしています。
私の質問は、ルール条件/結果内で何をすべきか、何をすべきでないかです。Java を直接記述したり、メソッドを呼び出すことができる場合 (たとえば、ワーキング メモリ内のグローバル オブジェクトから)。
例。一般的なオブジェクト (Person など) を評価するルールが与えられた場合、プロパティは true に設定されます。現在、その特定のプロパティは、データベースに移動してその情報をフェッチするオブジェクトに対してのみ定義できます。したがって、それを実装するには2つの方法があります。
代替案 A:
- データベースに移動し、オブジェクト プロパティ (true/false、コード) をフェッチします。
- オブジェクトをワーキングメモリに挿入する
- ルールを評価する
代替 B:
- データベースに接続するメソッドを持つグローバル オブジェクトを挿入し、指定されたオブジェクトのプロパティを確認します。
- 評価するオブジェクトをワーキングメモリに挿入する
- ルールでは、グローバル オブジェクトを呼び出して、データベースへのアクセスを実行します。
それらのどれがより良いと考えられていますか? 私は A が本当に好きですが、B の方が簡単な場合もありますが、データベースからの例外のようなものが発生した場合はどうなりますか?
私は、Packt Publishing の Drools 5.0 Book に実装されている代替 B を見てきましたが、それらは嘲笑を行っており、データベースにアクセスすることの実際の意味についてはまったく話していません。
ありがとうございました、