9

まったく新しい KIE ワークベンチ (以前は Guvnor として知られていた) と新しい Maven ベースのアーティファクトを備えた Drools 6 に切り替えようとしています。

ここで、2 番目のイメージ (「デプロイ」) でこのブログ投稿に記載されているシステムを使用したいと思います: Workbench リポジトリから 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
}

エラー:

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)
    ... 2 more

前もって感謝します!

4

3 に答える 3

9

上記のコードでは、maven と kie-ci を使用しています。作成した URLResource は使用されません。

これが実際のサンプルです:

    String url = "http://localhost:8080/kie-drools-wb/maven2/groupId/artifactId/1.0/artifactId-1.0.jar";

    KieServices ks = KieServices.Factory.get();
    KieRepository kr = ks.getRepository();
    UrlResource urlResource = (UrlResource) ks.getResources()
            .newUrlResource(url);
    urlResource.setUsername("admin");
    urlResource.setPassword("password");
    urlResource.setBasicAuthentication("enabled");
    InputStream is = urlResource.getInputStream();
    KieModule kModule = kr.addKieModule(ks.getResources()
            .newInputStreamResource(is));

    KieContainer kContainer = ks.newKieContainer(kModule.getReleaseId());

    kContainer.newStatelessKieSession();

これを KieScanner で動作させるには、まだ少し調整する必要があることに注意してください。

于 2014-04-17T11:46:39.293 に答える
2

手順は次のとおりです。すべての手順は必須です

  • pom に kie-clie 依存関係を追加します

    <dependency>
        <groupId>org.kie</groupId>
        <artifactId>kie-ci</artifactId>
        <version>6.2.0.Final</version>
    </dependency>
    
  • KIE ワークベンチの Maven リポジトリーをpom.xml

    <repository>
        <id>guvnor-m2-repo</id>
        <name>Guvnor M2 Repo</name>
        <url>http://localhost:8080/drools/maven2wb/</url>
    </repository>
    
  • 依存関係をあなたに追加しますpom.xml

    <dependency>
        <groupId>groupId</groupId>
        <artifactId>artifactId</artifactId>
        <version>LATEST</version>
    </dependency>
    
  • リポジトリの資格情報を settings.xml に入力します

    <server>
        <id>guvnor-m2-repo</id>
        <username>admin</username>
        <password>@dmin</password>
    </server>
    
  • Java コード

    KieServices ks = KieServices.Factory.get();
    ReleaseId releaseId = ks.newReleaseId("groupID", "artifactID", "LATEST");
    KieContainer kieContainer = ks.newKieContainer(releaseId);
    KieSession kieSession = kieContainer.newKieSession();
    kieSession.insert(object);
    kieSession.fireAllRules();
    
于 2015-07-24T07:05:50.557 に答える