Activiti7笔记(三)Activiti进阶,什么是流程实例,流程实例相关知识解读

本文详细介绍了如何将Activiti工作流引擎与业务系统整合,包括流程实例的概念,启动流程实例时添加Businesskey作为业务标识,以及流程实例的挂起和激活操作。此外,还探讨了任务负责人的动态分配,特别是通过UEL表达式实现的灵活配置。通过示例代码展示了如何在创建流程实例时动态设置任务负责人。

1 背景

之前一直是activiti这个25张表里面自己操作,就相当于一个demo,现在我们要和自己的业务进行整合
在这里插入图片描述

2 什么是流程实例

流程实例(ProcessInstance)代表流程定义的执行实例。

一个流程实例包括了所有的运行节点。我们可以利用这个对象来了解当前流程实例的进度等信息。

例如:用户或程序按照流程定义内容发起一个流程,这就是一个流程实例。

流程定义和流程实例的图解:

在这里插入图片描述

3 启动流程实例 并添加Businesskey(业务标识)

流程定义部署在activiti后,就可以在系统中通过activiti去管理该流程的执行,执行流程表示流程的一次执行。

比如部署系统出差流程后,如果某用户要申请出差这时就需要执行这个流程,如果另外一个用户也要申请出差则也需要执行该流程,每个执行互不影响,每个执行是单独的流程实例。

启动流程实例时,指定的businesskey,就会在act_ru_execution #流程实例的执行表中存储businesskey。

Businesskey:业务标识,通常为业务表的主键,业务标识和流程实例一一对应。业务标识来源于业务系统。存储业务标识就是根据业务标识来关联查询业务系统的数据。

比如:出差流程启动一个流程实例,就可以将出差单的id作为业务标识存储到activiti中,将来查询activiti的流程实例信息就可以获取出差单的id从而关联查询业务系统数据库得到出差单信息。

在这里插入图片描述
就是我们在我们的业务系统里面,创建一个申请单,那么我们的业务系统里面有申请单的表,写好的信息是保存在我们的业务系统的数据库的表里面的,这个表里面有id,在保存的时候,将这个id也保存到25张表里面,因为我们要使用activiti,所以要创建流程实例才可以,在创建流程实例的时候,就可以将数据的id 保存到activiti里面;

=================================================

我们业务要结合activiti,就需要将我们的数据关联到activiti;
在启动流程的时候,就需要将我们的数据关联到activiti; 也就是指定的businesskey;

    /**
     * 启动流程实例,添加businessKey
     */
    @Test
    public void addBusinessKey(){
   
   
//        1、得到ProcessEngine
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//        2、得到RunTimeService
        RuntimeService runtimeService = processEngine.getRuntimeService();
//        3、启动流程实例,同时还要指定业务标识businessKey,也就是出差申请单id,这里是1001
        ProcessInstance processInstance = runtimeService.
                startProcessInstanceByKey("myEvection","1001");
//        4、输出processInstance相关属性
        System.out.println("业务id=="+processInstance.getBusinessKey());

    }

我们的业务系统里面有一个出差申请单,这个单的id是1001,在创建申请单的时候,就创建流程实例,将1001保存到流程实例里面;

以上代码执行完成之后,就将我们的1001单号的申请单和我们的出差流程进行结合了;

将1001保存在了哪个表里面?

在这里插入图片描述
在这里插入图片描述
以上2个表里面进行了保存1001;

4 挂起、激活流程实例

某些情况可能由于流程变更需要将当前运行的流程暂停而不是直接删除,流程暂停后将不会继续执行。

4.1 为什么要有挂起,激活

在这里插入图片描述

4.2 全部流程实例挂起

就是有多个申请单,现在多个申请单要一同挂起;

操作流程定义为挂起状态,该流程定义下边所有的流程实例全部暂停:

流程定义为挂起状态该流程定义将不允许启动新的流程实例,同时该流程定义下所有的流程实例将全部挂起暂停执行

/**
     * 全部流程实例挂起与激活
     */
    @Test
    public void SuspendAllProcessInstance(){
   
   
//        获取processEngine
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//        获取repositoryService
        RepositoryService repositoryService = processEngine.getRepositoryService(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一写代码就开心

你的打赏将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值