0

我是流口水的新手,我正在尝试为项目创建一些规则。我已经能够创建一些规则,但我发现很难触发以下规则,因此任何帮助都是有价值的,非常感谢。我已经尝试了一天多的时间来触发以下规则,并且我尝试了多种组合但没有成功。该模型是一个具有多个属性的巨大对象,因此我无法提供它。

在以下规则中,“header.totalGrossMassMeasure”是一个 bigDecimal 值。它是由带有 xjc 插件的 xsd 生成的。我想检查它的格式是一个十进制数,总共有 16 位数字,最多 6 位十进制数字我知道正则表达式有点笨重,但在这里测试它似乎有效。但是它不能被解雇。有什么建议么?

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
4

0 回答 0