根据请求流失有状态会话

时间:2017-12-08 17:36:58

标签: jboss drools jbpm kie-workbench drools-kie-server

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

无状态会话满足了我们的大多数要求(提供一组数据,执行规则并返回数据,这就是它)。但是使用无状态我们必须妥协Drools有状态会话提供的许多重要功能。

因此我们尝试按请求使用有状态会话。这意味着会话应在请求结束后立即处理。此外,即使会话名称相同,并行请求也不应相互干扰

我们发现了容器运行时策略配置(Workbench> Deploy> {any container}> Process Configuration> Runtime strategy)

enter image description here

但即使将容器策略配置为 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"}
   ]
  }

我们需要帮助来实现这一要求。另外,请帮助理解我们是否做错了

1 个答案:

答案 0 :(得分:0)

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

<ksession name="SessionName" type="stateful" default="false" clockType="realtime" scope="prototype"/>