【Activity学习五】--基于SSM整合Activiti之请假流程实现(二)

1、部署流程资源

2、查询流程定义信息

3、发布请假流程

4、查询用户任务

5、提出请假

6、老板查看请假任务

7、老板批准请假

8、查看整个请假流程

 

1、部署流程资源

 

部署流程资源有很多中方式,一次加载一个流程资源:

【Activity学习五】--基于SSM整合Activiti之请假流程实现(二)_用户任务

/**
 * ClassName: ActivitiTest 
 * @Description: TODO
 * @author chisj chisj@foxmail.com
 * @date 2018年4月8日
 */
public class ActivitiTest {

	ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
	
	/**
	 * 发布流程
	 */
	@Test
	public void deloy() {

		RepositoryService repositoryService = processEngine.getRepositoryService();
	    Deployment deployment = repositoryService.createDeployment()
	            .addClasspathResource("activiti/leave.bpmn")
	            .addClasspathResource("activiti/leave.png")
	            .deploy();
	    
	    System.out.println("部署Id:" + deployment.getId());
	    System.out.println("部署时间:" + deployment.getDeploymentTime());
	}
}

 

运行结果:

【Activity学习五】--基于SSM整合Activiti之请假流程实现(二)_启动流程_02

数据库变化:

 

act_ge_bytearray:通用的流程定义和流程资源

【Activity学习五】--基于SSM整合Activiti之请假流程实现(二)_启动流程_03

 

act_re_deployment:部署单元信息

【Activity学习五】--基于SSM整合Activiti之请假流程实现(二)_启动流程_04

 

act_re_procdef:已部署的流程定义

【Activity学习五】--基于SSM整合Activiti之请假流程实现(二)_新版本_05

 

2、查询流程定义信息

【Activity学习五】--基于SSM整合Activiti之请假流程实现(二)_启动流程_06

        /**
	 * 查询流程定义信息
	 */
	@Test
	public void queryProcdef(){  
	    RepositoryService repositoryService = processEngine.getRepositoryService();  
	    //创建查询对象  
	    ProcessDefinitionQuery query = repositoryService.createProcessDefinitionQuery();  
	    //添加查询条件  
	    query.processDefinitionKey("leave");//通过key获取  
	        // .processDefinitionName("My process")//通过name获取  
	        // .orderByProcessDefinitionId()//根据ID排序  
	    //执行查询获取流程定义明细  
	    List<ProcessDefinition> pds = query.list();  
	    
	    for (ProcessDefinition pd : pds) {  
	        System.out.println("ID:"+pd.getId()
	        		+",NAME:"+pd.getName()
	        		+",KEY:"+pd.getKey()
	        		+",VERSION:"+pd.getVersion()
	        		+",RESOURCE_NAME:"+pd.getResourceName()
	        		+",DGRM_RESOURCE_NAME:"+pd.getDiagramResourceName());  
	    }  
	}

 

 

运行结果:

【Activity学习五】--基于SSM整合Activiti之请假流程实现(二)_启动流程_07

 

这里的KeyName是画流程图时在流程属性里面定义的:

【Activity学习五】--基于SSM整合Activiti之请假流程实现(二)_数据_08

 

3、发布请假流程

【Activity学习五】--基于SSM整合Activiti之请假流程实现(二)_新版本_09

        /**
	 * 启动流程
	 */
	@Test
	public void startFlow() {
		
		RuntimeService runtimeService = processEngine.getRuntimeService();  
        /** 
         * 启动请假单流程  并获取流程实例 
         * 因为该请假单流程可以会启动多个所以每启动一个请假单流程都会在数据库中插入一条新版本的流程数据 
         * 通过key启动的流程就是当前key下最新版本的流程 
         *  
         */  
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("leave");  
        System.out.println("id:"+processInstance.getId()
        		+",activitiId:"+processInstance.getActivityId());
		
	}

 

 

运行结果:

【Activity学习五】--基于SSM整合Activiti之请假流程实现(二)_启动流程_10

数据库变化:

 

act_ru_task:运行时变量表

【Activity学习五】--基于SSM整合Activiti之请假流程实现(二)_新版本_11

 

act_ru_execution:运行时流程执行实例

【Activity学习五】--基于SSM整合Activiti之请假流程实现(二)_新版本_12

 

act_hi_identitylink:运行时用户关系实例

【Activity学习五】--基于SSM整合Activiti之请假流程实现(二)_新版本_13

 

4、查询用户任务

【Activity学习五】--基于SSM整合Activiti之请假流程实现(二)_用户任务_14

        /**
	 * 查看任务
	 */
	@Test
	public void quertTask() {
		//获取任务服务对象  
	    TaskService taskService = processEngine.getTaskService();  
	    //根据接受人获取该用户的任务  
	    List<Task> tasks = taskService.createTaskQuery()  
	                                .taskAssignee("emp")  
	                                .list();  
	    for (Task task : tasks) {  
	        System.out.println("ID:"+task.getId()
	        		+",姓名:"+task.getName()
	        		+",接收人:"+task.getAssignee()
	        		+",开始时间:"+task.getCreateTime());
	    }
	}

 

运行结果:

【Activity学习五】--基于SSM整合Activiti之请假流程实现(二)_数据库_15

 

5、提出请假

【Activity学习五】--基于SSM整合Activiti之请假流程实现(二)_数据库_16

        /**
	 * 提出请假,启动流程
	 */
	@Test
	public void startTask() {
		TaskService taskService = processEngine.getTaskService();  
	    //taskId 就是查询任务中的 ID  
	    String taskId = "2504";  
	    //完成请假申请任务  
	    taskService.complete(taskId ); 
	}

 

6、老板查看请假任务

【Activity学习五】--基于SSM整合Activiti之请假流程实现(二)_数据库_17

 

查询结果:

【Activity学习五】--基于SSM整合Activiti之请假流程实现(二)_数据库_18

 

7、老板批准请假

【Activity学习五】--基于SSM整合Activiti之请假流程实现(二)_启动流程_19

 

8、查看整个请假流程

 

在act_hi_actinst中查看:

【Activity学习五】--基于SSM整合Activiti之请假流程实现(二)_启动流程_20