一、实现学生请假流程

  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之实现学生请假流程的更多相关文章

  1. 五、activiti工作流-学生请假流程

    有了上一节的基础,这节主要讲如何创建一个学生请假流程.部署.运行流程实例.查看任务.执行任务.判断流程实例状态.历史任务(实例)查询.历史活动节点查询 记住,一个正在执行的流程,他的流程定义id无论到 ...

  2. activiti 一个流程的运转步骤 以请假流程为例

    ---为了加深对activiti的理解记忆,对自己做的一个流程进行自述.加强记忆 请假实例 一.设计请假的流程图以及流程文件,完善对应数据项,比如用户信息,请假单信息 --请假单 --流程图 --流程 ...

  3. 我的第一个activiti实例 (代码方式) ctiviti入门列子一个简单的activiti请假流程

    转: (activiti入门列子一个简单的activiti请假流程) 我的第一个activiti实例 2017年05月31日 14:29:45 chf_mixueer 阅读数:1223   整个项目的 ...

  4. Springboot 整合Activiti流程设计器 完成一个简单的请假流程

    目录 1.前言 2.准备 3.下载解压 4.开始整合 mysql + activiti + thymeleaf 2.配置文件 3.复制文件 4.加入控制器 5.修改配置文件 6.剔除启动类里面的安全校 ...

  5. Activiti工作流框架学习(二)——使用Activiti提供的API完成流程操作

    可以在项目中加入log4j,将logj4.properties文件拷入到src目录下,这样框架执行的sql就可以输出到到控制台,log4j提供的日志级别有以下几种: Fatal  error  war ...

  6. OA请假流程 -- 编码

    OA请假流程 -- 编码 凡是内容不会发生变化的,都要写在xml配置文件中.需要定义如下内容: <process>标签 id英文命名 和 name 中文命名,然后只要与该流程相关的资源均以 ...

  7. Activiti第二篇【管理流程定义、执行任务和流程实例、流程变量】

    上篇Activiti只是一个快速入门案例,这篇就讲定义.部署.查看任务等等的一些细节[涉及到的数据库表.对象等等]- 管理流程定义 管理流程定义主要涉及到以下的4张表: -- 流程部署相关的表 SEL ...

  8. 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 ...

  9. ccflow_004请假流程-傻瓜表单-经典模式

    ccflow_004请假流程-傻瓜表单-经典模式

随机推荐

  1. Link static data in sql source control

    You can link data that doesn't change very often to SQL Source Control. This lets you commit data ch ...

  2. Hortonworks,快速上手 Hadoop 的套件

    最近我在思考的一件事情:如何帮助团队 SQL 开发快速掌握大数据相关技术呢?面对疯狂暴涨的数据,SQL Server 存储成本越来越高了,日志的增长量也极大超过预期,隔三差五总有空间不足导致的应用异常 ...

  3. Jmeter与BlazeMeter使用 录制导出jmx

    本文链接:https://blog.csdn.net/weixin_38250126/article/details/82629876JMeter 的脚本录制,除了自带的HTTP代理服务器以外,被大家 ...

  4. avro-1.8.1 serialize BigDecimal and Short error fix.

    1. create mysql table like CREATE TABLE `test` ( `a` ) ', `b` ,) DEFAULT NULL, `c` ,) DEFAULT NULL ) ...

  5. python中os.popen, os.system()区别

    直接上个例子吧,注意结果,os.system的结果只是命令执行结果的返回值,执行成功为0: >>> a=os.system('ls') Applications Movies pyt ...

  6. 基于Spark的用户分析系统

    https://blog.csdn.net/ytbigdata/article/details/47154529

  7. 调用API修改Ocelot的配置文件

    Ocelot是一个基于.net core的开源webapi服务网关开源项目,功能比较强大,Github项目地址为:https://github.com/ThreeMammals/Ocelot,关于Oc ...

  8. Spring 分布式事务详解

    在学习分布式事务的过程中会遇到以下关键名词: 相关名词: XA :XA规范的目的是允许多个资源(如数据库,应用服务器,消息队列,等等)在同一事务中访问,这样可以使ACID属性跨越应用程序而保持有效.X ...

  9. [学习笔记] Blender 常用工具栏,选择及游标

    Shift + A 创建物体 选择工具: 默认是框选 shift 鼠标左键 加选, 再次可减选 游标 默认情况下游标在世界中心.创建新物体时,会自动被创建在游标的位置.可以随意改变游标的位置,便于建模 ...

  10. uwp,c#,listView与gridView列表控件进阶

    listView与gridView使用类似,这里讲解gridView的一些数据绑定(x:Bind)基础知识. 顺便学习下如何使用属性通知.(后台中的数据变化会直接显示在UI上,实现动态变化,默认是没有 ...