具有TaskListener @Autowired问题的Alfresco Process Services

时间:2019-06-06 19:53:54

标签: spring-boot activiti

我正在使用Alfresco Process Services,并为 TaskListeners Delegations 等自定义逻辑创建了一个Spring Boot项目。我正在从该Maven项目中创建 jar 文件,并将其复制到 webapps / activiti-app / WEB-INF / lib 文件夹中。

我有一个简单的 TaskListener ,如下所示,它在Task启动时被调用。但是 @Autowired 变量始终为 null

package com.activiti.extension.bean;

@Component("myTaskListener")
public class MyTaskListener implements TaskListener {

@Autowired
UserService userService;

@Override
public void notify(DelegateTask task) { 
   logger.info("userService: " +userService); // Always prints null
}

4 个答案:

答案 0 :(得分:1)

这是因为您的MyTaskListener被注释为@Component,或者至少在初始化期间被spring忽略了。对于自动装配功能,spring要求在提供的@ComponentScan程序包下使用此批注(或与此类似的注解),以将该类视为Bean,否则将其视为普通的Java类,因此@autowired在您的情况。

答案 1 :(得分:1)

最后,我能够使其工作。我将任务侦听器的完整包名称放在Task属性的class字段中。现在,我将像$ {myTaskListener}这样的Delegate表达式放上去,它就起作用了……

感谢大家的时间和帮助

答案 2 :(得分:0)

下面的代码对我有用

❯ ./_passwd
test_user  19167  0.0  0.0  19988  3184 pts/5    S+   13:06   0:00 /bin/bash ./_passwd
test_user  19169  0.0  0.0  21532  1016 pts/5    S+   13:06   0:00 grep _passwd
./_passwd: line 3: _passwd: Permission denied

答案 3 :(得分:0)

还有另外一种使用 Alfresco Spring Application上下文进入自定义服务“ UserService”的方法。

首次访问ServiceRegistry(用于访问Alfresco服务以及其他任何自定义服务的注册表):

ServiceRegistry serviceRegistry = (ServiceRegistry) Context.getProcessEngineConfiguration().getBeans().get(ActivitiConstants.SERVICE_REGISTRY_BEAN_KEY);

然后获取自定义服务UserService:

QName qname = QName.createQName("UserService");
UserService userService = (UserService) serviceRegistry.getService(qname);