Corticon ルールモデリング

平田です。

商用ルールエンジンの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の画面構成

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.jarvocab.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)を定義してテストを自動化出来るようです。

ver.5のテスト機能

まとめ

デシジョンテーブルのみに絞ることで、比較的使いやすいものになっているという印象です。Droolsでは、更新したファクトを再評価することで再帰処理ができますが、Corticonでも「拡張ループ処理」なる機能で可能のようです。

Droolsの知識を手がかりにすることで、比較的スムースに理解出来ました。次はアプリケーションとの連携方法を調査します。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です