RuntimeService是流程引擎中的流程运行控制服务,主要提供了以下功能:
- 启动流程及对流程数据的控制
- 流程实例(ProcessInstance)与执行流(Exceution)查询
- 触发流程操作、接收消息和信号
RuntimeService启动流程的常用方式(id,key,message),可选参数(businessKey,variables,tenantid),可以对变量进行设置和获取(是流程实例级别的,还是流程实例级别),下面通过一个测试代码来了解RuntimeService的各种接口
1、创建一个测试类RuntimeServiceTest
public class RuntimeServiceTest {
private static final Logger logger = LoggerFactory.getLogger(RuntimeServiceTest.class);
@Rule
public ActivitiRule activitiRule = new ActivitiRule();
@Test
public void test() {
}
2、流程启动
流程的启动有三种方式,分别是通过key,id,builder的方式进行启动
2.1 首先是通过key的方式ey的方式
@Test
@Deployment(resources = {"my-process.bpmn20.xml"})
public void testStartByKey() {
//获取runtimeService
RuntimeService runtimeService = activitiRule.getRuntimeService();
//设置一下流程的key
Map<String, Object> variables = Maps.newHashMap();
variables.put("key1","value1");
//通过key方式启动流程实例。(流程多次启动id不同,但是key 不会变)
ProcessInstance processInstance
= runtimeService.startProcessInstanceByKey("my-process", variables);
logger.info("processInstance = {}, key={}", processInstance, processInstance.getProcessDefinitionKey());
}
执行日志如下:

2.2 通过id的方式
@Test
@Deployment(resources = {"my-process.bpmn20.xml"})
public void testStartById() {
//获取runtimeService
RuntimeService runtimeService = activitiRule.getRuntimeService();
//通过流程定义对象获取流程id,这里会涉及使用流程的存储服务repositoryservice
ProcessDefinition processDefinition
= activitiRule.getRepositoryService().createProcessDefinitionQuery().singleResult();
//设置一下流程的key
Map<String, Object> variables = Maps.newHashMap();
variables.put("key1","value1");
//通过key方式启动流程实例。(流程多次启动id不同,但是key 不会变)
ProcessInstance processInstance
= runtimeService.startProcessInstanceById(processDefinition.getId(), variables);
logger.info("processInstance = {}, key={}, id={}" , processInstance, processInstance.getProcessDefinitionKey(), processInstance.getId());
Activiti流程引擎详解

本文深入探讨了Activiti流程引擎中的RuntimeService,包括流程启动、变量管理、执行流查询、触发流程、信号与消息事件处理等核心功能。通过具体代码示例,详细解析了RuntimeService的使用方法和流程控制机制。
最低0.47元/天 解锁文章
5228

被折叠的 条评论
为什么被折叠?



