事件处理程序方法没有在jbpm中调用

时间:2011-08-02 16:07:27

标签: spring event-handling integration jbpm

我有一个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()。并且没有任何形式的错误或警告可以被看到。

有人遇到过类似的问题吗? 有办法解决这个问题吗?

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

对于那些可能从中受益的人:

正确的标签是:

<event-listener expr="#{myEventHandler}"/>

而不是

<event-handler expr="#{myEventHandler}"/>

这是一个简单的混乱,给我带来了很多麻烦。

故事的道德......

jbpm4绑定和描述符不会抱怨您可能提供的未知标记...

所以要小心。因为任何方式都没有可选标签的xsd验证。

HTH, Ayusman