【问题标题】:How to format xml string for Drools KIE server?如何为 Drools KIE 服务器格式化 xml 字符串?
【发布时间】:2015-12-07 08:09:15
【问题描述】:

目前,我在 Drools Workbench 中构建 Drools 规则包(一个 *.jar 文件),并将其部署到 KIE 服务器容器。要请求该服务,我只需将如下所示的 XML 命令发布到容器中,该命令摘自 here

<batch-execution lookup="defaultKieSession">
<insert out-identifier="message" return-object="true" entry-point="DEFAULT">
    <com.arty.drlwb.MyExampleType>
          <message>Hello Worlddddd</message>
    </com.arty.drlwb.MyExampleType>
</insert>
<fire-all-rules/>
</batch-execution>

我可以得到我所期望的。一切似乎都很好。

但是我发现有two KieSessions in the rule package,不知道会用到哪一个。如果使用有状态的,并且我一遍又一遍地使用不同的事实(这里是消息)发布 XML 命令,据我所知,所有事实都将保存在 Drools 的工作内存中。

那么,会不会因为没有retract命令而导致内存泄漏?如果是,那么正确的方式格式化XML命令的方法是什么?

【问题讨论】:

    标签: drools


    【解决方案1】:

    您想在 kie-server 中用于批处理执行的会话可以由 &lt;batch-execution&gt; 元素中的属性 lookup 指定。在您的情况下,将使用名称为 defaultKieSession 的 KieSession。

    如果未指定lookup 属性,则将选择kmodule.xml 中定义为默认(default="true")的KieSession。如果在 kmodule.xml 中指定了多个默认会话(就像在您之前的帖子中一样),那么我不确定会选择哪一个。我想说的是,在您的 &lt;batch-execution&gt; 元素中提供 lookup 属性以避免混淆始终是一个好习惯。

    关于事实的撤回,鉴于此操作在 Drools 6.x 中被重命名为“删除”,您要查找的命令是 org.drools.core.command.runtime.rule.DeleteObjectCommand。奇怪的是,这个命令仍然被序列化为&lt;retract&gt;

    希望对你有帮助,

    【讨论】:

      猜你喜欢
      • 2017-11-23
      • 2011-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多