如何在调用kie api容器时使用activation-group?

时间:2018-05-17 08:58:58

标签: drools jbpm rule-engine kie kie-workbench

我一直在尝试使用激活组,但我不知道如何从Api休息中调用激活组?请帮助我如何在下面的请求中添加激活组。


package com.myteam.arduinodevre2;

//from row number: 1
rule "Row 1 Rulduino"
activation-group "gold"
    dialect "mvel"
    when
        f1 : ArduinoEntity( switchOn == true , voltaj >= 1000 , voltaj < 2000 )
    then
        modify( f1 ) {
                setLightOn( true )
        }
end

//from row number: 2
rule "Row 2 Rulduino"
activation-group "gold"
    dialect "mvel"
    when
        f1 : ArduinoEntity( switchOn == true , voltaj >= 5000.0 , voltaj < 10000.0 )
    then
        modify( f1 ) {
                setLightOn( false )
        }
end

//from row number: 3
rule "Row 3 Rulduino"
activation-group "gold"
    dialect "mvel"
    when
        f1 : ArduinoEntity( switchOn == false )
    then
        modify( f1 ) {
                setLightOn( false )
        }
end

//from row number: 4
rule "Row 4 Rulduino"
activation-group "silver"
    dialect "mvel"
    when
        f1 : ArduinoEntity( switchOn == true , voltaj >= 1.0 , voltaj < 3.0 )
    then
        modify( f1 ) {
                setLightOn( false )
        }
end


{

  "commands": [
    {
      "insert": {
        "object": {
          "com.myteam.arduinodevre2.ArduinoEntity": {
            "switchOn": true,
            "voltaj": 1100

          }
        },
        "out-identifier": "ArduinoEntity",
        "return-object": true
      }
    },
    {
      "fire-all-rules": "" ,
            "fire-targetgroup": "silver"
    }
  ]
}

如何通过使用这个kinnd of thing来激活我的目标激活组 - &gt;“fire-all-rules”:“silver”但是我不会通过Google搜索找到有价值的答案。

2 个答案:

答案 0 :(得分:1)

您可以从KieSession获取ActivationGroup,而不是从KieContainer获取。您需要从KieContainer创建一个KieSession,然后使用 kieSession.getAgenda()。getActivationGroup(“”)。setfocus()方法来获取ActivationGroup。您可以检查此link以检查方法返回类型以及与其相关的其他方法。

答案 1 :(得分:0)

您不呼叫激活组。您可能指的是一个议程小组。您可以将重点放在一个议程组上,并且该议程组中有资格触发的所有规则。

您可以进一步将激活组添加到规则中,这将仅触发该组中的一条规则。

为了从REST API中“调用”议程组,您需要像这样设置焦点:

{
  "commands": [
    {
      "set-focus": "myAgendaGroup"
    },
    {
      "insert": {
        "object": {
          "com.myteam.arduinodevre2.ArduinoEntity": {
            "switchOn": true,
            "voltaj": 1100
          }
        }
      }
    },
    {
      "fire-all-rules": {}
    }
  ]
}