我正在尝试使用注入集成的kie(drools 6)构建一个web(spring-mvc)应用程序.我使用kie workbench创建了一个工作流程,编译和部署.我已经在我的项目的pom.xml中添加了这个工件的引用,并根据这篇博客文章添加了本地kie-workbench存储库,并且它工作正常(在我的maven/spring项目中将工件作为依赖项拉入).我想要做的是在我的一个服务中注入kiesession作为依赖与下面的片段 -
@Service
public class TniServiceImpl implements TniService {
@Inject
@KSession("tniSession")
private KieSession tniSession;
...
}
Run Code Online (Sandbox Code Playgroud)
在我的root-context.xml中,我添加了kie名称空间以及对xsd的引用.我添加了org.kie.spring.KModuleBeanFactoryPostProcessor以及每个drools文档.我正在尝试为KSession扫描和注入进行CDI注入工作(它已经在同一个项目中使用@Inject工作了我的其他组件).到目前为止,我总是得到"没有找到类型[org.kie.api.runtime.KieSession]的限定bean依赖"错误.看起来spring无法扫描其中可用的kie模块和会话.需要以下帮助 -
我的环境如下 -
我已经通过以下链接,但没有运气(大多数情况下他们没有尝试做我的意思) -
我很感激,如果有人可以指导我在这里可能缺少什么,或者如果没有选择,只能在spring配置文件中明确定义所有kmodules/ksessions.
我正在使用JBoss AS 7.1.1.Final和KIE Workbench/Drools 6.0.1.,Java和Eclipse(Kepler).
我需要KIE Workbench(以前称为Drools Guvnor)让人们用Facts和Rules以图形方式创建/编辑jar,然后将其作为jar存储在本地maven存储库中.这些罐子(以前称为pkg)然后我想以编程方式访问并将它们加载到我的Drools应用程序中.应用程序甚至可以(虽然不是优选地)在同一工作站上运行,因此可以访问存储库
a)通过URL:
http://localhost:8080/drools-wb-as7.0/maven2/com/myprojects/myProject/LATEST/myProject-LATEST.jar
b)通过filepath/classpath:
/my/folder/jboss-as-7.1.1.Final/bin/repositories/kie/com/myprojects/myProject/LATEST/myProject-LATEST.jar
我不希望创建/编译动态规则等在我的代码,无论是动态加载一个.drl文件-准备好的罐子是我需要加载,如与com.myprojects:myProject的:最新作标识.
我试试这个(根据文件)
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 );
Run Code Online (Sandbox Code Playgroud)
[...]
但是,这会因Runtime Exception而失败,
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)
Run Code Online (Sandbox Code Playgroud)
我的问题是:为什么没有找到回购罐?当我在KIE WB中创建它时,KieModule不是回购中jar和jar的表示吗?或者我必须更改打印出的Maven Repo的默认ReleaseID
KieRepository repo = ks.getRepository();
repo.getDefaultReleaseId()
Run Code Online (Sandbox Code Playgroud)
解决了
org.default:artifact:1.0.0-SNAPSHOT ?
Run Code Online (Sandbox Code Playgroud)
这是Maven的问题吗?我错了什么?
这里是jar的内容pom.xml
<?xml version="1.0" encoding="UTF-8"?> …Run Code Online (Sandbox Code Playgroud)