Skip to content

マガジン(米国翻訳) | ニュースレター(日本)のトップ

レッドハットニュース
レターの新規御登録

バックナンバー


第17号(2008年2月)
JBoss

記事:JBoss Rules の利用のススメ

〜 ビジネスロジックをすっきりする方法 〜


・変化の激しいビジネスルール
業務アプリケーションを開発しているときに、非常に冗長なビジネスルールをダラダラとプログラミングしているケースはないでしょうか?もしくは、データベースのテーブルなどにフラグなどをセットしてどの業務ロジックを選択するかを制御しているケースはないでしょうか?当然のことながら、プログラミングなどでビジネスルールを記述していると、業務システムはビジネスの変化に追随できません。データベースのテーブルのフラグで制御している場合も、拡張性にかけます。フラグをたった1つ追加しただけでも、アプリケーションのビジネスロジックにも影響してしまいます。

このような場合、ビジネスの条件(ルール)とそれに関連したアクションであるロジックを分離することは良いアイデアです。例えば、保険料の支払い条件などで、保険商品やさまざまな請求条件でどの支払いルールを適用すればよいかは、全く複雑です。別の例として、新商品に対する出荷プロセスや売行きや地域のイベントに応じて在庫補填や店舗へ配送を考えるルールなどは、ビジネスの状況に応じて刻一刻と変化します。このような変化の激しいビジネスを支援する業務システムでは、これらの条件をビジネスルールとしてアプリケーションのロジックから切り離した方が、システムの柔軟性を維持でき、かつビジネスロジックをすっきりすることができます。JBoss Rules は、このようなソリューションに最適です。

・JBoss Rules
JBoss Rules は、エキスパートシステムにも通用するRETEアルゴリズムを実装した本格的なルールソリューションです。JBoss.org コミュニティのプロジェクトでは、Drools プロジェクトして、世界的にも有名です。JBoss Rules のルールエンジンは、Javaのライブラリとして提供されているため、ルールが動作するプラットフォームとしてアプリケーションサーバを選びません。ビジネスルールは、eclipse の専用プラグインを利用するこでビジネスルールを簡単に記述することができます。JBoss Rules では、以下のような書式でルールを表現できます。
    rule “ルール名”
      when 条件
     then アクション

条件には、ビジネスデータを投入した際、そのビジネスデータが定義された条件に合致するかのルールシンタックスが記述されます。JBoss Rules では、DRL(Drools Rule Language)というルール言語を定義しており、ある構文が記述できます。アクションには、ルールがヒットした場合の処理を記述します。JBoss Rules では、これらのルール定義が多数定義されたリポジトリやファイルにアクセスし、ビジネスデータ(POJO)をそれらのルールの集合体に投入し、どのルールにマッチングするかどうかをRETEアルゴリズムで評価されていきます。RETEアルゴリズムでは、単純にルールにヒットする条件を見つけ出すだけでなく、複数のルールから導き出される新しい暗黙的なルールにもそのビジネスデータがヒットするかどうかも評価されます。ルールにヒットしたPOJOデータは、アクションに記述された処理が評価され、ルール処理は完了します。
JBoss Rules では、これらのDRLの他、DSL(Domain Specific Language)も利用可能です。DSLは、日本語や業界用語など一定の用語リポジトリを設定しておくことで、ルールを記述するときに日本語表現でルールを定義することができます。

・ルールを利用するアプリケーション
ルールを利用するアプリケーションは、非常にシンプルです。JBoss Rules は、ルールエンジンのライブラリを提供しますので、クライアントアプリケーションは、ルールリポジトリにアクセスし、定義されたルール群をワーキングメモリにロードし、その後、ビジネスデータがそれらのルールに評価されるかの実行機能を呼び出すだけです。ルール評価では、既に説明したように、ルールにヒットする条件のアクションが実行されることになります。下図のようにアプリケーションのプログラムコードをみれば非常にシンプルです。
推論エンジン


・その他の特徴
JBoss Rules では、ルール定義にExcelやCSVのようなファイルを利用できます。これらのファイルに条件とアクションを記述しておくことで、ルールアプリケーションは、これらのファイルをルールリポジトリとして評価し実行することが可能です。 また、JBoss Rules のRETEアルゴリズムは、オンメモリで実行されます。そのため、ルールの評価が非常に高速です。この分野で老舗のルールエンジンより処理が速いという結果がでています。
http://blog.athico.com/2007/08/drools-vs-jrules-performance-and-future.html

その他、eclipse のプラグインでは、RETEアルゴリズムのグラフィカルな表現やデバッグなどが可能です。

JBoss Enterprise SOA Platform にバンドルされたJBoss Rules
レッドハットからまもなく提供されるJBoss Enterprise SOA Platform には、JBoss ESB, JBoss jBPM, JBoss Rules が完全に統合されたSOA基盤です。企業がSOA基盤を構築していく中で企業のビジネスポリシーをJBoss Enterprise SOA Platform のRules の機能でリポジトリ化できます。これにより、SOA基盤に必要な柔軟性や変化への対応という足回りを提供できます。JBoss Rules は、純粋に推論のためのルールエンジンとして活用できるだけでなく、SOA基盤としても重要な要となる機能を提供することになります。

今回は、JBoss Rules を紹介しました。Java EEの世界でルールはマイナーに見えますが、 うまく活用できれば、アプリケーション開発生産性やシステムの変化対応力に重要な機能であることがわかります。みなさんのプロジェクトで活用できる領域があるかもしれません。是非、レッドハットに問い合わせてみてください。

レッドハット株式会社/ニュースレター編集部