5

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 つは投稿できません):

drl などを動的に追加する

drl を動的にロードする

4

1 に答える 1

7

私の場合、それが判明しました

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

私のPOMにありませんでした

于 2015-02-24T14:22:30.803 に答える