当使用runtimeService.startProcessInstanceByKey方法启动流程实例时,Activiti引擎会经历一系列步骤来创建和初始化流程实例。以下是这一过程的大致概述:

  1. 准备阶段
    加载流程引擎:首先,需要获取流程引擎实例,这通常是通过ProcessEngines.getDefaultProcessEngine()完成的,该方法返回默认配置的流程引擎。

获取RuntimeService:通过流程引擎实例,调用getRuntimeService()方法来获取RuntimeService服务,这是用来管理流程实例生命周期的核心服务之一。

  1. 方法调用
    调用startProcessInstanceByKey:接下来,使用RuntimeService的startProcessInstanceByKey方法来启动流程实例。这个方法至少需要流程定义的key作为参数,流程定义key是在流程模型(BPMN文件)中定义的,用于唯一标识一个流程定义。

参数解析
流程定义Key:指定要启动的流程定义的标识符。
业务键(businessKey)(可选):一个可选参数,用于关联流程实例与业务系统中的实体,如订单ID、客户ID等。这个键值会被存储在流程实例的记录中,便于后续查询和关联。
变量(Variables)(可选):可以传递一个变量集合,这些变量将在流程实例的上下文中初始化,供流程中的任务和服务任务使用。
租户ID(可选):在多租户环境中,用于指定流程实例所属的租户。

  1. 数据库操作
    查询流程定义:根据提供的流程定义key,引擎会在数据库中查找对应的流程定义记录(如表ACT_RE_PROCDEF),以确保流程定义存在且未被挂起。

创建流程实例记录:确定流程定义后,会在运行时表(如ACT_RU_EXECUTION)中创建一条新的流程实例记录。此时,如果提供了业务键,它会被存储在BUSINESS_KEY_字段中。
插入变量:如果有传递变量,这些变量会被序列化并存储在ACT_RU_VARIABLE表中,与流程实例关联。
执行流程实例:流程引擎会根据流程定义的开始事件开始执行流程,可能会创建任务、调用服务任务等。

  1. 返回结果
    ProcessInstance对象:startProcessInstanceByKey方法执行后,会返回一个ProcessInstance对象,该对象包含了新创建的流程实例的信息,如ID、定义ID、业务键等。
  2. 后续操作
    一旦流程实例启动,可以根据需要进行进一步操作,比如分配任务、添加监听器、查询流程状态等。

综上所述,runtimeService.startProcessInstanceByKey方法不仅在数据库中插入了新的流程实例记录,还可能涉及变量记录的插入,并且开始了流程实例的实际执行过程。

标签: none

相关阅读

  • 测试信息
  • 开发商:阿里巴巴
  • 版本号:1.0
  • 配色:(企业家)” 推选活动结果
  • 测试信息
  • 测试信息
  • 测试信息