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的文档,手工初始 ...
随机推荐
- 简单的GridView分业,后台不需要写
1前台代码: <asp:GridView ID="GridView1" runat="server" AllowPaging="True&quo ...
- event.target.tagName
html中 event.target.tagName 中的tagName属性他返回的就是元素标签的大写名称 例如标签他的tagName就是EM 所以用大写 记住:在 HTML 中,tagName 属性 ...
- 如何优雅的在 vue 中添加权限控制
前言 在一个项目中,一些功能会涉及到重要的数据管理,为了确保数据的安全,我们会在项目中加入权限来限制每个用户的操作.作为前端,我们要做的是配合后端给到的权限数据,做页面上的各种各样的限制. 需求 因为 ...
- Android开发 retrofit下载与上传
前言 此博客只讲解retrofit下载与上传的使用,其实与其说是retrofit的下载与上传还不如说,依然是Okhttp的下载与上传.如果你需要了解retrofit入门请查看这篇博客(此博客不在详细讲 ...
- All you need to know about: solder mask and paste mask
1, 从字面理解 (1) 从字面理解,solder mask意指要mask住需要solder的地方.那么被mask的是谁呢?是绿油层.可以把默认形态的绿油层想象成与PCB板形状.面积相同,solder ...
- day15 python-03 列表,元组,字典
Python之路,Day3 = Python基础3 注: extend: 拼接 enumerate:打印序号,返回两个值 模块的简单使用 sys模块 #!/usr/bin/env python #这句 ...
- retired!
退役啦!估计不会再更新了,终于在大四拿到了icpc,ccpc,省赛,邀请赛金,也算是圆满了!
- DELPHI实现类似仿360桌面的程序界面
1.窗体半透明: Alphablend属性为true;Alphablendvalue的值为100 2.窗体透明: formCreate: Self.TransparentColor := True;S ...
- win 7 下安装GIT(亲测有效)
我首先是百度到了这个网站:https://git-scm.com/download/win 当然由于外网访问速度的缓慢 可以直接在百度搜索下载自己对应的版本 这个网站上有下载链接,你可以根据你的系统选 ...
- 王者归来,Java 程序设计葵花宝典!
致谢 感谢所有关注本号的小伙伴们,这一年来本号的茁壮成长离不开大家的支持. 2018年,继续坚持分享以及为大家谋求福利!!! Java技术栈往期赠书 赠书一:新春第一次送书,价值78元 X 3本 赠 ...