博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Activiti流程变量
阅读量:6223 次
发布时间:2019-06-21

本文共 3769 字,大约阅读时间需要 12 分钟。

流程变量在整个工作流中扮演很重要的作用

  例如:请假流程中有请假天数、请假原因等一些参数都为流程变量的范围。流程变量的作用域范围是流程实例。也就是说各个流程实例的流程变量是不相互影响的。

添加流程变量

  1、在启动流程实例时,可以添加流程变量。  

public void startProcess() throws Exception {        String processDefinitionKey ="varTest";        // 创建流程变量        Map
variables = new HashMap
(); 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
variables = new HashMap<>();// variables.put("请假时间", "2013-11-22");// variables.put("请假天数", "3"); variables.put("请假天数", 3); taskService.setVariables(task.getId(), variables ); /** * 在任务完成时设置流程变量 */// taskService.complete(taskId)// Map
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
variables = new HashMap<>(); variables.put("批注", "好好约会,注意安全!!"); runtimeService.setVariables(task.getExecutionId(), variables); /** * 在任务完成时设置流程变量 */// taskService.complete(taskId)// Map
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
vars = taskService.getVariables(task.getId()); for (String variableName : vars.keySet()) { String val = (String) vars.get(variableName); System.out.println(variableName + " = " +val); } }

  说明:这些流程变量是从act_ru_variable这个表中读出来的。

 

转载于:https://www.cnblogs.com/cxyj/p/3877996.html

你可能感兴趣的文章
大端模式与小端模式、网络字节顺序与主机字节顺序
查看>>
微信支付申请90%的商户都卡在这儿了,申请微信支付,商户功能设置详细说明...
查看>>
高仿Instagram 页面效果android特效
查看>>
2016 年总结
查看>>
将String转化成Stream,将Stream转换成String
查看>>
java路径Java开发中获得非Web项目的当前项目路径
查看>>
【工具使用系列】关于 MATLAB 遗传算法与直接搜索工具箱,你需要知道的事
查看>>
Kali-linux Arpspoof工具
查看>>
PDF文档页面如何重新排版?
查看>>
基于http协议使用protobuf进行前后端交互
查看>>
bash腳本編程之三 条件判断及算数运算
查看>>
php cookie
查看>>
linux下redis安装
查看>>
弃 Java 而使用 Kotlin 的你后悔了吗?| kotlin将会是最好的开发语言
查看>>
JavaScript 数据类型
查看>>
量子通信和大数据最有市场突破前景
查看>>
StringBuilder用法小结
查看>>
对‘初学者应该选择哪种编程语言’的回答——计算机达人成长之路(38)
查看>>
如何申请开通微信多客服功能
查看>>
Sr_C++_Engineer_(LBS_Engine@Global Map Dept.)
查看>>