如何在Activiti JavaDelegate任务中访问Spring Beans

时间:2014-09-17 15:10:18

标签: java spring activiti bpm

我正在使用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中有更好的方法。

1 个答案:

答案 0 :(得分:8)

如果我没记错的话,它会在Activiti中出现一些故障,但是如果你替换它就可以轻松解决它

<serviceTask id="servicetask" name="Service Task" activiti:class="some.class.path.ServiceClassDelegateSample"></serviceTask>

with delegate expression;

<serviceTask id="serviceTask" activiti:delegateExpression="${serviceClassDelegateSample}"></serviceTask>

其中serviceClassDelegateSample是您的bean的名称。

但是为什么不能以第一种方式工作,我不知道。