配置了了多个规则规则引擎在執行的时候会将每一个分支都判断/执行一下一下,假设我们现在有下面两个规则
规则的含义是学生分数大于99,给一个手机作为奖励;大於90给一个手机作为奖励。
如果学生分数是100经过规则引擎后,会有两个手机这不是产品想要的结果。
怎么保证只得到一个手机
或者說是当一个规则满足并且执行结果后,其他规则不再生效
由于这两个规则的优先级没有设置,先走哪一个规则判断是随机的不管先走哪个,最后都设置一个标识表示已经有结果了,然后进行下一个规则判断的时候就过不去规则
这里需要注意的是,虽然我有 $student.setResult(1);但是只有調用下面的update方法才会将更新的值加载到规则引擎的内存中。
这个方法不太好因为其他的规则还是会进行判断,不知道谁找到更好的解決方案类似break或者return的功能。麻烦在留言中告知