ワークフローactiviti常用方法

45418 ワード

最近パッケージ化されたワークフローの一般的な方法をまとめてみます。
業務表とワークフローをリンクする方法は、ワークフローの表に業務表の一意の標識を保存して、これで関連ができます。
常用方法:
package com.fencer.activiti.util;

import com.fencer.common.base.AjaxResult;
import org.activiti.engine.*;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.history.*;
import org.activiti.engine.impl.RepositoryServiceImpl;
import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;
import org.activiti.engine.impl.pvm.PvmActivity;
import org.activiti.engine.impl.pvm.PvmTransition;
import org.activiti.engine.impl.pvm.process.ActivityImpl;
import org.activiti.engine.impl.pvm.process.ProcessDefinitionImpl;
import org.activiti.engine.impl.pvm.process.TransitionImpl;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.IdentityLink;
import org.activiti.engine.task.Task;
import org.activiti.engine.task.TaskQuery;
import org.apache.commons.lang3.StringUtils;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.annotation.Resource;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.*;
import java.util.zip.ZipInputStream;


/**
 *    :        
 *
 * @author :carry
 * @version: 1.0  CreatedDate in  2019 06 24 
 * 

* : */ public class ActivitiUtil { private static ProcessEngine processEngine; static { // processEngine = ProcessEngines.getDefaultProcessEngine(); } private static ActivitiUtil activitiUtil = null; private ActivitiUtil() { } public static ActivitiUtil getInstance() { // , if (activitiUtil == null) { synchronized (ActivitiUtil.class) { if (activitiUtil == null) activitiUtil = new ActivitiUtil(); return activitiUtil; } } return activitiUtil; } /** * @ : , key, ( ) * user ( ) assigneeOrGroup 、 0 1 * @return: String businessKeys * @Author: carry */ public String historyTaskList(String user, String assigneeOrGroup) { String businessKeys = ""; StringBuffer sbProcessId = new StringBuffer(""); Set processInstanceIds = new HashSet(); List list = null; HistoricTaskInstanceQuery historicTaskInstanceQuery = ProcessEngines.getDefaultProcessEngine().getHistoryService() // Service .createHistoricTaskInstanceQuery(); // if ("0".equals(assigneeOrGroup)) { list = historicTaskInstanceQuery .taskAssignee(user) // .finished() // .list(); } else { list = historicTaskInstanceQuery .taskCandidateUser(user) // .finished() // .list(); } for (HistoricTaskInstance t : list) { String processId = t.getProcessInstanceId(); sbProcessId.append(processId).append(":"); if (!processInstanceIds.contains(processId)) { processInstanceIds.add(processId); } } StringBuffer sbProcess = new StringBuffer(""); // , key List historicProcessInstancelist = ProcessEngines.getDefaultProcessEngine().getHistoryService() .createHistoricProcessInstanceQuery() .processInstanceIds(processInstanceIds) .orderByProcessInstanceId().desc().list(); for (HistoricProcessInstance p : historicProcessInstancelist) { // String instanceId = p.getSuperProcessInstanceId(); String bizKey = p.getBusinessKey().split(":")[1]; sbProcess.append(bizKey).append(","); } businessKeys = sbProcess.toString().substring(0, sbProcess.length() - 1).toString(); return businessKeys; } /** * @ : * deploymentName bpmnName bpmn pngName png * @return: void * @Author: carry */ public void deployeProcess(String deploymentName, String bpmnName, String pngName) throws Exception { // 。 // ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); // addClasspathResource , processEngine.getRepositoryService() .createDeployment() .name(deploymentName)// , .addClasspathResource("templates/"+bpmnName)// .addClasspathResource("templates/"+pngName)// .deploy();// } /** * @ : * @return: void * @Author: carry */ public void deployeProcess(File file, String processName) throws IOException { InputStream inputStream = new FileInputStream(file); ZipInputStream zipInputStream = new ZipInputStream(inputStream); this.processEngine.getRepositoryService() .createDeployment() .name(processName) .addZipInputStream(zipInputStream) .deploy(); } /** * @ : * @return: void * @Author: carry */ public void deplyoProcessByInputSterm(InputStream io, String processName) { ZipInputStream zipInputStream = new ZipInputStream(io); this.processEngine.getRepositoryService() .createDeployment() .name(processName) .addZipInputStream(zipInputStream) .deploy(); } /** * @ : key * key key businessId id executeStr ( ) userId ( ) * @return: String id * @Author: carry */ public String startProcessInstanceByKey(String key, String businessId, String executeStr, String userId) throws Exception { // key, bean , , waterPlanProcess String objId = key + ":" + businessId;// Map vars = new HashMap(); // , userid vars.put(executeStr, userId);// vars.put("objId", objId);// ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); // act_ru_execution BUSINESS_KEY , variables( act ) ProcessInstance processInstance = processEngine.getRuntimeService() .startProcessInstanceByKey(key, objId, vars); // , return processInstance.getId(); } /** * @ : * @return: List * @Author: carry */ public List findPersonalTask(String assignee) throws Exception { List list = this.findTask(assignee, "0"); return list; } /** * @ : * @return: List * @Author: carry */ public List findMyGroupTask(String assignee) throws Exception { List list = this.findTask(assignee, "1"); return list; } /** * @ : * assignee flag 、 0 1 * @return: List * @Author: carry */ public List findTask(String assignee, String flag) throws Exception { List list = new ArrayList(); List tasks = null; ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); TaskService taskService = ProcessEngines.getDefaultProcessEngine().getTaskService(); TaskQuery taskQuery = processEngine.getTaskService() .createTaskQuery(); if ("0".equals(flag)) { tasks = taskQuery.taskAssignee(assignee)// .list(); } else { tasks = taskQuery.taskCandidateUser(assignee)// .list(); } for (Task task : tasks) { // , String objId = (String) taskService.getVariable(task.getId(), "objId"); if (StringUtils.isNotBlank(objId)) { String planApplyId = objId.split(":")[1]; list.add(planApplyId); } } return list; } /** * @ : * taskId id userId nextUserMark * @return: void * @Author: carry */ public void complete(String taskId, String userId, String nextUserMark) throws Exception { Map variables = new HashMap(); ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); // , , if (StringUtils.isNotBlank(userId)) { variables.put(nextUserMark, userId); processEngine.getTaskService() .complete(taskId, variables); // act_ru_task } else { processEngine.getTaskService() .complete(taskId); // act_ru_task } } /** * * , , , , ,act_hi_actinst * */ public List historyActInstanceList(String instanceId) throws Exception { List list = processEngine.getHistoryService() // Service .createHistoricActivityInstanceQuery() // .processInstanceId(instanceId) // id .finished() // .list(); return list; } /** * @ : * taskId id * @return: void * @Author: carry */ public List findRunPersonTask(String taskId) throws Exception { List list = ProcessEngines.getDefaultProcessEngine().getTaskService() .getIdentityLinksForTask(taskId); if (list != null && list.size() > 0) { for (IdentityLink identityLink : list) { System.out.println(identityLink.getTaskId() + " " + identityLink.getType() + " " + identityLink.getProcessInstanceId() + " " + identityLink.getUserId()); } } return list; } /** * @ : * processInstanceId id * @return: List * @Author: carry */ public List findHistoryPersonTask(String processInstanceId) throws Exception { List list = ProcessEngines.getDefaultProcessEngine().getHistoryService() .getHistoricIdentityLinksForProcessInstance(processInstanceId); if (list != null && list.size() > 0) { for (HistoricIdentityLink identityLink : list) { System.out.println(identityLink.getTaskId() + " " + identityLink.getType() + " " + identityLink.getProcessInstanceId() + " " + identityLink.getUserId()); } } return list; } /** * @ : * userId taskId id * @return: void * @Author: carry */ public void claim(String userId, String taskId) throws Exception{ // ProcessEngines.getDefaultProcessEngine().getTaskService() .claim(taskId, userId); } /** * @ : * @return: void * @Author: carry */ public void setAssignee(String taskId) { ProcessEngines.getDefaultProcessEngine().getTaskService() .setAssignee(taskId, null); } /** * @ : * @return: void * @Author: carry */ public void addGroupUser(String taskId, String userId) { ProcessEngines.getDefaultProcessEngine().getTaskService() .addCandidateUser(taskId, userId); } /** * @ : * @return: void * @Author: carry */ public void deleteGroupUser(String taskId, String userId) { ProcessEngines.getDefaultProcessEngine().getTaskService() .deleteCandidateUser(taskId, userId); } /** * @ : , id * @return: java.util.List * @Author: carry */ public List getAllDeplyoment() { List List = this.processEngine.getRepositoryService() .createDeploymentQuery() .orderByDeploymenTime() .desc() .list(); return List; } /** * @ : * @return: java.util.List * @Author: carry */ public List getAllProcessInstance() { return this.processEngine.getRepositoryService() .createProcessDefinitionQuery() .orderByProcessDefinitionVersion() .desc() .list(); } /** * @ : ID, * @return: void * @Author: carry */ public void deleteDeplyomentByPID(String deplyomenId) { this.processEngine.getRepositoryService() .deleteDeployment(deplyomenId, true); } /** * @ : * @return: java.io.InputStream * @Author: carry */ public InputStream lookProcessPicture(String pid) { return this.processEngine.getRepositoryService() .getProcessDiagram(pid); } /** * @ : * @return: void * @Author: carry */ public void startProceesInstance() { } /** * @ : TaskId, * @return: org.activiti.engine.impl.pvm.process.ActivityImpl * @Author: carry */ public ActivityImpl getActivityImplByTaskId(String taskId) { // Task task = this.getTaskByTaskId(taskId); // , ProcessInstance processInstance = this.getProcessInstanceByTask(task); // , ProcessDefinitionEntity processDefinitionEntity = this.getProcessDefinitionEntityByTask(task); // , , activiti ID, acitviImp ActivityImpl activity = processDefinitionEntity.findActivity(processInstance.getActivityId()); return activity; } /** * @ : taskId, * * , null * * * * boolean * @return: org.activiti.engine.runtime.ProcessInstance * @Author: carry */ public ProcessInstance isFinishProcessInstancs(String taskId) { //1, taskid, Task task = getTaskByTaskId(taskId); //2: finishCurrentTaskByTaskId(taskId); //3: ProcessInstance processInstance = getProcessInstanceByTask(task); return processInstance; } /** * @ : * @return: java.util.List * @Author: carry */ public List getCurrentActivitiImplPvm(ActivityImpl activity) { List outgoingTransitions = activity.getOutgoingTransitions(); return outgoingTransitions; } /** * @ : taskId task * @return: org.activiti.engine.task.Task * @Author: carry */ public Task getTaskByTaskId(String taskId) { // Task task = this.processEngine.getTaskService() .createTaskQuery() .taskId(taskId) .singleResult(); return task; } /** * @ : Task ID, * @return: org.activiti.engine.runtime.ProcessInstance * @Author: carry */ public ProcessInstance getProcessInstanceByTask(Task task) { // ProcessInstance processInstance = this.processEngine.getRuntimeService() .createProcessInstanceQuery() .processInstanceId(task.getProcessInstanceId()) .singleResult(); return processInstance; } /** * @ : Task * @return: org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity * @Author: carry */ public ProcessDefinitionEntity getProcessDefinitionEntityByTask(Task task) { ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) this.processEngine.getRepositoryService() .getProcessDefinition(task.getProcessDefinitionId()); return processDefinitionEntity; } /** * @ : taskId businesskey, activiti * @return: java.lang.String * @Author: carry */ public String getBusinessKeyByTaskId(String taskId) { Task task = this.getTaskByTaskId(taskId); ProcessInstance processInstance = this.getProcessInstanceByTask(task); // return processInstance.getBusinessKey(); } /** * @ : taskId, * @return: void * @Author: carry */ public void finishCurrentTaskByTaskId(String taskId) { this.processEngine.getTaskService().complete(taskId); } /** * @ : , * @return: void * @Author: carry */ public void finishCurrentTaskByTaskId(String taskId, Object object) { Map map = new HashMap<>(); map.put("assigeUser", object); this.processEngine.getTaskService().complete(taskId, map); } /** * @ : * @return: void * @Author: carry */ public void reject(String taskId) { ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); TaskService taskService = processEngine.getTaskService(); HistoryService historyService = processEngine.getHistoryService(); RuntimeService runtimeService = processEngine.getRuntimeService(); RepositoryService repositoryService = processEngine.getRepositoryService(); //String taskId = "120002";// taskid Map variables = new HashMap<>(); // HistoricTaskInstance currTask = historyService.createHistoricTaskInstanceQuery() .taskId(taskId) .singleResult(); // ProcessInstance processInstance = runtimeService.createProcessInstanceQuery() .processInstanceId(currTask.getProcessInstanceId()) .singleResult(); // ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService) .getDeployedProcessDefinition(currTask.getProcessDefinitionId()); if (processDefinitionEntity == null) { System.out.println(" 。"); } // activity ActivityImpl currActivity = ((ProcessDefinitionImpl) processDefinitionEntity) .findActivity(currTask.getTaskDefinitionKey()); // List histTransitionList = currActivity .getIncomingTransitions(); // List originPvmTransitionList = new ArrayList(); List pvmTransitionList = currActivity.getOutgoingTransitions(); for (PvmTransition pvmTransition : pvmTransitionList) { originPvmTransitionList.add(pvmTransition); } pvmTransitionList.clear(); // user task List historicActivityInstances = historyService .createHistoricActivityInstanceQuery().activityType("userTask") .processInstanceId(processInstance.getId()) .finished() .orderByHistoricActivityInstanceEndTime().desc().list(); TransitionImpl transitionImpl = null; if (historicActivityInstances.size() > 0) { ActivityImpl lastActivity = ((ProcessDefinitionImpl) processDefinitionEntity) .findActivity(historicActivityInstances.get(0).getActivityId()); // transitionImpl = currActivity.createOutgoingTransition(lastActivity.getId()); transitionImpl.setDestination(lastActivity); } else { System.out.println(" 。"); } variables = processInstance.getProcessVariables(); // List tasks = taskService.createTaskQuery() .processInstanceId(processInstance.getId()) .taskDefinitionKey(currTask.getTaskDefinitionKey()).list(); for (Task task : tasks) { taskService.complete(task.getId(), variables); historyService.deleteHistoricTaskInstance(task.getId()); } // currActivity.getOutgoingTransitions().remove(transitionImpl); for (PvmTransition pvmTransition : originPvmTransitionList) { pvmTransitionList.add(pvmTransition); } } /** * @ : * processInstanceId id * @return: String * @Author: carry */ public String getProcessState(String processInstanceId) { String processStr = ""; RuntimeService runtimeService = ProcessEngines.getDefaultProcessEngine().getRuntimeService(); // ProcessInstance processInstance = runtimeService// .createProcessInstanceQuery()// .processInstanceId(processInstanceId) .singleResult(); // , if (processInstance == null) { processStr = " "; } else { processStr = processInstance.getActivityId(); } return processStr; } /** * taskId businessKey * task -》 processInstance -》 businessKey -》 */ // public String getBusinessKeyByTaskId(String taskId) { // RuntimeService runtimeService = processEngine.getRuntimeService(); // // // runtimeService.startProcessInstanceByKey(" key "); // // Task task = this.processEngine // .getTaskService() // .createTaskQuery() // .taskId(taskId) // .singleResult(); // ProcessInstance processInstance = runtimeService// // .createProcessInstanceQuery()// // .processInstanceId(task.getProcessInstanceId()) // .singleResult(); // return pi.getBusinessKey(); // } /** * @ : , task, task , id, * @return: void * @Author: carry */ public void getBusinessDetialByTaskId(String taskId) { ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); RuntimeService runtimeService = processEngine.getRuntimeService(); // service TaskService taskService = ProcessEngines.getDefaultProcessEngine().getTaskService(); Task task = taskService.createTaskQuery() .taskId(taskId) .singleResult(); String processInstanceStr = task.getProcessInstanceId(); ProcessInstance processInstance = runtimeService// .createProcessInstanceQuery()// .processInstanceId(processInstanceStr) .singleResult(); String businessKey = processInstance.getBusinessKey(); if (StringUtils.isNotBlank(businessKey)) { String waterId = businessKey.split(":")[1]; } // id } /** * @ : * @return: java.util.List * @Author: carry */ // public List getTasksByAssignee(String userId){ // List assigneeTasks = this.getTaskService() // .createTaskQuery() // .taskAssignee(userId)// , // .orderByTaskCreateTime() // .desc() // .list(); // // return assigneeTasks; // } /** * * * @param userId * @return */ public List queryCurretUserTaskByAssignerr(String userId) { return this.processEngine.getTaskService() .createTaskQuery() .taskAssignee(userId) .orderByTaskCreateTime() .desc() .list(); } }

 
controllerインターフェース層:
package com.fencer.activiti.controller;

import com.fencer.activiti.domain.User;
import com.fencer.activiti.util.ActivitiUtil;
import com.fencer.common.base.AjaxResult;
import com.fencer.common.base.BaseController;
import com.google.gson.JsonObject;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.activiti.engine.*;
import org.activiti.engine.history.HistoricActivityInstance;
import org.activiti.engine.history.HistoricIdentityLink;
import org.activiti.engine.history.HistoricProcessInstance;
import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.impl.RepositoryServiceImpl;
import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;
import org.activiti.engine.impl.pvm.PvmTransition;
import org.activiti.engine.impl.pvm.process.ActivityImpl;
import org.activiti.engine.impl.pvm.process.ProcessDefinitionImpl;
import org.activiti.engine.impl.pvm.process.TransitionImpl;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.IdentityLink;
import org.activiti.engine.task.Task;
import org.apache.commons.lang3.StringUtils;
import org.junit.Test;
import org.springframework.web.bind.annotation.*;

import java.util.*;

/**
 *    :
 *
 * @author :carry
 * @version: 1.0  CreatedDate in  2019 06 24 
 * 

* : */ @RestController @RequestMapping("activiti/flow") public class ActivitiController extends BaseController { private static ActivitiUtil activitiUtil; static { activitiUtil = ActivitiUtil.getInstance(); } /** * @ : 1: Activiti , deploymentName bpmnName pngName * @return: AjaxResult * @Author: carry */ @PostMapping("/creatActivitiTask") public AjaxResult creatActivitiTask(@RequestBody String deploymentName, @RequestBody String bpmnName, @RequestBody String pngName) { try { activitiUtil.deployeProcess(deploymentName, bpmnName, pngName); return success(); } catch (Exception e) { return error(e.getMessage()); } } /** * @ : key , id * @return: AjaxResult * @Author: carry */ @GetMapping("startProcessInstanceByKey") public AjaxResult startProcessInstanceByKey(String key, String businessId, String executeStr, String userId) { String instanceId = ""; try { instanceId = activitiUtil.startProcessInstanceByKey(key, businessId, executeStr, userId); } catch (Exception e) { return error(e.getMessage()); } return success(instanceId); } /** * @ : * @return: AjaxResult * @Author: carry */ @GetMapping("findPersonalTask") public AjaxResult findPersonalTask(String assignee) { try { List planApplyIdList = activitiUtil.findPersonalTask(assignee); JSONArray jsonArray = JSONArray.fromObject(planApplyIdList); return successInfo(jsonArray); } catch (Exception e) { return error(e.getMessage()); } } /** * @ : * @return: AjaxResult * @Author: carry */ @GetMapping("findMyGroupTask") public AjaxResult findMyGroupTask(String assignee) { try { List planApplyIdList = activitiUtil.findMyGroupTask(assignee); JSONArray jsonArray = JSONArray.fromObject(planApplyIdList); return successInfo(jsonArray); } catch (Exception e) { return error(e.getMessage()); } } /** * @ : , , , , , * @return: AjaxResult * @Author: carry */ @PostMapping("/complete") public AjaxResult complete(@RequestBody JSONObject jsonObject) { String taskId = ""; String userId = ""; String nextUserMark = ""; // LinkedMultiValueMap JSONArray jsonArray = JSONArray.fromObject(null==jsonObject.get("taskId")?"":jsonObject.get("taskId")); taskId = (String) (jsonArray.get(0) == null? "" : jsonArray.get(0)); jsonArray = JSONArray.fromObject(jsonObject.get("userId")); userId = (String) (jsonArray.get(0) == null ? "" : jsonArray.get(0)); jsonArray = JSONArray.fromObject(jsonObject.get("nextUserMark")); nextUserMark = (String) (jsonArray.get(0) == null ? "" : jsonArray.get(0)); try { activitiUtil.complete(taskId, userId, nextUserMark); return success(); } catch (Exception e) { return error(e.getMessage()); } } /** * @ : , key, * @return: AjaxResult * @Author: carry */ @GetMapping("/historyTaskListByAssignee") public AjaxResult historyTaskListByAssignee(@RequestParam String assignee) { try { String businessKeys = activitiUtil.historyTaskList(assignee, "0"); return success(businessKeys); } catch (Exception e) { return error(e.getMessage()); } } /** * @ : , key, ( ) * @return: AjaxResult * @Author: carry */ @GetMapping("/historyTaskListByGroup") public AjaxResult historyTaskListByGroup(@RequestParam String assignee) { try { String businessKeys = activitiUtil.historyTaskList(assignee, "1"); return success(businessKeys); } catch (Exception e) { return error(e.getMessage()); } } /** * @ : id * @return: AjaxResult * @Author: carry */ @GetMapping("/getProcessState") public AjaxResult getProcessState(@RequestParam String processInstanceId) { String processStr = ""; try { processStr = activitiUtil.getProcessState(processInstanceId); return success(processStr); } catch (Exception e) { return error(e.getMessage()); } } /** * @ : * * , , , , ,act_hi_actinst * * @return: AjaxResult * @Author: carry */ @GetMapping("/historyActInstanceList") public AjaxResult historyActInstanceList(@RequestParam String instanceId) { try { List list = activitiUtil.historyActInstanceList(instanceId); JSONArray jsonArray = JSONArray.fromObject(list); return successInfo(jsonArray); } catch (Exception e) { return error(e.getMessage()); } } /** * @ : * @return: void * @Author: carry */ @GetMapping("/findRunPersonTask") public AjaxResult findRunPersonTask(@RequestParam String taskId) { try { List list = activitiUtil.findRunPersonTask(taskId); JSONArray jsonArray = JSONArray.fromObject(list); return successInfo(jsonArray); } catch (Exception e) { return error(e.getMessage()); } } /** * @ : * @return: void * @Author: carry */ @GetMapping("/findHistoryPersonTask") public AjaxResult findHistoryPersonTask(@RequestParam String processInstanceId) { try { List list = activitiUtil.findHistoryPersonTask(processInstanceId); JSONArray jsonArray = JSONArray.fromObject(list); return successInfo(jsonArray); } catch (Exception e) { return error(e.getMessage()); } } /** * @ : * @return: void * @Author: carry */ @GetMapping("/claim") public AjaxResult claim(@RequestParam String userId,@RequestParam String taskId) { try { activitiUtil.claim(userId,taskId); }catch (Exception e){ return error(e.getMessage()); } return success(); } /** * @ : * @return: void * @Author: carry */ @PostMapping("/reject") public AjaxResult reject(@RequestBody JSONObject jsonObject) { try { String taskId = ""; JSONArray jsonArray = JSONArray.fromObject(jsonObject.get("taskId")); taskId = (String) (jsonArray.get(0) == null ? "" : jsonArray.get(0)); ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); TaskService taskService = processEngine.getTaskService(); HistoryService historyService = processEngine.getHistoryService(); RuntimeService runtimeService = processEngine.getRuntimeService(); RepositoryService repositoryService = processEngine.getRepositoryService(); //String taskId = "120002";// taskid Map variables = new HashMap<>(); // HistoricTaskInstance currTask = historyService.createHistoricTaskInstanceQuery() .taskId(taskId) .singleResult(); // ProcessInstance processInstance = runtimeService.createProcessInstanceQuery() .processInstanceId(currTask.getProcessInstanceId()) .singleResult(); // ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService) .getDeployedProcessDefinition(currTask.getProcessDefinitionId()); if (processDefinitionEntity == null) { System.out.println(" 。"); return error(" 。"); } // activity ActivityImpl currActivity = ((ProcessDefinitionImpl) processDefinitionEntity) .findActivity(currTask.getTaskDefinitionKey()); // List histTransitionList = currActivity .getIncomingTransitions(); // List originPvmTransitionList = new ArrayList(); List pvmTransitionList = currActivity.getOutgoingTransitions(); for (PvmTransition pvmTransition : pvmTransitionList) { originPvmTransitionList.add(pvmTransition); } pvmTransitionList.clear(); // user task List historicActivityInstances = historyService .createHistoricActivityInstanceQuery().activityType("userTask") .processInstanceId(processInstance.getId()) .finished() .orderByHistoricActivityInstanceEndTime().desc().list(); TransitionImpl transitionImpl = null; if (historicActivityInstances.size() > 0) { ActivityImpl lastActivity = ((ProcessDefinitionImpl) processDefinitionEntity) .findActivity(historicActivityInstances.get(0).getActivityId()); // transitionImpl = currActivity.createOutgoingTransition(lastActivity.getId()); transitionImpl.setDestination(lastActivity); } else { System.out.println(" 。"); return error(" 。"); } variables = processInstance.getProcessVariables(); // List tasks = taskService.createTaskQuery() .processInstanceId(processInstance.getId()) .taskDefinitionKey(currTask.getTaskDefinitionKey()).list(); for (Task task : tasks) { taskService.complete(task.getId(), variables); historyService.deleteHistoricTaskInstance(task.getId()); } // currActivity.getOutgoingTransitions().remove(transitionImpl); for (PvmTransition pvmTransition : originPvmTransitionList) { pvmTransitionList.add(pvmTransition); } } catch (Exception e) { return error(e.getMessage()); } return success(); } /** * @ : * @return: com.fencer.common.base.AjaxResult * @Author: carry */ @GetMapping("testQueryDeploymentByName") public AjaxResult testQueryDeploymentByName(String deploymentByName) { try { ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); List deployments = processEngine.getRepositoryService() .createDeploymentQuery() .orderByDeploymenTime()// .desc()// .deploymentName(deploymentByName) .list(); for (Deployment deployment : deployments) { System.out.println(deployment.getId()); } JSONArray jsonArray = JSONArray.fromObject(deployments); return successInfo(jsonArray); } catch (Exception e) { return error(e.getMessage()); } } /** * @ : * @return: com.fencer.common.base.AjaxResult * @Author: carry */ @GetMapping("queryAllDeplyoment") public AjaxResult queryAllDeplyoment() { try { // ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); List lists = processEngine.getRepositoryService() .createDeploymentQuery() .orderByDeploymenTime()// .desc()// .list(); for (Deployment deployment : lists) { System.out.println(deployment.getId() + " >>>>>>>>>>" + deployment.getName()); } JSONArray jsonArray = JSONArray.fromObject(lists); return successInfo(jsonArray); } catch (Exception e) { return error(e.getMessage()); } } /** * @ : * @return: void * @Author: carry */ @GetMapping("testQueryAllPD") public AjaxResult testQueryAllPD() { try { ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); List pdList = processEngine.getRepositoryService() .createProcessDefinitionQuery() .orderByProcessDefinitionVersion() .desc() .list(); for (ProcessDefinition pd : pdList) { System.out.println(pd.getName()); } JSONArray jsonArray = JSONArray.fromObject(pdList); return successInfo(jsonArray); } catch (Exception e) { return error(e.getMessage()); } } /** * @ : javaBean * javabean( ) , javabean * , , * : * : private static final long serialVersionUID = 6757393795687480331 * ( 1 ), * taskService ID, , 。 * @return: void * @Author: carry */ @PostMapping("setVariables") public void setVariables(@RequestBody JSONObject jsonObject) { // service TaskService taskService = ProcessEngines.getDefaultProcessEngine().getTaskService(); // String assigneeUesr = ""; // id String processInstanceId = ""; JSONArray jsonArray = JSONArray.fromObject(jsonObject.get("assigneeUesr")); assigneeUesr = (String) (jsonArray.get(0) == null ? "" : jsonArray.get(0)); jsonArray = JSONArray.fromObject(jsonObject.get("processInstanceId")); processInstanceId = (String) (jsonArray.get(0) == null ? "" : jsonArray.get(0)); Task task = taskService.createTaskQuery()// .taskAssignee(assigneeUesr)// .processInstanceId(processInstanceId)// Id .singleResult(); // javaBean User person = new User(); person.setId("112"); person.setName("test"); person.setAge("12"); // taskService.setVariable(task.getId(), "xxx", person); } /** * @ : * @return: void * @Author: carry */ @GetMapping("getVariables") public void getVariables(@RequestParam String assigneeUesr, @RequestParam String processInstanceId) { // service TaskService taskService = ProcessEngines.getDefaultProcessEngine().getTaskService(); Task task = taskService.createTaskQuery()// .taskAssignee(assigneeUesr)// .processInstanceId(processInstanceId)// Id .singleResult(); // User person = (User) taskService.getVariable(task.getId(), "xxx"); System.out.println(person.getName()); } /** * @ : taskId businessKey * task -》 processInstance -》 businessKey -》 * @return: void * @Author: carry */ @GetMapping("/getBusinessKeyByTaskId") public AjaxResult getBusinessKeyByTaskId(@RequestParam String TaskId) { String bId = ""; try { ActivitiUtil activitiUtil = ActivitiUtil.getInstance(); bId = activitiUtil.getBusinessKeyByTaskId(TaskId); } catch (Exception e) { return error(e.getMessage()); } return success(bId); } /** * @ : * @return: void * @Author: carry */ @PostMapping("/deleteDeplyomentByPID") public AjaxResult deleteDeplyomentByPID(@RequestBody JSONObject jsonObject) { try { String deploymentId = ""; JSONArray jsonArray = JSONArray.fromObject(jsonObject.get("deploymentId")); deploymentId = (String) (jsonArray.get(0) == null ? "" : jsonArray.get(0)); // ProcessEngines.getDefaultProcessEngine().getRepositoryService() .deleteDeployment(deploymentId, true); } catch (Exception e) { return error(e.getMessage()); } return success(); } }