我是drools的新手,我正在尝试为项目创建一些规则。我已经能够制定一些规则,但我发现很难解雇以下规则,所以任何帮助都是有价值的,非常感谢。我已经尝试了超过一天的时间来解雇以下规则,我尝试了多种组合但没有成功。该模型是一个具有多个属性的巨大对象,因此我无法提供它。
在下面的规则中,“header.totalGrossMassMeasure”是一个bigDecimal值。它是由带有xjc插件的xsd生成的。我想检查它的格式是一个十六进制数,总共有16位数,最多6个十进制数 我知道正则表达式有点笨重但形式测试它here它似乎有效。然而它不能被解雇。有什么建议?
rule "007"
no-loop
when
$msg : Declaration( header.totalGrossMassMeasure.toString() matches "^([0-
9]{10}(\\.[0-9]{1,6})?)$|^([0-9]{11}(\\.[0-9]{1,5})?)$|^([0-9]{12}(\\.[0-9]
{1,4})?)$|^([0-9]{13}(\\.[0-9]{1,3})?)$|^([0-9]{14}(\\.[0-9]{1,2})?)$|^([0-
9]{15}(\\.[0-9]{1})?)$|^([0-9]{16})$")
result : ValidationResult()
then
RulesValidationError error = new RulesValidationError();
error.setRuleName("007");
error.setErrorType(ErrorType.INCORECT_VALUE);
result.getErrorsList().add(error);
end