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 — 流程实例化的更多相关文章

  1. Activiti学习笔记3 — 流程定义

    一.创建流程引擎对象 private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); 二.发布一个流程 ...

  2. Activiti学习笔记目录

    1.Activiti学习笔记1 — 下载与开发环境的配置: 2.Activiti学习笔记2 — HelloWorld: 3.Activiti学习笔记3 — 流程定义: 4.Activiti学习笔记4 ...

  3. Activiti 学习笔记记录(二)

    上一篇:Activiti 学习笔记记录 导读:对于工作流引擎的使用,我们都知道,需要一个业务事件,比如请假,它会去走一个流程(提交申请->领导审批---(批,不批)---->结束),Act ...

  4. activiti学习笔记一

    activiti学习笔记 在讲activiti之前我们必须先了解一下什么是工作流,什么是工作流引擎. 在我们的日常工作中,我们会碰到很多流程化的东西,什么是流程化呢,其实通俗来讲就是有一系列固定的步骤 ...

  5. Activiti 学习笔记记录(2016-8-31)

    上一篇:Activiti 学习笔记记录(二) 导读:上一篇学习了bpmn 画图的常用图形标记.那如何用它们组成一个可用文件呢? 我们知道 bpmn 其实是一个xml 文件

  6. Java学习笔记之---流程控制语句

    Java学习笔记之---流程控制语句 (一)循环语句 (1)if语句 if(布尔表达式){ //如果布尔表达式为true将执行的语句 } if(i%2!=0){ System.out.println( ...

  7. activiti学习6:启动流程后动态获取流程图

    目录 activiti学习6:启动流程后动态获取流程图 一.绘图原理 二.根据流程定义id绘图 三.根据流程实例id绘图 3.1 基本原理 3.2 当前节点的获取 3.3 走过的节点的获取 3.4 绘 ...

  8. activiti学习5:开启流程和流程前进

    目录 activiti学习5:开启流程和流程前进 一.流程和任务的关系 二.开启流程 2.1根据流程定义key开启流程 三.查询用户任务 3.1 TaskQuery 四.完成任务 activiti学习 ...

  9. Unity3D学习笔记7——GPU实例化(2)

    目录 1. 概述 2. 详论 2.1. 实现 2.2. 解析 3. 参考 1. 概述 在上一篇文章<Unity3D学习笔记6--GPU实例化(1)>详细介绍了Unity3d中GPU实例化的 ...

随机推荐

  1. Jmeter json和正在提取及断言

    Jmeter  json和正在提取及断言 一.提取所需要断言的内容: 响应数据如下:加入需要提取userid为10477的值 { "pub": { , ", " ...

  2. CentOS6 图形界面(gnome)安装

    CentOS6相对于CentOS5的安装有了不少的进步,有不少默认的选项可以选择,如: Desktop :基本的桌面系统,包括常用的桌面软件,如文档查看工具. Minimal Desktop :基本的 ...

  3. 2019牛客多校第三场H-Magic Line

    Magic Line 题目传送门 解题思路 因为坐标的范围只有正负1000,且所有点坐标都是整数,所以所有点相连构成的最大斜率只有2000,而我们能够输出的的坐标范围是正负10^9.所以我们先把这n个 ...

  4. Netty 源码分析——ChannelPipeline

    Netty 源码分析--ChannelPipeline 通过前面的两章我们分析了客户端和服务端的流程代码,其中在初始化 Channel 的时候一定会看到一个 ChannelPipeline.所以在 N ...

  5. Django框架(二)—— 基本配置:app注册、模板配置、静态文件配置、数据库连接配置post和get

    目录 app注册.模板配置.静态文件配置.数据库连接配置post和get 一.app 二.模板配置 三.静态文件配置 四.数据库连接配置 五.get请求和post请求 六.新手三件套 七.登录功能案例 ...

  6. 最小生成树--Prim及Kruskal

    //prim算法#include<cstdio> #include<cmath> #include<cstring> #include<iostream> ...

  7. PCA分析,及c++代码实现

    本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/fengbingchun/article/details/79235028 主成分分析(Principal Co ...

  8. vscode编程nodejs初始安装

    nodejs官网 http://nodejs.cn/ 1.安装nodejs,记得安装时勾选配置路径 在cmd中输入node,进去node环境即为安装成功. 2.安装vscode,并安装插件node e ...

  9. Java递归调用

    6.递归调用 方法的递归调用就是方法自身调用自身. 以下程序因为递归没有结束的条件,所以一直压栈,没有弹栈,导致栈内存溢出错误!所以递归必须要有结束条件. public class Recursion ...

  10. 揭秘!2周实现上云上市,阿里云SaaS上云工具包如何打造新云梯?

    提到“上云”,很多人会理解成上IaaS,比如买一些计算.存储和网络云产品,把自己的应用系统部署上去.这的确是通常意义的上云.但对SaaS而言,需要从产品.商业.服务,三个维度考虑SaaS伙伴和客户的痛 ...