Activiti学习笔记4 — 流程实例化
1、创建流程引擎对象
private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
2、启动流程
流程启动后会更新以下二张表:act_ru_execution和act_ru_task各产生一条记录
// 获取服务对象的实例
RuntimeService runtimeService = processEngine.getRuntimeService(); String processDefinitionKey = "leaveflow";
// 自动执行与Key相对应的流程的最高版本
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey); logger.info("Id:" + processInstance.getId());
logger.info("ActivitiId:" + processInstance.getActivityId());
3、查看任务
3.1、查看私有任务
// 1、获取服务对象的实例
TaskService taskService = processEngine.getTaskService(); // 2、查询
// 2.1、创建查询对象
TaskQuery query = taskService.createTaskQuery();
// 2.2、配置查询对象
// String assignee = "employee";
String assignee = "manager";
query
// 过滤条件
.taskAssignee(assignee)
// 排序条件
.orderByTaskCreateTime().desc();
// 分页条件
// .listPage(firstResult, maxResults) // 2.3、执行查询
List<Task> tasks = query.list(); for (Task task : tasks) {
logger.info("Id:" + task.getId());
logger.info("Name:" + task.getName());
logger.info("Category:" + task.getCategory());
logger.info("Description:" + task.getDescription());
logger.info("Assignee:" + task.getAssignee());
logger.info("CreateTime:" + task.getCreateTime());
}

3.2、查看共有任务
在流程定义中使用candidateUser属性,发布任务后会在act_ru_identitylink表产生对应的记录
// 1、获取服务对象的实例
TaskService taskService = processEngine.getTaskService(); // 2、查询
// 2.1、创建查询对象
TaskQuery query = taskService.createTaskQuery();
// 2.2、配置查询对象
//String candidateUser = "张三";
//String candidateUser = "李四"; //String candidateUser = "李经理";
String candidateUser = "赵经理";
query
// 过滤条件
.taskCandidateUser(candidateUser)
// 排序条件
.orderByTaskCreateTime().desc();
// 分页条件
// .listPage(firstResult, maxResults) // 2.3、执行查询
List<Task> tasks = query.list(); for (Task task : tasks) {
logger.info("Id:" + task.getId());
logger.info("Name:" + task.getName());
logger.info("Category:" + task.getCategory());
logger.info("Description:" + task.getDescription());
logger.info("Assignee:" + task.getAssignee());
logger.info("CreateTime:" + task.getCreateTime());
}

4、认领任务
// 1、获取服务对象的实例
TaskService taskService = processEngine.getTaskService();
String taskId = "";
String userId = "赵经理";
taskService.claim(taskId, userId);
5、完成任务
// 1、获取服务对象的实例
TaskService taskService = processEngine.getTaskService();
// 2、完成任务
String taskId = "";
taskService.complete(taskId);
6、查看流程状态
// 1、获取服务对象的实例
RuntimeService runtimeService = processEngine.getRuntimeService();
//查询
// 2.1、创建查询对象
ProcessInstanceQuery query = runtimeService.createProcessInstanceQuery();
String processInstanceId = "";
ProcessInstance processInstance = query.processInstanceId(processInstanceId).singleResult(); if (processInstance != null) {
logger.info(processInstance.getId());
logger.info(processInstance.getActivityId());
} else {
logger.info("流程已结束!");
//HistoryService historyService = processEngine.getHistoryService(); }
7、ProcessInstance的4个特点:
1、一个流程只有一个流程实例。
2、一个流程中,流程实例的ID不会变。
3、流程实例永远指向当前活动的节点
4、流程实例是一个特殊的执行对象(Execution)
4.1、如果是单线流程,流程实例和执行对象是同一个;
4.2、如是是并发流程,流程会在分支处产生一个Root级别的执行对象作为ProcessInstance,而分支下的每一个活动节点,都会分别产生一个Execution对象挂在Root下。
8、流程整改的方式:
1、如果老流程没有太大的问题,那么老流程按照老规则流程,新流程按照新规则流转。
2、如果老流程有严重问题,废除老流程,所有的都按照新规则重新执行。
注:流程没有修改操作
Activiti学习笔记4 — 流程实例化的更多相关文章
- Activiti学习笔记3 — 流程定义
一.创建流程引擎对象 private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); 二.发布一个流程 ...
- Activiti学习笔记目录
1.Activiti学习笔记1 — 下载与开发环境的配置: 2.Activiti学习笔记2 — HelloWorld: 3.Activiti学习笔记3 — 流程定义: 4.Activiti学习笔记4 ...
- Activiti 学习笔记记录(二)
上一篇:Activiti 学习笔记记录 导读:对于工作流引擎的使用,我们都知道,需要一个业务事件,比如请假,它会去走一个流程(提交申请->领导审批---(批,不批)---->结束),Act ...
- activiti学习笔记一
activiti学习笔记 在讲activiti之前我们必须先了解一下什么是工作流,什么是工作流引擎. 在我们的日常工作中,我们会碰到很多流程化的东西,什么是流程化呢,其实通俗来讲就是有一系列固定的步骤 ...
- Activiti 学习笔记记录(2016-8-31)
上一篇:Activiti 学习笔记记录(二) 导读:上一篇学习了bpmn 画图的常用图形标记.那如何用它们组成一个可用文件呢? 我们知道 bpmn 其实是一个xml 文件
- Java学习笔记之---流程控制语句
Java学习笔记之---流程控制语句 (一)循环语句 (1)if语句 if(布尔表达式){ //如果布尔表达式为true将执行的语句 } if(i%2!=0){ System.out.println( ...
- activiti学习6:启动流程后动态获取流程图
目录 activiti学习6:启动流程后动态获取流程图 一.绘图原理 二.根据流程定义id绘图 三.根据流程实例id绘图 3.1 基本原理 3.2 当前节点的获取 3.3 走过的节点的获取 3.4 绘 ...
- activiti学习5:开启流程和流程前进
目录 activiti学习5:开启流程和流程前进 一.流程和任务的关系 二.开启流程 2.1根据流程定义key开启流程 三.查询用户任务 3.1 TaskQuery 四.完成任务 activiti学习 ...
- Unity3D学习笔记7——GPU实例化(2)
目录 1. 概述 2. 详论 2.1. 实现 2.2. 解析 3. 参考 1. 概述 在上一篇文章<Unity3D学习笔记6--GPU实例化(1)>详细介绍了Unity3d中GPU实例化的 ...
随机推荐
- [转] bae中thinkphp的REWRITE 正确配置方法
URL_MODEL =2下. 官方的:app.conf不能用,害人呀.. 留意以下红色部分,正则要分开来写,坑爹的 正确的配置: handlers: handlers: - expire : .jpg ...
- Dubbo入门到精通学习笔记(十四):ActiveMQ集群的安装、配置、高可用测试,ActiveMQ高可用+负载均衡集群的安装、配置、高可用测试
文章目录 ActiveMQ 高可用集群安装.配置.高可用测试( ZooKeeper + LevelDB) ActiveMQ高可用+负载均衡集群的安装.配置.高可用测试 准备 正式开始 ActiveMQ ...
- 关于Unity中文件读取
存储: 在程序发布后文件的存放有两种,第一种是打包到Uniyt的资源包中(*.unity3D),第二种就是把文件存放在一个特殊的目录如:StreamingAssets,这个目录的东西Unity不会打包 ...
- HDU 6667 Roundgod and Milk Tea (思维)
2019 杭电多校 8 1011 题目链接:HDU 6667 比赛链接:2019 Multi-University Training Contest 8 Problem Description Rou ...
- new delete
malloc/free是标准的库函数,而new/delete是操作符 匹配使用原则:malloc(calloc/realloc)和free 以及new/new[] 和delete/delete[]; ...
- node 创建静态web服务器(下)(处理异步获取数据的两种方式)
接上一章. 上一章我们说创建的静态web服务器只能识别html,css,js文件,功能较为单一,且图片格式为text/html,这是不合理的. 本章,我们将解决该问题. 这里,我们先准备好一个json ...
- POJ 3259 Wormholes Bellman题解
版权声明:本文作者靖心,靖空间地址:http://blog.csdn.net/kenden23/.未经本作者同意不得转载. https://blog.csdn.net/kenden23/article ...
- 二维码APP后台开发记录
先是搭建环境,我们采用spring4.2.1+hibernate5.0.1进行搭建,从官网上下载框架必用jar包. 在MyEclipse里,创建web项目,创建lib包,将相关jar包放入,别忘了my ...
- TFS中的账号和GIT中的账号
有些公司使用TFS来进行git的管理,这个时候很多人没有区分TFS中的账号和GIT的账号的区别:TFS的账号和GIT账号是两套不同的体系,使用TFS管理GIT GIT是不需要账号密码,但是必须在win ...
- PushSharp 由于远程方已关闭传输流,身份验证失败。
前段时间用到了PushSharp给APNS发推送,但是用的时候遇见很诡异的事情,每次第一次运行的时候能成功发送到 但是接下来就无限的提示“由于远程方已关闭传输流,身份验证失败. “ 然后我就各种找原因 ...