注入我自己的服务Activiti Api服务任务

问题描述:

我正在通过我自己的服务暴露Activiti Api。 在serviceTasks之一,我需要用我自己的服务(比如,XyzService),注入我自己的服务Activiti Api服务任务

我使用的setter /吸气试过了,也不行,反正我没有用的getter/setter, 有任何其他方式注入这个XyzService在这个serviceTask,这样我就可以使用它?

任何帮助将不胜感激,谢谢。

+0

你在项目中使用Spring吗? – Evgeny

+0

我不使用Activiti Activiti – OutOfMind

尝试以下方法:

添加豆类地图包含xyzServiceProcessEngineConfiguration建设ProcessEngine之前。通过键可以在地图*问地图中的对象。例如:

ProcessEngineConfigurationImpl cfg = 
    (ProcessEngineConfigurationImpl) ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration(); 

Map<Object, Object> beans = new HashMap<>(); 
beans.put("xyzService", new XyzService()); 

ProcessEngine engine = cfg.setBeans(beans).buildProcessEngine(); 

进样的服务到服务任务使用Field Injection

<serviceTask id="servicetask" name="Service Task" activiti:class="com.example.MyJavaDelegate"> 
    <extensionElements> 
    <activiti:field name="xyzServiceExp"> 
     <activiti:expression>${xyzService}</activiti:expression> 
    </activiti:field> 
    </extensionElements> 
</serviceTask> 

哪里MyJavaDelegate

public class MyJavaDelegate implements JavaDelegate { 

    private Expression xyzServiceExp; 

    @Override 
    public void execute(DelegateExecution execution) throws Exception { 
     XyzService xyzService = (XyzService) xyzServiceExp.getValue(execution); 
     .... 
    } 

    public void setXyzServiceExp(Expression xyzServiceExp) { 
     this.xyzServiceExp = xyzServiceExp; 
    } 
} 

或者你可以把JavaDelegate实例与注射服务到beans地图和定义服务任务为

<serviceTask id="servicetask" name="Service Task" 
     activiti:delegateExpression="${myJavaDelegateInstance}" /> 
+0

非常感谢!这工作 – OutOfMind