欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 八卦 > 在JavaDelegate中使用runtimeService服务

在JavaDelegate中使用runtimeService服务

2025/11/16 19:11:04 来源:https://blog.csdn.net/xrl2012/article/details/140412542  浏览:    关键词:在JavaDelegate中使用runtimeService服务

背景

在工作流服务任务中,常需要使用RuntimeService接口用于发起流程等业务。Camunda,Activit,Flowable三款产品在这个场景上操作有所不同, 现总结如下。

JeecgFlow 在线体验

camunda

@Component("handleWarMessage")
@Slf4j
public class HandleWarMessageTask implements JavaDelegate {@Overridepublic void execute(DelegateExecution delegateExecution) throws Exception {RuntimeService runtimeService = delegateExecution.getProcessEngine().getRuntimeService();runtimeService.startProcessInstanceByMessage("Message_war");}
}

可以通过这种方式访问所有camunda服务的API。

@Component("handleWarMessage")
@Slf4j
public class HandleWarMessageTask implements JavaDelegate {@Autowiredprivate RuntimeService runtimeService;@Overridepublic void execute(DelegateExecution delegateExecution) throws Exception {runtimeService.startProcessInstanceByMessage("Message_war");}
}

这是通过注入获取RuntimeService服务,与前面代码功能相同。
::: warning
需要注意,由于服务调用时当前事务中完成的, 所以在执行服务任务之前产生或修改的数据尚未存入数据库。

这是因为所有API调用都基于数据库数据处理,这些未提交的更改在服务任务API中调用不可见。
:::

Activiti

@Component("handleWarMessage")
@Slf4j
public class HandleWarMessageTask implements JavaDelegate {@Overridepublic void execute(DelegateExecution delegateExecution) throws Exception {RuntimeService runtimeService = Context.getProcessEngineConfiguration().getRuntimeService();\runtimeService.startProcessInstanceByMessage("myKey");}
}

可以通过这种方式访问所有Activiti服务的API。

@Component("handleWarMessage")
@Slf4j
public class HandleWarMessageTask implements JavaDelegate {@Autowiredprivate RuntimeService runtimeService;@Overridepublic void execute(DelegateExecution delegateExecution) throws Exception {runtimeService.startProcessInstanceByMessage("myKey");}
}

这是通过注入获取RuntimeService服务,与前面代码功能相同。
::: warning
需要注意,由于服务调用时当前事务中完成的, 所以在执行服务任务之前产生或修改的数据尚未存入数据库。

这是因为所有API调用都基于数据库数据处理,这些未提交的更改在服务任务API中调用不可见。
:::

Flowable

@Component("handleWarMessage")
@Slf4j
public class HandleWarMessageTask implements JavaDelegate {@Overridepublic void execute(DelegateExecution delegateExecution) throws Exception {RuntimeService runtimeService = Context.getProcessEngineConfiguration().getRuntimeService();\runtimeService.startProcessInstanceByMessage("myKey");}
}

可以通过这种方式访问所有Activiti服务的API。

@Component("handleWarMessage")
@Slf4j
public class HandleWarMessageTask implements JavaDelegate {@Autowiredprivate RuntimeService runtimeService;@Overridepublic void execute(DelegateExecution delegateExecution) throws Exception {runtimeService.startProcessInstanceByMessage("myKey");}
}

这是通过注入获取RuntimeService服务,与前面代码功能相同。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词