Activiti 变量设置
使用工作流的时候必定会附上一些变量。例如,请假的时候有填写请假理由,天数等等。可以用以下代码实现
public void setVariables(){
/**与任务(正在执行)*/
TaskService taskService = processEngine.getTaskService();
//任务ID
String taskId = "1904";
/**一:设置流程变量,使用基本数据类型*/
//taskService.setVariableLocal(taskId, "请假天数", 3);//与任务ID绑定 local变量与任务id绑定,当进行到下一步的时候该变量在正在执行不再出现 在act_hi_varinst中还存在
//taskService.setVariable(taskId, "请假日期", new Date());
//taskService.setVariable(taskId, "请假原因", "回家探亲");
//System.out.println("设置流程变量成功!");
/**二:设置流程变量,使用javabean类型*/
/**
* 当一个javabean(实现序列号)放置到流程变量中,要求javabean的属性不能再发生变化
* * 如果发生变化,再获取的时候,抛出异常
*
* 解决方案:在Person对象中添加:
* private static final long serialVersionUID = 6757393795687480331L;
* 同时实现Serializable
* */
Person p = new Person();
p.setId(20);
p.setName("翠花");
p.setEducation("翠花123");
taskService.setVariable(taskId, "人员信息(添加固定版本)", p);
System.out.println("设置流程变量成功!");
}
而获得流程变量则用以下代码实现
public void getVariables()
{
TaskService taskService = processEngine.getTaskService();
String taskId = "2102";
/**Integer days = (Integer) taskService.getVariable(taskId, "请假天数");
Date date = (Date) taskService.getVariable(taskId, "请假日期");
String resean = (String) taskService.getVariable(taskId, "请假原因");
System.out.println("请假天数:"+days);
System.out.println("请假日期:"+date);
System.out.println("请假原因:"+resean);**/
/**二:获取流程变量,使用javabean类型*/
Person p = (Person)taskService.getVariable(taskId, "人员信息(添加固定版本)");
System.out.println(p.getId()+" "+p.getName()+" "+p.getEducation());
}
可以看到,这里有两种方法设置和获取流程变量,第一种使用数据基本类型,第二种则是使用javabean。两者实现效果一样,但是在数据库中存储的位置不相同。前者可以在act_ru_variable中查询到相关的变量,后者则在act_ge_bytearray中查询。此外,使用javabean设置变量的时候,如果在流程启动后修改了bean则会抛出异常,解决方法如下
package d_processVariable; import java.io.Serializable; public class Person implements Serializable{ private static final long serialVersionUID = 6757393795687480331L;//固定版本
private Integer id;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private String name; private String education;
public String getEducation() {
return education;
}
public void setEducation(String education) {
this.education = education;
}
}
只要把bean设置固定版本,即可解决该问题。
设置的函数有两种,一种是setVariableLocal()另一种是setVariable。前者会把变量和taskId绑定,这样一来,一但流程进入下一步,该变量不可见。只能在act_hi_varinst表中查询到变量。在实际过程中可以根据需要选择
Activiti 变量设置的更多相关文章
- SQL*Plus环境变量设置浅析
SQL*Plus的使用环境是可以通过login.sql 或 glogin.sql脚本来设置的,可能很多初学者或不习惯使用SQL*Plus的老鸟都不知道.因为在如今UI工具(Toad.PL/SQL De ...
- [Java] Tomcat环境变量设置
@echo off title Tomcat环境变量设置 color 0a set /p inputTH=D:\Work\024_Tomcat if /i "%inputTH%"= ...
- Eclipse为成员变量设置前缀
Eclipse可以自动生成getter和setter,constructor. 菜单 - Source, 有Generate Getters and Setter,Generate Construct ...
- java环境变量设置
java环境变量设置 1.打开我的电脑--属性--高级--环境变量 2.新建系统变量JAVA_HOME 和CLASSPATH 变量名:JAVA_HOME 变量值:C:\Program Files\Ja ...
- AIX系统的环境变量设置
AIX系统的环境变量设置 用户环境的定义是通过设置环境变量来实现的.AIX系统主要使用两大类profile文件来定义用户环境.一类是用来为所有用户定制环境,另一类是为个人定义自己的环境. 登录时,sh ...
- Mac 系统下cocos2dx 环境变量设置
Mac 系统环境变量设置 vim ~/.bash_profile export PATH=$PATH:/Users/wangchengcheng/Downloads/LearningSoft ...
- [Java] JDK 系统环境变量设置 bat
@echo off set regpath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environmen ...
- Windows-001-Win7系统变量设置
本节主要讲述Windows系统环境变量配置介绍,以 Windows 7 为例讲解. 1.右键单击 计算机,选择 属性,进入 系统 界面,如下所示: 2.点击上图中的 高级系统设置,进入 系统属性 界面 ...
- tomcat配置及使用 环境变量设置
Tomcat的配置及测试: 第一步:下载tomcat,然后解压到任意盘符 第二步:配置系统环境变量 我这里是tomcat5.5,解压到的D盘 (路径为: D:\Program Files\tomcat ...
随机推荐
- 记一次付工解决Sqlserver问题的过程
问题:Sqlserver连接不上 1 检查自身 Sqlserve服务是否开启 Windows服务是否开启 2 用CMD尝试连接Sqlserver 显示详细错误 由于文件不可访问,或者内存或磁盘空间不 ...
- 【JZOJ4665】数列
description analysis 水法又\(n\)方二十万-- 可以先离散化,然后枚举起点,枚举向下扫 同一个数出现过或模数不相同就\(break\),注意\(k\)不够顶替还是有可能存在解不 ...
- win10 mysql5.7忘记密码如何解决
点击开始菜单,搜索cmd.exe,左击以管理员身份运行 操作之前先备份好数据库(切忌) C:\Users\Administrator>cd C:\Program Files\MySQL\MySQ ...
- mysql做主从配置
最近想对公司的数据库做个从数据库,除了每天定时备份外,再多出一个同步数据库,双保险,这样也可以用从数据库就行比较耗资源的数据统计. 技术手段最好能记住,然后就是做笔记了,但是每次都查笔记也不好,希望能 ...
- Unity3D Input 键盘控制
function Update (){ //Input.GetKey ("down") == Input.GetKey(KeyCode.DownArrow) if (Input.G ...
- STM32F4X 关于MDK上虚拟串口调试
1. 下载安装VSPD 自行百度安装后,利用VSPD将PC上的两个虚拟串口连接起来.如图我将COM1 和COM2连接起来. a. 点击Addr pair. 可以看到Virtual ports上将两个虚 ...
- LightOJ-1007-Mathematically Hard-欧拉函数打表+前缀和+预处理
Mathematically some problems look hard. But with the help of the computer, some problems can be easi ...
- Sequelize
连接数据库 const DB = require('sequelize') // 连接数据库 const connect = new DB('xjg', 'root', 'root', { host: ...
- Font Awesome 完全兼容 Bootstrap 的所有组件。
"F_FullName": "其他", "F_Icon": "glyphicon glyphicon-backward fa-lg ...
- springcloud系列14 bus的使用
首先springcloud_bus原理: (1)完整流程:发送端(endpoint)构造事件event,将其publish到context上下文中(spring cloud bus有一个父上下文,bo ...