如何在客户端的应用程序中使用Drools Workbench规则

时间:2014-08-02 09:02:32

标签: drools

我已经在tomcat服务器上部署了drools workbench ...它运行良好....现在我想在客户端应用程序加载并激活工作台上的所有可用规则。此外,修改规则时,必须在客户端更新规则.....

目前,客户端应用程序正在drools 6.0.1上运行。

我试过以下代码......

    String url = "http://localhost:4040/kie-drools-wb-distribution-wars-6.0.1.Final-tomcat7.0/maven2/com/dcproject1/dcproject1/LATEST/dcproject1-LATEST.jar";

    // make sure you use "LATEST" here!
    //ReleaseIdImpl releaseId = new ReleaseIdImpl("de.test", "Test", "LATEST");
    ReleaseIdImpl releaseId = new ReleaseIdImpl("com.dcproject1", "dcproject1", "LATEST");

    KieServices ks = KieServices.Factory.get();

    ks.getResources().newUrlResource(url);

    KieContainer kieContainer = ks.newKieContainer(releaseId);

    // check every 5 seconds if there is a new version at the URL
    KieScanner kieScanner = ks.newKieScanner(kieContainer);
    kieScanner.start(15000L);

但是当我在工作台上更新我的规则时,它会抛出异常,如...

13:43:16.853 [Timer-0] INFO odckbimpl.KieRepositoryImpl - 添加了KieModule:ZipKieModule [ReleaseId = com.dcproject1:dcproject1:1.0.1file = E:\ Users \ kjariwala1.m2 \ repository \ com \ dcproject1 \ dcproject1 \ 1.0.1 \ dcproject1-1.0.1.jar]线程中的异常" Timer-0"位于org.kie的org.kie.scanner.KieRepositoryScannerImpl.updateKieModule(KieRepositoryScannerImpl.java:214)org.drools.compiler.kie.builder.impl.KieContainerImpl.updateToVersion(KieContainerImpl.java:161)的java.lang.NullPointerException。 scan.KieRepositoryScannerImpl.scanNow(KieRepositoryScannerImpl.java:204)atg.kie.scanner.KieRepositoryScannerImpl $ ScanTask.run(KieRepositoryScannerImpl.java:193)at java.util.TimerThread.mainLoop(Timer.java:555)at java.util .TimerThread.run(Timer.java:505)

1 个答案:

答案 0 :(得分:0)

我最近有这样的工作。我正在使用drools 6.1.Final。我目前没有使用kie-wb,只是maven。 上面和我的代码之间的主要区别在于,而不是为规则工件传递显式URL。我将系统属性kie.maven.settings.custom设置为指向定义了maven存储库的settings.xml文件。我认为你可以对嵌入在kie-wb中的存储库做同样的事情。