我有以下规则:
when
not FixedClient(service == null) and
not FixedClient(service.statusCode == "CU") and
$client : FixedClient(lastChargeDate > 3)
then
...
从日志看来,即使第一个条件返回true(即service为null),仍会评估其余条件,这会导致空指针异常。有没有办法优化条件,以便在满足错误条件时停止评估(类似于&&&和Java的工作方式)?
答案 0 :(得分:1)
这是什么条件:
not FixedClient(service == null) and
not FixedClient(service.statusCode == "CU") and
$client: FixedClient(lastChargeDate > 3)
表示:“如果没有服务等于null的客户端,并且没有状态代码等于”CU“的客户端,并且如果有(一个或多个)客户端的上次收费日期大于3,则执行...“
模式前面的运算符not
是负存在量词,在(逻辑)中由∄
表示。这不能与逻辑not
中的逻辑运算符¬
相混淆,或者在Java中!
。在日常用语中,可以说,例如,“没有红色汽车”,而不是说“有一辆颜色不等于红色的汽车”。
像这样修改你的条件:
when
$client: FixedClient(service != null &&
service.statusCode != "CU",
lastChargeDate > 3)
then
找到一个客户服务器,该客户服务器既不是null也不是CU,最后一个充电日期大于3。