平田です。
商用ルールエンジンのCorticonを試しました。諸事情によりver.4.3(最新は5.3)です。
Corticonは、Corticon Studioでルールを作成し、Webサービスとしてアプリケーションと連携させるようです。
まずは、インストールして付属のチュートリアルを実施しました。Windows 7にインストールしたところ、二点ハマりました。
- インストーラのアーカイブを解凍したところ、フォルダ名に機種依存文字(登録商標マーク。マルにR)が含まれているせいか(違うかも?)、インストーラが起動しませんでした。フォルダをリネームしたところうまくいきました。
- Corticon Studioを管理者権限で起動しないと、ルールをコンパイルできませんでした。定義したルールはJavaソースに変換され、コンパイルされるようですが、中間ファイルがProgram Files以下に生成されるようです。
尚、ver.5.3では、Eclipseベースに刷新されてるらしく、ついでにこの問題も直っているかもしれません。
チュートリアルではCorticon Studioを使ったモデリングについて学習しました。以下、所感です。
Corticon Studioの画面構成
IDE然とした画面構成です。上にも書いた通り、試用しているのはver.4.3であり、最新版ではEclipseベースになっています。
語彙
左上の「語彙」ウィンドウは、Droolsで言うところのファクトに相当します。RDBのデータモデリングの要領で、エンティティとその属性を定義し、エンティティ間の関連を設定します。
ルール記述
右側「ルールセット」ウィンドウで、デシジョンテーブルを作成します。赤枠部分が「条件とアクション」の部分です。DroolsではExcelを使ってデシジョンテーブルを作成しますが、行と列を逆にしたような画面です。Droolsでは、ルールを定義する場合、DRLかDSL、デシジョンテーブルから選択しますが、Corticonではデシジョンテーブルのみを使うようです。
デシジョンテーブルを作成するときは、セルに直接ルールを記述するか、語彙と左下の演算子や述語をドラッグ&ドロップしてルールを組み立てます。
また、デシジョンテーブルはExcelの様に「ルールシート」という単位で管理します。上のスクリーンショットでは、「チェック」「取得ポイント算定」「クーポン発行」「キャッシュバック」という四つのルールシートが定義されており(最上部にタブがあります)、左から右に実行されます(ルールフロー)。
Corticon Studioでは、定義したルールのダブりや漏れを検出することができるようです。DroolsやGuvnorでは論理エラーの検出まではできなかったと思いますが、他の製品にもこのような機能があるのでしょうか。
ルールを定義し、保存すると内部的にJava Classファイルにコンパイルされるようです。ver.4.3では、インストールディレクトリ以下にrules.jar
とvocab.jar
が生成されます。
rules.jarの中身は以下のとおりです。
CorticonConstants CorticonConstants.java RULESET_BASE.cc RULESET_CRML_CONTEXT.ccd RULESET_NEW_CONTEXT.cnc TupleMap.xml archive.mf corticoncdo/クーポンCDO.class corticoncdo/ショッピングカートCDO.class corticoncdo/顧客CDO.class corticoncdo/品目CDO.class corticoncdo/優待カードCDO.class corticonrules_db/CRS_キャッシュバック.class corticonrules_db/CRS_クーポン発行.class corticonrules_db/CRS_チェック.class corticonrules_db/CRS_取得ポイント算定.class corticonrules_db/CcRuleSetCore.class ...
vocab.jarは次のようになっていました。
VOCAB_BASE.cvo VOCAB_DATABASE_CONNECT.cdc VOCAB_EXTENDED_ATTRIBUTES.cve VOCAB_INHER_INTER.cii VOCAB_JAVA_MAPPING.jom VOCAB_NAME_MAPPING.cnm archive.mf corticoncdo/クーポンCDO.class corticoncdo/ショッピングカートCDO.class corticoncdo/顧客CDO.class corticoncdo/品目CDO.class corticoncdo/優待カードCDO.class external.jdo internal.jdo
テスト
テスト機能があり、定義したルールの動作確認ができます。テストと言いつつ期待値を定義できないので、自動テストではなく手動テストツールです。テストデータを定義し、ルールを実行、結果を目視します。
ちなみに最新版では、期待値(Expected)を定義してテストを自動化出来るようです。
まとめ
デシジョンテーブルのみに絞ることで、比較的使いやすいものになっているという印象です。Droolsでは、更新したファクトを再評価することで再帰処理ができますが、Corticonでも「拡張ループ処理」なる機能で可能のようです。
Droolsの知識を手がかりにすることで、比較的スムースに理解出来ました。次はアプリケーションとの連携方法を調査します。