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、如果老流程有严重问题,废除老流程,所有的都按照新规则重新执行。

注:流程没有修改操作

最新文章

  1. 实现iOS图片等资源文件的热更新化(零): 序
  2. 北京程序员 VS 硅谷程序员(转)
  3. DevExpress GridView 自定义搜索按钮改为中文内容
  4. Dev 统计GridControl界面上当前选中的一行的值
  5. 【转】bootbox自定义dialog、confirm、alert样式,以及基本设置方法setDefaults中可用参数
  6. 从Delphi 7升级到Delphi XE
  7. centos安装Chromium
  8. APUE读书笔记-第13章-守护进程
  9. JavaScript中的alert、confirm、prompt
  10. 在打开Dreamweaver软件情况下,vs2010 asp项目无法调试
  11. 《Linux下FTP服务器搭建及FTP使用》
  12. Mysql-自带的一些功能,基本用法(视图,触发器,事务,存储过程,函数,流程控制)
  13. 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  14. SpringMVC跨域问题排查以及源码实现
  15. FindBugs-IDEA插件的使用
  16. Laravel中路由怎么写(二)
  17. [UE4]缓存选项 Is volatile
  18. Android external扩展工程
  19. pixi.js + three.js
  20. Python里面这些点,据说80%的新手都会一脸懵逼

热门文章

  1. Idea 导入项目不能运行
  2. 常用的一些js事件及案例
  3. 32-Ubuntu-用户权限-03-修改文件权限
  4. Til the Cows Come Home(spfa做法)
  5. javascript事件委托与&quot;坑&quot;
  6. Shell 编程综合案例
  7. PHP算法之罗马数字转整数
  8. SpringDataJpa实现自定义(更新)update语句
  9. 继承中的隐藏(hide)重写(Override)和多态(Polymorphism)
  10. Batch - FOR /F Delims 和 Tokens 用法