/** * 判断流程是否可撤回 * 历史流程节点中最后一个审批人是userId */ @Override public Result canWithdraw(HistoricProcessInstance processInstance, String userId) { List<HistoricTaskInstance> taskInstances = historyService.createHistoricTaskInstanceQuery().processUnfinished() .processInstanceId(processInstance.getId()).orderByTaskCreateTime().desc().orderByTaskId().desc() .list(); //Task activeTask=taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult(); if (taskInstances.isEmpty() || taskInstances.size() < 2) return new Result(false, null, "已办理,不可撤回"); else { HistoricTaskInstance taskInstance = taskInstances.get(1); HistoricTaskInstance taskCurrent = taskInstances.get(0); //流程审批人未未指定(未签收+未办理) if (StrUtil.isEmpty(taskCurrent.getAssignee())) { if (taskInstance.getAssignee() != null && taskInstance.getAssignee().equals(userId)) { return new Result(true, taskInstance, "可以撤回"); } } //流程定义时指定了办理人,也可以撤回 else if (getTaskState(taskCurrent.getId())) { if (taskInstance.getAssignee() != null && taskInstance.getAssignee().equals(userId)) { return new Result(true, taskInstance, "可以撤回"); } } } return new Result(false, null, "任务被签收或办理,不可撤回"); }
@GetMapping("/tasks") @Authorize(action = Permission.ACTION_QUERY) @ApiOperation("查询当前用户的历史任务信息") public ResponseMessage<PagerResult<TaskInfo>> getHistory(QueryParamEntity query, Authentication authentication) { HistoricTaskInstanceQuery historyQuery = historyService.createHistoricTaskInstanceQuery(); historyQuery.taskAssignee(authentication.getUser().getId()); PagerResult<TaskInfo> result = QueryUtils.doQuery(historyQuery, query, TaskInfo::of, (term, q) -> { if ("status".equals(term.getColumn())) { switch (String.valueOf(term.getValue())) { case "finished": q.finished(); break; case "processFinished": q.processFinished(); break; default: break; } } }); return ResponseMessage.ok(result).exclude(query.getExcludes()).include(query.getIncludes()); }
processEngine.getTaskService().createTaskQuery().count()); metrics.put("completedTaskCount", processEngine.getHistoryService().createHistoricTaskInstanceQuery().finished().count()); processEngine.getHistoryService().createHistoricTaskInstanceQuery().finished().taskCompletedAfter( new Date(System.currentTimeMillis() - secondsForDays(1))).count());
protected void assertHistoricTasksDeleteReason(ProcessInstance processInstance, String expectedDeleteReason, String ... taskNames) { if (processEngineConfiguration.getHistoryLevel().isAtLeast(HistoryLevel.AUDIT)) { for (String taskName : taskNames) { List<HistoricTaskInstance> historicTaskInstances = historyService.createHistoricTaskInstanceQuery() .processInstanceId(processInstance.getId()).taskName(taskName).list(); assertTrue(historicTaskInstances.size() > 0); for (HistoricTaskInstance historicTaskInstance : historicTaskInstances) { assertNotNull(historicTaskInstance.getEndTime()); if (expectedDeleteReason == null) { assertNull(historicTaskInstance.getDeleteReason()); } else { assertTrue(historicTaskInstance.getDeleteReason().startsWith(expectedDeleteReason)); } } } } }
query.taskId(queryRequest.getTaskId()); query.processInstanceId(queryRequest.getProcessInstanceId()); query.processInstanceBusinessKey(queryRequest.getProcessBusinessKey()); query.processInstanceBusinessKeyLike(queryRequest.getProcessBusinessKeyLike()); query.processDefinitionKey(queryRequest.getProcessDefinitionKey()); query.processDefinitionKeyLike(queryRequest.getProcessDefinitionKeyLike()); query.processDefinitionId(queryRequest.getProcessDefinitionId()); query.processDefinitionName(queryRequest.getProcessDefinitionName()); query.processDefinitionNameLike(queryRequest.getProcessDefinitionNameLike()); query.executionId(queryRequest.getExecutionId()); query.taskName(queryRequest.getTaskName()); query.taskNameLike(queryRequest.getTaskNameLike()); query.taskDescription(queryRequest.getTaskDescription()); query.taskDescriptionLike(queryRequest.getTaskDescriptionLike()); query.taskDefinitionKey(queryRequest.getTaskDefinitionKey());
private HistoricTaskInstanceQuery createHistoricTaskQuery(WorkflowTaskQuery query) HistoricTaskInstanceQuery historicQuery = historyService.createHistoricTaskInstanceQuery().finished(); historicQuery.processVariableValueEquals(ActivitiConstants.VAR_TENANT_DOMAIN, TenantUtil.getCurrentDomain()); } else if(tenantService.isEnabled() && !TenantUtil.isCurrentDomainDefault() && !StringUtils.isEmpty(TenantUtil.getCurrentDomain())) { historicQuery.processDefinitionKeyLike("@" + TenantUtil.getCurrentDomain() + "@%"); historicQuery.taskId(taskId); historicQuery.processInstanceId(processInstanceId); historicQuery.taskDefinitionKey(query.getTaskName().toPrefixString()); historicQuery.taskAssignee(query.getActorId()); historicQuery.processDefinitionKey(processName); historicQuery.processDefinitionKey(processName); historicQuery.processUnfinished(); historicQuery.processFinished();
private BpmTask getMostRecentProcessHistoryTask(final ProcessInstance pi, final UserData user, final Calendar minDate, ProcessToolContext ctx) { HistoryService hs = getProcessEngine().getHistoryService(); HistoricTaskInstanceQuery q = hs.createHistoricTaskInstanceQuery() .taskAssignee(user.getLogin()) .processInstanceId(pi.getInternalId()); q = q.orderByHistoricTaskInstanceEndTime().asc(); List<HistoricTaskInstance> tasks = q.list(); List<HistoricTaskInstance> pastTasks = new ArrayList<HistoricTaskInstance>(); for (HistoricTaskInstance task : tasks) { if (task.getEndTime() != null && task.getEndTime().compareTo(minDate.getTime()) > 0) { pastTasks.add(task); } } if (pastTasks.isEmpty()) return null; MutableBpmTask task = collectHistoryActivity(pastTasks.get(0), pi, user); String endTaskName = findEndActivityName(pi, ctx); if (Strings.hasText(endTaskName)) { task.setTaskName(endTaskName); } return task; }
public HistoricTaskInstanceQuery createHistoricTaskInstanceQuery(HistoricTaskInstanceQuery taskQuery) { taskQuery = taskQuery.taskAssignee(getAssigneeId()); taskQuery = taskQuery.processVariableValueEquals("applyUserId", getApplyUserId()); taskQuery = taskQuery.processInstanceId(getProcessInstanceId()); taskQuery = taskQuery.processInstanceBusinessKey(getBusinessKey()); taskQuery = taskQuery.taskDefinitionKey(getTaskDefinitionKey()); taskQuery = taskQuery.processDefinitionKeyIn(processDefinitionKeyList); taskQuery = taskQuery.processVariableValueLike("businessId", "%" + getBusinessId() + "%"); taskQuery = taskQuery.processVariableValueLike("businessName", "%" + getBusinessName() + "%"); taskQuery.taskCreatedAfter(DateUtils.stringToDate(getStartTime(), DateUtils.yyyy_MM_dd_EN)); taskQuery.taskCreatedBefore(DateUtils.getDay235959(DateUtils.stringToDate(getEndTime(), DateUtils.yyyy_MM_dd_EN))); taskQuery = taskQuery.processVariableValueEquals("auditResult", "1".equals(getAuditResult())); taskQuery.unfinished(); } else if ("1".equals(getWorkflowStatus())) { taskQuery.finished();
.processInstanceId(processInstanceId).list(); if (historicTaskInstances != null && historicTaskInstances.size() > 0) { for (HistoricTaskInstance historicTaskInstance : historicTaskInstances) {
/** * 根据历史任务ID查询历史任务信息 * * @param taskId * @return */ public HistoricTaskInstance getHisTaskById(String hisTaskId) { HistoricTaskInstance hisTask = historyService .createHistoricTaskInstanceQuery().taskId(hisTaskId) .singleResult(); return hisTask; }
.processInstanceId(processInstance.getId()) .orderByHistoricTaskInstanceEndTime().desc() .orderByHistoricTaskInstanceStartTime().desc() .list();
.taskAssignee(authority) .finished(); taskQuery.processVariableValueEquals(ActivitiConstants.VAR_TENANT_DOMAIN, TenantUtil.getCurrentDomain()); List<HistoricTaskInstance> historicTasks =taskQuery.list();
public RestVariable getVariableFromRequest(boolean includeBinary, String taskId, String variableName, String scope, HttpServletRequest request) { RestVariableScope variableScope = RestVariable.getScopeFromString(scope); HistoricTaskInstanceQuery taskQuery = historyService.createHistoricTaskInstanceQuery().taskId(taskId); taskQuery.includeProcessVariables(); } else { taskQuery.includeTaskLocalVariables(); taskQuery.includeTaskLocalVariables().includeProcessVariables(); HistoricTaskInstance taskObject = taskQuery.singleResult();
List<HistoricTaskInstance> taskInstances = historyService.createHistoricTaskInstanceQuery().taskInvolvedUser (userId).finished().orderByTaskCreateTime().desc().list(); for (HistoricTaskInstance taskInstance : taskInstances) { processInstanceIdSet.add(taskInstance.getProcessInstanceId());
} else if (this.historyService.createHistoricTaskInstanceQuery().finished().processInstanceId(processInstanceId) .taskDefinitionKey(this.userTaskId).singleResult() != null) {
.processInstanceId(processInstance.getId()) .orderByHistoricTaskInstanceEndTime().desc() .orderByTaskCreateTime().desc() .list();
.taskDefinitionKey(task.getTaskDefinitionKey()).executionId(executionId).orderByHistoricTaskInstanceEndTime().desc().list();
/** * simulate task execution * take randomly one task from the history and use its duration for simulation * */ public long simulateTaskExecution(TaskEntity execTask, Map<String, Object> variables) { List<HistoricTaskInstance> historicInstances = historyService.createHistoricTaskInstanceQuery() .taskDefinitionKey( execTask.getTaskDefinitionKey() ).finished().list(); if ( historicInstances.isEmpty() ) //use backupExecutor return backUpExecutor.simulateTaskExecution(execTask, variables); // get random historic instance HistoricTaskInstance historicTask = historicInstances.get( SimUtils.getRandomInt( historicInstances.size() )); //@TODO in version 5.12 use time spend on task return historicTask.getDurationInMillis(); }
.taskAssignee(assignee).list(); if (historicTaskInstances.isEmpty()) { return Repositories.emptyQuery();
taskQuery.orderByTaskAssignee().asc(); taskQuery.orderByTaskAssignee().desc(); taskQuery.orderByHistoricActivityInstanceStartTime().asc(); taskQuery.orderByHistoricActivityInstanceStartTime().desc(); taskQuery.orderByTaskId().asc(); taskQuery.orderByTaskId().desc(); taskQuery.orderByTaskName().asc(); taskQuery.orderByTaskName().desc(); taskQuery.orderByHistoricTaskInstanceEndTime().asc(); taskQuery.orderByHistoricTaskInstanceEndTime().asc();