标签: kie

为什么将Drools 6 KIE JAR加载到代码失败?

我正在使用JBoss AS 7.1.1.Final和KIE Workbench/Drools 6.0.1.,Java和Eclipse(Kepler).

我需要KIE Workbench(以前称为Drools Guvnor)让人们用Facts和Rules以图形方式创建/编辑jar,然后将其作为jar存储在本地maven存储库中.这些罐子(以前称为pkg)然后我想以编程方式访问并将它们加载到我的Drools应用程序中.应用程序甚至可以(虽然不是优选地)在同一工作站上运行,因此可以访问存储库

a)通过URL: http://localhost:8080/drools-wb-as7.0/maven2/com/myprojects/myProject/LATEST/myProject-LATEST.jar

b)通过filepath/classpath: /my/folder/jboss-as-7.1.1.Final/bin/repositories/kie/com/myprojects/myProject/LATEST/myProject-LATEST.jar

希望创建/编译动态规则等在我的代码,无论是动态加载一个.drl文件-准备好的罐子是我需要加载,如与com.myprojects:myProject的:最新作标识.

我试试这个(根据文件)

KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.newKieContainer(
ks.newReleaseId("com.myprojects",   "myProject", "LATEST"));
KieScanner kScanner = ks.newKieScanner( kContainer );
kScanner.start( 10000L );

KieSession kSession = kContainer.newKieSession("defaultKieSession");
kSession.insert( fact );
Run Code Online (Sandbox Code Playgroud)

[...]

但是,这会因Runtime Exception而失败,

Exception in thread "main" java.lang.RuntimeException: Cannot find KieModule: com.myprojects:myProject:LATEST
        at org.drools.compiler.kie.builder.impl.KieServicesImpl.newKieContainer(KieServicesImpl.java:86)
        at com.myprojects.myproject.KieDroolsWBOnlinePuller.code(KieDroolsWBOnlinePuller.java:118)
        at com.myprojects.myproject.KieDroolsWBOnlinePuller.main(KieDroolsWBOnlinePuller.java:40)
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么没有找到回购罐?当我在KIE WB中创建它时,KieModule不是回购中jar和jar的表示吗?或者我必须更改打印出的Maven Repo的默认ReleaseID

KieRepository repo = ks.getRepository();
repo.getDefaultReleaseId()
Run Code Online (Sandbox Code Playgroud)

解决了

org.default:artifact:1.0.0-SNAPSHOT ?
Run Code Online (Sandbox Code Playgroud)

这是Maven的问题吗?我错了什么?

这里是jar的内容pom.xml

<?xml version="1.0" encoding="UTF-8"?> …
Run Code Online (Sandbox Code Playgroud)

java jar drools drools-guvnor kie

5
推荐指数
1
解决办法
1万
查看次数

推送从KIE Workbench存储库克隆的git存储库

我使用KIE Workbench(6.1.0.Beta3)来编辑我的规则.由于Workbench还没有支持某些功能(例如将规则移到其他包中),我想在KIE-WB之外做这些事情.

为此,我克隆了我的存储库

git clone git://localhost:9418/my-kie-repository
Run Code Online (Sandbox Code Playgroud)

哪个工作正常.我编辑一些文件,在本地提交,然后尝试git push.但是我得到了错误

fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.
Run Code Online (Sandbox Code Playgroud)

因为我几乎可以肯定它是第一个问题,关于凭证,我在.git/config文件中添加了行

[credential "git://localhost:9418"]
    username = admin
    password = admin
Run Code Online (Sandbox Code Playgroud)

不过,我得到了前面提到的错误.是的,KIE Workbench仍在运行,我也可以从那里获取/拉取没有问题.

有没有办法如何推回到KIE Workbench存储库?根据这条消息,一个"可能需要重新配置原点",但我不确定如何更改它.

有人知道如何正确设置吗?

git drools drools-guvnor kie kie-wb

5
推荐指数
1
解决办法
6207
查看次数

适用于kie-maven插件的M2E连接器?

我正在使用BPM Suite 6来创建一个git存储库和shell项目.然后我在Eclipse IDE中连接到git repo.

由BPM Suite Web GUI创建的Pom文件包含kie-maven-plugin.但是Eclipse抱怨这个"插件执行没有被生命周期配置覆盖".

从谷歌搜索这个错误我已经明白,这意味着Eclipse不知道何时在Eclipse的构建过程中执行这个插件.修复此问题的"最佳"方法似乎是为插件安装m2e连接器.

这样的连接器是否存在?

eclipse drools maven kie

5
推荐指数
1
解决办法
1558
查看次数

如何在eclipse中使用spring和mysql DB配置JBPM 6

我正在尝试集成spring和JBPM,我做了谷歌的示例应用程序,发现一个github项目解释相同.

使用的框架版本:

  • Spring 3.1.1.RELEASE
  • JBPM 5.4.0.CR1
  • 流口水5.5.0.CR1

我已经将github项目导入eclipse工作区,并且在maven clean之后我得到例外说:

Listed class "org.jbpm.task.Status" must not be an enum persistence.xml /jbpm-spring-web/src/main/resources/META-INF    line 30 JPA Problem
Run Code Online (Sandbox Code Playgroud)

和src/main/resources/META-INF/Taskorm-JPA2.xml文件中的一些JPA查询异常如:

The abstract schema type 'OrganizationalEntity' is unknown. Taskorm-JPA2.xml    /jbpm-spring-web/src/main/resources/META-INF  line 375  JPA Problem
Run Code Online (Sandbox Code Playgroud)

The IN expression does not have a valid left expression.    Taskorm-JPA2.xml    /jbpm-spring-web/src/main/resources/META-INF    line 7  JPA Problem
Run Code Online (Sandbox Code Playgroud)

如何解决这些异常?

persistence.xml看起来像:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
  xmlns="http://java.sun.com/xml/ns/persistence" 
  xmlns:orm="http://java.sun.com/xml/ns/persistence/orm"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_2_0.xsd">

    <persistence-unit name="org.jbpm.runtime" transaction-type="JTA">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <jta-data-source>jdbc/jbpm-ds</jta-data-source>        
        <mapping-file>META-INF/JBPMorm-JPA2.xml</mapping-file>
        <mapping-file>META-INF/ProcessInstanceInfoMapping.xml</mapping-file>
        <mapping-file>META-INF/Taskorm-JPA2.xml</mapping-file>
        <class>org.jbpm.task.Attachment</class>
        <class>org.jbpm.task.Content</class> …
Run Code Online (Sandbox Code Playgroud)

spring jpa drools jbpm kie

5
推荐指数
0
解决办法
1020
查看次数

来自不同ClassLoader的Drools KieContainer

我们有一个Java应用程序,其中在Weblogic上部署了不同的模块。我们在不同的模块上使用了流口水,并试图通过将其定义为枚举类来使初始化KieContainer的类成为单例。

但是,似乎在生产环境中(通过耳文件部署应用程序)时,有不同的ClassLoader初始化该类,并且会收到以下异常:

null    java.lang.IllegalStateException: There's already another KieContainer created from a different ClassLoader; 
at org.drools.compiler.kie.builder.impl.KieServicesImpl.getKieClasspathContainer(KieServicesImpl.java:88); 
at org.drools.compiler.kie.builder.impl.KieServicesImpl.getKieClasspathContainer(KieServicesImpl.java:73);
Run Code Online (Sandbox Code Playgroud)

您对如何解决这个问题有任何建议吗?

java weblogic drools kie

5
推荐指数
1
解决办法
967
查看次数

Drools 性能作为使用多线程的规则引擎

我正在使用单线程 drools 项目作为第一匹配策略/条件评估引擎。我正在使用以下代码从 kieContainer 获取 kieSession,并根据条件评估谓词。

KieContainer currentContainer = kieContainer.get();
StatelessKieSession newKIESession = currentContainer.newStatelessKieSession();
newKieSession.execute(predicate);
Run Code Online (Sandbox Code Playgroud)

对于给定的请求,评估大约需要 10 毫秒。但是,当我使用 10 个线程时,为了提高性能,这些请求中的每一个都开始花费大约 100 毫秒,有效地为我提供了相同的性能和更多的线程。

  1. 在 Drools 中使用多线程改进条件评估的正确方法是什么?
  2. 我应该为每个处理线程生成一个新容器,而不是从现有容器生成一个新会话吗?

    //SEE LAST LINE BELOW
    
    KieServices ks = KieServices.Factory.get();
    KieRepository kr = ks.getRepository();
    KieFileSystem kfs = ks.newKieFileSystem();
    
    byte[] drlAsBytes = retrieveDRLResource();
    kfs.write(ResourceFactory.newByteArrayResource(drlAsBytes).setTargetPath(DROOLS_DEFAULT_PATH));
    
    KieBuilder kb = ks.newKieBuilder(kfs);
    
    kb.buildAll(); // kieModule is automatically deployed to KieRepository if successfully built.
    
    if (kb.getResults().hasMessages(Level.ERROR)) {
        throw new PolicyServiceException("Build Errors:\n" + kb.getResults().toString());
    }
    
    //******* SHOULD THIS BE DONE FOR EACH PROCESSING …
    Run Code Online (Sandbox Code Playgroud)

java rule-engine drools business-rules kie

5
推荐指数
0
解决办法
1644
查看次数

'Drools Camel Server'与'KIE-WB Execution Server'

是什么区别"Drools的骆驼服务器""KIE-WB执行服务器"?它们是否与远程服务器中执行规则/进程的目的相同?

KIE-WB文件:

工作台包含执行服务器(用于执行进程和任务),还允许您通过远程API调用各种进程和任务相关的操作.因此,您可以"作为服务"设置流程引擎,并通过远程请求和/或在必要时向执行服务器发送必要的触发器,轻松地将其集成到应用程序中(无需将其作为一部分嵌入或管理)你的申请).

Drools Camel Server文档:

drools camel服务器(drools-camel-server)模块是一个战争,你可以部署它来为任何类型的客户端应用程序远程执行KnowledgeBases.这不仅限于JVM应用程序客户端,也包括可以通过REST接口使用HTTP的任何技术.此版本的执行服务器以本机方式支持无状态和有状态会话.

drools jbpm kie

4
推荐指数
1
解决办法
2227
查看次数

kie workbench部署战争不起作用(tomcat)

我已经下载了kie工作台并提取了kie-drools-wb-distribution-wars-6.2.0.Final-tomcat7.war.我之前从未使用过tomcat,但是我想使用工作台,似乎没有工作台可以自行调整的选项.因此,我安装了tomcat 8.执行此操作后,我访问了tomcat管理器并部署了战争.(我不得不增加可接受文件大小的内存限制)

我现在已经/kie-drools-wb-distribution-wars-6.2.0.Final-tomcat7列为一个应用程序,但它不会启动.当我尝试启动它时,我得到以下内容:

FAIL - Application at context path /kie-drools-wb-distribution-wars-6.2.0.Final-tomcat7 could not be started
FAIL - Encountered exception org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/kie-drools-wb-distribution-wars-6.2.0.Final-tomcat7]]
Run Code Online (Sandbox Code Playgroud)

这是catalina日志文件:

01-Apr-2015 18:51:54.136 SEVERE [localhost-startStop-1] org.apache.catalina.startup.ContextConfig.processContextConfig Parse error in context.xml for /kie-drools-wb-distribution-wars-6.2.0.Final-tomcat7
 org.xml.sax.SAXParseException; systemId: file:/opt/apache-tomcat-8.0.21/webapps/kie-drools-wb-distribution-wars-6.2.0.Final-tomcat7/META-INF/context.xml; lineNumber: 17; columnNumber: 81; Error at (17, 81) : bitronix.tm.integration.tomcat55.BTMLifecycleListener
    at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:1914)
    at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:1946)
    at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1187)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:509)
    at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:182)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1343)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2786)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
    at …
Run Code Online (Sandbox Code Playgroud)

java tomcat drools kie

4
推荐指数
1
解决办法
9206
查看次数

Drools 6.5 中的规则流组与议程组

我试图在 Drools 6.5 中创建两个独立的规则组,但我无法弄清楚规则流组和议程组策略的用例是什么。他们两个看起来很相似。

drools kie

4
推荐指数
1
解决办法
1900
查看次数

Drools 7.4.1 kieservices.factory.get()返回null

我尝试将Drools 7.4.1集成到tomcat中的Webapp中。

当我在代码中调用以下语句来获取KieService时,我会得到null

KieServices ks = KieServices.Factory.get();
Run Code Online (Sandbox Code Playgroud)

如果从测试方法中调用相同的方法,则可以。

有人可以帮忙吗?

drools kie

4
推荐指数
3
解决办法
2206
查看次数

标签 统计

drools ×10

kie ×10

java ×4

drools-guvnor ×2

jbpm ×2

business-rules ×1

eclipse ×1

git ×1

jar ×1

jpa ×1

kie-wb ×1

maven ×1

rule-engine ×1

spring ×1

tomcat ×1

weblogic ×1