2014-01-08 19 views
5

我正在使用JBoss AS 7.1.1.Final與KIE Workbench/Drools 6.0.1,Java和Eclipse(Kepler)。爲什麼加載Drools 6 KIE JAR成代碼失敗?

我需要KIE Workbench(以前稱爲Drools Guvnor)讓人們用事實和規則以圖形方式創建/編輯瓶子,然後將其作爲jar存儲在本地maven存儲庫中。這些罐子(以前稱爲pkg's)我希望以編程方式訪問並將它們加載到我的Drools應用程序中。該應用程序甚至可以(雖然不是preferedly)在同一個工作站上運行,因此訪問存儲庫可以

一)網址: http://localhost:8080/drools-wb-as7.0/maven2/com/myprojects/myProject/LATEST/myProject-LATEST.jar

b)以文件路徑/類路徑: /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); 

[...]

然而,這種失敗與運行時異常,

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不是KieModule中的jar和jar自動錶示的代碼庫嗎? 或者我必須改變的Maven回購的默認ReleaseID,這與

KieRepository repo = ks.getRepository(); 
repo.getDefaultReleaseId() 

打印出來解析

org.default:artifact:1.0.0-SNAPSHOT ? 

它是一個Maven的問題呢?我錯了什麼?

這裏罐子的內容的pom.xml

<?xml version="1.0" encoding="UTF-8"?> 
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.myprojects</groupId> 
    <artifactId>myProject</artifactId> 
    <version>LATEST</version> 
    <name>myProject</name> 
    <repositories> 
    <repository> 
     <id>guvnor-m2-repo</id> 
     <name>Guvnor M2 Repo</name> 
     <url>http://localhost:8080/drools-wb-as7.0/maven2/</url> 
    </repository> 
    </repositories> 
</project> 

我也嘗試了使用此代碼通過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):

add drls etc. dynamically

load drls dynamically

+0

第一個問題...有一個Jar在下面的lo陽離子?'http:// localhost:8080/drools -wb-as7.0/maven2/com/myprojects/myProject/LATEST/myProject-LATEST.jar' – Steve

+0

是的,我也可以通過瀏覽器下載它。 – user3173088

+1

kie-ci.jar是否在您的應用程序的類路徑中? – Steve

回答

5

在我的情況證明,

<dependency> 
    <groupId>org.kie</groupId> 
    <artifactId>kie-ci</artifactId> 
</dependency> 

失蹤在我的POM中

+0

它爲我工作,謝謝 – mosaad

相關問題