最近在写Flowable实战一书,刚好写到了在userTask上加任务监听器,然而通常情况下实现类注入的bean一直为null,解决方案如下:
1、流程定义xml中的任务监听器,使用delegateExpression表达式将所使用的任务监听器关联起来
<userTask id="test" name="测试" flowable:assignee="${applyUserId}" flowable:formKey="testForm">
<extensionElements>
<!-- <flowable:taskListener event="create" class="cn.flowable.listener.MyListener"></flowable:taskListener> -->
<flowable:taskListener event="create" delegateExpression="${myListener}"></flowable:taskListener>
<modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
</extensionElements>
</userTask>
2、自己的任务监听器实现类需要实现org.flowable.engine.delegate.TaskListener类,通过 @Component(value="myListener") 注解将我的监听器交给spring管理,其中value的值和xml中delegateExpression表达式中变量的值保持一致
@Component(value="myListener"
public class MyListener implements TaskListener {
@Autowired
private BusLineService busLineService;
@Override
public void notify(DelegateTask delegateTask) {
//写自己具体的逻辑
}
}