activiti之3种组任务分配(个人任务和组任务相互转换 添加和删除组任务成员)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/panhaigang123/article/details/85451806

第一种

    组员直接写死

package cn.et.two.zfprw;


import java.io.InputStream;
import java.util.List;

import org.activiti.engine.HistoryService;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.TaskService;
import org.activiti.engine.history.HistoricIdentityLink;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.IdentityLink;
import org.activiti.engine.task.Task;
import org.junit.Test;


public class Zrwfp {
	// 流程引擎对象
		ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
	 
		/**部署流程定义+启动流程实例:3905*/
		@Test
		public void deployementAndStartProcess() {
			//1.发布流程
			InputStream inputStreamBpmn = this.getClass().getResourceAsStream(
					"zfprw.bpmn");
			InputStream inputStreamPng = this.getClass().getResourceAsStream(
					"zfprw.png");
			processEngine.getRepositoryService()//
					.createDeployment()//
					.addInputStream("zfprw.bpmn", inputStreamBpmn)//
					.addInputStream("zfprw.png", inputStreamPng)//
					.deploy();
			//2.启动流程
			ProcessInstance pi = processEngine.getRuntimeService()//
					.startProcessInstanceByKey("Myzrwfp");
			System.out.println("pid:" + pi.getId());
	 
		}
	 
		/**查询我的个人任务,没有执行结果*/
		@Test
		public void findPersonalTaskList() {
			// 任务办理人
			String assignee = "小三";
			List<Task> list = processEngine.getTaskService()//
					.createTaskQuery()//
					.taskAssignee(assignee)// 个人任务的查询
					.list();
			if (list != null && list.size() > 0) {
				for (Task task : list) {
					System.out.println("任务ID:" + task.getId());
					System.out.println("任务的办理人:" + task.getAssignee());
					System.out.println("任务名称:" + task.getName());
					System.out.println("任务的创建时间:" + task.getCreateTime());
					System.out.println("流程实例ID:" + task.getProcessInstanceId());
					System.out.println("#######################################");
				}
			}
		}
	 
		/**查询组任务*/
		@Test
		public void findGroupTaskList() {
			// 任务办理人
			String candidateUser = "小三";
			List<Task> list = processEngine.getTaskService()//
					.createTaskQuery()//
					.taskCandidateUser(candidateUser)// 参与者,组任务查询
					.list();
			if (list != null && list.size() > 0) {
				for (Task task : list) {
					System.out.println("任务ID:" + task.getId());
					System.out.println("任务的办理人:" + task.getAssignee());
					System.out.println("任务名称:" + task.getName());
					System.out.println("任务的创建时间:" + task.getCreateTime());
					System.out.println("流程实例ID:" + task.getProcessInstanceId());
					System.out.println("#######################################");
				}
			}
		}
	 
		/**完成任务*/
		@Test
		public void completeTask() {
			// 任务ID
			String taskId = "137508";
			processEngine.getTaskService()//
					.complete(taskId);
			System.out.println("完成任务:" + taskId);
		}
		
		/**查询正在执行的任务办理任表  */
		@Test
		public void findRunPersonTask(){
			//任务id
			String taskId="xxxx";
			TaskService taskService = processEngine.getTaskService();
			List<IdentityLink> identityLinksForTask = taskService.getIdentityLinksForTask(taskId);
			if(identityLinksForTask!=null&&identityLinksForTask.size()>0){
				for(IdentityLink i:identityLinksForTask){
					System.out.println(i.getTaskId()+"  "+i.getType());
				}
			}
		}
		
		/**查询历史任务的办理人 */
		public void findHistoryPersonTadk(){
			//流程实例id
			String processInstanceId="xxx";
			HistoryService historyService = processEngine.getHistoryService();
			List<HistoricIdentityLink> hi = historyService.getHistoricIdentityLinksForProcessInstance(processInstanceId);
			if(hi!=null&&hi.size()>0){
				for(HistoricIdentityLink his:hi){
					System.out.println(his.getTaskId());
				}
			}
		}
		
		
		
		
		/**查询正在执行的组任务列表*/
		@Test
		public void findGroupCandidate() {
			// 任务ID
			String taskId = "137508";
			List<IdentityLink> list = processEngine.getTaskService()//
					.getIdentityLinksForTask(taskId);
			if (list != null && list.size() > 0) {
				for (IdentityLink identityLink : list) {
					System.out.println("任务ID:" + identityLink.getTaskId());
					System.out.println("流程实例ID:"
							+ identityLink.getProcessInstanceId());
					System.out.println("用户ID:" + identityLink.getUserId());
					System.out.println("工作流角色ID:" + identityLink.getGroupId());
					System.out.println("#########################################");
				}
			}
		}
	 
		/**查询历史的组任务列表*/
		@Test
		public void findHistoryGroupCandidate() {
			// 流程实例ID
			String processInstanceId = "137505";
			List<HistoricIdentityLink> list = processEngine.getHistoryService()
					.getHistoricIdentityLinksForProcessInstance(processInstanceId);
			if (list != null && list.size() > 0) {
				for (HistoricIdentityLink identityLink : list) {
					System.out.println("任务ID:" + identityLink.getTaskId());
					System.out.println("流程实例ID:"
							+ identityLink.getProcessInstanceId());
					System.out.println("用户ID:" + identityLink.getUserId());
					System.out.println("工作流角色ID:" + identityLink.getGroupId());
					System.out.println("#########################################");
				}
			}
		}
        
        /**
		 * 将组任务装换成个人任务
		 */
		@Test
		public void claim(){
			//指定任务id
			String taskId="xxxx";
			//指定分配的任
			String userId="李晨";
			TaskService taskService = processEngine.getTaskService();
			taskService.claim(taskId, userId);
		}
		
		/**
		 * 将给人任务回退到组任务  之前这个任务一定是个组任务
		 */
		@Test
		public void setAssigee(){
			//任务id
			String taskId="xxx";
			TaskService taskService = processEngine.getTaskService();
			taskService.setAssignee(taskId, null);
			/**
			 * //指定办理任为空  不是组任务就是没有指定办理人  
			 *  此前这个任务已经是个组任务 所以指定null 会回退为组任务
			 */
		}

        /**向组任务中添加成员*/
	@Test
	public void addGroupUser(){
		//任务ID
		String taskId = "xxx";
		//新增组任务的成员
		String userId = "如来";
		processEngine.getTaskService()//
					.addCandidateUser(taskId, userId);
	}
	
	/**向组任务中删除成员*/
	@Test
	public void deleteGroupUser(){
		//任务ID
		String taskId = "xxx";
		//新增组任务的成员
		String userId = "猪八戒";
		processEngine.getTaskService()//
					.deleteCandidateUser(taskId, userId);
	}


}

后面两种可以按照个人任务的方式来  https://blog.csdn.net/panhaigang123/article/details/85028819

    

猜你喜欢

转载自blog.csdn.net/panhaigang123/article/details/85451806