Javaルールエンジンの長所と短所[終了]


108

JavaルールエンジンJESSDroolsを採用することの長所と短所は何ですか?他のプレイヤーはいますか?

Droolsはオープンソースであり、JESSはそうではないことを理解していますが、使いやすさ、パフォーマンス、コードとの統合レベルなど、他の分野でどのように比較しますか?

回答:


128

JavaルールエンジンのJESSとDroolsを採用することの長所と短所は何ですか?

ビジネスルールをアプリケーションロジックから分離する必要がある場合は、ルールエンジンを使用します。「プロジェクトにルールエンジンが必要ですか」という記事に良い例があります。

たとえば、一般的なストアフロントシステムには、割引を計算するためのコードが含まれる場合があります。

if (product.quantity > 100 && product.quantity < 500) {
  product.discount = 2;
} else if (product.quantity >= 500 && product.quantity < 2000) {
  product.discount = 5;
} else if (product.quantity >= 2000) {
  product.discount = 10;
}

ルールエンジンは、上記を次のようなコードに置き換えます。

ruleEngine.applyRules(product);

ルール管理コンソールを非技術者の手に渡すのが良いことかどうかを決めるのはあなた次第です:)

詳細については、ルールエンジンを使用する必要がありますか?ルールエンジンを使用する理由 ルールエンジンGoogleのどちらを使用するかを決定するためのガイドライン

他のプレイヤーはいますか?

他のプレイヤーには、JRules、Corticonが含まれます(JRulesは最も有名なIMOです-これは最高という意味ではありません)。

使いやすさ、パフォーマンス、コードとの統合レベルなど、他の分野でどのように比較しますか?

正確には言えませんが、私はDroolsについて少し(前向きに)経験しているだけです。しかし、JBoss Drools対ILog JRules-事例話(必ずお読みください)またはJRulesの観点からDroolsを操作するなどのブログ投稿からいくつかのフィードバックが得られます。Googleでそれらをもっと見つけることができると思います(ただし、Droolsを試してみます)。


1
あなたの答えはよさそうです。よだれを使う場所とジェスの場所を教えていただけませんか?基本的に、私はより関連するdiffの答えを期待しています。b / wよだれとジェス。
Tony

7
うわー、@パスカル、その製品の数量/割引の例は実際のWTFです。数量は5,000と言います。最初のIFはtrueと評価され、ELSE IFは評価されません。この種のビジネスロジックをルールエンジンに組み込んでも、バグの発見が難しくなる可能性はありますが、何の助けにもなりません。
DOK

彼の弁護において、その例はその最初の記事からのものでした。自分がどのように見ているかがそれほど確かではない... :)
Jeb

6
ルール管理を技術者以外の手に委ねることの危険性の好例です。
ペース

1
ルールエンジンを使用する理由 リストされているリンクの中で最高です
Aravind Yarram '17年

16

現在、アプリケーションサーバーで使用するルールを評価しています。OpenRulesに出くわしました。OpenRulesはJavaとの統合が簡単であり、テストが示す限りでは十分に高速です。OpenRulesが他よりも優れている主な利点は、ルールの変更方法と処理方法です。これはすべて、Excelのテーブルで行われます。これは、プログラマーでない人にとっては最も簡単な方法です。関係者全員、技術者以外の人でも、すべてを完全に理解していました:-)

droolsも統合されていますが、よりプログラマティックなアプローチであるため、ルールを理解するのがさらに複雑になります。それが、私たちが(おそらく)OpenRulesに固執する理由です。


19
Droolsは、ExcelおよびWebインターフェースを介して編集されたルールもサポートします。
レトロネーム2010年

7

私たちにも同じような質問がありましたが、ようやくDroolsをピックアップしました。以下の場合はdroolsを使用する必要があります。

  • さまざまなシナリオのために、複数のif条件で混乱していると考えるビジネスロジック
  • 複雑さの増大に対する需要が高まる
  • ビジネスロジックの変更が頻繁に行われる(年に1〜2回も頻繁に行われる)
  • サーバーはメモリ不足のツールであるため、十分なメモリを搭載しており、メモリを犠牲にしてパフォーマンスを提供します

詳細については、次のURLをご覧ください


3

アプリケーションの特定の機能を有効または無効にするために特定の条件が満たされているかどうかを管理するための、より類似したものを多くの人々が探していると付け加えます。

どこに行っても何度も同じパターンを再実装することにうんざりしていたので、そのためにRoolieというOSSプロジェクトを作成することにしましたhttp://sourceforge.net/projects/roolie/

私はそれをmaven化し、それがリリースされた2010年以降に報告されたバグはないので、Maven Centralでホストするために必要な変更以外は変更せずにv 1.0にアップグレードしました(これは現在進行中です)。 )。

基本的に、JSR-94はほとんどのことに対して過剰であり、現在の製品に伴う学習曲線とオーバーヘッドが非常に大きくなります。それがあなたが望んでいることならそれで結構です。ただし、Javaで記述された単純なルールをXMLと一緒に連鎖させて状態テストを維持したい場合は、Roolieを使用すると非常に高速です。依存関係も学習曲線もありません。


2
RoolieはSourceForgeでライセンスされたMITであると述べていますが、コードはLGPLv3を報告しています。これは基本的に、商用製品(および一部のオープンソース製品)での使用が疑わしいことを意味します。nmav.gnutls.org/2013/03/the-perils-of-lgplv3.htmlを参照してください。
ingyhere 2013年

2

ルールエンジンが必要になったとき、使用可能なルールエンジンは単純なタスクには複雑すぎるため、独自にロールすることにしました。ユーザーが入力する可能性のある解析式をリモートで経験している場合でも、これはそれほど難しくありません。今回のケースでは、ほとんどの仕様がXSDによって処理され、さらに解析されるフィールドはごくわずかです。


6
ルールエンジンは、重要な問題にスケールアップするために、確立されたアルゴリズム(フォワードチェーンやReteアルゴリズムなど)を使用します。式を評価するだけの場合は、MVELなどの既存のライブラリが役立ちます。
jevon
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.