调用KIE API容器时,如何通过REST API使用activation-group触发规则组?
解决Drools REST API触发指定Activation Group的问题
我看了你配置的规则和当前的REST请求,问题出在触发指定activation-group的命令格式上——你用的fire-targetgroup并不是Drools REST API支持的参数,咱们来调整一下请求格式就能实现你想要的效果。
首先,你的规则代码已经正确给规则分配了activation-group(gold和silver),这部分没问题。要通过REST API触发特定组的规则,需要用fire-all-rules命令搭配activation-group参数,有两种常用写法:
方式1:直接指定activation-group
这是最直接的写法,把activation-group作为fire-all-rules的属性传入:
{ "commands": [ { "insert": { "object": { "com.myteam.arduinodevre2.ArduinoEntity": { "switchOn": true, "voltaj": 1100 } }, "out-identifier": "ArduinoEntity", "return-object": true } }, { "fire-all-rules": { "activation-group": "silver" } } ] }
方式2:使用规则过滤器
如果需要更复杂的规则筛选(比如同时指定多个条件),可以用filter来指定activation-group:
{ "commands": [ { "insert": { "object": { "com.myteam.arduinodevre2.ArduinoEntity": { "switchOn": true, "voltaj": 2.0 } }, "out-identifier": "ArduinoEntity", "return-object": true } }, { "fire-all-rules": { "filter": { "activation-group": "silver" } } } ] }
额外说明
- 记住
activation-group的核心特性:同一组内的规则是互斥的——比如你gold组的3条规则,当事实满足多个规则的条件时,只会触发第一个匹配的规则,不会全部执行。 - 如果要触发
gold组,只需要把示例中的"silver"换成"gold"即可。
内容的提问来源于stack exchange,提问作者loki
相关产品推荐
相关产品推荐

