Drools drl文件并从API调用调用

时间:2016-01-04 12:19:25

标签: java drools rules kie-server

我是Drools的新手,并试图全面了解它......

我有一个我在Workbench 6.3.0中创建的规则。最终:

package demo.dummyapp;

import java.lang.Boolean;

rule "RuleThree"
    dialect "mvel"
    when
        SMS(sendMessage == true )
    then
        System.out.println( "This message is being sent" );
end

从Postman我使用REST API调用以下内容:

POST: http://myserver/kie-server-6.3.0.Final-ee7/services/rest/server/containers/instances/dummyapp

{
"lookup": "ksession1",
"commands": [{
"insert": {
"return-object": true,
"object": {
"demo.dummpyapp.SMS": {
"sendMessage": true
   }
  }
 }
}, {
"fire-all-rules": "RuleThree"
}]
}

服务器的响应成功:

{
  "type": "SUCCESS",
  "msg": "Container dummyapp successfully called.",
  "result": "{\n  \"results\" : [ {\n    \"key\" : \"RuleThree\",\n    \"value\" : 0\n  } ],\n  \"facts\" : [ ]\n}"
}

但是我没有在server.log中看到我的println消息......所以我怀疑规则是按预期发射的?任何建议我都要感激。

1 个答案:

答案 0 :(得分:2)

POST正文的JSON中有拼写错误。对象是

demo.dummyapp.SMS

而不是

demo.dummpyapp.SMS

成功调用容器但没有匹配规则。因此,JSON响应中的value键为0

尝试发出此POST请求:

POST: http://myserver/kie-server-6.3.0.Final-ee7/services/rest/server/containers/instances/dummyapp

{
"lookup": "ksession1",
"commands": [{
"insert": {
"return-object": true,
"object": {
"demo.dummyapp.SMS": {
"sendMessage": true
   }
  }
 }
}, {
"fire-all-rules": "RuleThree"
}]
}