@Override public Task selectTaskByTaskId(String taskId) { return taskService .createTaskQuery() .taskId(taskId) .active() .singleResult(); }
public org.activiti.engine.task.Task getInternalTask(String taskId) { org.activiti.engine.task.Task internalTask = taskService.createTaskQuery().taskId(taskId).singleResult(); if (internalTask == null) { throw new NotFoundException("Unable to find task for the given id: " + taskId); } return internalTask; }
@Override public ActivityImpl selectActivityImplByTask(String taskId) { if (StringUtils.isNullOrEmpty(taskId)) { return new ActivityImpl(null, null); } Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); ProcessDefinitionEntity entity = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService).getDeployedProcessDefinition(task.getProcessDefinitionId()); List<ActivityImpl> activities = entity.getActivities(); return activities .stream() .filter(activity -> "userTask".equals(activity.getProperty("type")) && activity.getProperty("name").equals(task.getName())) .findFirst() .orElseThrow(() -> new NotFoundException("获取节点信息失败")); }
public org.activiti.engine.task.Task getInternalTaskWithChecks(String taskId) { String authenticatedUserId = getAuthenticatedUser(); if (authenticatedUserId != null && !authenticatedUserId.isEmpty() && userGroupManager!=null) { List<String> userRoles = userGroupManager.getUserRoles(authenticatedUserId); List<String> userGroups = userGroupManager.getUserGroups(authenticatedUserId); org.activiti.engine.task.Task task = taskService.createTaskQuery().taskCandidateOrAssigned(authenticatedUserId, userGroups).taskId(taskId).singleResult(); if (task == null) { throw new NotFoundException("Unable to find task for the given id: " + taskId + " for user: " + authenticatedUserId + " (with groups: " + userGroups + " & with roles: " + userRoles + ")"); } return task; } throw new IllegalStateException("There is no authenticated user, we need a user authenticated to find tasks"); }
private List<IdentityLink> getIdentityLinks(String taskId) { String authenticatedUserId = securityManager.getAuthenticatedUserId(); if (authenticatedUserId != null && !authenticatedUserId.isEmpty()) { List<String> userRoles = userGroupManager.getUserRoles(authenticatedUserId); List<String> userGroups = userGroupManager.getUserGroups(authenticatedUserId); org.activiti.engine.task.Task internalTask = taskService.createTaskQuery().taskCandidateOrAssigned(authenticatedUserId, userGroups).taskId(taskId).singleResult(); if (internalTask == null) { throw new NotFoundException("Unable to find task for the given id: " + taskId + " for user: " + authenticatedUserId + " (with groups: " + userGroups + " & with roles: " + userRoles + ")"); } return taskService.getIdentityLinksForTask(taskId); } throw new IllegalStateException("There is no authenticated user, we need a user authenticated to find tasks"); }
@Override public void claim(String taskId, String userId) { Task task = taskService.createTaskQuery(). taskId(taskId) .taskCandidateUser(userId) .active() .singleResult(); if (task == null) { throw new NotFoundException("无法签收此任务"); } if (!StringUtils.isNullOrEmpty(task.getAssignee())) { throw new BusinessException("任务已签售"); } else { taskService.claim(taskId, userId); } }
.includeProcessVariables() .active() .singleResult();
.taskDefinitionKey(activityId) .active() .singleResult());
private TaskEntity getTaskById(String taskId) { return (TaskEntity) _processEngine.getTaskService().createTaskQuery().taskId(taskId).singleResult(); }
private TaskEntity getCurrentTask() { return (TaskEntity) _processEngine.getTaskService().createTaskQuery().processInstanceId(_processInstanceId) .active().singleResult(); }
/** * 用户办理之前确认是否被该用户签收 TODO 考虑撤回 */ @RequestMapping(value = "/task/checkClaim/{taskId}/{userId}", method = RequestMethod.POST) @ResponseBody public Result checkClaim(@PathVariable("taskId") String taskId, @PathVariable("userId") String userId) { Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); if (StrUtil.isEmpty(task.getAssignee())) { return new Result(true, false, "该任务尚未签收,是否签收并办理该任务?"); } else if (!task.getAssignee().equals(userId)) { String userName = identityPageService.getUserNamesByUserIds(task.getAssignee()); return new Result(false, "被其他用户签收", "该任务已被【" + userName + "】签收,您无法办理"); } else { return new Result(true, true); } }
/** * 签收任务 TODO 考虑撤回 * * @param taskId 任务ID * @param userId 用户ID * @return */ @RequestMapping(value = "/task/claim/{taskId}/{userId}", method = RequestMethod.POST) @ResponseBody public Result claimTask(@PathVariable("taskId") String taskId, @PathVariable("userId") String userId) { Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); if (!StrUtil.isEmpty(task.getAssignee())) { String userName = ""; if (!task.getAssignee().equals(userId)) userName = "【" + identityPageService.getUserNamesByUserIds(task.getAssignee()) + "】"; return new Result(false, "任务已被签收", "签收任务失败,该任务已被" + userName + "签收"); } return taskPageService.claimTask(taskId, userId); }
@Override public String getStartUserId(String taskId) { Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() .processInstanceId(task.getProcessInstanceId()) .singleResult(); return historicProcessInstance.getStartUserId(); }
@Override public Result unclaimTask(String taskId, String assignee) { Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); if (StrUtil.isEmpty(task.getAssignee())) { return new Result(false, "取消失败", "取消签收失败,该任务未被任何人签收"); } else if (!assignee.equals(task.getAssignee())) { String assgineeName = identityPageService.getUserNamesByUserIds(task.getAssignee()); return new Result(false, "取消失败", "取消签收失败,任务已被【" + assgineeName + "】签收"); } else { taskService.unclaim(taskId); //List<IdentityLink> identityLinks=taskService.getIdentityLinksForTask(taskId); //taskService.deleteUserIdentityLink(taskId,assignee, IdentityLinkType.PARTICIPANT); //runtimeService.deleteUserIdentityLink(task.getProcessInstanceId(),assignee,IdentityLinkType.PARTICIPANT); return new Result(true); } }
@Override public Result claimTask(String taskId, String assignee) { Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); if (StrUtil.isEmpty(task.getAssignee())) { taskService.claim(taskId, assignee); return new Result(true); } else { String assgineeName = identityPageService.getUserNamesByUserIds(task.getAssignee()); return new Result(false, "签收失败", "签收任务失败,该任务已被【" + assgineeName + "】签收"); } }
Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); String formKey = formService.getTaskFormKey(task.getProcessDefinitionId(), task.getTaskDefinitionKey()); Object renderForm = null;
/** * 流程撤回 TODO MESSAGE 流程撤回需要给相关人员发送消息提醒 * * @param instanceId 历史流程实例ID * @param userId 用户ID * @return */ @Override public Result withdrawTask(String instanceId, String userId) { HistoricProcessInstance processInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId (instanceId).singleResult(); Result result = this.canWithdraw(processInstance, userId); if (!result.isSuccess()) { return new Result(false, "不可撤回", "该任务已经被签收或者办理,无法撤回,请查看流程明细"); } else { HistoricTaskInstance taskInstance = (HistoricTaskInstance) result.getData(); final TaskEntity task = (TaskEntity) taskService.createTaskQuery().processInstanceId(instanceId).singleResult(); try { this.jumpTask(task, taskInstance.getTaskDefinitionKey()); //删除历史记录,填充签收人 this.deleteCurrentTaskInstance(task.getId(), taskInstance); return new Result(true); } catch (Exception ex) { return new Result(false, "撤回异常", "任务撤回发生异常,异常原因:" + ex.getMessage()); } } }
public Result deleteCurrentTaskInstance(String taskId, HistoricTaskInstance taskInstance) { //删除正在执行的任务 //删除HistoricTaskInstance String sql_task = "delete from " + managementService.getTableName(HistoricTaskInstance.class) + " where " + "ID_='" + taskId + "' or ID_='" + taskInstance.getId() + "'"; this.executeSql(sql_task); //删除HistoricActivityInstance String sql_activity = "delete from " + managementService.getTableName(HistoricActivityInstance.class) + " where " + "TASK_ID_='" + taskId + "' or TASK_ID_='" + taskInstance.getId() + "'"; this.executeSql(sql_activity); //获取当前的任务,保存签收人 Task task = taskService.createTaskQuery().executionId(taskInstance.getExecutionId()).singleResult(); task.setAssignee(taskInstance.getAssignee()); task.setOwner(taskInstance.getOwner()); taskService.saveTask(task); //解决HistoricActivityInstance的Assignee为空的现象 if (!StrUtil.isEmpty(taskInstance.getAssignee())) { String sql_update = "update " + managementService.getTableName(HistoricActivityInstance.class) + " set " + "ASSIGNEE_='" + taskInstance.getAssignee() + "' where TASK_ID_='" + task.getId() + "'"; this.executeSql(sql_update); } String sql_update_execution = "update " + managementService.getTableName(Execution.class) + " set " + "ACT_ID_='" + taskInstance.getTaskDefinitionKey() + "' where ID_='" + taskInstance.getExecutionId() + "'"; this.executeSql(sql_update_execution); return new Result(true); }