休息时调用规则服务时如何在json中分配规则流组

时间:2019-02-14 10:19:24

标签: drools redhat-brms

我正在使用rest来激发使用ruleflow组定义的brms7中的规则,我输入的json数据如下所示:

{        

 "commands": [
                {
                        "insert": {
                                "object": {
                                        "com.myspace.driver_department_traffic_violations.Violation": {
                                                "speedLimit": 40,
                                                "type": "Speed",
                                                "actualSpeed": 55
                                        }
                                }
                        }
                },             
                {
                        "fire-all-rules": {}
                },
                {
                        "get-objects": {
                                "out-identifier": "violation"
                        }
                },
                {
                        "dispose": {}
                }
        ]}

问题是如何在json数据内分配规则流组?服务器中的规则已分配了规则流组,我需要在json中分配规则流组名称以触发规则。

非常感谢!

最诚挚的问候

1 个答案:

答案 0 :(得分:0)

我知道这个问题已经存在一段时间了,所以我只是把答案扔在这里,以防有人来寻找答案。

在我的示例中,规则流组称为“事件”。

{
  "lookup": "defaultKieSession",
  "commands": [
    {
      "insert": {
        "object": {
          "com.myspace.driver_department_traffic_violations.Violation": {
            "speedLimit": 40,
            "type": "Speed",
            "actualSpeed": 55
          }
        },
        "out-identifier": "violation"

      }
    },
    {
      "set-focus": {
        "name": "incident"
      }
    },
    {
      "fire-all-rules": {}
    }
  ]
}

要在Decision Server上远程执行,您的代码应如下所示:

List<Command<?>> commands = new ArrayList<>();
KieServices kieServices = KieServices.Factory.get();
KieCommands commandFactory = kieServices.getCommands();
commands.add(commandFactory.newAgendaGroupSetFocus("incident"));

如果您想知道,AgendaGroups也将以相同的方式对待。 您可以从文档中阅读关于this excerpt的内容。