当前位置 : 主页 > 编程语言 > c++ >

activiti 工具Service类

来源:互联网 收集:自由互联 发布时间:2021-07-03
WorkFlowService.java import java.io.IOException;import java.io.InputStream;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.zip.ZipInputStream;import org.activiti.engine.HistoryService;import org.activiti
WorkFlowService.java
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.zip.ZipInputStream;

import org.activiti.engine.HistoryService;
import org.activiti.engine.IdentityService;
import org.activiti.engine.ManagementService;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.history.HistoricProcessInstance;
import org.activiti.engine.identity.Group;
import org.activiti.engine.identity.User;
import org.activiti.engine.impl.RepositoryServiceImpl;
import org.activiti.engine.impl.persistence.entity.ExecutionEntity;
import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;
import org.activiti.engine.impl.persistence.entity.UserEntity;
import org.activiti.engine.impl.pvm.process.ActivityImpl;
import org.activiti.engine.impl.pvm.process.ProcessDefinitionImpl;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service("workFlowService")
public class WorkFlowService {

	@Autowired
	private RepositoryService repositoryService;
	@Autowired
	private RuntimeService runtimeService;
	@Autowired
	private TaskService taskService;
	@Autowired
	private HistoryService historyService;
	@Autowired
	private ManagementService managementService;
	@Autowired
	private IdentityService identityService;

	/**
	 * 部署流程定义
	 */
	public void deploymentProcessDefinition_inputStream() {
		InputStream inputStreamBpmn = this.getClass().getResourceAsStream(
				"helloworld.bpmn");
		InputStream inputStreamPng = this.getClass().getResourceAsStream(
				"helloworld.png");
		Deployment deployment = repositoryService.createDeployment()
				.name("请假流程")
				.addInputStream("helloworld.bpmn", inputStreamBpmn)
				.addInputStream("helloworld.png", inputStreamPng).deploy();
		System.out.println("部署ID:" + deployment.getId());
		System.out.println("部署名称" + deployment.getName());
	}

	/** 启动流程 */
	public ProcessInstance startProcessInstance(String processDefinitionKey) {
		ProcessInstance pi = runtimeService
				.startProcessInstanceByKey(processDefinitionKey);
		System.out.println("流程实例ID" + pi.getId());// 流程实例ID
		System.out.println("流程定义ID:" + pi.getProcessDefinitionId());// 流程定义ID
		return pi;
	}

	/**
	 * 根据流程实例ID获取历史表的流程定义实体 当流程走完时,要查询流程定义图只能通过在历史表找到历史流程实例对象
	 * 
	 * @param instanceId
	 * @return
	 */
	public HistoricProcessInstance getHistoricActivityInstanceByInstanceId(
			String instanceId) {
		return historyService.createHistoricProcessInstanceQuery()
				.processInstanceId(instanceId).list().get(0);
	}

	/** 查询个人任务 */
	public List
 
   findMyPersonalTask(String assignee) {
		List
  
    list = taskService.createTaskQuery()// 创建查询 .taskAssignee(assignee)// 根据一个人来查询 // .taskCandidateGroup(assignee)根据组来查询 // .taskCandidateUser(candidateUser)//根据多个人来查询 // .processDefinitionId(processDefinitionId) // .processInstanceId(processInstanceId) // .executionId(executionId) .orderByTaskCreateTime().asc()// 根据任务时间升序排序 // .singleResult()// // .count()// // .listPage(firstResult, maxResults);//分页查询 .list();// // if(list!=null && list.size()>0){ // for(Task task:list){ // 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()); // System.out.println("任务当前执行人ID:"+task.getExecutionId()); // System.out.println("任务所属的流程定义ID:"+task.getProcessDefinitionId()); // System.out.println("########################################################"); // } // } return list; } /** * 根据任务ID获取任务实体 * * @param taskId * @return */ public Task getTaskById(String taskId) { Task t = taskService.createTaskQuery().taskId(taskId).singleResult(); return t; } /** * 根据任务ID获取任务集合 * * @param taskId * @return */ public List
   
     getTasksById(String taskId) { List
    
      t = taskService.createTaskQuery().processInstanceId(taskId).list(); return t; } /** * 根据流程实例ID获取任务实体 * * @param taskId * @return */ public Task getTaskByProcessInstanceId(String processInstanceId) { Task t = taskService.createTaskQuery() .processInstanceId(processInstanceId).singleResult(); return t; } /** * 获取流程定义图 * * @param task * @return */ public InputStream getProcessImgByProcessDefinitionId( String processDefinitionId) { ProcessDefinition procDef = repositoryService .createProcessDefinitionQuery() .processDefinitionId(processDefinitionId).singleResult(); String diagramResourceName = procDef.getDiagramResourceName(); InputStream imageStream = repositoryService.getResourceAsStream( procDef.getDeploymentId(), diagramResourceName); return imageStream; } /** * 获取当前活动节点 * * @param task * @return */ public ActivityImpl getActivityImpl(Task task) { ProcessDefinition processDefinition = repositoryService .createProcessDefinitionQuery() .processDefinitionId(task.getProcessDefinitionId()) .singleResult(); ProcessDefinitionImpl pdImpl = (ProcessDefinitionImpl) processDefinition; String processDefinitionId = pdImpl.getId();// 流程定义ID RepositoryServiceImpl repositoryServiceImpl = (RepositoryServiceImpl) repositoryService; ProcessDefinitionEntity def = (ProcessDefinitionEntity) repositoryServiceImpl .getDeployedProcessDefinition(processDefinitionId); List
     
       activitiList = def.getActivities();// 获取当前活动节点 ActivityImpl actImpl = null; ExecutionEntity execution = null; if (task.getExecutionId() != null) { execution = (ExecutionEntity) runtimeService.createExecutionQuery() .executionId(task.getExecutionId()).singleResult();// 获取唯一记录 } // endevent1 if (execution == null) { for (ActivityImpl activityImpl : activitiList) { if (activityImpl.getId().equals("endevent1")) { actImpl = activityImpl; break; } } } else { String activitiId = execution.getActivityId();// 获取活动节点的ID for (ActivityImpl activityImpl : activitiList) { String id = activityImpl.getId(); if (id.equals(activitiId)) {// 循环遍历流程定义图,如果活动节点的id==遍历节点的id,此节点就是活动节点,获取的相关的坐标等信息。 actImpl = activityImpl; break; } } } return actImpl; } /** * 获取结束节点 * * @param task * @return */ public ActivityImpl getEndNode(String processDefinitionId) { RepositoryServiceImpl repositoryServiceImpl = (RepositoryServiceImpl) repositoryService; ProcessDefinitionEntity def = (ProcessDefinitionEntity) repositoryServiceImpl .getDeployedProcessDefinition(processDefinitionId); List
      
        activitiList = def.getActivities();// 获取当前活动节点 ActivityImpl actImpl = null; for (ActivityImpl activityImpl : activitiList) { if (activityImpl.getId().equals("endevent1")) { actImpl = activityImpl; break; } } return actImpl; } /** 办结任务 */ public void completeMyPersonalTask(String taskId) { // String taskId = "1204"; taskService.complete(taskId); System.out.println("办结任务:" + taskId); } /** 办结任务 */ public void completeMyPersonalTaskMap(String taskId, Map
       
         map) { // String taskId = "1204"; taskService.complete(taskId, map); System.out.println("办结任务:" + taskId); } /** * 获取用户所在组的任务集合 */ public List
        
          getTaskListByUserId(String userId) { List
         
           tasks = null; if (userId.equals("1") || userId.equals("2") || userId.equals("3") || userId.equals("4")) { tasks = taskService.createTaskQuery().taskCandidateUser(userId) .orderByTaskCreateTime().desc().list();// 用户所在组的任务 } else if (userId.equals("5")) { tasks = taskService.createTaskQuery().taskCandidateGroup("zuzhang") .orderByTaskCreateTime().desc().list();// 用户所在组的任务 } else if (userId.equals("6")) { tasks = taskService.createTaskQuery() .taskCandidateGroup("bumenjingli").orderByTaskCreateTime() .desc().list();// 用户所在组的任务 } else if (userId.equals("7")) { tasks = taskService.createTaskQuery() .taskCandidateGroup("zongjinli").orderByTaskCreateTime() .desc().list();// 用户所在组的任务 } return tasks; } /** * 新增用户组 */ public void newGroup() { // newGroup(组id) Group group = identityService.newGroup("testGroup"); group.setName(group.getId().toUpperCase()); group.setType("assignment"); identityService.saveGroup(group); } /** * 新增用户 */ public void newUser() { // newUser(用户id); User u = identityService.newUser("testUser"); u.setEmail("xxx@qq.com"); u.setFirstName(u.getId().toUpperCase()); u.setLastName(u.getId().toUpperCase()); u.setPassword("123456"); identityService.saveUser(u); } public UserEntity getUserById(String userId) { return (UserEntity) identityService.createUserQuery().userId(userId) .singleResult(); } /** * 新增用户组与用户关系 */ public void createMembership() { // createMembership(用户id,组id) identityService.createMembership("testUser", "testGroup"); } /** * 根据人id获取此人唯一组对象信息 * * @param userId * @return */ public Group getGroupByUserId(String userId) { Group group = identityService.createGroupQuery().groupMember(userId) .singleResult(); // 获取唯一一个组信息 return group; } /** * 根据人id获取此人组集合对象信息 * * @param userId * @return */ public List
          
            findGroupByUserId(String userId) { List
           
             list = identityService.createGroupQuery() .groupMember(userId).list();// 获取组集合 return list; } /** * 部署流程 * * @param request * @param response * @throws ServletException * @throws IOException */ public void deployProcDefForZip() { String zip = "com/s2sh/diagrams/leave.zip"; ZipInputStream inputStream = null; try { inputStream = new ZipInputStream( ClassLoader.getSystemResourceAsStream(zip)); System.out.println(inputStream); } catch (Exception e) { e.printStackTrace(); } repositoryService.createDeployment().name("请假流程定义部署")// act_re_deployment.NAME .addZipInputStream(inputStream).deploy(); } /** * 删除流程定义 */ public void deleteProcDef() { String key = ""; List
            
              procDefList = repositoryService .createProcessDefinitionQuery().processDefinitionKey(key)// 获得指定流程的工作流 .orderByProcessDefinitionVersion().desc().list(); for (ProcessDefinition proceDefinition : procDefList) { repositoryService.deleteDeployment( proceDefinition.getDeploymentId(), true); } } /** * 根据角色来办结任务 * * @param userId * @return */ public void operateTaskForGroupId(String userId) { String taskId = "154"; String day = "2"; String operate = ""; Group group = identityService.createGroupQuery().groupMember(userId) .singleResult(); if (group.getId().equals("leave_group")) { Map
             
               variables = new HashMap
              
               (); variables.put("day", day); taskService.complete(taskId, variables);// 执行通过 有参 } else if (group.getId().equals("dept_check_group")) { Map
               
                 variables = new HashMap
                
                 (); if (operate.equals("1")) { variables.put("iscorrect", true);// 通过 } else if (operate.equals("0")) { variables.put("iscorrect", false);// 驳回 } taskService.complete(taskId, variables);// 执行 有参 } else if (group.getId().equals("boss_check_group")) { // 标识完成任务在该节点的操作 Map
                 
                   variables = new HashMap
                  
                   (); if (operate.equals("1")) { variables.put("iscorrect", true);// 通过 } else if (operate.equals("0")) { variables.put("iscorrect", false);// 驳回 } taskService.complete(taskId, variables);// 执行 有参 } } }
                  
                 
                
               
              
             
            
           
          
         
        
       
      
     
    
   
  
 
网友评论