【发布时间】:2018-05-23 00:03:57
【问题描述】:
我们正在尝试使用 Drool 作为我们的规则引擎服务。下面列出了我们到目前为止所做的工作
- Deployed workbench 7.2.Final
- Deployed KIE server 7.2.0.Final
- 配置了一些数据对象、规则,将更改部署到 KIE 服务器,我们能够使用 REST API 执行规则
无状态会话满足了我们的大部分需求(给出一组数据,执行规则并返回数据,就是这样)。但是使用无状态,我们不得不妥协 Drools 有状态会话提供的许多重要特性。
所以我们尝试对每个请求使用有状态会话。这意味着会话应在请求结束后立即处理。此外,即使会话名称相同,并行请求也不应相互干扰
我们发现容器运行时策略配置(Workbench > Deploy > {any container} > Process Configuration > Runtime strategy)
但即使将容器策略配置为 Per Request,它的行为仍然与 Singleton 相同(每次请求后会话不会被释放)
我们读它的地方很少,运行时策略只在 jBPM 中实现
我们向KIE服务器发出请求的方式如下所示
Request: POST {HOST}/kie-server/services/rest/server/containers/instances/TestRequest_1.0.4
{
"lookup": "ab-session", //stateful session
"commands": [
{
"insert": {
"out-identifier": "125",
"object": {
"com.myteam.testrequest.Product": {
"id": "123",
"name": "Hoo Hoo",
"count": 0
}
},
"return-object": "true"
}
},
{
"insert": {
"out-identifier": "126",
"object": {
"com.myteam.testrequest.Product": {
"id": "123",
"name": "Hoo Hoo",
"count": 0
}
},
"return-object": "true"
}
},
{"fire-all-rules": "hf2"}
]
}
我们需要帮助来实现这一要求。另外,如果我们做错了什么,请帮助理解
【问题讨论】:
-
你能在哪里解决这个问题?
-
我们的一些理解是不对的。 drools 中的无状态会话实际上是有状态会话的按请求实现。这意味着有状态支持的所有命令也支持无状态。 (我们最初认为无状态会话不支持
modify之类的命令)如果您想针对每个请求策略进行回答,则仅在jBPM中可用
标签: jboss drools jbpm kie-workbench drools-kie-server