我正在使用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 );
[...]
但是,这会因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)
我的问题是:为什么没有找到回购罐?当我在KIE WB中创建它时,KieModule不是回购中jar和jar的表示吗?或者我必须更改打印出的Maven Repo的默认ReleaseID
KieRepository repo = ks.getRepository(); repo.getDefaultReleaseId()
解决了
org.default:artifact:1.0.0-SNAPSHOT ?
这是Maven的问题吗?我错了什么?
这里是jar的内容pom.xml
4.0.0 com.myprojects myProject LATEST myProject guvnor-m2-repo Guvnor M2 Repo http://localhost:8080/drools-wb-as7.0/maven2/
我还尝试使用此代码通过URL加载jar:
KieServices ks = KieServices.Factory.get(); ReleaseId releaseId = ks.newReleaseId("com.myprojects", "myProject", "LATEST"); KieResources kres = ks.getResources(); String url = "http://127.0.0.1:8080/drools-wb-as7.0/maven2/com/myprojects/myProject/LATEST/myProject-LATEST.jar"; kres.newUrlResource( url ); KieContainer kContainer = ks.newKieContainer(releaseId); KieSession kSession = kContainer.newKieSession("statelessDefautlKnowledgeSession"); [...]
这失败了同样的例外....任何想法?
到目前为止我读过的一些资源(不能发布其他6个):
动态添加drls等
动态加载drls
事实证明,事实证明
<dependency> <groupId>org.kie</groupId> <artifactId>kie-ci</artifactId> </dependency>
在我的POM中丢失了