public void skipStipulationTask(Map<String, Object> map) {
String taskId = (String) map.get("taskId");
String destTaskKey = (String) map.get("destTaskKey");
String rejectMessage = (String) map.get("rejectMessage");
String outcome = (String) map.get("outcome");
String uid = (String) map.get("uid");
String message = (String) map.get("message");
Task taskEntity = getTask(taskId);
String processInstanceId = taskEntity.getProcessInstanceId();
String processDefinitionId = taskEntity.getProcessDefinitionId();
String currtaskDefKey = taskEntity.getTaskDefinitionKey();
ActivityImpl currActiviti = null;
ActivityImpl destActiviti = null;
currActiviti = getActivityImpl(currtaskDefKey, processDefinitionId);
destActiviti = getActivityImpl(destTaskKey, processDefinitionId);
List<PvmTransition> hisPvmTransitionList = new ArrayList<PvmTransition>(0);
for (PvmTransition pvmTransition : currActiviti.getOutgoingTransitions()) {
hisPvmTransitionList.add(pvmTransition);
}
currActiviti.getOutgoingTransitions().clear();
TransitionImpl newTransitionImpl = currActiviti.createOutgoingTransition();
newTransitionImpl.setDestination(destActiviti);
taskEntity.setDescription(rejectMessage);
taskService.saveTask(taskEntity);
Authentication.setAuthenticatedUserId(uid);
taskService.addComment(taskId, processInstanceId, message);
Map<String, Object> variables = new HashMap<String, Object>(0);
variables.put("outcome", outcome);
taskService.complete(taskEntity.getId(), variables);
destActiviti.getIncomingTransitions().remove(newTransitionImpl);
currActiviti.getOutgoingTransitions().clear();
currActiviti.getOutgoingTransitions().addAll(hisPvmTransitionList);
}
/**
*
* @Description (通过任务key,获取对应的节点信息)
* @author feizhou
* @Date 2018年3月28日下午1:53:29
* @version 1.0.0
* @param taskKey
* @return
*/
public ActivityImpl getActivityImpl(String destTaskKey, String processDefinitionId) {
ProcessDefinitionEntity processDefinition = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService)
.getDeployedProcessDefinition(processDefinitionId);
List<ActivityImpl> activitilist = processDefinition.getActivities();
ActivityImpl descActiviti = null;
for (ActivityImpl activityImpl : activitilist) {
String taskKey = activityImpl.getId();
if (destTaskKey.equals(taskKey)) {
descActiviti = activityImpl;
break;
}
}
return descActiviti;
}