问题标签 [drools]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
drools - 快速加载一个drools知识库
我正在尝试使用 Drools 作为语法关系到语义映射框架的规则引擎。即使是现在,规则库也超过 5000 条规则,并将得到扩展。目前在使用 Drools 时,每次运行程序时,读取包含规则的 drl 文件和创建知识库都会花费大量时间。有没有办法创建一次知识库并将其保存为某种持久格式,该格式可以通过仅在进行更改时重新生成知识库的选项快速加载?
java - Drools - 在规则条件或结果中做复杂的事情
在我的公司,我们计划在几个项目中使用 Drools 和 BRE。现在我们试图定义一些最佳实践。
我的问题是在规则条件/结果中应该做什么和不应该做什么。鉴于我们可以直接编写 Java 或调用方法(例如 From a Global object in the Working Memory)。
例子。给定一个评估通用对象(例如人)的规则,将属性设置为 true。现在,只能为进入数据库并获取该信息的对象定义该特定属性。所以我们有两种实现方式:
备选方案 A:
- 转到数据库并获取对象属性(真/假,代码)
- 将对象插入工作内存
- 评估规则
备选方案 B:
- 插入具有连接到数据库的方法的全局对象并检查给定对象的属性。
- 将对象插入到工作内存中进行评估
- 在规则中,调用全局对象并执行对数据库的访问
其中哪个被认为更好?我真的很喜欢 A,但有时 B 更直接,但是如果引发数据库中的异常之类的会发生什么?
我已经在 Packt Publishing 的 Drools 5.0 书中看到了替代 B 的实现,但是他们只是在模拟,他们根本没有谈论访问数据库的实际含义。
谢谢,
java - 是否可以向正在运行的 Drools 会话添加新规则?
嘿,我有一个工作项目,可能需要我在程序运行期间将规则加载/卸载到有状态的 Drools 会话。(最终使用 JMX,但现在我只是想向现成的会话添加规则)
我想知道,这是否可能,在这种情况下如何?我需要重建会话吗?我试图简单地从会话中获取知识库,将我的规则文件添加到其中,然后触发所有规则,但这不起作用。
谢谢!
security - Seam Drool 安全规则 - 工作记忆中的其他事实?
我创建了一个名为的类ApplicationLoginContext
,其中包含有关用户经过身份验证后的信息(用户名、登录时间戳、远程 IP 地址等)。我正在使用 JBoss Seam 安全规则(基于 Drools)进行授权和权限检查在我的申请中多次。有没有办法将此登录上下文类永久添加到我的安全规则的工作内存中?例如,我有一个登录事件的监听器。在此侦听器中,我创建了登录上下文对象,并将其添加到我的安全规则工作内存中。从那里,在我的安全规则文件中,我将能够执行以下操作:
我尝试将 ApplicationLoginContext 对象添加到会话中,但这似乎没有帮助。还有什么我应该做的吗?我不想每次进行权限检查时都将其作为参数包含在内。理想情况下,我想在每个会话中注入一次并完成。
想法?
database - Drools:在数据库中存储规则
目前我将所有规则文件存储在文件系统上(它们有很多版本),并在启动时将它们的不同版本加载到内存中。我想更改为将我的 drools 文件存储在数据库中,并且想知道 Drools 是否有任何解决方案或插件可以促进这一点,或者我应该自己制作?
谢谢。
events - Drools - 重复事件和时间关系
一般来说,我正在为等于(按属性值)事件可以在任何时间以连续方式(每秒)发生的事件编写规则。我只想按小时为匹配事件触发规则。
更详细地说:我想在第一次插入事件(尚不存在)或插入事件时触发规则,并且当且仅当相等的事件已插入工作内存但最新的事件是至少一小时前。
编写此类规则的合理方式是什么,事件持续时间为 24 小时?
drools - JBoss Drools 和 Mule 集成
有没有人有将JBoss Drools与Mule ESB集成的经验?
虽然Apache ServiceMix似乎有很好的 Drools 支持 ( http://servicemix.apache.org/servicemix-drools.html ),但 Mule 中基于 Web 的监控和工具使它对我们特别有用,因为我们经常有非技术服务人员需要访问有关消息传递的信息。
stored-procedures - JBoss Drools 能否用于为批量销售交易分配信用?
我参与了我们经常使用 SQL 访问数据仓库并根据某些规则进一步处理数字的项目。这些规则目前是通过存储过程或类似的东西来实现的。
我没有使用过 Drools,也没有接触过它。
我特别感兴趣的是,是否可以使用它为大量销售交易分配信用。
如果有这种用法的例子,请告诉我。
谢谢。
logic - 通过生产规则解决数独
我正在尝试使用生产规则解决任何数独难题,并使用 Drools 作为我的推理引擎。Drools 的示例之一正是数独求解器,以下是相关规则:
...但它不能正常工作。一直以来,网格中的一个或多个单元格最终都是空的,程序将这个谜题报告为“未解决”。
有没有人为数独构建了一个基于推理规则的工作求解器?使用的语言或引擎无关紧要,我希望看到一组规则,以便我可以将它们调整为 Drools
drools - 流口水融合不应该从工作记忆中清除事件
我有以下两条规则:
以及每天生成 10K 次此类备份并模拟 50 天的“压力测试”。鉴于上述所有规则均指 3 天的窗口,并且系统中没有其他规则,因此 50 天后内存中最多应该有 30K 事件(更少,因为应该修剪成功的事件)。但是,当我检查流入口点(WorkingMemoryEntryPoint)的内容时,我在内存中有大约 380K 事件 - 这意味着我有一些非常旧的事件没有像它们应该的那样被自动驱逐。
KB配置为流处理模式,事件定义如下:
所以没有明确的生命周期管理。我究竟做错了什么 ?我知道它与规则 #2 有关,因为如果我删除它,我会在内存中准确地得到 30K 事件(每天 10K * 3 天窗口)