0

我们正在尝试使用 Drool 作为我们的规则引擎服务。我们到目前为止所做的如下所列

无状态会话满足了我们的大部分需求(给出一组数据,执行规则并返回数据,仅此而已)。但是使用无状态,我们不得不妥协 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"}
   ]
  }

我们需要帮助来实现这一要求。另外,如果我们做错了什么,请帮助理解

4

1 回答 1

0

在 kmodule.xml 中,您可以尝试添加“原型”范围,因为默认为“单例”:

<ksession name="SessionName" type="stateful" default="false" clockType="realtime" scope="prototype"/>
于 2019-09-06T06:29:20.320 回答