我想使用WorkflowProcessInstanceUpgrader升级我的流程实例。要在任何更改后触发升级,我想监听ResourceChangeScanner完成的更改。为了听取更改的完成,我正在寻找配置KnowledgeBaseEventListener。我有drools-spring-integration,使用drools-spring.xsd来配置bean和事件监听器。我从春天开始学习KBase和Ksession。我试图在我的弹簧配置中注册我的KnowledgeBaseEventListener。但是,问题是drools-spring.xsd只注册了3种听众 1. ProcessEventListener 2. AgendaEventListener 3. WorkingMemoryEventListener
需要解决方案: 1.我需要知道如何在弹簧配置中配置KnowledgeBaseEventListener? ksession的示例我们有以下配置来注册监听器。
<drools:ksession id="knowledgeSession" type="stateful" kbase="knowledgeBase">
<drools:agendaEventListener ref="agendaEventListener"/>
<drools:workingMemoryEventListener ref="wmEventListener"/>
环境 1.Drools-5.5.0.Final 一个。的Guvnor 湾jbpm的
答案 0 :(得分:0)
获得完全控制的一种方法是在java中自己创建ksession。 (下面我将它插入到工厂bean的上下文中):
<bean id="ksessionInit" class="my.com.KSessionInitializer">
<constructor-arg index="0"><ref bean="jpaEMF"/></constructor-arg>
<constructor-arg index="0"><ref bean="txMgr"/></constructor-arg>
<constructor-arg index="0"><ref bean="kagent"/></constructor-arg>
<constructor-arg index="0"><ref bean="node1"/></constructor-arg>
</bean>
<bean id="ksession1" factory-bean="ksessionInit" factory-method="getKsession"/>
这里KSessionInitializer构造函数完成所有工作:设置EMFactory和TXmanager;添加事件监听器;并在节点中插入ksession,如:
anode.set("ksession1",ksession);
在我的情况下,我正在使用JPAKnowledgeService,所以为了得到ksession我做了:
ksession=JPAKnowledgeService.loadStatefulKnowledgeSession(sessionid, kAgent.getKnowledgebase(),null,etc);
-hth J