我有以下规则:
when
not FixedClient(service == null) and
not FixedClient(service.statusCode == "CU") and
$client : FixedClient(lastChargeDate > 3)
then
...
从日志来看,即使第一个条件返回 true(即服务为空),其余条件仍然会被评估,这会导致空指针异常。有没有办法优化条件,以便在满足错误条件时停止评估(类似于 Java 中 && 的工作方式)?
最佳答案
这个条件是什么:
not FixedClient(service == null) and
not FixedClient(service.statusCode == "CU") and
$client: FixedClient(lastChargeDate > 3)
意思是:“如果没有服务等于 null 的客户端,并且没有状态代码等于“CU”的客户端,并且如果有(一个或多个)客户端的最后收费日期大于 3,则执行...”
模式前面的运算符not
是否定存在量词,在(逻辑)中用∄
表示。这不能与逻辑运算符not
相混淆,逻辑运算符not
在逻辑中表示为-
,或者在Java中表示为!
。在日常用语中,这可以通过说“没有红色汽车”来表达,而不是说“有一辆颜色不等于红色的汽车”。
像这样修改您的条件:
when
$client: FixedClient(service != null &&
service.statusCode != "CU",
lastChargeDate > 3)
then
查找服务达到某个值的客户,该值既不为 null,也不为 CU,且最后收费日期大于 3。
关于java - DROOLS 如果条件之一不匹配则停止评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33997973/