Activiti中的流程变量

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

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

Activiti中的流程变量_第18张图片
分析:

Activiti中的流程变量_第19张图片
底层做了兼容,先通过taskId,如果获取不到再他通过executionId获取

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

你可能感兴趣的:(activiti的流程变量)