java - 如何从 KIE 工作台获取 kieContainer

标签 java maven drools kie-workbench

我尝试从我通过 KIE Workbench 创建的项目中获取 kieContainer。

    String url = "http://dev.dsack.local:8080/kie-wb/maven2wb/ouTest/projectTest/1.0/projectTest-1.0.jar";
    ReleaseIdImpl releaseId = new ReleaseIdImpl("ouTest", "projectTest", "1.0");
    KieServices kieServices = KieServices.Factory.get();
    kieServices.getResources().newUrlResource(url);
    KieContainer kieContainer = kieServices.newKieContainer(releaseId);

当我用浏览器打开网址时,我可以下载 .jar 但在最后一行我收到错误。我不知道我做错了什么。我对maven也不是很熟悉。你能帮我吗?

12:57:11.688 [main] DEBUG org.kie.scanner.MavenRepository - Unable to resolve artifact: ouTest:projectTest:pom:1.0
org.eclipse.aether.resolution.ArtifactResolutionException: Could not find artifact ouTest:projectTest:pom:1.0 in central (https://repo.maven.apache.org/maven2)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:444) ~[aether-impl-1.0.0.v20140518.jar:na]
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:246) ~[aether-impl-1.0.0.v20140518.jar:na]
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:223) ~[aether-impl-1.0.0.v20140518.jar:na]
at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact(DefaultRepositorySystem.java:294) ~[aether-impl-1.0.0.v20140518.jar:na]
at org.kie.scanner.MavenRepository.resolveArtifact(MavenRepository.java:154) ~[kie-ci-6.4.0.Final.jar:6.4.0.Final]
at org.kie.scanner.ArtifactResolver.getPomFileForGAV(ArtifactResolver.java:148) [kie-ci-6.4.0.Final.jar:6.4.0.Final]
at org.kie.scanner.ArtifactResolver.getResolverFor(ArtifactResolver.java:108) [kie-ci-6.4.0.Final.jar:6.4.0.Final]
at org.kie.scanner.KieRepositoryScannerImpl.loadPomArtifact(KieRepositoryScannerImpl.java:151) [kie-ci-6.4.0.Final.jar:6.4.0.Final]
at org.kie.scanner.KieRepositoryScannerImpl.loadArtifact(KieRepositoryScannerImpl.java:127) [kie-ci-6.4.0.Final.jar:6.4.0.Final]
at org.kie.scanner.KieRepositoryScannerImpl.loadArtifact(KieRepositoryScannerImpl.java:122) [kie-ci-6.4.0.Final.jar:6.4.0.Final]
at org.drools.compiler.kie.builder.impl.KieRepositoryImpl.loadKieModuleFromMavenRepo(KieRepositoryImpl.java:130) [drools-compiler-6.4.0.Final.jar:6.4.0.Final]
at org.drools.compiler.kie.builder.impl.KieRepositoryImpl.getKieModule(KieRepositoryImpl.java:116) [drools-compiler-6.4.0.Final.jar:6.4.0.Final]
at org.drools.compiler.kie.builder.impl.KieRepositoryImpl.getKieModule(KieRepositoryImpl.java:93) [drools-compiler-6.4.0.Final.jar:6.4.0.Final]
at org.drools.compiler.kie.builder.impl.KieServicesImpl.newKieContainer(KieServicesImpl.java:115) [drools-compiler-6.4.0.Final.jar:6.4.0.Final]
at org.drools.compiler.kie.builder.impl.KieServicesImpl.newKieContainer(KieServicesImpl.java:111) [drools-compiler-6.4.0.Final.jar:6.4.0.Final]
at controller.DecisionServerTest.test2(DecisionServerTest.java:163) [classes/:na]
at Main.main(Main.java:9) [classes/:na]
Caused by: org.eclipse.aether.transfer.ArtifactNotFoundException: Could not find artifact ouTest:projectTest:pom:1.0 in central (https://repo.maven.apache.org/maven2)
at org.eclipse.aether.connector.basic.ArtifactTransportListener.transferFailed(ArtifactTransportListener.java:39) ~[aether-connector-basic-1.0.0.v20140518.jar:na]
at org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:355) ~[aether-connector-basic-1.0.0.v20140518.jar:na]
at org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:67) ~[aether-util-1.0.0.v20140518.jar:na]
at org.eclipse.aether.connector.basic.BasicRepositoryConnector$DirectExecutor.execute(BasicRepositoryConnector.java:581) ~[aether-connector-basic-1.0.0.v20140518.jar:na]
at org.eclipse.aether.connector.basic.BasicRepositoryConnector.get(BasicRepositoryConnector.java:249) ~[aether-connector-basic-1.0.0.v20140518.jar:na]
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:520) ~[aether-impl-1.0.0.v20140518.jar:na]
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:421) ~[aether-impl-1.0.0.v20140518.jar:na]
... 16 common frames omitted
Exception in thread "main" java.lang.RuntimeException: Cannot find KieModule: ouTest:projectTest:1.0
at org.drools.compiler.kie.builder.impl.KieServicesImpl.newKieContainer(KieServicesImpl.java:117)
at org.drools.compiler.kie.builder.impl.KieServicesImpl.newKieContainer(KieServicesImpl.java:111)
at controller.DecisionServerTest.test2(DecisionServerTest.java:163)
at Main.main(Main.java:9)

最佳答案

我想您正在尝试从 Kie 工作台下载 jar,尝试在 maven 中构建 jar 并在项目中使用它。在这种情况下,首先按照以下链接运行此命令, http://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html 然后在项目 pom 文件中添加 jar 依赖项。 您可以使用下面的代码来执行应用程序。在执行过程中,您将需要大量的jar。主要是Kie-ci、kie-internal。

            KieServices kieServices = KieServices.Factory.get(); 

            ReleaseId releaseId = kieServices.newReleaseId("org.test", 
                    "kie-project-simple", "1.0"); 

            KieContainer kContainer = kieServices.newKieContainer(releaseId); 

            kScanner = kieServices.newKieScanner(kContainer); 

            System.out.println("This is a Kie-Ci example. The drl rule is packaged " + 
                    "as a kmodule in a jar and deployed in your maven repo"); 

            // Scan to discover new resources of an existing artifact 
            kScanner.scanNow(); 

            for (int i = 0; i < 100; i++) { 
                // Create a stateless session 
                kSession = kContainer.newKieSession(); 
                kSession.insert("Hello"); 
                kSession.fireAllRules(); 
                try { 
                    Thread.sleep(5000); 
                } catch (InterruptedException e) { 
                    System.out.println("Thread interrupted. Firing of rules will stop."); 
                } 
            } 

关于java - 如何从 KIE 工作台获取 kieContainer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38611678/

相关文章:

rest - Apache Camel 和 Drools 融合集成

java - 在 Java EE 7 应用程序中使用 ThreadPoolExecutor 的 Drools 导致重新部署时出现问题

java - 如何使用 AsynchronousServerSocketChannel 绑定(bind)多个端口?

java - 处理中的多个类

maven-2 - windows上从maven 2到maven 3的迁移过程

eclipse - src/main/resources和src/main/webapp/resources之间有什么区别?

mysql - 流口水与 mysql 的持久性,无法获取流程实例

java - 关于 HashMap 的方法 containsValue 的困惑

java - Android Dex :Unable to execute DX (IntelliJ), 如何解决?

java - Gradle 找不到任何远程库