JESS 与 DROOLS :向后链接

2023-12-29

我正在尝试用 Drools 替换 Jess 作为我们项目中的向后链接规则引擎。我一直在寻找有关如何使用 Drools 完成反向链接的简单示例。有趣的是,只有 1 个相同example http://www.slideshare.net/MarkProctor/reactive-transititive-closures-with-drools-backward-chaining在每个网站上(我不明白BC是怎么回事,但让我们暂时忘记它)。

Jess 中 BC 的一个非常简单的例子:

//q is a fact template with a slot named 'n'
//when there's a q with n==8 print something
//I need a q with n==8 to fire a rule so I will insert it myself!

(deftemplate q (slot n))
(do-backward-chaining q)
(defrule printq (q (n 8))   =>  (printout t "n is eight! yeah!" crlf))
(defrule iNeedn8 (need-q (n 8)) => (assert (q (n 8))))
(reset)
(run 1)
//fires printq and prints to console...

相当于流口水:

package com.example;

declare Q
    n : int
end

rule "print q"
when
    Q(n == 8)
then
    System.out.println("n is eight by drools!");
end

//I'M LOST HERE! HELP!

如何使用 Drools 实现相同的行为?


在Drools中,BC的总体思想是使用查询。除了规则“print q”之外,您还需要:

query noQ( int $num )
    Goal(num==$num) and not Q(num == $num)
end

rule goal when
    Goal( $n: num )
    noQ($n;)
then
    Q q = new Q($n);
    insert( q );
end

rule go when
then
    insert( new Goal( 8 ) );
end

没有办法让 Drools 自己检测缺失的事实;您必须提供目标和查询来“弥合差距”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JESS 与 DROOLS :向后链接 的相关文章

  • 规则引擎Drools使用 第十二篇 Drools 的高级语法之RHS加强

    RHS部分是规则体的重要组成部分 当LHS部分的条件匹配成功后 对应的RHS部分就会触发执行 一般在RHS部分中需要进行业务处理 在RHS部分Drools为我们提供了一个内置对象 名称就是drools 本小节我们来介绍几个drools对象提
  • 规则引擎Drools使用 第五篇 Drools内置方法

    Drools内置方法 规则文件的RHS部分的主要作用是通过插入 删除或修改工作内存中的Fact数据 来达到控制规则引擎执行的目的 Drools提供了一些方法可以用来操作工作内存中的数据 操作完成后规则引擎会重新进行相关规则的匹配 原来没有匹
  • 如何通过 ant 构建脚本编译 .drl 文件

    我是流口水的新手 我想知道是否可以使用某种可以在 Windows 命令行 shell cmd 中输入的命令来编译 drl 文件 我查看了 drools 发行版附带的二进制文件 但我无法找到编译 drl 文件的方法 我对这样的命令感兴趣的原因
  • java代码访问drools guvnor

    我们有一个项目要求通过Web应用程序访问guvnor 有人可以让我知道如何通过java代码访问guvnor吗 抵押贷款示例已经有一些示例代码 Drools Expert手册大概有详细解释 这是代码 private static Knowle
  • CLIPS 模式匹配中的数字相等测试失败?

    我的 CLIPS 文件中有以下规则 defrule check final declare salience 12 scnt lt set count value v class c test v total gt printout T t
  • kie 工作台部署战争不工作(tomcat)

    我已经下载了 kie workbench 并解压kie drools wb distribution wars 6 2 0 Final tomcat7 war 我以前从未使用过 tomcat 但我想使用工作台 但似乎没有一个选项可以让工作台
  • Drools 6.0 在运行时动态加载规则

    我想在运行时加载 drl 文件 我发现的帖子包括这个one适用于 5 0 版本 但我不知道如何为 drools 6 0 版本执行此操作 在 Drools 6 中 您的规则包被部署到 Maven 提供了 KieScanner 您可以将其附加到
  • 了解议程组的锁定活动

    我尝试了一个示例来了解锁定活动的工作原理 当我在不使用议程组的情况下触发规则时 一切似乎都很好 但是 当我取消注释下面代码中的议程组并将焦点设置为组 B 组 时 不会触发任何规则 Rule rule Additional Rs 1 tax
  • 流口水查询。它们是如何评估和执行的?

    我正在概念验证应用程序中评估 Drools 6 我要么误解了 Drools 中的查询是如何工作的 要么是我没有正确实现某些功能 有人可以向我解释一下这种行为吗 我有一条规则应该对经过验证的记录起作用 如下所示 rule Patient In
  • 在这种情况下我应该使用 Drools 吗?

    我将使用大学的图书馆系统来解释我的用例 学生在图书馆系统中注册并提供个人资料 性别 年龄 院系 以前完成的课程 当前注册的课程 已借阅的书籍等 图书馆系统中的每本书都会根据学生的资料定义一些借阅规则 例如 计算机算法课本只能由当前注册该班级
  • Drools:在数据库中存储规则

    目前 我将所有规则文件存储在文件系统上 它们有很多版本 并在启动时将它们的不同版本加载到内存中 我想更改为将我的 drools 文件存储在数据库中 并且想知道 Drools 是否有任何解决方案或插件可以促进这一点 或者我应该自己制作 Tha
  • 有没有可以使用 Drools 的 GUI?

    我是流口水的新手 我已经将 Drools 与 jsp 集成了 现在我想知道有没有 Drools 的 GUI 可以运行其应用程序吗 谢谢 Drools Guvnor 是用于管理规则的 Web GUI http docs jboss org d
  • JDK21和 Flowable 7.0.0

    JDK21和 Flowable 7 0 0 一 Flowable 二 项目搭建 1 依赖包 2 数据库 3 资源文件 1 YML配置文件 2 Drools kbase
  • Drools 中类型不安全的对象字段访问

    我正在使用一个系统 其中插入 Drools 引擎的一些数据遵循以下 严重过度简化 格式 public class Item public String getValueType public Object getValue 这些值可能有几种
  • Drools - 使用累积来查找最小值和最大值

    我有一个流口水的问题 困扰我一段时间了 我想使用累积从 Item 对象列表 包含价格 中找出最低和最高价格 插入一个包含 Item 列表的 Member 对象 包含 Item 对象列表 groovy java source pseudo c
  • 如何在 Drools 中参数化后时间约束?

    我有一个与以下示例非常相似的规则 rule correlate orders when bo BuyOrderEvent id id ae AckEvent id id this after 0 10s bo then do somethi
  • Guvnor规则编码

    我在 Excel 中有一个 Drools 决策表 规则中使用的一些字符串具有 字符 当我从这个决策表在 Guvnor 中构建规则包时 我在规则源中得到了错误的字符 例如 在电子表格中 gt rea de Lazer POR 在内置的 drl
  • Drools 知识库 已弃用

    我正在将 Drools 规则引擎集成到我的应用程序中 我发现的 99 的入门示例如下 KnowledgeBuilder kbuilder KnowledgeBuilderFactory newKnowledgeBuilder kbuilde
  • 从 Drools 6 中的数据库加载和更新规则

    如何在启动时从数据库表加载规则并从 Drools 6 2 0 中的同一个表更新它们 我找到了一个example http sujitpal blogspot com 2013 03 jboss rules in database take
  • 如何在 drools 规则引擎中动态更新规则

    我正在开发 drools 规则引擎 在这个场景中将 when 块中的值从 1000 更改为 2000 将符号从 gt 更改为 rule payment when account Paymentinfo transaction lt 1000

随机推荐