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

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

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

问题是,我不知道如何将工件加载到我的KieServices /

KieModule对象中。我基本上不想使用maven,也不能提供settings.xmlJava参数作为全局参数来提供maven的路径,因此没有此选项。

我认为,类似的问题是这一个。如此处所述,我还尝试加载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

}

错误:

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)

... 2 more

提前致谢!

回答:

我终于设法解决了这个问题。下面是一个工作示例,该示例通过HTTP从KIE存储库加载Drools工件并执行规则:

package kieTest;

import java.util.Scanner;

import org.drools.compiler.kproject.ReleaseIdImpl;

import org.kie.api.KieServices;

import org.kie.api.builder.KieScanner;

import org.kie.api.runtime.KieContainer;

import org.kie.api.runtime.StatelessKieSession;

public class MainKieTest {

public static void main(String[] args) {

// works even without -SNAPSHOT versions

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

// make sure you use "LATEST" here!

ReleaseIdImpl releaseId = new ReleaseIdImpl("de.test", "Test", "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(5000L);

// alternatively:

// kieScanner.scanNow();

Scanner scanner = new Scanner(System.in);

while (true) {

runRule(kieContainer);

System.out.println("Press enter in order to run the test again....");

scanner.nextLine();

}

}

private static void runRule(KieContainer kieKontainer) {

StatelessKieSession kSession = kieKontainer.newStatelessKieSession("testSession");

kSession.setGlobal("out", System.out);

kSession.execute("testRuleAgain");

}

}

搜索解决方案时,我发现以下链接很有帮助:

  • http://blog.athico.com/2013/12/deployment-with-drools-60.html

我希望有人将SO作为第一个搜索结果时会觉得有用;-)

以上是 直接从存储库加载Drools / KIE Workbench工件 的全部内容, 来源链接: utcz.com/qa/414605.html

回到顶部