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



我有一个spring 3和jbpm 4.4集成环境。然而,在我的一个任务中,我按照jpdl规范提供了一个事件。

我的带有task元素的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(...);
    }
}

问题是:在尝试了几个选项之后,notify方法永远不会被执行。我看到在JBPM4_TASK表中创建了任务,但奇怪的是,我无法调用notify()。并且没有任何形式的错误或警告被看到。

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

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

正确的标签是:

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

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

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

这个故事的寓意是……

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

所以要小心。因为对可选标签没有xsd验证。

HTH,Ayusman

相关内容

  • 没有找到相关文章

最新更新