我正在通過我自己的服務暴露Activiti Api。 在serviceTasks之一,我需要用我自己的服務(比如,XyzService),注入我自己的服務Activiti Api服務任務
我使用的setter /吸氣試過了,也不行,反正我沒有用的getter/setter, 有任何其他方式注入這個XyzService在這個serviceTask,這樣我就可以使用它?
任何幫助將不勝感激,謝謝。
我正在通過我自己的服務暴露Activiti Api。 在serviceTasks之一,我需要用我自己的服務(比如,XyzService),注入我自己的服務Activiti Api服務任務
我使用的setter /吸氣試過了,也不行,反正我沒有用的getter/setter, 有任何其他方式注入這個XyzService在這個serviceTask,這樣我就可以使用它?
任何幫助將不勝感激,謝謝。
嘗試以下方法:
添加豆類地圖包含xyzService
到ProcessEngineConfiguration
建設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}" />
非常感謝!這工作 – OutOfMind
你在項目中使用Spring嗎? – Evgeny
我不使用Activiti Activiti – OutOfMind