问题标签 [drools-flow]

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 回答
70 浏览

java - 一些规则在 2 个 drools 服务器中的 1 个中行为不端

我不知道,确切的问题是什么,所以在这里解释一下场景:

我的生产设置中有 2 个 drools 服务器,随着活动的变化,新规则的部署如此频繁,几乎每天 5-7 次,并且它通过监视扫描程序在运行的服务器上动态发生。

我们在这里观察到一个奇怪的问题,有时,在两台服务器中的一台中,一些规则不起作用,但它在另一台服务器上起作用,但是当我重新启动同一台服务器时,它开始起作用。

我放了日志,看到每次都成功扫描jar,但在某些情况下,仍然流口水无法完全吸收规则jar。

设置详细信息: 我有 2 台服务器,其中运行 drools 服务器,还有 1 台服务器,我用来通过 kie-workbench 构建规则,规则 jar 被传输到这 2 台服务器,通过 jenkins 作业,它从将 kie 工作台服务器连接到其他 2 台服务器,并且我已经放置了手表扫描仪,当新的 jar 上传时,它将获取事件。

0 投票
1 回答
1020 浏览

drools - Drools 决策表创建对象

我想将以下规则转换为决策表,

我试图将其转换为决策表,但我不确定如何声明 person 对象。正如您在 excel 中看到的那样,我为它创建了一个新的条件。

我在 CONDITION 列中尝试过,person:Person但我收到一些错误,说必须输入条件。

那么如何在决策表中创建一个必须在 Action 列中使用的对象?

请查找excel数据,以防上传的图片打不开。

在此处输入图像描述

0 投票
1 回答
272 浏览

drools - Drools 规则多个规则流组

我有一些规则和规则流程。我有一个场景,我应该为一个规则分配多个规则流组。我处于无法分配通用规则流组名称的情况。当我给两个规则流组名称时,ruleflow-group "group1" "group2"它会引发错误。上面有可能有这样的东西吗?

0 投票
0 回答
69 浏览

drools - 车辆路线与工作人员

我正在研究一种解决方案,我们需要将车辆路由到客户要求的任务位置。这是我的域的样子:

任务:

因此,我将 Staff 和 Vehicle 作为事实,而 Task 是一个计划实体。因此,使用 optaplanner 时,它会在链中安排任务,但会将不同的员工分配给同一链中的不同任务。

因此,如果 A、B、C、D 和 E 是任务,并且 Staff st1,st2,st3 和 Vechcle V1,V2 在那里。

理想的解决方案如下: V1->A(st1)->B(st1)->C(st1) V2->D(st2)->E(st2)

但我的解决方案看起来像: V1->A(st1)->B(st3)->C(st2) V2->D(st3)->E(st2)

这是因为我没有链接员工并将员工用作计划变量。现在,我可以使用 nextTask 应该具有与当前任务相同的员工的规则来修复它,但这是一个矫枉过正的问题。

我可以在这里做哪些最佳实践,以便每个任务链都有相同的员工

注意:我不想让员工留在车辆中,就好像车辆免费一样,它可以分配给不同的员工以进行新的任务链。

0 投票
0 回答
318 浏览

drools - 如何处理 Drools 匹配

我问了一个有点类似的问题,但它的表述不正确。我将尝试再解释一次。

下面是我的用例,非常抽象。

我的 .drl 文件中有两条规则,用于检查两个用例的工作内存中的“if”条件。假设规则被命名为 rule1 和 rule2。在这些规则中,我使用 Drools 查询。我在java端创建对象(A型和B型)并触发规则。所以基本上,在规则的“那么”部分,我没有创建任何对象,这样规则可能会再次开始触发。

首先,我创建了一个 A 类型的 objA 并将其放入工作内存中。

现在我正在违反规则。

fire1) 只有 rule1 匹配,我将创建另一个 A 类型的对象并放入工作内存中。再次开火。

fire2) 现在出现了 rule1 和 rule2 都匹配的情况。

这是我的两个问题。

  1. 在 fire1 和 fire2 中,rule1 匹配类型 A 的对象。有没有办法从 Drools 获取这些模式匹配相似或不同的信息?

  2. 有没有办法告诉 Drools 在第二次触发 (fire2) 时不要评估 rule1 ?

如果我应该提供更多细节,请告诉我。

0 投票
1 回答
142 浏览

drools - Drools Workbench - 比较不同对象的共同属性

有谁知道如何在 drools 工作台上添加一个条件来比较具有相同名称但来自不同对象(如它们的 ID)的属性?

工作台截图

我要添加的是第三个条件,例如“l.ID = o.ID”。如果事实没有相同的 ID,则不会打印“登录”。我找不到办法做到这一点。

任何帮助将不胜感激。

干杯,

0 投票
1 回答
729 浏览

drools - 当事实不再匹配时从 Drools 获取一些事件

请看下面的两个代码设置。

设置 1:

和 .drl 文件

运行后,输出为: 已触发构建规则

内部 fireAgain 方法


设置 2:这里我只是将 fireAgain() 方法更改为:

其他一切都是一样的。运行后,输出再次相同: 已触发构建规则

内部 fireAgain 方法


据我了解,

在设置 1 中,规则没有被第二次触发,因为事实在工作记忆中没有改变。

在设置 2 中,规则没有被第二次触发,因为现在事实已经更新并且它与规则条件不匹配。

我的问题是,Drools 是否为设置 2 生成任何事件(规则被触发一次但现在因为事实已经更新而不再被触发?)这样我可以区分:规则没有被触发,因为事实没有改变它没有被解雇,因为现在事实与规则条件不符?

0 投票
1 回答
174 浏览

drools - Drools 正在加载所有规则

我在我的项目中使用 drools 并假设它有 100 条规则。我有两个流程(通常它有开始节点->规则流任务->结束节点)。一个流程的规则流任务由分配给 50 个规则的规则流组指定,另一个流程的规则流任务由分配给其余 50 个规则的流程组指定。不重叠。

现在我使用 kiesession 并调用第一个流程的启动流程,我看到它加载了所有 100 条规则,而不是只有 50 条,并给了我编译和运行时错误。因此,请帮助我理解为什么来自不同规则流组的规则在流程流中执行,而这些规则与其规则流组无关?当条件加载时,我看到了它的所有内容。

0 投票
1 回答
76 浏览

drools - 如何在流口水中为持续时间属性添加值

每当我写持续时间(0s)时,它都会起作用,但是一旦我将其更改为持续时间(1s)或持续时间(5s),规则就不会触发......这是我想要触发的规则。

我们是否需要导入一些东西才能使持续时间属性起作用,因为我在任何地方都没有得到它。提前致谢。

0 投票
1 回答
2287 浏览

eclipse-plugin - Drools决策表错误:创建KieBase时出错

我正在尝试实施流口水决策表。当我实现自己的示例代码时,出现以下错误: java.lang.RuntimeException:创建 KieBase 时出错

我的 Eclipse IDE 控制台中可见的错误是:

java.lang.RuntimeException: 创建 KieBase 时出错 [消息 [id=1, kieBase=patient, level=ERROR, path=PatientDecisionTable.xls, line=10, column=0 text=[ERR 101] Line 10:21 不可行输入''的替代方案],消息 [id=2,kieBase=患者,级别=错误,路径=PatientDecisionTable.xls,行=10,列=0 文本=[ERR 101] 第 10:81 行输入'没有可行的替代方案'],消息 [id=3, kieBase=patient, level=ERROR, path=PatientDecisionTable.xls, line=0, column=0 text=Parser returned an null Package]] 在 org.drools.compiler.kie.builder。 impl.KieContainerImpl.getKieBase(KieContainerImpl.java:557) 在 org.drools.compiler.kie.builder.impl.KieContainerImpl.newKieSession(KieContainerImpl.java:682) 在 org.drools.compiler.kie.builder.impl.KieContainerImpl。 com.Lab.Genomics.Run 上的 newKieSession(KieContainerImpl.java:650)。PatientRun.main(PatientRun.java:15)

我的 Main 方法包含在下面的类中:

病人是我的pojo。我的决策表如下: 项目决策表

我的项目目录如下: 项目目录

我无法找到决策表中存在什么错误。当我运行主要方法时,如上所述出现错误。

我在这里找到了一个关于 drools 决策表的问题,decision table error,但这不是我检查的情况。

我已经尝试过搜索并且仍在尝试。非常感谢任何参考或帮助。