Corticon 5.3 : 演算子の拡張

こんにちは。渡邊です。

商用ルールエンジン、Corticonの研究をしています。

corticon_extensions.pdf を読みながら、演算子を拡張しました。メモを残します。

corticon_extensions.pdf が丁寧に記されているで、同ドキュメント参照で終わりにしてもよいくらいです。

ドキュメントではString属性の演算子を拡張していますが、私はDate型属性の演算子を拡張しました。

Javaのコード
次のように月初を返す演算子と月末を返す演算子を、一つのクラスに定義しました。ちなみにこのクラスのUTはしていません。バグっていたらごめんなさい。

package com.natswell.corticon.extension.operator.attribute;

import java.util.Calendar;
import java.util.Date;

import com.corticon.services.extensions.ICcDateTimeExtension;

public class NWDateOperator implements ICcDateTimeExtension {
	public static Date beginningOfMonth(Date date) {
		Calendar beginningOfMonth = Calendar.getInstance();
		beginningOfMonth.setTime(date);
		beginningOfMonth.set(Calendar.DATE, 1);
		return beginningOfMonth.getTime();
	}
	
	public static Date endOfMonth(Date date) {
		Calendar endOfMonth = Calendar.getInstance();
		endOfMonth.setTime(beginningOfMonth(date));
		endOfMonth.add(Calendar.MONTH, 1);
		endOfMonth.add(Calendar.DATE, -1);
		return endOfMonth.getTime();
	}
}

MANIFEST.MF
Manifest-Version から Bundle-Vendor までは、Plug-Inプロジェクト作成時点から変更していません。
Require-Bundle以下は、基本的に corticon_extensions.pdf からコピペした定義です。Export-Packageだけ、コピー元の設定を一部修正し、自分が作成したパッケージを定義します。”.,”は消さないように気を付けてください。

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: com.natswell.corticon.extension.AttributeOperators
Bundle-SymbolicName: com.natswell.corticon.extension.AttributeOperators
Bundle-Version: 1.0.0.qualifier
Bundle-Vendor: com.natswell
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Require-Bundle: com.corticon.services, com.corticon.legacy
Export-Package: ., com.natswell.corticon.extension.operator.attribute
Eclipse-RegisterBuddy: com.corticon.legacy

Rulesheet
下の画像のようにルールを作成しました。

Rulesheet

Rulesheet

  • Scope
  • 全属性のデータ型は、Date型です。

  • Conditions
  • 未設定です。

  • Actions
  • DateOperatorエンティティのinput属性に対して、新規作成した拡張演算子を使っています。
    条件無し列において、beginningOfMonth属性にbeginningOfMonth演算子の結果、endOfMonth属性にendOfMonth演算子の結果を設定しています。

    Ruletest
    テスト実行結果です。input属性に2014年8月15日を設定しています。ルール適用後に2014年8月15日に対する月初と月末が出力されています。

    Ruletest

    Ruletest

    所感
    Corticonはドキュメントがしっかりしていていいですね。

    コメントを残す

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