私は実装するルールがほぼ重複しています。彼らはまったく同じですが、右側はわずかに異なります。例えばDroolsでは、指定したパラメータセットを使用してルールを拡張したり、ルールにパラメータを渡すことは可能ですか?
rule "AS77" extends "IVD01"
@description(" IF Individual Identifier = E, THEN Other Description is required. ")
when
$source : Owner($errCode : "427")
then
end
rule "AS78" extends "IVD01"
@description(" IF Individual Identifier = E, THEN Other Description is required. ")
when
$source : JntOwner($errCode : "428")
then
end
rule "IDV01"
@description("IF Individual Identifier = E, THEN Other Description is required. ")
when
IDVerify(idType == "E", otherDscrp == null) from $source
then
_reject.getErrorCode().add($errCode.toString());
end
私は上記のようなことをしたいと思いますが、 "$ source"が子ルールにあるため、できないことがわかります。 Droolsルールは他のルールを1つしか拡張できないため、条件を変更してルールを変更することはできません。 Javaで私は、
static void evalIdVerify(IDVerify idv, String errorCode) {
if ("E".equals(idv.getIdType()) && idv.getOtherDescript() == null) {
_reject.getErrorCode().add(errorCode);
}
}
のようなメソッドを作成し、必要に応じて使用します。メソッドのように呼び出すことができ、パラメータをとるルールを書く方法はありますか?あるいは同じルールを何度も何度も何度も書いているだけではない他の解決法ですか?私はクラスをコントロールすることができず、これらのルールは毎年第三者によって変更されるので、メンテナンス性のためには一度しか定義できないようにしたいと考えています。どんな助けもありがとう。ありがとう。
ありがとう、私はすでに最初の解決策を試していましたが、誤ってIDVerifyオブジェクトを挿入していたため、私にはうまくいきませんでした。 OwnerとJntOwnerオブジェクトを挿入すると、それは機能しました。 – maxl