1

假设我有两个规则-

rule1如果满意conditionA,将被解雇。conditionB

rule2conditionC如果和conditionD 都满意,将被解雇。

rule3如果 rule1 和 rule2 已被解雇,我想写一个应该被解雇的内容?理想情况下,我希望能够使用运算符,例如-

fire rule3 if rule1 **AND** rule2 have been fired

fire rule3 if either rule1 **OR** rule2 has been fired. 

换句话说,我如何在另一个规则中引用一个规则的触发?

我显然可以在 rule3 中使用 conditionsABCD,但我确信必须有一种优雅的方式来处理这种情况。

理想情况下,我想将 rule1、rule2 和 rule3 保存在一个 DRL 文件中。

4

2 回答 2

4

当条件A 和条件B 正常时,您可以在rule1 上添加一个事实,命名为rule1ok,并且对于rule2 和rule2ok 也是如此。然后您可以检查规则3 的新条件rule1ok 和rule2ok。

于 2013-11-14T06:41:31.013 回答
0

我一直教导的四种最佳实践之一是规则不应调用或引用其他规则。

当您有引用其他规则的规则时,您的规则会陷入实施细节中,并且不再只关注您的策略。

其他最佳实践之一是规则不应重复其他规则的条件。

所以...@zenbeni 上面的回答是很好的建议。当 rule1 为真时,您可以考虑它在您的策略模型中的含义,并在此基础上推导出模型中的新事实。规则 2 相同。

于 2014-04-17T17:16:08.270 回答