Activiti流程变量
流程变量在整个工作流中扮演很重要的作用
例如:请假流程中有请假天数、请假原因等一些参数都为流程变量的范围。流程变量的作用域范围是流程实例。也就是说各个流程实例的流程变量是不相互影响的。
添加流程变量
1、在启动流程实例时,可以添加流程变量。
public void startProcess() throws Exception {
String processDefinitionKey ="varTest";
// 创建流程变量
Map<String,Object> variables = new HashMap<String,Object>();
variables.put("请假人", "冯小刚");
// 在启动时设置流程变量
ProcessInstance pi = processEngine.getRuntimeService().startProcessInstanceByKey(processDefinitionKey , variables );
System.out.println("pid:" + pi.getId());
}
说明:
1) 在启动流程实例时,通过重载startProcessInstanceByKey的方法可以加载流程变量。
2) 第二个参数要求是Map<String ,Object>类型,意味着可以添加多个流程变量。
3) 当这段代码执行完以后,会在数据库表act_ru_variable中添加两行记录。
2、在办理任务时
在办理任务时,有时候任务办理完成以后,要传递一些信息到系统中。这个时候可以利用TaskService这个类来添加流程实例。
public void setVar() throws Exception {
String processInstanceId = "1901";
Task task =taskService.createTaskQuery().taskAssignee("manager").processInstanceId(processInstanceId ).singleResult();
// String taskId
/**
* 在办理过程中设置流程变量
*/
// taskService.setVariable(taskId, variableName, value) // 设置一个流程变量
Map<String, Object> variables = new HashMap<>();
// variables.put("请假时间", "2013-11-22");
// variables.put("请假天数", "3");
variables.put("请假天数", 3);
taskService.setVariables(task.getId(), variables );
/**
* 在任务完成时设置流程变量
*/
// taskService.complete(taskId)
// Map<String, Object> variables = new HashMap<>();
// variables.put("请假原因", "约会!!");
// taskService.complete(task.getId(), variables);
}
说明:
1) 利用setVariables方法在任务办理过程中添加一批流程变量。
2) 利用setVariable方法在任务办理过程中添加一个流程变量。
3) TaskService有一个重载 complete方法
3、执行流程实例时直接在Execution上设置流程变量
因为流程变量的作用域就是流程实例,所以只要设置就行了,不用管在哪个阶段
public void setVarByExecution() throws Exception {
String processInstanceId = "1901";
Task task =taskService.createTaskQuery().taskAssignee("manager").processInstanceId(processInstanceId ).singleResult();
// String taskId
/**
* 在办理过程中设置流程变量
*/
// taskService.setVariable(taskId, variableName, value) // 设置一个流程变量
Map<String, Object> variables = new HashMap<>();
variables.put("批注", "好好约会,注意安全!!");
runtimeService.setVariables(task.getExecutionId(), variables);
/**
* 在任务完成时设置流程变量
*/
// taskService.complete(taskId)
// Map<String, Object> variables = new HashMap<>();
// variables.put("请假原因", "约会!!");
// taskService.complete(task.getId(), variables);
}
另一种设置变量的方法:
public void setVarByObj() throws Exception {
String processInstanceId = "1901";
Task task =taskService.createTaskQuery().taskAssignee("manager").processInstanceId(processInstanceId ).singleResult();
Form form = new Form();//这个javabean实现了Serializable接口
form.setName("表单名称");
form.setContent("我是张三,我要请假3天");
taskService.setVariable(task.getId(), "form", form);
}
获取流程变量
可以通过runTimeService的方法来获取流程变量。
public void viewVar() throws Exception {
String processInstanceId = "1901";
Task task =taskService.createTaskQuery().taskAssignee("user").processInstanceId(processInstanceId ).singleResult();
System.out.println("taskName:" + task.getName());
// String variableName = "请假人";
// String val = (String)taskService.getVariable(task.getId(), variableName );
Map<String,Object> vars = taskService.getVariables(task.getId());
for (String variableName : vars.keySet()) {
String val = (String) vars.get(variableName);
System.out.println(variableName + " = " +val);
}
}
说明:这些流程变量是从act_ru_variable这个表中读出来的。
Activiti流程变量的更多相关文章
- 工作流学习——Activiti流程变量五步曲 (zhuan)
http://blog.csdn.net/zwk626542417/article/details/46648139 ***************************************** ...
- Activiti流程变量五步曲 ——by fightingKing
http://blog.csdn.net/zwk626542417/article/details/46648139 一.前言 上一篇文章我们将流程实例的启动与查询,任务的办理查询都进行了介绍,我们这 ...
- 工作流学习——Activiti流程变量五步曲
一.前言 上一篇文章我们将流程实例的启动与查询,任务的办理查询都进行了介绍,我们这篇文章来介绍activiti中的流程变量. 二.正文 流程变量与我们寻常理解的变量是一样的,仅仅只是是用在了我们act ...
- Activiti第二篇【管理流程定义、执行任务和流程实例、流程变量】
上篇Activiti只是一个快速入门案例,这篇就讲定义.部署.查看任务等等的一些细节[涉及到的数据库表.对象等等]- 管理流程定义 管理流程定义主要涉及到以下的4张表: -- 流程部署相关的表 SEL ...
- Activiti工作流(三)——流程变量
流程变量可以是流程中一系列参数,比如办理人(Assignee),消息(message)等.这些流程变量使得activiti能够应用于更为复杂的业务中,使得流程变得更加灵活可控. 场景(一) 图一:没有 ...
- activiti设置流程变量
public static void mian(String args[]){ ProcessEngine processEngine = ProcessEngine.getDefaultProce ...
- (八)Activiti之流程变量和局部流程变量
一.流程变量 1.1 概念 如果,当流程走到"学生请假"这个任务节点的时候,此时可以用TaskService设置流程变量,变量值包含请假人.请假时间.请假理由等信息,这些信息存在表 ...
- 关于activiti流程通过、驳回、会签、转办、中止、挂起等核心操作功能的封装
http://blog.csdn.net/aochuanguying/article/details/7594197 package com.famousPro.process.service.imp ...
- 从零开始学习和改造activiti流程引擎的13天,自己记录一下
day#1(11.13) 尝试通过spring boot 集成最新版activiti 7,但是苦于官方的文档基本为空,无法完成spring boot的配置,最终按照activiti 6的文档,手工初始 ...
随机推荐
- 三角形的实现和盒模型、层模型、浮动模型、定位、权重、margin问题
相邻的border会平分所占的区域,出现一个斜线, .my_triangle{ width: 10px; height: 10px; background-color: blue; border-wi ...
- windows2012 日志查看过程
Windows2012界面修改好造成有些人不知道在哪里查找windows 日志 我这边截图描述一下 1. 2.输入 命令 eventvwr.msc 3.弹出 windows 事件查看器 4.若需要 ...
- Buy Low, Buy Lower
Buy Low, Buy Lower 给出一个长度为N序列\(\{a_i\}\),询问最长的严格下降子序列,以及这样的序列的个数,\(1 <= N <= 5000\). 解 显然我们可以很 ...
- MySQL安装pdf介绍
pdf地址:https://files.cnblogs.com/files/pygo/mysql%E5%AE%89%E8%A3%85.pdf
- [JZOJ3303] 【集训队互测2013】城市规划
题目 题目大意 求\(N\)个点的简单无向图的方案数(有编号). 结果对\(1004535809\)取模. 思考历程 感觉这个问题非常经典. 当时想到了一堆式子,但都觉得可能会有重和漏,于是弃掉了-- ...
- lombok使用手册
lombok使用手册: 1.安装插件 1.1.idel: 1.2.使用lombok还需要引用相关jar包 参考网址:https://projectlombok.org/features/all 2.注 ...
- thingkphp 路由实例
我们已经了解了如何定义路由规则,下面我们来举个例子加深印象. 假设我们定义了News控制器如下(代码实现仅供参考): namespace Home\Controller; use Think\Cont ...
- C++——类的继承(派生)
类的继承就是子类可以拥有父类的成员变量和成员函数 //public 修饰的成员变量 方法 在类的内部 类的外部都能使用//protected: 修饰的成员变量方法,在类的内部使用 ,在继承的子类中可用 ...
- 深入理解Android-清晰的理解Service
1.什么是Service 2.Service的生命周期 3.Service的工作过程 4.Service的start和bind状态有什么区别? 5.同一个Service,先startService,然 ...
- Java中String str=new String("a")和String str = "a"有什么区别?
Q: String A="ABC"; String B=new String("ABC"); 这两个值,A,B 是否相等,如果都往HashSet里面放,能放下吗 ...