博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(六)Activiti之实现学生请假流程
阅读量:6488 次
发布时间:2019-06-24

本文共 4129 字,大约阅读时间需要 13 分钟。

一、实现学生请假流程

  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
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
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
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开头的表)数据修改 或者增加了数据

 

转载于:https://www.cnblogs.com/shyroke/p/7994688.html

你可能感兴趣的文章
FZU 2102 Solve equation 多进制计算
查看>>
NPM
查看>>
7.30二分及三分(组队的)
查看>>
期望问题(转)
查看>>
关于自带的sql developer修改java.exe版本的解决办法
查看>>
1.四则运算题目自动生成程序
查看>>
爬虫(总目录)
查看>>
《弹出提示》UIAlertView 弹出提示
查看>>
消息队列rabbitmq rabbitMQ安装
查看>>
sharepoint 2010 容量边界
查看>>
Webbrowser指定IE内核版本(更改注册表)
查看>>
java电力巡检项目讲解,电力巡检-东软平台产品官网
查看>>
MongoDB实战(9)Replica Sets 副本集(上)
查看>>
Elasticsearch启动分析与问题解决-bootstrap checks
查看>>
RHEL6.3配置FTP服务器(3) 虚拟用户下载和上传
查看>>
linux环境下给python添加tab自动补齐
查看>>
Linux内存监控与调优
查看>>
TF-IDF算法简介
查看>>
韩寒的经典格言有哪些?
查看>>
nginx的安装与配置小结
查看>>