Activiti 学习笔记七:连线(SequenceFlow)
一、部署流程定义
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();/** 部署流程定义(从inputStream) */@Testpublic void deploymentProcessDefinition_inputStream() {InputStream inputStreamBpmn = this.getClass().getResourceAsStream("sequenceFlow.bpmn");InputStream inputStreamPng = this.getClass().getResourceAsStream("sequenceFlow.png");Deployment deployment = processEngine.getRepositoryService()// 与流程定义和部署对象相关的Service.createDeployment()// 创建一个部署对象.name("连线")// 添加部署的名称.addInputStream("sequenceFlow.bpmn", inputStreamBpmn)//.addInputStream("sequenceFlow.png", inputStreamPng)//.deploy();// 完成部署System.out.println("部署ID:" + deployment.getId());//System.out.println("部署名称:" + deployment.getName());//}
注意:如果将流程图放置在和java类相同的路径,需要配置
点击remove按钮,移除*/.java
二、启动流程实例
/** 启动流程实例 */@Testpublic void startProcessInstance() {// 流程定义的keyString processDefinitionKey = "sequenceFlow";ProcessInstance pi = processEngine.getRuntimeService()// 与正在执行的流程实例和执行对象相关的Service.startProcessInstanceByKey(processDefinitionKey);// 使用流程定义的key启动流程实例,key对应helloworld.bpmn文件中id的属性值,使用key值启动,默认是按照最新版本的流程定义启动System.out.println("流程实例ID:" + pi.getId());// 流程实例ID 101System.out.println("流程定义ID:" + pi.getProcessDefinitionId());// 流程定义ID// helloworld:1:4}
三、查询我的个人任务
/** 查询当前人的个人任务 */@Testpublic void findMyPersonalTask() {String assignee = "赵六";List<Task> list = processEngine.getTaskService()// 与正在执行的任务管理相关的Service.createTaskQuery()// 创建任务查询对象/** 查询条件(where部分) */.taskAssignee(assignee)// 指定个人任务查询,指定办理人// .taskCandidateUser(candidateUser)//组任务的办理人查询// .processDefinitionId(processDefinitionId)//使用流程定义ID查询// .processInstanceId(processInstanceId)//使用流程实例ID查询// .executionId(executionId)//使用执行对象ID查询/** 排序 */.orderByTaskCreateTime().asc()// 使用创建时间的升序排列/** 返回结果集 */// .singleResult()//返回惟一结果集// .count()//返回结果集的数量// .listPage(firstResult, maxResults);//分页查询.list();// 返回列表if (list != null && list.size() > 0) {for (Task task : list) {System.out.println("任务ID:" + task.getId());System.out.println("任务名称:" + task.getName());System.out.println("任务的创建时间:" + task.getCreateTime());System.out.println("任务的办理人:" + task.getAssignee());System.out.println("流程实例ID:" + task.getProcessInstanceId());System.out.println("执行对象ID:" + task.getExecutionId());System.out.println("流程定义ID:" + task.getProcessDefinitionId());System.out.println("########################################################");}}}
四、完成我的任务
/** 完成我的任务 */@Testpublic void completeMyPersonalTask() {// 任务IDString taskId = "67504";// 完成任务的同时,设置流程变量,使用流程变量用来指定完成任务后,下一个连线,对应sequenceFlow.bpmn文件中${message=='不重要'}Map<String, Object> variables = new HashMap<String, Object>();variables.put("message", "重要");processEngine.getTaskService()// 与正在执行的任务管理相关的Service.complete(taskId, variables);System.out.println("完成任务:任务ID:" + taskId);}
说明:
1)使用流程变量,设置连线需要的流程变量的名称message,并设置流程变量的值
对应:
流程会按照指定的连线完成任务。
五、总结
1、一个活动中可以指定一个或多个SequenceFlow(Start中有一个,End中没有)。
* 开始活动中有一个SequenceFlow 。
* 结束活动中没有SequenceFlow 。
* 其他活动中有1条或多条SequenceFlow
2、如果只有一个,则可以不使用流程变量设置codition的名称;
如果有多个,则需要使用流程变量设置codition的名称。message表示流程变量的名称,‘不重要’表示流程变量的值,${}中间的内容要使用boolean类型的表达式,用来判断应该执行的连线。
演示demo下载:http://download.csdn.net/detail/xunzaosiyecao/9625592
本文部分内容整理自itcast讲义,在此表示感谢。
作者:jiankunking 出处:http://blog.csdn.net/jiankunking
Activiti 学习笔记七:连线(SequenceFlow)相关推荐
- 吴恩达《机器学习》学习笔记七——逻辑回归(二分类)代码
吴恩达<机器学习>学习笔记七--逻辑回归(二分类)代码 一.无正则项的逻辑回归 1.问题描述 2.导入模块 3.准备数据 4.假设函数 5.代价函数 6.梯度下降 7.拟合参数 8.用训练 ...
- 【K210】K210学习笔记七——使用K210拍摄照片并在MaixHub上进行训练
[K210]K210学习笔记七--使用K210拍摄照片并在MaixHub上进行训练 前言 K210准备工作 K210如何拍摄照片 准备工作 拍摄相关代码定义 用K210拍摄到的照片在MaixHub平台 ...
- Typescript 学习笔记七:泛型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- websocket 获取连接id_Swoole学习笔记七:搭建WebSocket长连接 之 使用 USER_ID 作为身份凭证...
Swoole学习笔记七:搭建WebSocket长连接 之 使用 USER_ID 作为身份凭证 2年前 阅读 3678 评论 0 喜欢 0 ### 0.前言 前面基本的WebSocket操作,我们基本都 ...
- Activiti 学习笔记记录(2016-8-31)
上一篇:Activiti 学习笔记记录(二) 导读:上一篇学习了bpmn 画图的常用图形标记.那如何用它们组成一个可用文件呢? 我们知道 bpmn 其实是一个xml 文件 转载于:https://ww ...
- ROS学习笔记七:使用rqt_console和roslaunch
ROS学习笔记七:使用rqt_console和roslaunch 本节主要介绍在调试时使用的rqt_console和rqt_logger_level,以及一次性打开多个节点的工具roslaunch. ...
- Learning ROS for Robotics Programming Second Edition学习笔记(七) indigo PCL xtion pro live
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...
- Canvas学习笔记之画线
Canvas学习笔记之画线 步骤 1.使用getElementById()获取canvas元素. 2.获取canvas的绘制环境getContext(). 3.进行绘制画笔的粗细和颜色定义,分别是li ...
- window的dos命令学习笔记 七
文章目录 一.dos历史学习笔记(后期整合到这里,我想能学到这里的应该不多了,嘿嘿,加油) 二.执行状态返回值(`%errorlevel%`,和shell中`$?`相似): 三.视窗 1.color ...
最新文章
- 在SQL和ERWIN中用自定义类型、规则和默认值实现check约束从而保证数据的完整性...
- anaconda3配置环境变量_阿里云ECS配置Jupyter Notebook
- gre biochemistry_【备考精选】2020年11月6日GRE写作Issue预测分享
- 机器学习实战应用50讲(一)-使用student’s T检验的未必是学生
- PyQT:This application failed to start because no Qt platform plugin could be initialized.
- go init函数_面试录 Go语言篇 内存模型
- 鼠标自动点击脚本_613个主流网站中发现点击劫持脚本
- SpaceX载人龙飞船意外爆炸,据称几乎被完全摧毁
- java复制文件到指定目录
- 「Android - SoundPool使用」
- 10个谷歌浏览器调试技巧
- jenkins Process leaked file descriptors
- 为什么便利店晚上顾客很少?还要24小时营业?
- 组装一台计算机需要哪些硬件(写出配置),电脑组装知识网组装电脑配置单中都有哪些配置组装电脑需要的电脑硬件...
- 解决“File has been changed outside the editor, reload?”提示
- VMware虚拟机中Windows11无法连接网络
- 计算机科学专刊录取,欢迎访问软件学报网站!
- OpenCV-Python自适应直方图均衡类CLAHE及方法详解
- 2023闽南师范大学计算机考研信息汇总
- mybatis-plus项目 There is no getter for property named ‘null‘ in ‘class 报错