0

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

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

任何帮助表示赞赏。

4

1 回答 1

0

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

正确的标签是:

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

并不是

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

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

故事的道德启示...

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

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

HTH,阿尤斯曼

于 2011-08-04T09:10:27.613 回答