JBoss AS 7.1.1.Final と KIE Workbench/Drools 6.0.1.、Java および Eclipse (Kepler) を使用しています。
KIE Workbench (以前の Drools Guvnor) を使用して、ファクトとルールを使用して jar をグラフィカルに作成/編集し、ローカルの Maven リポジトリに jar として保存できるようにする必要があります。これらの jar (以前は pkg) にプログラムでアクセスして、Drools アプリケーションにロードしたいと考えています。アプリは同じワークステーションで実行することもできます (ただし、好ましくはありません)。そのため、リポジトリへのアクセスは
a) URL:
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ファイルを動的にロードしたりしたくありません-準備されたjarは、たとえばcom.myprojects:myProject:LATESTを識別子としてロードする必要があります。
私はこれを試します(ドキュメントによると)
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)
私の質問は: レポの jar が見つからないのはなぜですか? KieModule は jar の表現ではありませんか? KIE WB 内で作成したため、レポ内で自動的に jar が作成されますか? または、出力された Maven Repo のデフォルトの ReleaseID を変更する必要があります。
KieRepository repo = ks.getRepository();
repo.getDefaultReleaseId()
に解決
org.default:artifact:1.0.0-SNAPSHOT ?
それはMavenの問題ですか?私は何を間違えていますか?
ここでjars 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 つは投稿できません):