如何在基于电子表格的drools决策表中触发多个规则?

时间:2014-10-21 18:47:47

标签: drools

我一直在使用基于drools的电子表格决策表。我的要求是,我需要触发一次执行中指定的多个规则。我在这里附上了决策表图像。

为了解释我的问题,如果输入中的条件是前三个参数是TRUE | FALSE | FALSE(符合第一个规则标准),后面跟最后两个参数的值满足最后三个规则标准

因此,如果输入条件为TRUE | FALSE | FALSE | TRUE | FALSE |,是否有任何方法可以触发第一个规则和第二个规则并将结果返回到列表中,这将在此处案例,APPROVERTWO和APPROVERFOUR进行第一次行动。

-------------------------------------------------------------------------------------------------------------------------------------------
Role    |ConditionOne   |   ConditionTwo    |   ConditionThree  |conditionFour  |conditionFive  |   Approver one        |   Approver two
-------------------------------------------------------------------------------------------------------------------------------------------
ROLEONE |   TRUE        |   FALSE           |   FALSE           |   FALSE       |   TRUE        |   APPROVERTWO         |   APPROVER SEVEN
ROLEONE |               |                   |                   |   TRUE        |   FALSE       |   APPROVERFOUR        |   -
ROLEONE |               |                   |                   |   TRUE        |   TRUE        |   APPROVERFIVE        |   -
ROLEONE |               |                   |                   |   FALSE       |   FALSE       |   APPROVERSIX         |   -
---------------------------------------------------------------------------------------------------------------------------------------------

1 个答案:

答案 0 :(得分:1)

直接的解决方案是修改“Approver one”列中的操作,以便在结果列表中返回APPROVERTWO和APPROVERFOUR。

您的应用程序逻辑也可能不适合Drools电子表格决策表的架构(反之亦然,这相当于同一件事)。您所描述的内容可以很容易地表达为:

rule
when
  Fact( role == "ROLEONE",
        conditionOne == true, conditionTwo == false, conditionThree == FALSE,
        conditionFour != conditionFive )
then
  return APPROVERTWO and APPROVERFOUR in a list
end

您在电子表格中表达的逻辑基于属性的各个不同值。显然,第一行产生的规则永远不会在#2触发时触发,反之亦然。

可能还有其他选择,但无法根据单个案例提出一般方法。