我正在尝试使用简单的规则。
我们可以使用简单的规则来执行if-else
规则吗?
我检查了ActivationRuleGroup
和ConditionalRuleGroup
,但似乎都是if
。
所有规则都是如果是,则没有其他规则;这是一种不同的想法。规则并不意味着只替换您在普通源代码中看到的任何逻辑。它们最好是为类似于长切换的情况(如逻辑或参数驱动逻辑)实现的。所得税表单是参数驱动用例的一个示例。
如果您需要基于一个事实的值的三个操作,例如:
if age < 16
action: discount = 15%
else if age >= 16 and age <= 65
action: discount = 0%
else
action: discount = 20%
然后你只需写3条规则:
when age < 16
action: discount = 15%
when age >= 16 and age <= 65
action: discount = 0%
when age > 65
action: discount = 20%
组合规则用于处理规则的组。
ConditionalRuleGroup
有一个"主要"规则,因此当它的计算结果为true
(已触发)时,将激发组中的其余规则,否则将跳过组。
我使用UnitRuleGroup
进行类似表单的验证。表单中的所有数据都被放入facts
中,并触发验证规则。如果任何一个规则为false,则整个组将返回false,表单将被视为无效。