Flowable动态任务处理人+springboot bean注入为null
最近有个需求,需要动态设定流程引擎的候选人,这种需求比较简单,网上资料也很多,我选择了 通过监听器设置,但是有个问题,审核人需要配合前端页面更改任务处理人.所以选择了审核人存储在数据库
1.flowable动态任务处理人
public class MyTaskListener implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
String userId =userWorkflowMapper.getWorkFlow(processKey, jobName);
// 因为需要多人审批,所以统一选择了候选人
delegateTask.addCandidateUser(userId);
}
}
但是在使用过程中,userWorkflowMapper自动注入失败,需要解决该问题
2.解决spring boot bean注入为null问题
spring bean是什么?
spring bean就是一个配置类,在使用过程中我们就是把配置类交给spring容器管理(也就是我们常说的ioc),这样就可以让我们的配置类在其他spring管理的类中通过注入的方式来进行使用。但是在注入的过程中也会遇到注入为null的现象
排查思路
1.先要明确配置类是否被加载到spring容器中,比如是否加@Component注解
2.因为我是Mapper自动导入不了,但是我在Service层测试调用是成功了,
3.只是在MyTaskListener自动导入不了spring bean
解决办法
使用手动加载bean的方式解决了问题
@Configuration
public class FlowableServiceConfig implements ApplicationContextAware {
static ApplicationContext applicationContext;
public static <T> T getBean(Class<T> clazz) {
return applicationContext.getBean(clazz);
}
@Override
public void setApplicationContext(ApplicationContext arg0) throws BeansException {
if (applicationContext == null) {
applicationContext = arg0;
}
}
}