java - DROOLS 如果条件之一不匹配则停止评估

标签 java drools

我有以下规则:

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/

相关文章:

java - 聊天机器人,最后一部分

applet - 如何在java小程序中动态清除缓存

java - 从某个位置获取 arraylist 10 项

java - SWTBot 找不到文本为 : Dynamic Web Project 的节点

java - NPE同时计算apk大小

java - Drools Fusion规则语言: pedometer rule

java - Optaplanner - 运行可执行 jar 时出错,但在 eclipse 中运行正常

java - drools drl 验证是否针对对象而不是 pojo 实例进行

java - Drools/Kie-Server/Busines-Central 7.28.0 当 kie-server 访问业务中心上的 websocket Controller 时收到 403

java - 比较 JBoss Drools 中同一类的对象