我有以下规则:

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的客户。

09-11 19:19