我有一个spring 3和jbpm 4.4集成环境。 但是在我的一项任务中,我根据jpdl规范提供了一个事件。
我的任务元素的jpdl片段如下所示:
<task name="TK1"
assignee="test"
description="A task that gets assigned to somebody with user name test"
g="117,90,48,52">
<on event="start">
<event-handler expr="#{myEventHandler}"/>
</on>
<on event="end">
<event-handler expr="#{myEventHandler}"/>
</on>
<transition name="END" to="END" g="-31,2"/>
</task>
和myEventHandler bean在spring中创建如下:
<bean id="myEventHandler" class="com.test.MyEventHandler">
<!-- myBO bean is created in the spring application context file itself which contains code to insert/update data to DB-->
<property name="myBO" ref="myBO"/>
</bean>
我的事件处理程序类如下所示:
import org.jbpm.api.listener.EventListener;
import org.jbpm.api.listener.EventListenerExecution;
public class MyEventHandler implements EventListener {
private MyBO myBO;
@Override
public void notify(EventListenerExecution eventExecution) throws Exception
{
//Do some logical operation based on incoming process variable...
//Use the myBO bean to do DB operation...
myBO.insert(...);
myBO.update(...);
}
}
问题是: 在尝试了几个选项之后,通知方法永远不会被执行。我看到在JBPM4_TASK表中创建的任务,但奇怪的是我无法调用notify()。并且没有任何形式的错误或警告可以被看到。
有人遇到过类似的问题吗? 有办法解决这个问题吗?
感谢任何帮助。
答案 0 :(得分:0)
对于那些可能从中受益的人:
正确的标签是:
<event-listener expr="#{myEventHandler}"/>
而不是
<event-handler expr="#{myEventHandler}"/>
这是一个简单的混乱,给我带来了很多麻烦。
故事的道德......
jbpm4绑定和描述符不会抱怨您可能提供的未知标记...
所以要小心。因为任何方式都没有可选标签的xsd验证。
HTH, Ayusman