Activiti流程变量
来源:互联网 发布:cn域名的ns记录 编辑:程序博客网 时间:2024/06/06 13:11
流程变量在整个工作流中扮演很重要的作用
例如:请假流程中有请假天数、请假原因等一些参数都为流程变量的范围。流程变量的作用域范围是流程实例。也就是说各个流程实例的流程变量是不相互影响的。
添加流程变量
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这个表中读出来的。
0 0
- activiti中的流程变量
- activiti之流程变量
- Activiti流程变量
- Activiti 流程变量
- Activiti流程变量
- activiti 设置流程变量
- activiti 流程变量
- Activiti 流程变量
- activiti之流程变量
- Activiti(四)流程变量
- Activiti基础教程--06流程变量
- Activiti(四)流程变量
- Activiti基础教程--06流程变量
- 5、Activiti 流程变量 Variables
- Activiti学习笔记七 流程变量
- Activiti 学习笔记五:流程变量
- activiti之排他网关,流程变量
- 工作流框架--activiti(三)--流程变量
- java中URL和File的相互转化
- 如何设置MFC对话框背景的颜色
- Spring-7:使用外部属性文件
- SqlServer数据库正在还原的解决办法
- 韩国最大门户网站遭黑客挂马 专劫银行用户数据
- Activiti流程变量
- 去年校招的经验分享
- Android百分比布局Percent支持库
- iOS 上传数据到后台
- 点阵字体(也叫位图字体或光栅字体)、矢量字体
- ECMAScript 6 学习系列课程 (ES6 class的相关用法)
- Javascript 进阶 作用域 作用域链
- java之可自动增长容器
- sd_webimage 可以直接给 image赋值