我正在使用 activiti 5.16.1 在我的项目中启用工作流。
我有一个 spring bean,它执行业务任务,例如从数据库中为给定 ID 填充数据。
当我尝试在 JavaDelegate 任务中使用这些 bean 时,这些 bean 没有被填充。
@Component
public class ServiceClassDelegateSample implements JavaDelegate {
@Autowired
private SampleService sampleService;
@Override
public void execute(DelegateExecution delegateExecution) throws Exception {
sampleService.doSomeTask();
}
}
但是 sampleService 始终设置为 null。
您知道如何在 JavaDelegate 任务中使用 spring bean 吗?
有类似问题here没有任何合适的解决方案,我希望在新版本的 Activiti 中有更好的方法。
最佳答案
如果我没记错的话,是Activiti中的某种故障,不过你更换一下就可以轻松解决了
<serviceTask id="servicetask" name="Service Task" activiti:class="some.class.path.ServiceClassDelegateSample"></serviceTask>
使用委托(delegate)表达式;
<serviceTask id="serviceTask" activiti:delegateExpression="${serviceClassDelegateSample}"></serviceTask>
其中 serviceClassDelegateSample
是您的 bean 的名称。
但我不知道为什么第一种方式不起作用。
关于java - 如何在 Activiti JavaDelegate 任务中访问 Spring Beans,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25894248/