ワークフローactiviti常用方法
業務表とワークフローをリンクする方法は、ワークフローの表に業務表の一意の標識を保存して、これで関連ができます。
常用方法:
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();
}
}