我们正在尝试使用 Drool 作为我们的规则引擎服务。我们到目前为止所做的如下所列
- 部署工作台 7.2.Final
- 部署 KIE 服务器 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"}
]
}
我们需要帮助来实现这一要求。另外,如果我们做错了什么,请帮助理解