こんにちは。渡邊です。
商用ルールエンジン、Corticonの研究をしています。
Corticon Studio 5.3に同梱された corticon_extensions.pdf を一読しました。
演算子とサービス呼び出しの拡張方法について記されていました。
要点と個人的なメモを残します。
拡張できること
特定属性のCorticonデータ型(Integer/Decimal/Boolean/Date/Time/DateTime/String)に適用される演算子の拡張。
コレクション演算子の拡張。入力属性値のコレクションを処理し、1つの値を返す。
シーケンス演算子の拡張。入力属性値のシーケンス(リスト)を処理し、1つの値を返す。
Rulesheet式で使用できる関数。 属性拡張演算子とは異なり、語彙の属性や特定のデータ型に関連付けられていない(独立している)。任意の数のパラメータを指定することができる。
Ruleflowの為の拡張。サービス呼出しAPI経由でファクト(ルールエンジンの入力)領域に直接アクセス、および更新することができる。つまり、あるRuleflowにおいて、あるRulesheetの適用前後にファクトの読み書きを含むビジネスロジックを挟むことができる。
拡張方法
次の3つのアプローチがある。
Java型とCorticon型の対応
Java Type | Corticon Type |
---|---|
java.math.BigInteger | Integer |
java.math.BigDecimal | Decimal |
java.lang.Boolean | Boolean |
java.util.Date | Date, Time or. DateTime |
java.lang.String | String |
マーカーインターフェース
上記に示した拡張の種類ごとにimplementsすべきインターフェースが宣言されている。全てのマーカーインターフェースは、com.corticon.services.extensionsパッケージに属する。
- Corticon String型用: ICcStringExtension
Corticon Date/Time/DateTime型用: ICcDateTimeExtension
Corticon Decimal型用: ICcDecimalExtension
Corticon Integer型用: ICcIntegerExtension
- ICcCollectionExtension
- ICcSequenceExtension
- ICcStandAloneExtension
- ICcServiceCalloutExtension
マーカーインターフェースのロケーション
- Eclipse plug-in com.corticon.services
- Corticon_eFoundation_API.jar
拡張手順
Eclipseプラグインを使った拡張方法については、詳細な手順が記されています。これについては別記事にしようと思います。
また、拡張時のトラブルシューティングついても記されていました。ドキュメントが非常に丁寧に書かれているおかげで、珍しくハマることなくモノができたので、読んでいません。
Corticon_eFoundation_API.jar はProgress Software Electronic Software Download (ESD) site から入手できるようです。以下のナレッジに添付してあったものを取得したので、ESDから取得できるかは確認していませんが。
http://knowledgebase.progress.com/articles/Article/000044130