Activiti6.0学习实践(7)-核心api:RuntimeService流程运行控制服务

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

RuntimeService是流程引擎中的流程运行控制服务,主要提供了以下功能:

  1. 启动流程及对流程数据的控制
  2. 流程实例(ProcessInstance)与执行流(Exceution)查询
  3. 触发流程操作、接收消息和信号

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());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值