gpt4 book ai didi

java - 来自 KieSession.startProcess 的 UnsupportedOperationException

转载 作者:行者123 更新时间:2023-12-02 11:16:04 25 4
gpt4 key购买 nike

我正在尝试将我们的项目从 Drools 6.5.0.CR2 切换到 7.7.0.Final。 (不要问我是谁想到在生产环境中使用CR版本的)

我在更改依赖项时没有遇到任何问题(没有编译错误),但我现在在运行 drools 网络时遇到问题。我现在从 KieSession.startProcess 收到 UnnsupportedOperationException

java.lang.UnsupportedOperationException
at org.drools.core.impl.StatefulKnowledgeSessionImpl$DummyInternalProcessRuntime.startProcess(StatefulKnowledgeSessionImpl.java:2166)
at org.drools.core.impl.StatefulKnowledgeSessionImpl.startProcess(StatefulKnowledgeSessionImpl.java:1839)

我像这样在我们使用以下构造函数和 getter 创建的 KieHelper 类中创建我的 kie session :

public KieHelper(Collection<File> resources) throws ResolverException {
this();
KieFileSystem kfs = this.services.newKieFileSystem();

for(File f : resources) {
System.out.println(f.getPath());
try{
FileInputStream fis = new FileInputStream(f);

kfs.write(
f.getPath(),
this.services.getResources().newInputStreamResource(fis));
}catch (Exception e) {
throw new ResolverException(e);
}
}

KieBuilder kieBuilder = this.services.newKieBuilder(kfs).buildAll();

if (kieBuilder.getResults().hasMessages(Level.ERROR)) {
List<Message> errors = kieBuilder.getResults().getMessages(Level.ERROR);
StringBuilder sb = new StringBuilder("Errors:");
for (Message msg : errors) {
sb.append("\n " + prettyBuildMessage(msg));
}

throw new ResolverException(sb.toString());
}

KieContainer container = services.newKieContainer(services.getRepository().getDefaultReleaseId());
this.base = container.getKieBase();
}

public KieSession newKieSession() {
return this.base.newKieSession();
}

然后我尝试在使用 KieHelper 的类中像这样启动 session :

KieSession wm = this.kieHelper.newKieSession();

//insert facts into the session

wm.startProcess(this.getRuleId()); //this is throwing the exception

在 Drools 6 中这工作得很好。在《流口水 7》中则不然。我希望有人知道发生了什么事。

<小时/>

编辑1:

根据 Tibor 的回答,我仔细检查了类路径。我们还从仅使用 ant 的构建系统切换到 Maven,在该系统中,我们使用类路径上的 Drools Engine 分发 zip 手动将所有 jar 文件放置在二进制文件夹中。我按照文档 here 的描述将依赖项添加到了我们的 pm 中.

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-bom</artifactId>
<type>pom</type>
<version>7.7.0.Final</version>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-api</artifactId>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
</dependency>
</dependencies>

但是从 Maven 中查看依赖项,列表要小得多:

来自行家:

antlr-runtime-3.5.2.jar
commons-codec-1.10.jar
drools-compiler-7.7.0.Final.jar
drools-core-7.7.0.Final.jar
ecj-4.4.2.jar
kie-api-7.7.0.Final.jar
kie-internal-7.7.0.Final.jar
kie-soup-commons-7.7.0.Final.jar
kie-soup-maven-support-7.7.0.Final.jar
kie-soup-project-datamodel-api-7.7.0.Final.jar
kie-soup-project-datamodel-commons-7.7.0.Final.jar
mvel2-2.4.0.Final.jar
protobuf-java-2.6.0.jar
slf4j-api-1.7.25.jar
xmlpull-1.1.3.1.jar
xpp3_min-1.1.4c.jar
xstream-1.4.10.jar

来自 Drools Engine 分发 Zip

activation-1.1.1.jar
aether-api-1.1.0.jar
aether-connector-basic-1.1.0.jar
aether-impl-1.1.0.jar
aether-spi-1.1.0.jar
aether-transport-file-1.1.0.jar
aether-transport-http-1.1.0.jar
aether-transport-wagon-1.1.0.jar
aether-util-1.1.0.jar
ant-1.8.4.jar
ant-launcher-1.8.4.jar
antlr-runtime-3.5.2.jar
aopalliance-1.0.jar
cdi-api-1.2.jar
commons-codec-1.10.jar
commons-collections4-4.1.jar
commons-lang3-3.4.jar
curvesapi-1.04.jar
drools-beliefs-7.7.0.Final.jar
drools-compiler-7.7.0.Final.jar
drools-core-7.7.0.Final.jar
drools-decisiontables-7.7.0.Final.jar
drools-persistence-api-7.7.0.Final.jar
drools-persistence-jpa-7.7.0.Final.jar
drools-pmml-7.7.0.Final.jar
drools-scorecards-7.7.0.Final.jar
drools-templates-7.7.0.Final.jar
drools-verifier-7.7.0.Final.jar
ecj-4.4.2.jar
guava-20.0.jar
guice-4.0-no_aop.jar
hibernate-jpa-2.1-api-1.0.0.Final.jar
httpclient-4.5.3.jar
httpcore-4.4.6.jar
itext-2.1.7.jar
javassist-3.20.0-GA.jar
javax.inject-1.jar
javax.interceptor-api-1.2.jar
jaxb-core-2.2.11.jar
jaxb-impl-2.2.11.jar
jboss-jaxb-api_2.2_spec-1.0.4.Final.jar
jboss-transaction-api_1.2_spec-1.0.1.Final.jar
jcl-over-slf4j-1.7.25.jar
jsoup-1.8.3.jar
kie-api-7.7.0.Final.jar
kie-ci-7.7.0.Final.jar
kie-internal-7.7.0.Final.jar
kie-soup-commons-7.7.0.Final.jar
kie-soup-maven-integration-7.7.0.Final.jar
kie-soup-maven-support-7.7.0.Final.jar
kie-soup-project-datamodel-api-7.7.0.Final.jar
kie-soup-project-datamodel-commons-7.7.0.Final.jar
maven-aether-provider-3.3.9.jar
maven-artifact-3.3.9.jar
maven-builder-support-3.3.9.jar
maven-compat-3.3.9.jar
maven-core-3.3.9.jar
maven-model-3.3.9.jar
maven-model-builder-3.3.9.jar
maven-plugin-api-3.3.9.jar
maven-repository-metadata-3.3.9.jar
maven-settings-3.3.9.jar
maven-settings-builder-3.3.9.jar
mvel2-2.4.0.Final.jar
org.eclipse.sisu.inject-0.3.2.jar
org.eclipse.sisu.plexus-0.3.2.jar
plexus-cipher-1.7.jar
plexus-classworlds-2.5.2.jar
plexus-component-annotations-1.6.jar
plexus-interpolation-1.21.jar
plexus-sec-dispatcher-1.3.jar
plexus-utils-3.0.22.jar
poi-3.15.jar
poi-ooxml-3.15.jar
poi-ooxml-schemas-3.15.jar
protobuf-java-2.6.0.jar
slf4j-api-1.7.25.jar
stax-api-1.0-2.jar
wagon-http-3.0.0.jar
wagon-http-shared-3.0.0.jar
wagon-provider-api-3.0.0.jar
xmlbeans-2.6.0.jar
xmlpull-1.1.3.1.jar
xpp3_min-1.1.4c.jar
xstream-1.4.10.jar

我一定是缺少了一些不在文档中的 Maven 依赖项。

<小时/>

编辑2

因此,作为测试,我回到了旧的 ant only 风格中进行构建,并将 drools 引擎分发 zip 中的所有 jar 添加到依赖项和运行时类路径中,但我仍然遇到相同的错误...

查看列表,但从外观来看,它们都不包含任何来自 jBPM 的内容。看看我们旧的源代码控制系统,我们确实有 6.5.0 的 jbpm jar。我猜这些是单独分发的吗?

最佳答案

(该死,在我有 15 名代表之前我无法发表评论。)

可能您的项目中没有 jBPM 依赖项。在这种情况下,我认为 Drools 对没有功能的进程使用虚拟提供程序。但我对此并不能100%确定。

关于java - 来自 KieSession.startProcess 的 UnsupportedOperationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50282808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com