回答:
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を試してみます)。
現在、アプリケーションサーバーで使用するルールを評価しています。OpenRulesに出くわしました。OpenRulesはJavaとの統合が簡単であり、テストが示す限りでは十分に高速です。OpenRulesが他よりも優れている主な利点は、ルールの変更方法と処理方法です。これはすべて、Excelのテーブルで行われます。これは、プログラマーでない人にとっては最も簡単な方法です。関係者全員、技術者以外の人でも、すべてを完全に理解していました:-)
droolsも統合されていますが、よりプログラマティックなアプローチであるため、ルールを理解するのがさらに複雑になります。それが、私たちが(おそらく)OpenRulesに固執する理由です。
アプリケーションの特定の機能を有効または無効にするために特定の条件が満たされているかどうかを管理するための、より類似したものを多くの人々が探していると付け加えます。
どこに行っても何度も同じパターンを再実装することにうんざりしていたので、そのためにRoolieというOSSプロジェクトを作成することにしましたhttp://sourceforge.net/projects/roolie/
私はそれをmaven化し、それがリリースされた2010年以降に報告されたバグはないので、Maven Centralでホストするために必要な変更以外は変更せずにv 1.0にアップグレードしました(これは現在進行中です)。 )。
基本的に、JSR-94はほとんどのことに対して過剰であり、現在の製品に伴う学習曲線とオーバーヘッドが非常に大きくなります。それがあなたが望んでいることならそれで結構です。ただし、Javaで記述された単純なルールをXMLと一緒に連鎖させて状態テストを維持したい場合は、Roolieを使用すると非常に高速です。依存関係も学習曲線もありません。