web-dev-qa-db-ja.com

Javaルールエンジンの長所と短所

Javaルールエンジン [〜#〜] jess [〜#〜] および Drools を採用することの長所と短所は何ですか?他のプレイヤーはいますか?

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

106
brabster

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);

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

ルールエンジンを使用する必要がありますか?ルールエンジンを使用する理由ルールエンジンを使用するかどうかを決定するためのガイドライン on Google

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

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

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

正確に言うことはできませんが、私はDroolsの経験が少ししかありません。ただし、 JBoss Drools vs ILog JRules-an an dotdotal story (必ずお読みください)または JRulesの観点からDroolsを操作する のようなブログ投稿からフィードバックが得られます。 Googleでもっと見つけることができると確信しています(ただし、Droolsを試してみます)。

127
Pascal Thivent

現在、アプリケーションサーバーで使用するルールを評価しています。 OpenRules に遭遇しました。これは、Javaと簡単に統合でき、テストが示す限り、十分に高速です。他のOpenRulesの主な利点は、ルールの変更と処理の方法です。それはすべてExcelのテーブルで行われます。これは、プログラマーではない人にとって最も簡単な方法です。

また、よだれも統合されていますが、ルールはよりプログラム的なアプローチであるため、理解するのがはるかに複雑です。だからこそ、私たち-おそらく-OpenRulesに固執するでしょう。

15

似たような質問がありました。最終的にDroolsを選択しました。次の場合はdroolsを使用する必要があります。

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

詳細は次のとおりです [〜#〜] url [〜#〜]

7
Sachin Thapa

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

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

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

基本的に、JSR-94はほとんどのものに対して過剰であり、現在の製品に付随する大きな学習曲線とオーバーヘッドがあります。それがあなたが望むものであるならば、それは問題ありません。しかし、Javaで記述された単純なルールをXMLと組み合わせて状態テストを維持したい場合、Roolieはそれを行う非常に高速な方法です。依存関係も学習曲線もありません。

3
R K

ルールエンジンが必要になったとき、使用可能なルールエンジンは単純なタスクには複雑すぎるため、独自のルールエンジンを使用することにしました。ユーザーが入力する可能性のある構文解析の経験がある場合でも、これはそれほど難しくありません。私たちの場合、仕様の大部分はXSDによって処理され、フィールドの一部のみがさらに解析されます。

2
Confusion