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. Codeforces 1176B - Merge it!

    题目链接:http://codeforces.com/problemset/problem/1176/B 题意:给定序列,任意俩个元素可以相加成一个元素,求序列元素能被3整除的最大数量. 思路: 对于 ...

  2. 面向对象(三)——组合、多态、封装、property装饰器

    组合.多态.封装.property装饰器 一.组合 1.什么是组合 组合指的是某一个对象拥有一个属性,该属性的值是另外一个类的对象 class Foo(): pass class Bar(): pas ...

  3. Java对图片压缩

    背景:图片上传服务器时候的大小限制取消之后,上传图片太大导致前台显示加载缓慢 需求:服务器对接收到的图片进行压缩 方法:1.上传后的文件保存在临时文件夹“/usr/upload/tmp”    2.压 ...

  4. Hadoop 基础知识

    Hadoop 数据是存储在HDFS, Mapreduce 是一种计算框架,负责计算处理. HDFS上的数据存储默认是本地节点数据一份,同一机架不同节点一份,不同机架不同节点一份.默认是存储3份 HDF ...

  5. C# WinfForm 控件之dev报表 XtraReport (二) 固定数据绑定

    已经子解了XtraReport的初步用法 现在再进一步了解 数据绑定 我们还是先不整高深的 先来个写死的 让我们的数据库数据可以通过报表呈现先 1.准备 还在上节基础上 只不过我把form1 中的Do ...

  6. GP下CalculateField的用法

    以前用过这个类做字段计算,许久不用有些忘却,记录一下使用方式 public static void CalculateField(IFeatureLayer featureLayer,IField f ...

  7. mac下Python安装路径的说明

    Python安装路径的说明 mac在安装Python时, 对不同的安装方式 不同的型号均会安装在不同的文件夹下 安装方式 路径 系统默认(2.7) /System/Library/Frameworks ...

  8. 45. Collection

    因为Collection是接口我们不能直接实例化,所以我们下面的例子都是采用多态实例化实现类ArrayList类 1. Collection中常用方法 添加:    add()  添加一个元素到集合中 ...

  9. C# using System.Windows.Media.Imaging;该引用哪个dll

    在网上看到BitmapSource和WriteableBitmap一些类听说是用 using System.Windows.Media.Imaging:可是我发现VS中没有什么System.Windo ...

  10. QT 环境变量配置

    //注意每个人的习惯不一样 在系统变量中新建: { QT = C:\Qt\Qt5.13.1\5.13.1 QT_TOOL = C:\Qt\Qt5.13.1\Tools } 然后在path 中加入 { ...