Drools 如何从Guvnor web应用加载特定规则(.drl)?

例如,我在Guvnor中添加了两条规则(rule1.drl和rule2.drl) 通常,我可以通过创建changeset.xml来检索这些组合规则,如: <change-set ...> <add> <resource source='http://localhost/guvnor/org.drools.guvnor.Guvnor/package/name/LATEST.drl' type='DRL' basicAuthentication="enabled" us

Drools 流口水收集效率

我有两个相同类型的集合,集合中的每个对象都有一个id作为键。我的目标是在两个集合中找到相同的对象,然后将字段相互比较。如果它们不是同一字段,则存储差异 我的问题是性能,对于每个规则,我都会为同一个对象重新扫描集合。如果对象匹配,是否有办法运行所有字段验证,而不是多次在集合中查找该项 事实代码: public class ReconcilerFact { private List<Security> securitySystem1; private List<S

参数太多错误-超过Drools中方法参数的255个字限制?

我正在为我的项目使用Drools,如果参数超过255个,我无法在方法签名中传递超过255个参数,因为它会抛出下面的错误。有谁能帮我解决这个问题吗 java.lang.ClassFormatError:类文件com/hra/rules/Person中的方法签名中参数太多 位于java.lang.ClassLoader.defineClass1(本机方法) 位于java.lang.ClassLoader.DefineClassSecond(未知源) 位于java.lang.ClassLoader.d

drools:多次执行的规则

我正在尝试Drools规则引擎,我是一个初学者 我在单个规则文件中有以下规则: rule "A stand alone rule" salience 2 no-loop when $account : Account() Account($account.balance>100) then System.out.println("balance>100"); System.out.println($account.getBalance());

Drools jbpm6-osgi/karaf-运行外部化进程-导入错误

我正在尝试加载一个外部bmpn2文件,并在ApacheKaraf环境中运行它。这是bmpn2文件 <?xml version="1.0" encoding="UTF-8"?> <bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://w

Drools com.sample中规则“XXX”的异常执行结果:java.lang.NumberFormatException:执行规则时输入字符串的“112E.112E22”

我在执行规则时遇到以下异常。只有在极少数情况下。 我用的是drools 5.5 com.sample:java.lang.NumberFormatException:中规则XXX的异常执行结果:输入字符串:112E.112E22 有人熟悉上述问题吗?请帮助我。提前谢谢。是的,我对这个问题很熟悉。看看这个字符串,很明显,根据Java语法,它不是一个数字。嗨,劳恩,有时我会得到上面的异常,有时我会在com.sample:Java.lang.NumberFormatException:for inpu

Drools 无法从DRL更新jbpm进程变量

我目前正开始使用jbpm/drools,并尝试使用“业务规则任务”修改DRL中的一些流程变量。我用一个进程尝试了以下内容,该进程声明了一个类型为“MyCustomObject”的变量“var” 根据和的结果,我创建了一个任务,该任务应执行ruleflow组“testgroup”,并具有以下onEntry脚本: kcontext.getKnowledgeRuntime().insert(kcontext.getProcessInstance()); 我的DRL现在看起来像这样: import m

Drools全局变量初始化和性能缩放 提前谢谢。我们正试图在企业中采用drools作为规则引擎。在评估了POC模式下的基本功能之后,我们正在进一步探索。我们面临以下挑战,我正在尝试验证我们正在考虑的一些选项。非常感谢您的帮助。

场景1:假设您在事实字段中获得美国州(德克萨斯州、加利福尼亚州、科罗拉多州等)。现在,您希望规则检查“事实上的状态值”是否存在于状态值的预定静态列表中(假设该列表包含三个值TX、TN、MN) 场景1的可能解决方案:“静态状态值列表”可以设置为全局变量,规则可以在执行检查时访问全局变量 关于情景1的问题: “场景1的可能解决方案”是标准实践吗?如果是这样,在规则引擎(KIE服务器)启动期间是否可以从数据库加载此全局变量的值?如果是的话,你能告诉我drools特性吗?它使我们能够从数据库加载全局变量

尝试运行Drools示例时出现运行时异常

我下载了Drools 7.46.0.Final并将内容解压缩到本地驱动器。当我尝试使用提供的runExamples.sh脚本从Linux命令行运行示例时,我得到了以下异常。我尝试过Java8和Java11(我安装的唯一版本)。这真的需要消息推荐的Java6吗?或者这里还有其他问题吗 我不太会流口水,所以我恐怕不知道如何解决这个问题 更新:有趣的是,我尝试了7.44.0.Final版本,运行良好。所以下载了7.45.0.Final,那个也坏了。所以在7.44和7.45之间发生了一些变化,这就是原因

Drools 流口水创建自定义分数

所以我在drools中创建了一个自定义分数: public interface MyScore extends Score<MyScore> 公共接口MyScore扩展分数 并已实施。然而,我不知道如何使用分数。配置有一个 <scoreDefinition> 标记,但将除简单或硬\u和\u软之外的任何内容放在其中都会产生错误 如何配置解算器以使用我创建的分数,文档似乎暗示这是可能的,但没有详细说明。就我所见,无法支持自定义分数,这是一个遗憾。。。 我检查了Sco

Drools 财产准入问题

我尝试使用这个规则: rule "conformSyncConstraint" when $syn_con : SyncConstraint( $left_stp_period : leftSTP.period, $right_stp_period : rightSTP.period) eval( ($left_stp_period.dayOfWeek == $right_stp_period.dayOfWeek &&

如何在Drools中获取决策表的参数,然后再执行

我是Drools和jBPM的新手。我有一个关于drools决策表的问题。通常我们先运行规则,然后对其执行一些操作,但我首先需要决策表中的一些参数,并基于此,我启动mysql查询,这会给我一些数据,我想在drools中传递这些数据,所以在执行决策表之前,有没有办法从决策表中获取数据。您可以通过在决策表。只需将结果直接插入工作内存即可

处理Drools文件中的异常

我们如何处理Drools文件中的异常 示例:我的规则使用共享Java方法 rule "002.17.1" dialect "mvel" when comp : Component() then boolean validstate = SharedCodeUtil.hasValidateStateCountryUS(comp.address); errors.add(new ValidationFailur

Drools 当规则来自中央nexus存储库时,JBPM事实模型没有加载到JVM中

当规则来自中央nexus存储库时,JBPM事实模型未加载到JVM中 以下步骤: 在Kie工作台中创建了一个规则 将模型(域)依赖项添加到kie工作台项目中 构建和部署 我能够在nexus存储库中看到项目jar 现在我从java代码调用这个存储库,请参见下面的代码- 工件名称: KieServices ks = KieServices.Factory.get(); KieContainer kContainer = ks.newKieContainer(ks.newReleaseId("com.e

Drools 流模式下的口水在卡拉夫不工作

我是Drools的新手,正在研究在我们的产品中使用Drools Fusion CEP。我正在卡拉夫2.4.3中执行Drools(流模式)fusion 6.0.2.Final 我的kmodule.xml <kbase name="sampleKBase" packages="com.sample.heartbeat" eventProcessingMode="stream" default="true"> <ksession name="sampleKSession"

Drools 需要从单个流多次触发同一规则流组

对于可重用透视图,我有一个带有规则流组的规则。我在flow中多次使用同一规则流组。现在的情况是,它应该多次发射相同的规则,但它唯一一次发射该规则 我不明白为什么会这样 你能告诉我为什么会发生这种情况,以及解决方案是什么吗?流中的规则任务不会“执行”规则流组中的规则,它只会激活议程中的该组,因此如果有活动规则,它们将触发 如果在规则任务的两次执行之间以创建新激活的方式修改会话,则任务的连续执行应触发这些规则的新激活 希望有帮助,流中的规则任务不会“执行”规则流组中的规则,它只会激活议程中的该组,因

optaplanner/drools workbench 6.4.0最终计分董事会

我试图使用Drools Workbench 6.4.0最终版在KIE服务器中重新创建CloudBalancement示例。我可以通过REST API在KIE中创建容器和解算器,但是当我尝试开始解算时,出现以下错误: 03:15:50,831 INFO [org.kie.server.services.impl.KieServerImpl] (EJB default - 2) Container optacloud_1_0_0 (for release id opta:optacloud:1.0

Drools决策表默认值

如何在Drools决策表中设置默认值无条件执行操作 无法解决规则编译错误$cs 例如: 您可以使用eval(true),这将有助于在条件中声明$cs 那么,你期望什么呢?这表示调用setSavings和setqualification-某处。计算机如何知道“某处”在哪里?是的,你是对的,请找到下面的解决方案

Drools 流口水

我有两个数据对象。 1.客户(客户id,客户类型,名字,中间名) 2.accnt\u prtcpnt(cust\u id,accnt\u id,ap\u first\u name) 我需要在accnt\u prtcpntpObject中的ap\u first\u name字段上写一条Drools规则,该规则表示,如果cust\u type在customer对象中为“AV”,则ap\u first\u name不应为空。我不太会流口水,不知道该怎么做。这两个数据对象可以使用公共字段cust\u i

Drools 输入不匹配';从';统治

我正在设置一个项目,将决策表作为输入并创建规则。 遇到的错误是规则中的“输入不匹配”。 事实集是: Class Member{ double salary; List<Tag> tagList; string ruleResult; } Class Tag{ string key; string value; } 类成员{ 双薪; 列表标记列表; 字符串规则结果; } 类标签{ 字符串键; 字符串值; } 决策表: -------------------------------

使用Drools提供错误处理和结果管理

我正在研究一个模块,其目的是处理Java异常并决定处理它们的策略。异常可能是我所知道的(明确的业务异常,如TransformationException)或更一般的环境因素(JMS错误、IO错误等) 插入到知识库中的事实都是同一个类,并包装(包含)一个异常 我想写一条规则,明确匹配我知道如何处理的异常(例如TransformationException),并有另一条规则捕获“其他所有内容” 在我看来,问题在于,对于包含TransformationException的事实,两个规则都将启动,并且输

Drools 满足y中x约束的步骤

我正在制作一个时间表程序,它将主题教师时段(计划实体)与时段进行一对一的匹配。有一种情况是我需要这样做:“对于y周期,至少x个SubjectTeacherPeriod必须匹配一个match\u条件” 例如,我想限制3个特定时段,其中至少两个时段由符合助理教授的教师教授 以下是包含此类约束的数据结构: Class XOfYPeriods SomeType match_condition int x List<Period> Periods //problem 我如何

Drools规则写作最佳实践

我一直在读一篇关于Drools performance()的文章,它解释了如何创建Rete树和节点,Drools如何对它们进行索引,以及为什么Drools中对象数量的增加几乎不会影响执行它所花费的总时间。 以智能方式编写的规则可以大大减少Rete树中的节点数,从而进一步提高性能 我想知道是否有Drools规则编写最佳实践,这样我就可以以一种可以尽快执行的方式编写它们 谢谢。我可以列出一些 将最具限制性的条件放在顶部 在规则中使用相同的条件顺序 除非必须,否则不要使用eval 把评估放在你情况的

Drools规则检查子列表是否包含在列表中

我希望能够使用Drools规则检查列表(tagService.getAvailableTags($el.getName())中是否包含字符串元素列表(请参见$el.getTags())中的至少一个元素。我正在使用辅助方法进行检查:CollectionUtils.containsValuesFromList(子列表、targetList、checkAllValues) 目前,我使用以下规则定义: rule "Check at least one tag is set" when $el: E

在drools 5.4中进行用户确认

我有一个要求 如果某些验证失败,我必须询问用户是否继续 如果用户说yes,我必须将数据保存在DB中,并且 如果用户说no,则数据将不会保存在数据库中 验证在validate.drl中执行 执行这些验证后,我必须询问用户是否希望继续。工艺流程如下: Start->input.drl->validate.drl->takeUserConfirmation.drl->persistData.drl 在上面的流程中,我必须在takeUserConfirmation.drl中添加一些逻辑,以便用户确认

Drools GUVNOR 6.0 CR3部署规则并从java应用程序启动

下面是jboss guvnor 5.5构建和部署包的屏幕 在guvnor 6.0 cr3中创建用于部署的快照的等效过程是什么 换句话说,我正在考虑部署使用guvnor 6.0编写的规则,并从java应用程序执行它 public static KnowledgeBase readKnowledgeBase() throws Exception { KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent(

Drools 如何构建drl规则

下午好,我想问一个问题,我正在与OptaPlanner合作,我在建立硬约束方面有问题,也许你可以帮助我;我很困惑,我试图解决的问题是: 我有很多次旅行,为了使用最少数量的车辆,我需要结合使用;我唯一的限制是,行程的结束时间(n)必须小于下一次行程的开始时间(n+1),我制定了drl规则,但它不起作用,因为这只能进行两次行程,一辆车可以进行十次行程 这是我的规矩 规则“horaInicioFin” 什么时候 $leftAssignment:Trip(vehiculo!=null,$leftId:h

如何动态更改给定Drools 6.3会话的规则?

我在Drools 6.3.x中有一个会话,包含数百万个事实 我正在构建一个交互式应用程序,它允许用户根据自己的需要过滤事实。在我看来,这个过滤器基本上是一种模式。一旦事实被过滤,逻辑就被应用于产生期望的结果 由于应用程序的交互性,我不希望等待用户输入来构建KieBase,派生KieSession,加载数百万个事实,并随时触发规则 理想情况下,我希望创建一次包含应用程序逻辑的KieBase,派生一次KieSession,加载一次所有事实,并根据用户输入动态地插入/删除规则。我如何在Drools 6

Drools 如何在drool规则引擎中处理列表项中对象的上一个值?

我想在列表中的所有元素中都使用Drool to fire规则 这是我的订单 DroolTest.java 输出 如您所见,then条件只执行一次,因为 当流口水时,检查11>10,这工作正常,并将值设置为 0但当drools处理第二个列表项时,现在总和将返回0+7> 10这是错误的,但我想在第二个列表中激活条件 因为11+7=19大于10,有没有办法开火 那么这两个列表项的条件是什么?我们有没有办法拿到那张票 对象的原始值不是来自工作记忆 您添加了一个模式OrderItem,以便规则将为超过限制

Drools 如何从BRMS中的DRL文件中获取规则定义

有没有办法使用rest或JavaAPI从JBOSS BRMS中的DRL文件中获取规则定义? 我有一个Kie服务器,在那里我的容器被加载,我可以使用API或REST调用从容器中获取规则文件定义 我们正在为BRMS使用6.5.0.Final-redhat-2版本的KIE和6.4.0.GA版本截至今天,没有KieServer API返回DRL资源。如果您有包含该文件的DRL文件或kjar,则可以使用解析器API检索rue定义: 以下是一些测试用例,其中包含如何使用解析器检查规则的示例:

如何在drools规则引擎中动态更新规则

我正在研究drools规则引擎,让这个场景将when block中的值从1000更改为2000,将符号从>更改为可能的重复,但我没有从那篇文章中得到我需要的内容。你能提供关于如何将drl文件访问到gui@Prog_G我相信你提到的这个7年前的问题不再适用于最新版本的Drools。@bfrguci是另一个适用于最新版本的动态加载规则的替代方案解释了drools的版本 rule "payment" when account:Paymentinfo(transaction < 1000

Drools workbench:使用kie服务器Java客户端API创建多个kie会话

我正在使用与Kie执行服务器集成的Drools workbench 7.17。我在workbench中创建了一个项目,该项目部署在kie执行服务器上 我在项目设置中配置了kie base和kie会话。将有状态kie会话定义为kie会话。我正在使用Kie服务器Java客户端API将事实插入引擎 我可以在这个会话上进行查找。我将接收不同用户的数据,并希望为每个用户创建和维护单独的会话。当为现有用户插入事实时,我应该能够重新加载与该用户关联的kie会话 使用drools workbench和kie e

我们如何在Drools(Kie服务器)中创建动态下拉列表?

我需要在Kie服务器中使用“引导决策表”处理Drools的下拉列表。 在这里我可以制作一个下拉列表,它是常量。但是,我需要从代码后端读取数据作为字符串列表,然后在下拉列表中显示相同的数据。我尝试了多个源,但在下拉列表中找不到任何生成动态数据的源。 我们可以看看我创建的下拉列表-> 你看过了吗 看看,你有你需要的。 当然,您必须将java代码打包到maven构件中,作为依赖项添加到kjar drools maven构件中 问候 'Applicant.region' : (new com.mycom

Excel工作表中的Drools化合物或规则

我有成千上万的规则写在excel表格中,所以除非有充分的理由,否则我无法轻易地摆脱这些规则。也使用Drools版本5,无法轻松升级。使用Drools Guvnor管理和编译规则 我需要写一个庞大的复合规则,我正在为如何做到这一点而挣扎 事实:宽度、长度、零件号 需要编写规则: for a specific part number outside of dim range w1 x l1 then can't use Adaptor1 outside of d

Drools 如何定义模型以使其可用于规则UI?

我创建了一个模型,当我尝试创建一个规则时,我总是收到以下消息: 注意:尚未定义任何模型。 提示:您需要导入或定义一个模型,以便此用户界面正常工作 有什么想法吗? TNX您可能缺少导入 在具有规则的文件中,执行以下操作: import org.hello.MyModel;

部分DROOLS规则流不随机工作

我们有一个主规则流,它通过AND拆分器将另外8个规则流Rule1.rf调用到Rule8.rf。其中一个规则流(比如Rules4.rf)有时被触发,有时不被触发 这是一个在线应用程序,我们使用jBoss。当服务器启动时,一切正常。数小时后,对于某些请求,Rules4.rf根本不会被触发,而对于其他请求,Rules4.rf会被正确触发 我们甚至一次又一次地发布相同的请求,而这个问题只发生过几次。成功和失败请求之间的日志没有区别,但Rules4.rf中的日志在失败请求中缺失 我们正在使用drools

从Drools Guvnor获取节点

我正在使用Jbpm 5.4。我已经在Drools guvnor中创建了我的工作流。我想在启动工作流之前获取有关工作流的节点详细信息。有办法吗?有什么建议吗 我发现解决办法如下 org.drools.definition.process.Process process=kbase.getProcess("defaultPackage.org.Task"); NodeContainer container = (NodeContainer) process; Node[] nodes=conta

如何通过Drools进行连续滑动窗口时间检查?

我的情况是:如果我的银行账户在任何连续10分钟内提款金额超过1000美元,例如,0m-10m,然后0m1s-10m1s,然后0m2s-10m2s,这是一个滑动时间窗口,银行系统应该向我发送警告消息 那么,有人能帮我写口水法则吗 我的初步想法如下: when Number( $total : intValue, intValue >= 1000) from accumulate (Withdraw ($money : money)

Drools Drool DRL包含

这是我的情况 $cla : cashliquidassets( entity == "AU001", asset_liability_indicator == "A", product_group.contains('Loans','Bankofindia'), product.contains("DS"), counterparty_resident_indicator == "AU", counterparty_type.contains("DS"), relat

使用wildfly16将jdk7升级到jdk11时,drools无法工作

嗨,我有以下配置: java version-jdk11 server-wildfly16 jars-drools 6.0 and ecj 4.6.1 在服务器位置:C:\wildfly-16.0.0.Final\modules\org\eclipse\jdt\main 我有jar:jasper-jdt-6.0.29 有耳朵的。 但在部署之后,当我检查规则时,我的应用程序会打开,因此DRL无法工作。 下面是我得到的错误 /servlet/com.fourcs.clm.iwarranty.ecl

如何从规则中调用一个规则或如何在drools中使用递归 导入com.scheme.scheme\u s1; 规则“E15-RETGOOMZ_AS的板1” 什么时候 项目3:scheme_s1(slabamount>=160001&&slabamount=5

如何从规则中调用一个规则或如何在drools中使用递归 导入com.scheme.scheme\u s1; 规则“E15-RETGOOMZ_AS的板1” 什么时候 项目3:scheme_s1(slabamount>=160001&&slabamount=55001&&slabamount=0&&slabamount请帮助我递归执行此操作。因此,您是说每次slabamount更改时,您都希望规则中的条件更改吗。(slabamount>=160001&&slabamount当板坯数量将更改时。规则将

Drools 随机议程组获得关注

我创建了两个不同的规则,它们属于两个不同的议程组。 第一个: rule "32-30-33.32" dialect "java" salience 0 agenda-group "32-30" when map : Map((this["Product Name"].toUpperCase().contains("PREMIUM ADPRODUCT")) && ((this["Size Length"] != 5) || (this["Size"].toUpperCase

Drools 如何使用restworkintemhandler调用需要application/x-www-form-urlencoded内容类型的服务

在Drools中,我需要呼叫特定的第三方服务。此服务要求我通过rest发布一个application/x-www-form-urlencoded内容类型,并接受一个application/xml 我过去接受过application/xml和application/json,甚至还指出了内容类型是application/xml还是application/json 所以我认为我需要将application/x-www-form-urlencoded作为我的内容类型。但是我的ContentData应该

Drools工作台未在Wildfly 10中配置

我正在使用drools workbench 6.5.0,并试图将其配置为Wildfly 10。我得到了下面的错误信息 无法上载部署:{“WFLYCTL0080:失败的服务”=> {“jboss.deployment.unit.”kie-drools-wb-6.5.0.Final-wildfly10.war.“WeldStartService” =>“org.jboss.msc.service.StartException in service jboss.deployment.unit.”kie

事实存在或不存在时的Drools条件

我正在尝试建立一个drools规则,它可以实现如下效果: rule "Rule 1" salience 100 activation-group "..." when $fact: Fact exists, or fact does not exist then if $fact exists then do X. Else, do Y. 我知道我可以通过两个不同的规则来做到这一点,一个是关于事实存在时的规则,另一个是关于

Drools验证失败,错误为“0”;未终止的字符串文字;

我定义了一个具有以下条件的规则 [ "asmi\"sinternational", "brand1" ] contains msku.brand 此规则的验证失败,错误如下 Unable to Analyse Expression [ "asmi\"sinternational" ] contains msku.brand: [Error: unterminated string literal] [Near : {... [ "asmi\"sinternational" ] contai

Drools 修改事实时,某些规则不会再次激发

我把折扣设为5,违反了规定。为什么在“规则3”中修改事实产品时不再次触发“规则1” 输出 规则1 规则2 规则3 规则2 规则3 规则2 规则3 密码 在LHS模式中不包含事实类型的规则不会受到对未引用类型的任何事实的任何更改的影响 规则1中未引用产品 rule "Rule 1" when eval(true) then System.out.println("Rule 1"); end rule "Rule 2" when $c: Product(dis

运行Drools规则的最有效方法

试着学习流口水。流口水最有效的方法是什么。现在我有一个KieContainer Bean,每当我需要执行规则时,我都会执行以下操作 KieSession kieSession = kieContainer.newKieSession(); kieSession.insert(record); kieSession.fireAllRules(); kieSession.dispose(); 这是正确的方法吗?我是否应该每次都创建和处理会话?我可以重复使用会话吗 编辑:如果重用会话是可以接受的,那

  1    2   3   4   5   6  ... 下一页 最后一页 共 18 页