问题描述
我正在开发基于 Osgi (apache Felix) 和 maven 的微服务。 我正在学习jbpm。 我创建了一个决策表,我需要从我的 Osgi Java 项目中调用它。 下面是我在 bpmn 的 javadoc 中使用的代码,但似乎它不起作用,因为虽然我从 maven 导入了一堆依赖项,但仍然有很多其他依赖项,例如
KNowledgeBaseConfiguration
ResourceFactoryService
ResourceFactoryService
KNowledgeBase
保持悬而未决。
<drools.version>7.0.0.Final</drools.version>
<dependency>
<groupId>org.jbpm</groupId>
<artifactId>jbpm-bpmn2</artifactId>
<version>${drools.version}</version>
</dependency><!-- https://mvnrepository.com/artifact/org.drools/drools-core -->
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-core</artifactId>
<version>${drools.version}</version>
</dependency><!-- https://mvnrepository.com/artifact/org.drools/drools-osgi-integration --><!-- https://mvnrepository.com/artifact/org.drools/drools-decisiontables -->
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-decisiontables</artifactId>
<version>${drools.version}</version>
</dependency><!-- https://mvnrepository.com/artifact/org.drools/drools-api -->
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
<version>${drools.version}</version>
</dependency>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-api</artifactId>
<version>${drools.version}</version>
</dependency>
这是我在jbpm的文档中与Osgi集成部分找到的逻辑
ServiceReference serviceRef = bundleContext.getServiceReference( ServiceRegistry.class.getName() );
ServiceRegistry registry = (ServiceRegistry) bundleContext.getService( serviceRef );
KNowledgeBuilderFactoryService kNowledgeBuilderFactoryService = registry.get( KNowledgeBuilderFactoryService.class );
KNowledgeBaseFactoryService kNowledgeBaseFactoryService = registry.get( KNowledgeBaseFactoryService.class );
ResourceFactoryService resourceFactoryService = registry.get( ResourceFactoryService.class );
KNowledgeBaseConfiguration kbaseConf = kNowledgeBaseFactoryService.newKNowledgeBaseConfiguration( null,getClass().getClassLoader() );
KNowledgeBuilderConfiguration kbConf = kNowledgeBuilderFactoryService.newKNowledgeBuilderConfiguration( null,getClass().getClassLoader() );
KNowledgeBuilder kbuilder = kNowledgeBuilderFactoryService.newKNowledgeBuilder( kbConf );
kbuilder.add( resourceFactoryService.newClassPathResource( "MyProcess.bpmn",Dummy.class ),ResourceType.BPMN2 );
kbaseConf = kNowledgeBaseFactoryService.newKNowledgeBaseConfiguration( null,getClass().getClassLoader() );
KNowledgeBase kbase = kNowledgeBaseFactoryService.newKNowledgeBase( kbaseConf );
kbase.addKNowledgePackages( kbuilder.getKNowledgePackages() );
StatefulKNowledgeSession ksession = kbase.newStatefulKNowledgeSession();
return Optional.empty();
我的问题是:
解决方法
对于问题 1,您需要来自组 org.kie.server 的 kie-server-client。
您可能使用的其他依赖项是 apis(问题 2)中的定义:来自 org.jbpm 组的 jbpm-kie-services 和来自 org.kie 组的 kie-api、kie-internal。