activiti监听器使用本地service如何设置

来源:7-6 BPMN2.0流程任务-用户任务-2

慕码人5437048

2020-04-19


老师,actviti的监听器MyTaskListener如果需要使用本地的service如何设置?直接引用好像不行,我使用了添加SpringUtil方法,但启动还是报错

@Component
public class SpringUtil implements ApplicationContextAware {
    private static ApplicationContext applicationContext;
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.setApplicationContext(applicationContext);
    }
    public static <T> T getObject(Class<T> clazz){
        return applicationContext.getBean(clazz);
    }
}
@Component
public class SecretTaskListener implements TaskListener {

    ProcessBusiFreeService processBusiFreeService = SpringUtil.getObject(ProcessBusiFreeService.class);


    @Override
    public void notify(DelegateTask delegateTask) {

        String eventName = delegateTask.getEventName();
        if (StringUtils.equals("complete",eventName)){
            String processInstanceId = delegateTask.getProcessInstanceId();
            int id = processBusiFreeService.selectByInstanceId(processInstanceId).getId();
            ProBusinessfreeSub proBusinessfreeSub = new ProBusinessfreeSub();
            proBusinessfreeSub.setId(id);
            proBusinessfreeSub.setEndTime(new Date());
            processBusiFreeService.update(proBusinessfreeSub);

        }
    }
}
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2020-04-19 14:34:34.714 ERROR 6732 --- [           main] o.s.boot.SpringApplication               : Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'secretTaskListener' defined in file [D:\maven\oa-electric\target\classes\com\oa\oaelectric\listener\SecretTaskListener.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.oa.oaelectric.listener.SecretTaskListener]: Constructor threw exception; nested exception is java.lang.NullPointerException
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1270) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1164) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:538) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:846) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:863) ~[spring-context-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:546) ~[spring-context-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:142) ~[spring-boot-2.1.3.RELEASE.jar:2.1.3.RELEASE]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775) [spring-boot-2.1.3.RELEASE.jar:2.1.3.RELEASE]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) [spring-boot-2.1.3.RELEASE.jar:2.1.3.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:316) [spring-boot-2.1.3.RELEASE.jar:2.1.3.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1260) [spring-boot-2.1.3.RELEASE.jar:2.1.3.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248) [spring-boot-2.1.3.RELEASE.jar:2.1.3.RELEASE]
	at com.oa.oaelectric.OaElectricApplication.main(OaElectricApplication.java:26) [classes/:na]
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.oa.oaelectric.listener.SecretTaskListener]: Constructor threw exception; nested exception is java.lang.NullPointerException
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:184) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1262) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	... 17 common frames omitted
Caused by: java.lang.NullPointerException: null
	at com.oa.oaelectric.listener.SpringUtil.getObject(SpringUtil.java:21) ~[classes/:na]
	at com.oa.oaelectric.listener.SecretTaskListener.<init>(SecretTaskListener.java:17) ~[classes/:na]
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_171]
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_171]
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_171]
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_171]
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:172) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	... 19 common frames omitted


写回答

1回答

Jimmy

2020-04-25

通过异常日志,这里的空指针异常Caused by: java.lang.NullPointerException: null

    at com.oa.oaelectric.listener.SpringUtil.getObject(SpringUtil.java:21)

是因为获取SecretTaskListener对象失败了,应该是SecretTaskListener实例没有在spring容器中管理,通过@Component
配置一下这个类在spring中管理起来

0
0

Activiti6.0工作流引擎深度解析 从容应对复杂业务变化

系统讲解工作流引擎 全方位提升技术能力 从容应对复杂业务变化

1031 学习 · 339 问题

查看课程