我有以下规则:
when
not FixedClient(service == null) and
not FixedClient(service.statusCode == "CU") and
$client : FixedClient(lastChargeDate > 3)
then
...
从日志看来,即使第一个条件返回true(即service为null),其余条件仍将被评估,这将导致空指针异常。有没有一种方法可以优化条件,以便在遇到错误条件时停止评估(类似于&&在Java中的工作方式)?
最佳答案
这种情况是什么:
not FixedClient(service == null) and
not FixedClient(service.statusCode == "CU") and
$client: FixedClient(lastChargeDate > 3)
意思是:“如果没有客户端的服务等于null,并且没有客户端的状态码等于“ CU”,并且有(一个或多个)客户端的上次计费日期大于三个,则执行。 。”
模式前面的运算符
not
是负逻辑存在量,用∄
表示(逻辑)。请勿将其与逻辑运算符not
混淆,逻辑运算符¬
在逻辑中用!
表示,在Java中是。用日常用语来说,这是说有“没有红色的汽车”,而不是说“有颜色不等于红色的汽车”。像这样修改您的条件:
when
$client: FixedClient(service != null &&
service.statusCode != "CU",
lastChargeDate > 3)
then
查找服务值不为null或CU且最后收费日期大于3的客户。