2011-08-02 53 views
0

我有一个spring 3和jbpm 4.4集成环境。 但是,在我的一项任务中,我根据jpdl规范提供了一个事件。事件处理程序方法没有在jbpm中调用

我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 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

如果我想补充,独立运行时的事件处理工作得很好。 – Ayusman

回答

0

对于那些谁可能会受益于这样的:

正确的标签是:

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

,而不是

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

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

这个故事告诉我们......

JBPM4结合和描述符不抱怨未知的标签,你可能会提供...

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

HTH, Ayusman

相关问题