Activiti流程实例(学生请假流程)


import static org.junit.Assert.*;

import java.util.List;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.history.HistoricActivityInstance;
import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.activiti.engine.task.TaskQuery;
import org.junit.Test;

public class StudentLeaveProcess {
    //获取流程引擎
    private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
    
    //① 部署流程定义
    @Test
    public void deployProcess(){
        Deployment deployment = processEngine.getRepositoryService()
                     .createDeployment()
                     .addClasspathResource("diagrams/StudentLeaveProcess.bpmn")
                     .addClasspathResource("diagrams/StudentLeaveProcess.png")
                     .name("学生请假流程")
                     .deploy();  
        System.out.println("流程部署名称:"+deployment.getName());
        System.out.println("流程部署Id:"+deployment.getId());
        System.out.println("流程部署时间:"+deployment.getDeploymentTime());
    }
    
    //② 启动流程
    @Test
    public void startProcess(){
        String processDefinitionKey = "studentLeaveProcess";
        ProcessInstance pi = processEngine.getRuntimeService()
                     .startProcessInstanceByKey(processDefinitionKey);
        System.out.println("流程名称:"+pi.getName());
        System.out.println("流程实例Id"+pi.getId());
                    
    }
    
    //③ 查看任务执行结果
    @Test
    public void queryTask(){
        List<Task> tasks = processEngine.getTaskService()
                     .createTaskQuery()
                     .taskAssignee("王五")
                     .list();
        for(Task task : tasks){
            System.out.println("任务执行人:"+task.getAssignee());
            System.out.println("任务名称:"+task.getName());
            System.out.println("任务创建时间:"+task.getCreateTime());
            System.out.println("任务ID:"+task.getId());
            System.out.println("流程实例ID:"+task.getExecutionId());
        }
    }
    
    //④ 完成任务
    @Test
    public void completeTask(){
        processEngine.getTaskService()
                     .complete("35002");
    }
    
    //⑤ 判断流程实例的状态(运行状态\运行完毕)  因为当流程运行完毕之后运行时表中的数据全部清空  只要查看是否为空就可判断
    @Test
    public void processState(){
        String processInstanceId = "30001";
        ProcessInstance pi = processEngine.getRuntimeService()  //获取运行是service
                     .createProcessInstanceQuery()  //创建流程实例对象  
                     .processInstanceId(processInstanceId) //用流程实例Id查询
                     .singleResult();
        if(pi!=null){
            System.out.println("流程正在执行");
        }else{
            System.out.println("流程已经执行完毕");
        }
    }
    
    //⑥  历史任务查询   操作的表为历史任务表   查询在具体的时间干了什么
    @Test
    public void historyTaskQuery(){
        String processInstanceId = "30001";
        List<HistoricTaskInstance> list = processEngine.getHistoryService()  //历史相关servcie
                      .createHistoricTaskInstanceQuery()  //创建历史任务查询
                      .processInstanceId(processInstanceId)  //用流程实例ID查询
                      .finished()  //查询已经完成的任务
                       .list();
        for(HistoricTaskInstance hti:list){
            System.out.println("执行人:"+hti.getAssignee());
            System.out.println("完成的任务ID:"+hti.getId());
            System.out.println("开始时间:"+hti.getStartTime());
            System.out.println("完成时间:"+hti.getEndTime());
            System.out.println("流程实例ID:"+hti.getProcessInstanceId());
            System.out.println("任务名称:"+hti.getName());
            System.out.println("==================================");
        }
    }
    
    //⑦ 历史活动查询  与上面所不同的是包含start和end节点  在项目中使用较多   操作的表为历史节点表
    @Test
    public void historyActInstanceQuery(){
        String processInstanceId = "30001";
        List<HistoricActivityInstance> list = processEngine.getHistoryService()   //历史相关的Service
                     .createHistoricActivityInstanceQuery()  //创建历史活动实例查询
                     .processInstanceId(processInstanceId)  //指定流程实例
                     .finished()
                     .list();
        for(HistoricActivityInstance hai : list){
            System.out.println("执行人:"+hai.getAssignee());
            System.out.println("活动ID:"+hai.getId());
            System.out.println("开始时间:"+hai.getStartTime());
            System.out.println("完成时间:"+hai.getEndTime());
            System.out.println("流程实例ID:"+hai.getProcessInstanceId());
            System.out.println("活动名称:"+hai.getActivityName());
            System.out.println("==================================");
        }
    
    }
    
}

转载于:https://www.cnblogs.com/blog12345/p/6972673.html

【资源说明】 1、基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 4、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip 基于Activiti工作引擎+springboot框架的学院师生请假系统源码.zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值