首页 文章

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

提问于
浏览
1

我一直在使用基于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 回答

  • 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激发时触发,反之亦然 .

    可能还有其他选择,但不能提出基于单个案例的一般方法 .

相关问题