(六)Activiti之实现学生请假流程
一、实现学生请假流程
1.1 用activiti插件生成bpmn和png文件


1.2 部署流程定义
package com.shyroke.activiti.firstActiviti; import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.repository.Deployment;
import org.junit.Test; public class StudentLeaveProcess { /**
* 获取默认流程引擎实例,会自动读取activiti.cfg.xml文件
*/
private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); /**
* 部署流程定义
*/
@Test
public void test_Deploy() {
Deployment deployment = processEngine.getRepositoryService() // 获取部署相关Service
.createDeployment() //// 创建部署
.addClasspathResource("diagrams/StudentLeaveProcess.bpmn") // 加载资源文件
.addClasspathResource("diagrams/StudentLeaveProcess.bpmn") // 加载资源文件
.name("学生请假流程") // 流程名称
.deploy(); // 部署 System.out.println("流程部署ID:" + deployment.getId());
System.out.println("流程部署Name:" + deployment.getName());
}
}
- 结果:
 

- 更新流程部署表
 

- 更新流程定义表
 

- 更新资源文件表
 

- 更新系统配置表
 

1.2 启动流程实例
/**
* 启动流程实例
*/
@Test
public void start() {
ProcessInstance instance=processEngine.getRuntimeService() // 运行时Service
.startProcessInstanceByKey("StudentLeaveProcess"); // 流程定义表act_re_procdef的KEY字段值 System.out.println("流程实例ID:"+instance.getId());
System.out.println("流程定义ID:"+instance.getProcessDefinitionId());
}
- 此时流程学生请假这个节点,等待张三完成任务。
 
- 结果
 

- 更新执行对象表
 

- 更新身份联系表,
 

- 更新 用户任务表,这里是张三的任务
 

- 更新活动节点历史表,如下图可知,张三的任务还没完成,所以END_TIME为空
 

- 更新历史身份联系表,流程走到这里暂时只有张三这个用户需要完成任务。
 

- 更新历史流程实例表,因为张三还没完成任务,所以END_TIME为空。
 

- 更新历史任务表,目前只有张三的任务
 

1.3 查看张三的任务
/**
* 查看任务
*/
@Test
public void find_task() { List<Task> taskList=processEngine.getTaskService().createTaskQuery().taskAssignee("张三").list();
for(Task task:taskList){
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());
}
}
- 结果
 

1.4 张三完成学生请假任务
/**
* 完成任务
*/
@Test
public void test_completeTask() {
processEngine.getTaskService().complete("2504");
}
- 结果,张三完成任务之后,流程就从学生请假走到了班长审批这个节点,需要李四完成任务。
 

- 更新执行对象表
 

- 更新身份联系表 ,这个流程走到现在需要张三和李四两个用户,张三已经完成任务。
 

- 更新 用户任务表,这里是李四的任务
 

- 更新活动节点历史表,如下图可知,李四的任务还没完成,所以END_TIME为空
 

- 更新历史身份联系表
 

- 更新历史流程实例表
 

- 更新历史任务表
 

1.5 查看李四的任务
/**
* 查看任务
*/
@Test
public void find_task() { List<Task> taskList=processEngine.getTaskService().createTaskQuery().taskAssignee("李四").list();
for(Task task:taskList){
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());
}
}
- 结果
 

1.6 李四完成班长审批任务
/**
* 完成任务
*/
@Test
public void test_completeTask() {
processEngine.getTaskService().complete("5002");
}
- 完成之后,流程就从李四的班长审批节点走到班主任审批节点,需要王五来完成
 

- 更新执行对象表
 

- 更新身份联系表
 

- 更新 用户任务表,这里是王五的任务
 

- 更新活动节点历史表,如下图可知,王五的任务还没完成,所以END_TIME为空
 

- 更新历史身份联系表
 

- 更新历史流程实例表
 

- 更新历史任务表
 

1.7 查看王五任务
/**
* 查看任务
*/
@Test
public void find_task() { List<Task> taskList=processEngine.getTaskService().createTaskQuery().taskAssignee("王五").list();
for(Task task:taskList){
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());
}
}
- 结果
 

1.8 王五完成任务
/**
* 完成任务
*/
@Test
public void test_completeTask() {
processEngine.getTaskService().complete("7502");
}
- 结果
 - 当王五完成任务的时候,流程就全部走完了。
 - 当流程结束的时候,运行时的表(以act_ru开头的表)数据全部清空,历史表(以act_hi开头的表)数据修改 或者增加了数据
 
(六)Activiti之实现学生请假流程的更多相关文章
- 五、activiti工作流-学生请假流程
		
有了上一节的基础,这节主要讲如何创建一个学生请假流程.部署.运行流程实例.查看任务.执行任务.判断流程实例状态.历史任务(实例)查询.历史活动节点查询 记住,一个正在执行的流程,他的流程定义id无论到 ...
 - activiti 一个流程的运转步骤 以请假流程为例
		
---为了加深对activiti的理解记忆,对自己做的一个流程进行自述.加强记忆 请假实例 一.设计请假的流程图以及流程文件,完善对应数据项,比如用户信息,请假单信息 --请假单 --流程图 --流程 ...
 - 我的第一个activiti实例 (代码方式) ctiviti入门列子一个简单的activiti请假流程
		
转: (activiti入门列子一个简单的activiti请假流程) 我的第一个activiti实例 2017年05月31日 14:29:45 chf_mixueer 阅读数:1223 整个项目的 ...
 - Springboot 整合Activiti流程设计器 完成一个简单的请假流程
		
目录 1.前言 2.准备 3.下载解压 4.开始整合 mysql + activiti + thymeleaf 2.配置文件 3.复制文件 4.加入控制器 5.修改配置文件 6.剔除启动类里面的安全校 ...
 - Activiti工作流框架学习(二)——使用Activiti提供的API完成流程操作
		
可以在项目中加入log4j,将logj4.properties文件拷入到src目录下,这样框架执行的sql就可以输出到到控制台,log4j提供的日志级别有以下几种: Fatal error war ...
 - OA请假流程 -- 编码
		
OA请假流程 -- 编码 凡是内容不会发生变化的,都要写在xml配置文件中.需要定义如下内容: <process>标签 id英文命名 和 name 中文命名,然后只要与该流程相关的资源均以 ...
 - Activiti第二篇【管理流程定义、执行任务和流程实例、流程变量】
		
上篇Activiti只是一个快速入门案例,这篇就讲定义.部署.查看任务等等的一些细节[涉及到的数据库表.对象等等]- 管理流程定义 管理流程定义主要涉及到以下的4张表: -- 流程部署相关的表 SEL ...
 - Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8整合例子(附完整的请假流程例子,jbpm基础,常见问题解决)
		
Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8 整合例子(附完整的请假流程例子). 1.jbpm4.4 测试环境搭建 2.Jbpm4.4+hibernat ...
 - ccflow_004请假流程-傻瓜表单-经典模式
		
ccflow_004请假流程-傻瓜表单-经典模式
 
随机推荐
- Co-Clustering_Reproducing
			
调包一时爽,复现马上躺. Co-Clustering 注意右上角的:"Edit on GitHub",一开始疯狂吐槽没有源码,复现得非常难受,今天刚做完GM05中Algotirhm ...
 - contos的apt-get安装
			
本文链接:https://blog.csdn.net/lesz_s/article/details/88732500 首先contos的软件包管理是yum但是yum包好多都没有 比如我想装的slwge ...
 - tornado异步请求响应速度的实例测试
			
tornado异步请求响应速度的实例测试
 - 如何十倍提高你的webpack构建效率
			
前言 http://jafeney.com/2016/07/10/2016-07-10-webpack/ webpack 是个好东西,和 NPM 搭配起来使用管理模块实在非常方便.而 Babe ...
 - android: requestLayout(), invalidate(), postInvalidate() 方法区别
			
一.invalidate和postInvalidate 这两个方法都是在重绘当前控件的时候调用的.invalidate在UI线程中调用,postInvalidate在非UI线程中调用.因为androi ...
 - VUE钩子函数created与mounted区别
			
created:在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成视图. mounted:在模板渲染成html后调用,通常是初始化页面完成后,再对html的dom节点进行一些需要的操作.
 - nginx中获取真实的客户端访问IP
			
date : 2019-06-28 16:54:50 author: headsen chen notice: 个人原创 1,必需要先搞清楚的基本概念 1.1 什么是remote_addr ...
 - 阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_01-用户认证-用户认证流程分析
			
1 用户认证 1.1 用户认证流程分析 用户认证流程如下: 访问下面的资源需要携带身份令牌和jwt令牌,客户端可以通过身份认证的令牌从服务端拿到长令牌, 一会要实现认证服务请求用户中心从数据库内来查询 ...
 - APPSCAN使用外部浏览器的方法
			
在使用appscan扫描时,自带浏览器可能存在兼容性问题(比如HTML5),故需要用到其他浏览器.在做139邮箱HTML5项目,需要使用chrome浏览器进行扫描.因此分享下如何使用外部浏览器,将之前 ...
 - (五)UML之协作图
			
一.什么是协作图? 顾名思义协作图就是合作图,有合作就涉及到多个对象. 协作图(Collaboration Diagram /Communication Diagram,也叫合作图)是一种交互图(in ...