相关疑难解决方法(0)

直接从存储库加载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万
查看次数

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

标签 统计

drools ×2

drools-guvnor ×2

java ×2

kie ×2

jar ×1

maven ×1