在JavaDelegate中使用runtimeService服务

背景

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

JeecgFlow 在线体验

camunda

java 复制代码
@Component("handleWarMessage")
@Slf4j
public class HandleWarMessageTask implements JavaDelegate {

    @Override
    public void execute(DelegateExecution delegateExecution) throws Exception {
        RuntimeService runtimeService = delegateExecution.getProcessEngine().getRuntimeService();
        runtimeService.startProcessInstanceByMessage("Message_war");
    }
}

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

java 复制代码
@Component("handleWarMessage")
@Slf4j
public class HandleWarMessageTask implements JavaDelegate {

    @Autowired
    private RuntimeService runtimeService;

    @Override
    public void execute(DelegateExecution delegateExecution) throws Exception {
        runtimeService.startProcessInstanceByMessage("Message_war");
    }
}

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

::: warning

需要注意,由于服务调用时当前事务中完成的, 所以在执行服务任务之前产生或修改的数据尚未存入数据库。

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

:::

Activiti

java 复制代码
@Component("handleWarMessage")
@Slf4j
public class HandleWarMessageTask implements JavaDelegate {

    @Override
    public void execute(DelegateExecution delegateExecution) throws Exception {
        RuntimeService runtimeService = Context.getProcessEngineConfiguration().getRuntimeService();\
        runtimeService.startProcessInstanceByMessage("myKey");
    }
}

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

java 复制代码
@Component("handleWarMessage")
@Slf4j
public class HandleWarMessageTask implements JavaDelegate {
    @Autowired
    private RuntimeService runtimeService;

    @Override
    public void execute(DelegateExecution delegateExecution) throws Exception {
        runtimeService.startProcessInstanceByMessage("myKey");
    }
}

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

::: warning

需要注意,由于服务调用时当前事务中完成的, 所以在执行服务任务之前产生或修改的数据尚未存入数据库。

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

:::

Flowable

java 复制代码
@Component("handleWarMessage")
@Slf4j
public class HandleWarMessageTask implements JavaDelegate {

    @Override
    public void execute(DelegateExecution delegateExecution) throws Exception {
        RuntimeService runtimeService = Context.getProcessEngineConfiguration().getRuntimeService();\
        runtimeService.startProcessInstanceByMessage("myKey");
    }
}

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

java 复制代码
@Component("handleWarMessage")
@Slf4j
public class HandleWarMessageTask implements JavaDelegate {
    @Autowired
    private RuntimeService runtimeService;

    @Override
    public void execute(DelegateExecution delegateExecution) throws Exception {
        runtimeService.startProcessInstanceByMessage("myKey");
    }
}

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

相关推荐
老马啸西风3 天前
工作流引擎-18-开源审批流项目之 plumdo-work 工作流,表单,报表结合的多模块系统
vue.js·开源·activiti·workflow·flowable·oa·bpm
老马啸西风3 天前
工作流引擎-16-开源审批流项目之 整合Flowable官方的Rest包
开源·activiti·workflow·flowable·erp·oa·bpm
老马啸西风4 天前
工作流引擎-11-开源 BPM 项目 jbpm
开源·activiti·workflow·oa·bpm
老马啸西风15 天前
工作流引擎-03-聊一聊什么是流程引擎(Process Engine)?
activiti·workflow·erp·oa·bpm
老马啸西风16 天前
工作流引擎-01-Activiti 是领先的轻量级、以 Java 为中心的开源 BPMN 引擎,支持现实世界的流程自动化需求
java·开源·自动化·activiti·workflow·flowable·bpm
我姓谭却弹不死你23 天前
9、Activiti-任务(Task)的相关操作
activiti·工作流引擎·任务管理·业务流程管理
晓华-warm1 个月前
国产免费工作流引擎star 5.9k,Warm-Flow版本升级1.7.0(新增大量好用功能)
java·中间件·流程图·开源软件·flowable·工作流·activities
遇见你真好。2 个月前
flowable任务监听器和java-service依赖注入问题
spring·springboot·flowable
Thinking in Coder3 个月前
flowable适配达梦数据库
信创·flowable·国产化·达梦数据库·dm·liquibase·flowable适配
一川晚照人闲立4 个月前
JEECGBOOT前端VUE3版本浏览器兼容支持chrome>=76版本方法
java·前端·vue.js·chrome·anti-design-vue·jeecgboot·jeecg