Activiti中的流程变量

本文深入解析流程变量的概念、作用及设置方法。阐述了流程变量在工作流中的重要性,包括其在流程实例间的信息传递作用,以及如何在不同阶段设置和获取流程变量。探讨了流程变量的类型,包括基本类型、Javabean类型,并详细介绍了实现Serializable接口的JavaBean和Hibernate实体类作为流程变量的使用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 流程变量
    (1)概念
    流程变量在整个工作流中扮演很重要的作用。例如:请假流程中有请假天数、请假原因等一些参数都为流程变量的范围。流程变量的作用域范围是流程实例。也就是说各个流程实例的流程变量是不相互影响的。流程实例结束完成以后流程变量还保存在数据库中(存放到流程变量的历史表中)。
    在这里插入图片描述
    (2)添加和设置流程变量
    1:流程变量是什么:流程变量在整个工作流中扮演很重要的作用
    2:有什么用:在流程中传递信息(共享信息)
    3:设计思想(尽量了解)
    4:操作:设置\获取

步骤:
1绘制流程定义图2部署流程3启动流程4测试
①流程图
在这里插入图片描述
②部署流程定义
在这里插入图片描述
③启动流程实例
在这里插入图片描述
④设置流程变量
在这里插入图片描述
在这里插入图片描述
说明:
1)流程变量的作用域就是流程实例,所以只要设置就行了,不用管在哪个阶段设置
2)基本类型设置流程变量,在taskService中使用任务ID,定义流程变量的名称,设置流程变量的值。
3)Javabean类型设置流程变量,需要这个javabean实现了Serializable接口
4)设置流程变量的时候,向act_ru_variable这个表添加数据
⑤获取流程变量
在这里插入图片描述
说明:
1)流程变量的获取针对流程实例(即1个流程),每个流程实例获取的流程变量时不同的
2)使用基本类型获取流程变量,在taskService中使用任务ID,流程变量的名称,获取流程变量的值。
3)Javabean类型设置获取流程变量,除了需要这个javabean实现了Serializable接口外,还要求流程变量对象的属性不能发生变化,否则抛出异常。解决方案,固定序列化ID
⑥2.2.6.模拟流程变量的设置和获取的场景
在这里插入图片描述
在这里插入图片描述
说明:
1)RuntimeService对象可以设置流程变量和获取流程变量
2)TaskService对象可以设置流程变量和获取流程变量
3)流程实例启动的时候可以设置流程变量
4)任务办理完成的时候可以设置流程变量
5)流程变量可以通过名称/值的形式设置单个流程变量
6)流程变量可以通过Map集合,同时设置多个流程变量
Map集合的key表示流程变量的名称
Map集合的value表示流程变量的值
(3)流程变量类型
如图是从官网列出来的流程变量的类型:
在这里插入图片描述
从图中可以看出包括了大部分封装类型和Date、String和实现了Serializable接口的类的类型。如果想用javabean 作为流程变量,有两种情况:
1、是hibernate的实体类型(持久化类、映射文件)
主键的类型必须是long或者string
2、实现Serializable接口即可-讲解
在这里插入图片描述
①实现了Serializable的JavaBean
步骤如下:
1)加一个javabean,这个javabean实现了Serializable接口
在这里插入图片描述
在这里插入图片描述
2)添加流程变量
在这里插入图片描述
3)获取流程变量
在这里插入图片描述
![在这里插在这里插入图片描述
②hibernate的实体类
2.3.2.hibernate的实体类、
步骤:
1)增加持久化类Form
注意:这个是实体类必须为final
2)增加映射文件Form.hbm.xml
3)在jbpm.hibernate.cfg.xml中添加映射文件
在这里插入图片描述
4)查询时用下面的方法:
在这里插入图片描述
(4)疑问
流程变量表没有存储taskid,那么我们之前怎么通过TaskId获取的流程变量数据??
在这里插入图片描述

在这里插入图片描述
分析:

在这里插入图片描述
底层做了兼容,先通过taskId,如果获取不到再他通过executionId获取

各位大佬如果看了对你有点帮助,请给博主一个赞!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值