问题标签 [drools-kie-server]

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

drools - 在流口水的子类上应用累积

我正在创建股票对象并插入股票值,如下所示

  1. 客户 1 有 2 个股票 stock4 和 stock5
  2. customer2 有 1 个股票 arrayListStocks1

在这里,我试图计算给定会话的所有股票的总和

当我在规则之上运行时,我得到低于输出数字 - 9.0 数字 - 9.0 数字 - 3.0 数字 - 3.0

如何计算来自 customer1 和 customer2 的 2 只股票的总和我期待结果 12

谢谢,

0 投票
0 回答
164 浏览

drools-kie-server - Drool kie 工作台与我的 Web 应用程序集成

我想集成 drool Kie UI 以从 UI 端编辑我的规则。我的 Web 项目中已经有很多规则。请让我知道如何在 UI 中打开这些规则进行编辑,并在构建和部署之后再次打开它,它将如何在我的 Web 应用程序存储库中更新。

0 投票
1 回答
1701 浏览

java - 如何在运行时在流口水中插入事实以在规则之间共享?

我有一个简单的检查用户 id 是否存在于 db

方法isUserBlacklisted如下

可以看出,我正在通过 setUserAlreadyBlacklisted(true) 修改 fact(dto) blackListUserDto。

但是在我打印值时规则的“那么”部分

System.out.println($blackListUserDto.isUserAlreadyBlacklisted()); 输出仍然是错误的。

我还需要在另一个规则中共享这些数据,如下所示

到目前为止,我的理解是,当我编辑事实时,我们是否需要再次重新插入它们?如果是,那么我如何将它插入到同一个会话中,因为我创建此会话的另一种方法如下:-

为了确保事实得到更新并且更新的值反映在下一条规则中,需要进行哪些更改。

0 投票
1 回答
122 浏览

drools - 创建容器命令挂起,未记录错误

我在 tomcat 上运行 Drools 7.7.0.final KIE 服务器。通过对 KIE 服务器的 RESTful 调用启动容器时,我看到了这种行为......

永远不会创建容器,并且 RESTful 调用会无限期挂起。当我查询服务器时,我看到容器卡在“状态=“正在创建”中。

这并不总是发生。它似乎依赖于规则。在大多数情况下,我的 LHS(when 子句)的形式是..

myObject( (field1 != null) && field2 ) ... 等等 ....其中 field2 是一个布尔值。

当我尝试一些复杂的事情时,困难似乎出现了......

myObject ( JsonMappper.truth(propertiesString, "field2") )

...其中 propertiesString 是一个包含 JSON 的字符串,而 JsonMapper.truth 是一个静态方法,它根据 field2 的解码值返回一个布尔值。

奇怪的是,我从未收到编译错误,并且当我删除/添加各种规则时,行为会发生不可预测的变化。有时即使规则文件中存在多个带​​有 JsonMapper.truth 的规则实例,也会创建容器。规则之间似乎存在一些微妙的相互作用。

我的问题是:1)在 when 子句中使用这样的自定义 java 函数是否存在一些危险?2)有没有办法确定为什么容器创建挂起?我没有找到任何有用的日志。通常的 tomcat 日志中似乎没有写入任何有用的信息。3)有没有人看到这种行为(容器创建挂起)?

0 投票
1 回答
1768 浏览

java - 如何从 drl Drools 中的累积内部返回列表?

这是我的规则

如何退回套装

最终复制集

从累积代替计数,我也不想在我的java类中使用任何全局变量或静态变量。可以这样做还是我需要遵循其他方法?

0 投票
1 回答
224 浏览

drools - Optaplanner Execution Server 员工排班示例:最佳解决方案中未填写时隙

我一直在关注以下关于RedHat员工排班的教程,一切都很好,直到我检索到问题的最佳解决方案。

该解决方案不包括标签中的endTimeandstartTime的值。timeslot

示例结果如下:

我在 docker 上使用 drools-wb (7.9.0.Final):docker run -p 8080:8080 -p 8001:8001 -v /path/to/my/data/folder:/opt/jboss/wildfly/bin/.niogit:Z --name drools-workbench jboss/drools-workbench-showcase:latest

还有 KIE 服务器(7.9.0.Final),也在 docker 上:docker run -p 8180:8080 --name kie-server --link drools-workbench:kie_wb jboss/kie-server-showcase:latest

有人遇到同样的问题吗?

0 投票
0 回答
313 浏览

drools - drools - 7.6.0 数组索引超出范围异常

我们正在尝试获取复制器,但这个问题在我们的系统中间歇性地出现。我们使用的是 drools 7.6.0 版本。当我们的服务在重负载下尝试在运行时更新规则时,我们会看到此崩溃。之后,所有请求都开始失败。在会话中插入事实时出现此问题。

我们在该实例的线程转储中看到了https://issues.jboss.org/browse/DROOLS-1383中提到的非常相似的日志。

堆栈跟踪如下所示

java.lang.ArrayIndexOutOfBoundsException: 1 at org.drools.core.phreak.RuleNetworkEvaluator.innerEval(RuleNetworkEvaluator.java:349) ~[drools-core-7.6.0.Final.jar:7.6.0.Final] at org.drools .core.phreak.RuleNetworkEvaluator.outerEval(RuleNetworkEvaluator.java:169) ~[drools-core-7.6.0.Final.jar:7.6.0.Final] at org.drools.core.phreak.RuleNetworkEvaluator.evaluateNetwork(RuleNetworkEvaluator. java:127) ~[drools-core-7.6.0.Final.jar:7.6.0.Final] at org.drools.core.phreak.RuleExecutor.evaluateNetwork(RuleExecutor.java:71) ~[drools-core-7.6 .0.Final.jar:7.6.0.Final] 在 org.drools.core.common.DefaultAgenda.evaluateEagerList(DefaultAgenda.java:887) ~[drools-core-7.6.0.Final.jar:7.6.0. Final] at org.drools.core.common.DefaultAgenda.fireLoop(DefaultAgenda.java:1061) ~[drools-core-7.6.0.Final.jar:7.6.0.Final] at org.drools.core.common。默认议程。internalFireAllRules(DefaultAgenda.java:1014)~[drools-core-7.6.0.Final.jar:7.6.0.Final] at org.drools.core.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1006)~[drools -core-7.6.0.Final.jar:7.6.0.Final] 在 org.drools.core.impl.StatefulKnowledgeSessionImpl.internalFireAllRules(StatefulKnowledgeSessionImpl.java:1318) ~[drools-core-7.6.0.Final.jar: 7.6.0.Final] 在 org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1309) ~[drools-core-7.6.0.Final.jar:7.6.0.Final] 在 org.drools。 core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1293) ~[drools-core-7.6.0.Final.jar:7.6.0.Final]最终] 在 org.drools.core.impl.StatefulKnowledgeSessionImpl.internalFireAllRules(StatefulKnowledgeSessionImpl.java:1318) ~[drools-core-7.6.0.Final.jar:7.6.0.Final] 在 org.drools.core.impl。 StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1309) ~[drools-core-7.6.0.Final.jar:7.6.0.Final] at org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1293) ~ [drools-core-7.6.0.Final.jar:7.6.0.Final]最终] 在 org.drools.core.impl.StatefulKnowledgeSessionImpl.internalFireAllRules(StatefulKnowledgeSessionImpl.java:1318) ~[drools-core-7.6.0.Final.jar:7.6.0.Final] 在 org.drools.core.impl。 StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1309) ~[drools-core-7.6.0.Final.jar:7.6.0.Final] at org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1293) ~ [drools-core-7.6.0.Final.jar:7.6.0.Final]fireAllRules(StatefulKnowledgeSessionImpl.java:1293) ~[drools-core-7.6.0.Final.jar:7.6.0.Final]fireAllRules(StatefulKnowledgeSessionImpl.java:1293) ~[drools-core-7.6.0.Final.jar:7.6.0.Final]

0 投票
1 回答
200 浏览

drools - 加入流口水

我有两个数据对象。
1.) Customer( cust_id, cust_type, first_name, middle_name)
2.) accnt_prtcpnt( cust_id, accnt_id, ap_first_name)。

我需要在pbject 中ap_first_name的字段上编写 Drools 规则,如果客户对象中的 是“AV”,则不应为空。我是 Drools 的新手,不知道该怎么做。可以使用公共字段连接这两个数据对象。我也在使用 KIE 工作台。accnt_prtcpntcust_typeap_first_namecust_id

请帮忙!!

0 投票
1 回答
591 浏览

java - 在 Spark 作业中使用口水

我正在尝试在提交到集群的火花作业中使用流口水。这项工作将从drools 服务器获取drools jar 开始,然后初始化基础和会话。我的代码在 Spark 中执行时可以工作,但在提交到 Spark 集群时会发生 NPE。

这就是我正在做的

提交代码后出现的错误:

你有解决这个问题的想法吗?

0 投票
0 回答
421 浏览

drools - 流口水开发和生产分离很好

我想要做的是在drools 基础设施中建立单独的开发和生产环境,我可以在其中测试我编写的规则,然后再将其投入生产。我所做的事情被遵循。首先,我从 jbpm-workbench 运行了一个 docker 容器,并使用以下命令安装了一个本地卷来为其内部 git 存储库提供服务:

然后使用以下命令将两个 kie 服务器连接到工作台:

到目前为止,我在工作台控制台的执行服务器页面中获得了两个远程服务器,每个服务器都作为服务器模板呈现。到目前为止,一切都很好。但是后来我在其部署过程的流畅性方面遇到了麻烦。首先,我意识到每次对规则进行更改时,我都应该将其部署到服务器模板,除非在执行服务器页面中无法识别此更改以创建新容器或被扫描仪拾取(即使当项目的版本已更新)。所以我创建了一个临时服务器模板来在那里部署更改(以便其他服务器模板,远程的,可以看到升级)。但后来我意识到,每次我想部署更改时,我都必须增加项目的版本,因为它会抱怨容器名称重复。所以我已经达到了我的目标,即分阶段和生产环境的分离。但是每次更改规则时我必须执行的过程,我认为是一个拖累!我确定有另一种方法可以做到这一点,而无需在每次进行更改并部署到临时服务器模板时增加版本?没那么干净!那么你能告诉我如何在不感到厌恶的情况下做到这一点吗?