将我自己的服务注入到 Activiti Api 服务任务
Inject my own service to Activiti Api service task
我正在努力通过我自己的服务公开 Activiti Api。
在其中一个 serviceTasks 中,我需要使用我自己的服务(比如 XyzService),
我试过用setter/getter,没用,反正我不用getter/setter,
有没有其他方法可以在这个 serviceTask 中注入这个 XyzService,以便我可以使用它?
任何帮助将不胜感激,谢谢。
尝试以下方法:
在构建 ProcessEngine
之前将包含 xyzService
的 beans 映射添加到 ProcessEngineConfiguration
。映射中的对象可以通过键在表达式中访问。例如:
ProcessEngineConfigurationImpl cfg =
(ProcessEngineConfigurationImpl) ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration();
Map<Object, Object> beans = new HashMap<>();
beans.put("xyzService", new XyzService());
ProcessEngine engine = cfg.setBeans(beans).buildProcessEngine();
将服务注入服务任务
<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}" />
我正在努力通过我自己的服务公开 Activiti Api。 在其中一个 serviceTasks 中,我需要使用我自己的服务(比如 XyzService),
我试过用setter/getter,没用,反正我不用getter/setter, 有没有其他方法可以在这个 serviceTask 中注入这个 XyzService,以便我可以使用它?
任何帮助将不胜感激,谢谢。
尝试以下方法:
在构建 ProcessEngine
之前将包含 xyzService
的 beans 映射添加到 ProcessEngineConfiguration
。映射中的对象可以通过键在表达式中访问。例如:
ProcessEngineConfigurationImpl cfg =
(ProcessEngineConfigurationImpl) ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration();
Map<Object, Object> beans = new HashMap<>();
beans.put("xyzService", new XyzService());
ProcessEngine engine = cfg.setBeans(beans).buildProcessEngine();
将服务注入服务任务
<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}" />