Tag: drools

KIE Workbench Integration响应401

我正在尝试使用Drools 6.1.FINAL将我的KIE Workbench 6.1.FINAL部署与一个简单的应用程序集成。 我使用以下代码: String url = “http://localhost:8088/workbench/maven2/com/sep/test/myProject/1.0/myProject-1.0.jar”; KieServices ks = KieServices.Factory.get(); UrlResource urlResource = (UrlResource) ks.getResources().newUrlResource(url); urlResource.setBasicAuthentication(“enabled”); urlResource.setUsername(“admin”); urlResource.setPassword(“admin”); try { InputStream is = urlResource.getInputStream(); KieModule kModule = ks.getRepository().addKieModule(ks.getResources().newInputStreamResource(is)); kieContainer = ks.newKieContainer(kModule.getReleaseId()); kieContainer.newStatelessKieSession(); scanner = ks.newKieScanner(kieContainer); } catch(Exception e) { System.out.println(“Exception thrown while constructing InputStream”); System.out.println(e.getMessage()); } 每次运行此代码时,我都会看到以下输出: Exception thrown while building InputStream […]

从有状态的drools会话中获取事实

我试图从规则中获取新的插入事实: import com.neu.als.thesis.db.beans.FLTBean import com.neu.als.thesis.db.beans.StudentBean rule “Excellent” no-loop when $m: FLTBean ( listeningScore > 85 && listeningScore < 101 ) then StudentBean studentBean = new StudentBean(); studentBean.setKnowledgeLevel( "Excellent" ); insert( studentBean ); end 要从有状态会话中获取内容,我应该这样做: protected Collection findFacts( final StatefulKnowledgeSession session, final String factClass ) { ObjectFilter filter = new ObjectFilter() { @Override public boolean accept( […]

在Java代码中访问Drools返回的事实对象

我有一个通过Guvnor控制台创建的drools规则,并且规则validation并在满足条件时将事实插入工作内存。 规则是: 1. | rule “EligibilityCheck001” 2. | dialect “mvel” 3. | when 4. | Eligibility( XXX== “XXX” , YYY== “YYY” , ZZZ== “ZZZ” , BBB == “BBB” ) 5. | then 6. | EligibilityInquiry fact0 = new EligibilityInquiry(); 7. | fact0.setServiceName( “ABCD” ); 8. | fact0.setMemberStatus( true ); 9. | insert(fact0 ); 10. | […]

在Scala中Drools Expert输出对象

我是Scala和Drools Expert的新手,需要一些帮助才能从Drools会话中获取信息。 我已经成功设置了一些被Drools规则操纵的Scala类。 现在我想创建一个对象来存储一组输出事实,以便在Drools之外进行处理。 这就是我所拥有的。 我有一个简单的对象存储数字结果(在规则的RHS中生成),以及注释字符串: class TestResults { val results = new MutableList[(Float, String)]() def add(cost: Float, comment: String) { results += Tuple2(cost, comment) } } 在DRL文件中,我有以下内容: import my.domain.app.TestResults global TestResults results rule “always” dialect “mvel” when // then System.out.println(“75 (fixed)”) results.add(75, “fixed”) end 当我运行包含此代码的代码时,我收到以下错误: org.drools.runtime.rule.ConsequenceException: rule: always at org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:39) … Caused by: [Error: […]

将Java POJO转换为Drools DRL,反之亦然

我在UI上有规则配置,构建到Java POJO。 我怎样才能生成Drools DRL(将被传递给与事实相匹配的其他组件,如果规则匹配则返回true或false)。 我也从数据库接收DRL文件,为了在UI上显示规则,我需要转换回Java POJO。 Basiclly有没有可以在Java POJO和Drools DRL文件之间转换的工具或脚本? 如果没有,最好的方法是什么? 非常感谢!

“StreamCorruptedException:invalid stream header”的可能原因

我(尝试)使用drools来处理我的定价规则。 但是当我尝试执行规则时,抛出以下exception: java.lang.RuntimeException: KnowledgeAgent exception while trying to deserialize KnowledgeDefinitionsPackage at org.drools.agent.impl.KnowledgeAgentImpl.rebuildResources(KnowledgeAgentImpl.java:418) at org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:120) at org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:109) at com.sapienter.jbilling.server.pluggableTask.PluggableTask.readKnowledgeBase(PluggableTask.java:115) at com.sapienter.jbilling.server.rule.RulesBaseTask.executeRules(RulesBaseTask.java:57) at com.sapienter.jbilling.server.item.tasks.RulesPricingTask2.getPrice(RulesPricingTask2.java:81) at com.sapienter.jbilling.server.item.ItemBL.getPrice(ItemBL.java:357) […many not so interesting lines…] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454) at java.lang.Thread.run(Thread.java:619) Caused by: java.io.StreamCorruptedException: invalid stream header: 3C3F786D at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:783) at java.io.ObjectInputStream.(ObjectInputStream.java:280) at org.drools.common.DroolsObjectInputStream.(DroolsObjectInputStream.java:55) at org.drools.common.DroolsObjectInputStream.(DroolsObjectInputStream.java:49) at org.drools.util.DroolsStreamUtils.streamIn(DroolsStreamUtils.java:189) at […]

安装Eclipse的Drools插件时出错

有谁知道如何解决这个问题? 无法完成安装,因为找不到一个或多个必需的项目。 正在安装的软件:JBoss Runtime Drools Detector 6.3.0.Final(org.jboss.tools.runtime.drools.detector.feature.feature.group 6.3.0.Final)缺少要求:JBoss Runtime Drools Detector 6.3.0.Final( org.jboss.tools.runtime.drools.detector.feature.feature.group 6.3.0.Final)需要’org.jboss.tools.runtime.core.feature.feature.group 0.0.0’但无法找到

编译将指导决策表编入规则

我想知道如何使用drools运行时在Java应用程序中使用Drools Workbench的指导决策表。 这个想法是用户可以在工作台中定义规则,流程和一些决策表,这些表将由drools运行时获取。 仍然,出于某种原因,我无法弄清楚如何在drools中执行此操作,因为它将表存储为gdst文件,并且它似乎无法编译为drools。 使用drools,有没有办法: – 执行gdst文件,就像我使用excel决策表一样? – 或者在规则中编译gdst文件? 我一直在寻找解决方案,但找不到具体的例子……:/

Drools:为什么无国籍会议?

Drools使用会话来存储运行时数据。 为此目的,有两种会话:无状态和有状态。 与无状态会话相比,有状态会话允许迭代调用,并且似乎比无状态会话具有所有优势。 那为什么还有无国籍的会议呢? 他们服务的目的是什么? 他们比有状态会话有什么优势? 谢谢。

在eclipse中,显示值1.8不是有效的语言级别

我在eclipse luna,java 1.8,drools 5.4.0中使用drools项目。 当我打开drools文件时,显示值“1.8”不是有效的语言级别。 我该怎么办?