当前位置: 首页 > 知识库问答 >
问题:

使用Scala修改Drools中的事实

锺离晗昱
2023-03-14

(这里的新手垂涎三尺)我一直在寻找将对象(事实)加载到工作内存并通过规则修改它们的方法。根据我目前的发现,我认为我应该在规则结果中使用“修改”指令,但找不到太多关于它的信息。我还遇到了一个使用modifyObject的链接,该链接假定包含2个参数,将旧对象替换为新对象[http://legacy.drools.codehaus.org/Working内存]。

考虑到我使用的是Scala对象(即不可变对象),这是一种方法吗(收回旧对象,插入新对象)?如果是这样的话,有人能提供这样的代码示例吗?

共有1个答案

何宏博
2023-03-14

我认为最好使用带有两个参数的更新调用,即使您必须检索事实句柄:

 when
     $s: Sale(...)
 then
     Sale s = new Sale( $s,... );
     update( kcontext.getKieRuntime().getFactHandle( $s ), s );
 end

删除和插入可能会在网络中引起比更新更多的工作。

请注意,当“修改”不可用时,不能使用其他Drools功能。在依赖于事实修改来创建新激活的产生式规则系统中,使用功能性scala和使用事实更新相结合是一种有点矛盾的方法。

 类似资料:
  • 这篇文章建议添加一些事实类作为嵌套规则的一种方式。http://drools.46999.n3.nabble.com/How-can-I-nested-rules-td4020488.html#a4020681 我想知道的是——有没有保证“年龄和性别女性”在“怀孕”之前执行,“怀孕”在“怀孕2”之前执行?据我所知,我的申请中总是这样。但是,它是记录在口水留档的某个地方,还是只是等待倒塌的纸牌屋?

  • 我需要编写一条规则,统计过去10秒内我在流中收到的事实数量,如果它们符合特定标准。 例如,如果两辆黑色汽车在最后10秒内通过十字路口,我想提醒某人。 我有以下规则: 当我乘坐一辆黑色汽车经过时,这是有效的,但是,除非有两辆黑色汽车,否则我不希望它开火。我找不到一个很好的例子。 谢谢

  • 我在excel电子表格中有一个drools决策表,其中有两条规则。(此示例已大大简化,我正在使用的示例有更多规则。) 我的目标是让规则自上而下地触发,随后的规则可能取决于早期规则对事实/对象所做的更改。 这个问题有解决办法吗?任何帮助都将不胜感激,谢谢!

  • 假设我们在JavaEE应用程序中有这些类,它们也是Hibernate实体: 在过去几年中,创建了一些Swing窗口,让配置器用户创建ad deploy DRools软件包规则,以自定义客户所需的工作流。这些窗口以某种方式将Swing组件转换为Drool Mvel文本,以避免配置程序用户编写原始代码。然后将这些规则保存并部署到BLOB字段中的DB表中,并在需要时执行。问题是,现在我们需要实现一个新的

  • 我们正在制定一项规则,其结构如下: 我们有一个包含已验证和未验证元素的列表。验证和未验证之间的区别是通过赋予元素不同的状态来实现的。 我们从列表中获取未验证的元素。 将每个未验证的元素与同一列表中的验证元素进行比较。 比较后,未验证的元素将成为验证的元素,在验证未验证的元素时需要考虑。 当我们想要更新元素的原始ArrayList时,问题就出现了。我们需要能够在工作内存中的原始ArrayList中更

  • 问题内容: 我正在尝试读取HTML文件,并添加指向某些文本的链接: 例如:我想添加链接到“ Campaign0”文本。: 要添加的链接: 我需要一个Java程序来修改html,以在“ Campaign0 ” 上添加超链接。 我如何用Jsoup做到这一点? 我用JSoup尝试了这个: 这样对吗 ??它不起作用:( 简而言之 :是否有类似-> 在Java代码中使用JSoup或任何技术? 问题答案: 您