问题标签 [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.

0 投票
1 回答
17787 浏览

java - Drools 规则:如何在“何时”部分使用方法?

我需要在 DSLR 文件的“何时”部分执行一个方法,但我不确定它是否可能。例子:

(注意:isInAgeRange() 和 hasAtLeastOptIns() 是 User 的方法)

我尝试使用 eval() 并没有出现错误,但它没有执行。像这样:

我该如何解决这个问题?

0 投票
1 回答
1698 浏览

jboss - 一般流口水问题x

在过去的几个月里,我的公司一直在使用名为 RulePoint 的 Informatica(以前的 AgentLogic)公司的产品。该产品已证明自己非常易于使用,并带有一个开发良好且易于使用的定制 SDK。我们将产品用于 CEP 的方式相当简单,我们有 2 个源来监控我们的规则数据,第一个是 JMS 队列,第二个是 Jabber IM 帐户。该产品可以在任何基于 Java 的应用服务器(WebLogic、Tomcat 等)上运行,并且几乎可以完美运行。

上周我的老板说,“嘿,我听说我们可以用一个名为 Drools 的开源产品来做与 RulePoint 一样的事情。看看,让我知道你的想法。”

我听说有人使用 Drools 进行基于流的操作(验证等),但是,我从未听说有人在实践中使用他们的 CEP 产品(Fusion)。所以,作为一个勤奋的工作者,我承担了这个任务。我已经下载了所有文件(5.0 版)和随附的文档并开始阅读。我已经阅读了几乎所有的文档并运行了大部分示例,但我仍然没有真正看到流口水如何用于 CEP。

虽然有使用 JMS 中的数据(或 Facts,我猜)的示例,但我看不出这个东西是如何保持“运行”的,持续监控队列直到应用程序实际停止。RulePoint 必须只是坐着听,但是 Drools 似乎没有。

我可能会为我们的需要编写一个成熟的命令行应用程序,但是,我希望利用使用应用程序服务器提供的一些好处。

我想我正在寻找一些好的教程或某人如何在生产中使用 Drools 和 CEP 的示例。

0 投票
3 回答
40415 浏览

java - 如何快速学习 Drools 或其他规则引擎

我们正在着手开发一个模块,该模块将根据某些标准生成一些建议。标准将采用业务规则集的形式,因此我正在考虑使用像 Drools(开源和 java :-) 这样的业务规则引擎)

我们需要快速学习 Drools(2-3 周)并能够使用 JBoss Drools 实施规则。我们应该遵循哪些文章、教程、书籍和最佳实践?

0 投票
1 回答
1018 浏览

jboss - 将 Drools 与 JBossESB 集成

最近几周,我一直在研究 Drools 以及其他 CEP/规则引擎,我相信我想使用 Drools。我还有一个 JBossESB,它负责在不同服务之间路由消息。

除非我完全错过了这条船,否则我一生都无法看到如何通过 JBossESB 将数据输入 Drools。

在我的 ESB 内部,我有需要监控和正确路由的数据(事实)(一些数据属性还需要根据每个事实中的其他属性进行修改,我认为使用 Drools(Fusion 和 Expert 的组合) ) 将是处理此问题的最佳方法,但是,我在任何 JBoss(或其他)文档中都没有真正看到我将如何完成此操作。

这是马前车的情况吗?我在某个地方完全错过了船吗?

任何帮助是极大的赞赏。

谢谢。

0 投票
2 回答
21863 浏览

java - 非常基本的drools 5运行,基本设置和快速入门

是否有更全面的 drools 5 快速入门。我试图运行简单的 Hello World .drl 规则,但我想通过一个 ant 脚本来完成,可能只使用 javac/java:

我收到以下错误:注意:如果没有 Eclipse 或任何其他 IDE,我不会完全运行:

是否有更全面的 drools 5 快速入门。我试图运行简单的 Hello World .drl 规则,但我想通过一个 ant 脚本来完成,可能只使用 javac/java:

我收到以下错误:注意:如果没有 Eclipse 或任何其他 IDE,我不会完全运行:

我的 javac 和 java 目标确实包含以下库:

这是引发错误的 Java 代码。我注释掉了 java.compiler 代码,它也不起作用。

公共无效规则(){

}

...

在这里,我认为 Ant 无关紧要,因为我将 fork 设置为 true:

错误在第 1 行抛出。

基本上,除了打电话,我什么都没做

最终 KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

我在 Windows XP、Java6 和 Ant.1.7 中运行。Drools-Rules 的最新(截至昨天)版本 5。

0 投票
2 回答
2268 浏览

drools - Drools 5.0 - 本地... 全球

我想声明一个仅限于我的规则文件的全局变量。例如:变量 $reUseMe 只声明一次。

规则1

$reUseMe : POJO(val = 1) //其他条件

规则 2

$reUseMe > 值

0 投票
2 回答
1022 浏览

java - 我的一个 java 例程中有太多打开的文件

我有一个多线程代码,它必须生成一组对象并将它们写入文件。当我运行它时,有时会在异常中收到“打开的文件太多”消息。我检查了代码以确保所有文件流都被正确关闭。这是堆栈跟踪。

当我执行 ulimit -a 时,允许打开的文件设置为 1024。我们认为增加这个数字不是一个可行的选项/解决方案。

现在,通过仔细查看打开文件列表,到目前为止我们已经确定 VM 正在多次打开同一个类文件。

/export/BaseEvent.class 236
/export/EventType1BaseEvent.class 60
/export/EventType2BaseEvent.class 48
/export/EventType2.class 30
/export/EventType1.class 14

其中 BaseEvent 是所有类的一部分,EventType1 和 EventType2 分别继承 EventType1BaseEvent 和 EventType2BaseEvent。为什么类加载器会加载相同的类文件 200 多次。似乎它在创建任何子实例时都打开了基类。

这是正常的吗?除了增加打开文件的数量之外,它还能以其他方式处理吗?

0 投票
1 回答
477 浏览

tomcat - 我在使用 Drools 和 Tomcat 6 重新部署应用程序时遇到问题

我有一个使用JBoss Drools 5的 spring 应用程序。它工作正常,除非我在开​​发期间进行更改后尝试重新部署(即热部署)应用程序。看来,tomcat 锁定了 2 个 drools jar 文件,drools-compiler-5.0.1.jar 和 drools-core-5.0.1.jar。由于无法删除它们,因此不会部署新的 war 文件。如果我的应用程序没有进行任何 Drools 逻辑调用,那么热部署就可以工作。

有没有人有任何想法?

0 投票
2 回答
375 浏览

drools - 使用 Drools 提供错误处理和后果管理

我正在开发一个模块,其目的是处理 Java 异常并决定处理它们的策略。异常可能是我知道的事情(明确的业务异常,例如 TransformationException)或更一般的环境问题(JMS 错误、IO 错误等)

插入知识库的事实都是同一个类,并且包装(包含)一个Exception。

我想编写一个规则,明确匹配我知道如何处理的异常(例如 TransformationException),并有另一个规则来捕获“其他所有内容”

在我看来,问题在于对于包含 TransformationException 的事实,两个规则都会触发并且输出将是不确定的。

我将如何在不依赖显着性来控制执行顺序的情况下编写此类排他性规则(从我所读的内容来看,这似乎是不好的做法)?

我有一个我不满意的解决方案,其结果取决于在我的 .drl 中定义规则的顺序。

0 投票
1 回答
1464 浏览

import - Drools 规则使用通配符导入

我正在使用 Drools 规则。一些开发人员创建了规则,我必须将它们放在 Guvnor(规则存储库)上并构建包。在这些规则中,它们具有带通配符的导入语句,例如:import org.drools.runtime.rule.*;

当我将它上传到 Guvnor 并尝试构建时,它告诉我:无法自省模型以进行通配符导入 (org.drools.runtime.rule.*)。请明确导入您需要的每种事实类型。

是否可以在 Drools 规则中使用通配符导入???