Corticon 5.3 : サービス呼出しの拡張

こんにちは。渡邊です。

商用ルールエンジン、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の前に今回作成したサービス呼出し拡張を配置しています。

Ruleflow

Ruleflow

Ruletest
テスト実行結果です。画像上部に注目して下さい。テスト対象として、Ruleflow(拡張子”.erf”)を指定しています。
input属性が未設定である場合、本日日付(2014年8月19日)が設定されています

Ruletest: テスト対象がRuleflowである場合

Ruletest: テスト対象がRuleflowである場合

次の画像はテスト対象をRulesheet(拡張子”.ers”)に切り替えた場合です。
この場合は新規作成したサービス呼出し拡張を使っておらず、input属性が初期化されない為、テストが失敗しています。

Ruletest: テスト対象がRulesheetである場合

Ruletest: テスト対象がRulesheetである場合

コメントを残す

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