标签: drools-guvnor

如何以及如何整合Java Webapp + drools + Guvnor?

我计划引入Java规则,目前正在评估Drools以从应用程序外部化(物理地和逻辑地)业务规则.

由于这些业务规则经常由业务部门提供,我希望业务部门通过GUI对规则进行必要的更改.

我已经谷歌搜索集成java Web应用程序+ Drools + Guvnor,我没有得到任何地方.

我的问题:

  1. Drools是否支持轻量级GUI来编辑规则?
  2. Drools Guvnor是一个轻量级的GUI,还是有办法让它失败?
  3. 将应用程序集成到Guvnor以阅读规则有多容易?

关于通常简单实现集成Java Application + Drools + Guvnor的任何其他建议都会很棒.

任何指向教程的指针也会为我做.

java drools guvnor drools-guvnor

15
推荐指数
1
解决办法
6018
查看次数

在Drools 6中以编程方式创建新drools规则的新方法是什么?

简而言之,我想在运行时从规则库创建,编辑和删除规则.我很难弄清楚如何在流氓6+中做到这一点.

我知道在先前版本的drools(<= 5.6)中,有一个.drl文件的XML表示和一个用于它的API:https://docs.jboss.org/drools/release/5.6.0 .Final/drools-expert-docs/html/ch04.html#d0e8052.

从5.6开始的drools文档表明这个已弃用,它似乎在6处被完全删除.我不想使用已知没有直接升级路径的API.

由于工作流程要求以及Web用户界面的复杂性,将Guvnor或Workbench UI公开给用户进行规则编辑也不太合适.我想从Java代码创建和管理规则.

我想要一个比.drl文件的字符串模板更好的方法来创建新规则和修改规则.从Java以编程方式创建新规则的用途是什么?我做了很多搜索,但似乎无法为此找到一组Java API调用.

java rules drools drools-guvnor

10
推荐指数
2
解决办法
5543
查看次数

drools中是否有API通过传递值动态创建drl文件?

我知道如何使用所有方法在KIE工作台中创建DRL文件.但是我的问题是没有使用KIE工作台,我们可以使用我们所需的值创建.drl文件.如果有任何可能性,请建议我.同样的方式建议我任何API都与此有关.提前致谢.

java drools drools-guvnor kie

9
推荐指数
3
解决办法
6624
查看次数

直接从存储库加载Drools/KIE Workbench工件

我们尝试使用全新的KIE工作台(以前称为Guvnor)和新的基于maven的工件切换到Drools 6.

现在我想在第二张图片("部署")中使用本博文中描述的系统:通过HTTP从工作台存储库加载规则(虚线箭头,从左边的HTTP直接进入应用程序) .

问题是,我不知道如何将工件加载到我的KieServices/KieModule对象中.我基本上不想使用maven,我也无法提供maven settings.xml作为Java参数的全局路径,所以这个选项已经出来了.

我认为,类似的问题是这一个.正如那里提到的,我也试图加载一个URL资源,但问题似乎是系统无法确定ResourceType给定的URL(http://localhost:8080/kie-drools/maven2/.../-1.0.0.jar)是什么类型.是的,我可以直接从浏览器访问存储库中的.jar,无需身份验证.

任何想法或教程如何做到这一点?

我的测试代码:

public static void main(String[] args) {
    KieServices ks = KieServices.Factory.get();
    KieRepository repo = ks.getRepository();

    String url = "http://localhost:8080/kie-drools/maven2/de/test/test/1.0.0/test-1.0.0.jar";

    Resource urlResource = ks.getResources().newUrlResource(url);
    KieModule kModule = repo.addKieModule(urlResource); // this already fails
}
Run Code Online (Sandbox Code Playgroud)

错误:

Exception in thread "main" java.lang.RuntimeException: Unable to fetch module from resource :[UrlResource path='http://localhost:8080/kie-drools/maven2/de/itm/Herma400/1.0.1/Herma400-1.0.1.jar']
    at org.drools.compiler.kie.builder.impl.KieRepositoryImpl.getKieModule(KieRepositoryImpl.java:205)
    at org.drools.compiler.kie.builder.impl.KieRepositoryImpl.addKieModule(KieRepositoryImpl.java:161)
    at kieTest.MainKieTest.main(MainKieTest.java:24)
Caused by: java.lang.NullPointerException
    at org.drools.compiler.kie.builder.impl.ClasspathKieProject.getPomProperties(ClasspathKieProject.java:197)
    at org.drools.compiler.kie.builder.impl.ClasspathKieProject.fetchKModule(ClasspathKieProject.java:148)
    at org.drools.compiler.kie.builder.impl.ClasspathKieProject.fetchKModule(ClasspathKieProject.java:109)
    at org.drools.compiler.kie.builder.impl.KieRepositoryImpl.getKieModule(KieRepositoryImpl.java:190) …
Run Code Online (Sandbox Code Playgroud)

java drools maven drools-guvnor kie

8
推荐指数
2
解决办法
3万
查看次数

无法在KIE workbench 6.2 wildfly发行版中看到服务器,进程管理菜单?

我对流氓和所有人的工作经验较少.所以我已经通过了KIE workbench 6.0它工作正常,但我需要6.2版本中的服务器,进程管理菜单.安装后我无法看到它们,即使安装没有显示任何错误.请建议我如何在KIE工作台版本6.2中获取这些内容.提前致谢.

jboss drools jbpm drools-guvnor kie

7
推荐指数
1
解决办法
994
查看次数

面临在tomcat 7.0.30中部署guvnor.war的问题

如何在Tomcat 7.0.30服务器中部署guvnor.war(版本5.4.0.Final)?它给我以下错误:

类型:异常报告

信息

说明:服务器遇到内部错误,导致无法完成此请求.

例外

java.lang.NullPointerException
  org.jboss.seam.transaction.TransactionServletListener.requestInitialized(TransactionServletListener.java:106)
  org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
  org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
  org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
  org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
  org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
  org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
  java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
  java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
  java.lang.Thread.run(Thread.java:722)
Run Code Online (Sandbox Code Playgroud)

注意Apache Tomcat/7.0.30日志中提供了根本原因的完整堆栈跟踪.

tomcat7 drools-guvnor

6
推荐指数
1
解决办法
4440
查看次数

没有 Maven 的 Drools Kie 应用程序

作为开发人员,我想创建一个 Maven 项目并构建一个可执行的独立 JAR 应用程序。(无弹簧靴)

在开发和构建过程中,我想添加一个 Drools Kie 工件作为依赖项

<dependency>
 <groupId>com.mycompany</groupId>
 <artifactId>mydrools</artifactId>
 <version>[1.0.0,)</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

将我的应用程序构建为可执行 Jar 并运行它。我的应用程序具有调用 Drools 引擎的代码:

KieSession kSession = kContainer.newKieSession();
kSession.insert(myBean);
kSession.fireAllRules();
Run Code Online (Sandbox Code Playgroud)

最重要的是,当我在生产环境中部署我的应用程序时:

  • 希望我的生产服务器上安装Maven
  • 希望我的应用程序扫描本地或远程 Maven 存储库
  • 我希望我的应用程序定期自动扫描我的 Drools Kie 工件的新版本,而不需要参考 Maven 存储库,只需查看文件系统

我试过

String fileName = System.getenv("HOME") + "/libs/mydrools-1.0.0.jar";
File file = new File(fileName);
KieRepository kieRepository = ks.getRepository();        
KieContainer kContainer = ks.newKieContainer(ks.newReleaseId("com.mycompany", "mydrools", "1.0.0"));
kieRepository.addKieModule(ks.getResources().newFileSystemResource(file));
KieScanner kScanner = ks.newKieScanner( kContainer );
kScanner.start( 10000L );
Run Code Online (Sandbox Code Playgroud)

加载 JAR 工作正常,但似乎我也被迫至少配置一个最小的 Maven 存储库(~/.m2 文件夹和一个 …

java drools maven drools-guvnor kie

6
推荐指数
1
解决办法
3459
查看次数

流口水的复杂事实

我一直在研究如何简化我用DRL手动编写的一些规则,这些规则变得难以维护.

通过谷歌搜索导致"决策表是最好的方式去forawad".

但遗憾的是我们的事实非常复杂,所以当下drools电子书转换器,无法处理如此复杂的事实,

所以第一个问题是开发人员通常如何处理drools知识库中非常复杂的事实?

例如,我们有类似的事实

Person->List<Cars>->List<Insurances>->Each insurance Has List<History>
Run Code Online (Sandbox Code Playgroud)

现在我必须写一条规则,说人有他的保险索赔的糟糕历史.然后我发现将它放在speadsheet中非常困难,因为它更容易在drl文件上手动编写此规则.

谢谢您的帮助.对上述示例的任何帮助也都非常好.

drools drools-guvnor

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

为什么将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
查看次数

为Tomcat Drools工作台7.12.0

我是Drools的新手,我正在尝试安装drools server和workbench 7.12.0.我碰巧看到在以前的版本中看到了工作台的tomcat版本的war,但是没有看到7.12.0.有人能指出我用于Tomcat的正确战争吗?

我检查了文档,它说战争的定制版本可用,但我找不到.

最诚挚的问候,Hanmanth.

workbench drools-guvnor

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

在Drools Guvnor维护drl(技术)规则

我是业务规则世界的新手,但我认为我已经理解了Drools Expert和Drools Guvnor的概念,但是我仍然有点混淆了如何/何时/为什么使用Guvnor与Expert相比.而且,他们是否相互排斥或者是否有能力甚至更愿意并肩工作.下面是一些突出的主题,这些主题可以解释我的问题背后的一些解释,主要集中在应用程序的可维护性上.

Guvnor是否具有Expert中可用的所有功能以及更多功能?

我知道Guvnor是业务规则管理系统(BRMS),它控制存储(包括版本控制)规则和公开服务以使用其他应用程序.Guvnor包含用于生成规则的UI(文本和图形)以及用于运行它们的引擎,因此从这个意义上讲,我猜它包含Expert系统的所有功能.根据我的要求,我很确定Guvnor是我需要的,但是之后我还需要Drools Expert吗?

或者换句话说,Drools Expert是否提供了Guvnor中没有的东西?

Guvnor中的测试规则

我见过的关于Drools的许多教程都是从TDD示例开始的,其中规则是使用简单的jUnit测试进行测试的.一旦将规则导入Guvnor(或者只是在那里生成),有没有办法为它使用/编写单元测试?

是否应该仅通过公开接口(REST)进行测试?

如果系统的用户要开发自己的规则,我不希望他们编写任何测试.主要关注"核心"规则及其可维护性.

如果是"核心"规则,它们是否应存储在版本控制系统中,并在整个系统的预定更新中导入Guvnor?在这种情况下,可以为这些规则编写单元测试,并在构建周期中自动执行.

提前致谢.

rule-engine drools drools-guvnor

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

在wildfly-8.1.0.Final上部署kie-drools-wb-distribution-wars-6.0.1.Final-jboss-as7.0.war

我在jboss-as-7.1.1.Final上成功部署了kie-drools-wb-distribution-wars-6.0.1.Final-jboss-as7.0.war,使用jdk1.7.0_10运行.

但是这个配置......

  • 纪伊 - 滴料-WB-分布战争-6.0.1.Final-的jboss-as7.0.war
  • wildfly-8.1.0.Final
  • jdk1.7.0_10

..无法使用此错误进行部署:

    14:58:06,531 WARN  [org.jboss.weld.deployer] (MSC service thread 1-5) JBAS016011: Warning while parsing vfs:/C:/java/too
ls/wildfly-8.1.0.Final-guvnor/bin/content/kie-drools-wb-distribution-wars-6.0.1.Final-jboss-as7.0.war/WEB-INF/beans.xml:
1 cvc-elt.1 : DÚclaration de l'ÚlÚment 'beans' introuvable.
14:58:07,500 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-6) MSC000001: Failed to start service jboss.module
.service."deployment.kie-drools-wb-distribution-wars-6.0.1.Final-jboss-as7.0.war".main: org.jboss.msc.service.StartExcep
tion in service jboss.module.service."deployment.kie-drools-wb-distribution-wars-6.0.1.Final-jboss-as7.0.war".main: JBAS
018759: Failed to load module: deployment.kie-drools-wb-distribution-wars-6.0.1.Final-jboss-as7.0.war:main
        at org.jboss.as.server.moduleservice.ModuleLoadService.start(ModuleLoadService.java:91) [wildfly-server-8.1.0.Fi
nal.jar:8.1.0.Final]
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948) [jboss-ms
c-1.2.2.Final.jar:1.2.2.Final]
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881) [jboss-msc-1.2.2.F
inal.jar:1.2.2.Final]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [rt.jar:1.7.0_10]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [rt.jar:1.7.0_10]
        at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_10]
Caused by: org.jboss.modules.ModuleNotFoundException: org.jboss.netty:main …
Run Code Online (Sandbox Code Playgroud)

drools drools-guvnor wildfly kie wildfly-8

0
推荐指数
1
解决办法
4067
查看次数

标签 统计

drools-guvnor ×13

drools ×11

kie ×7

java ×6

maven ×2

git ×1

guvnor ×1

jar ×1

jboss ×1

jbpm ×1

kie-wb ×1

rule-engine ×1

rules ×1

tomcat7 ×1

wildfly ×1

wildfly-8 ×1

workbench ×1