こんにちは。渡邊です。
商用ルールエンジン、Corticonの研究をしています。
Corticon 5.3 : 演算子の拡張の続きです。corticon_extensions.pdf を読みながら、サービス呼出しを拡張しました。メモを残します。
Javaのコード
演算子の拡張で作成したPlugin-Inプロジェクトに次のクラスを追加しました。
DateOperatorエンティティのinput属性が空の場合、inputに本日日付を設定します。
package com.natswell.corticon.extension.servicecallout; import java.util.Date; import com.corticon.services.dataobject.ICcDataObject; import com.corticon.services.dataobject.ICcDataObjectManager; import com.corticon.services.extensions.ICcServiceCalloutExtension; public class InitService implements ICcServiceCalloutExtension { public static void initDateOperators(ICcDataObjectManager aDataObjMgr) { for (ICcDataObject dateOperators : aDataObjMgr.getEntitiesByName("DateOperator")) { if (dateOperators.getAttributeValue("input") == null) { dateOperators.setAttributeValue("input", new Date()); } } } }
MANIFEST.MF
Export-Packageにcom.natswell.corticon.extension.servicecalloutパッケージを追加しました。
Ruleflow
下の画像のようにフローを作成しました。Rulesheetは変更していません。Rulesheetの前に今回作成したサービス呼出し拡張を配置しています。
Ruletest
テスト実行結果です。画像上部に注目して下さい。テスト対象として、Ruleflow(拡張子”.erf”)を指定しています。
input属性が未設定である場合、本日日付(2014年8月19日)が設定されています
次の画像はテスト対象をRulesheet(拡張子”.ers”)に切り替えた場合です。
この場合は新規作成したサービス呼出し拡張を使っておらず、input属性が初期化されない為、テストが失敗しています。