/** * Retrieves a list of tasks that the users are currently assigned to, and which * are waiting to be worked on or are being worked on * @param users The list of users that we are interested in * @param context The TaskContext which is associated with the new task * @return A list of TaskInfo objects */ private synchronized List<TaskInfo> getUserActiveTaskLists(List<User> users, TaskContext context) { TaskPersistenceContext taskContext = ((org.jbpm.services.task.commands.TaskContext)context).getPersistenceContext(); Map<String, Object> params = new HashMap<>(); params.put("owners", users); return taskContext.queryStringWithParametersInTransaction(TASK_LIST_QUERY, params, ClassUtil.<List<TaskInfo>>castClass(List.class)); }
/** * Calculates the average duration for a target task, using a query * against the BAMTaskSummary table * @param context Used to retrieve a PersistenceContext * @param processId The identifier for the process definition containing the target task * @param deploymentId The identifier for the deployment which contains the target task * @param name The name of the target task * @return */ private Double calculateAverageDuration(TaskContext context, String processId, String deploymentId, String name) { Double avgDur = new Double(1); TaskPersistenceContext taskContext = ((org.jbpm.services.task.commands.TaskContext)context).getPersistenceContext(); Map<String, Object> params = new HashMap<>(); params.put("procid",processId); params.put("depid", deploymentId); params.put("taskname", name); List<TaskAverageDuration> durations = taskContext.queryStringWithParametersInTransaction(TASK_AVG_DURATION, params, ClassUtil.<List<TaskAverageDuration>>castClass(List.class)); if (durations != null && !durations.isEmpty()) { avgDur = durations.get(0).getAverageDuration(); logger.debug("Retrieved duration is {}",avgDur); } return avgDur; }
@Override public List<BAMTaskSummaryImpl> execute(Context cntxt) { TaskContext context = (TaskContext) cntxt; TaskAuditQueryCriteriaUtil queryCriteriaUtil = new TaskAuditQueryCriteriaUtil(context.getPersistenceContext()); return queryCriteriaUtil.doCriteriaQuery(getQueryWhere(), BAMTaskSummaryImpl.class); }
@Override public Collection<UserTaskLoad> getUserTaskLoads(List<User> users, TaskContext context) { Collection<UserTaskLoad> userTaskLoads = new ArrayList<>(); List<String> userIds = users.stream().map(user -> {return user.getId();}).collect(Collectors.toList()); TaskPersistenceContext persistenceContext = ((org.jbpm.services.task.commands.TaskContext)context).getPersistenceContext(); Map<String, Object> params = new HashMap<>(); params.put("owners", userIds); logger.debug("DB query to be used for finding assignments :: '{}'", getMultiUserQuery()); List<AssignmentImpl> assignments = persistenceContext.queryStringWithParametersInTransaction(getMultiUserQuery(), params, ClassUtil.<List<AssignmentImpl>>castClass(List.class)); Map<String,AssignmentImpl> assignmentMap = assignments.stream().collect(Collectors.toMap(assignKey,(assign)->assign)); if (assignments != null && !assignments.isEmpty()) { users.forEach(usr -> { String uid = usr.getId(); if (assignmentMap.containsKey(uid)) { Long loadValue = assignmentMap.get(uid).getCurrentlyAssigned(); userTaskLoads.add(new UserTaskLoad(getIdentifier(), usr, new Double(loadValue != null ? loadValue:0))); } else { userTaskLoads.add(new UserTaskLoad(getIdentifier(), usr, new Double(0))); } }); } else { users.forEach(u -> { userTaskLoads.add(new UserTaskLoad(getIdentifier(),u,new Double(0))); }); } return userTaskLoads; }
@Override public UserTaskLoad getUserTaskLoad(User user, TaskContext context) { UserTaskLoad load = new UserTaskLoad(getIdentifier(), user); TaskPersistenceContext persistenceContext = ((org.jbpm.services.task.commands.TaskContext)context).getPersistenceContext(); Map<String, Object> params = new HashMap<>(); params.put("owner", user.getId()); logger.debug("DB query to be used for finding assignments :: '{}'", getSingleUserQuery()); List<Integer> assignmentCounts = persistenceContext.queryStringWithParametersInTransaction(getSingleUserQuery(), params, ClassUtil.<List<Integer>>castClass(List.class)); if (assignmentCounts != null && !assignmentCounts.isEmpty()) { load.setCalculatedLoad(new Double(assignmentCounts.get(0))); } else { load.setCalculatedLoad(new Double(0)); } return load; }
public List<TaskSummary> execute(Context cntxt) { TaskContext context = (TaskContext) cntxt; doCallbackUserOperation(userId, context); if(statuses == null ){ statuses = new ArrayList<Status>(); statuses.add(Status.Ready); statuses.add(Status.InProgress); statuses.add(Status.Reserved); } if(groupIds == null) { groupIds = doUserGroupCallbackOperation(userId, null, context); if(groupIds == null) { groupIds = new ArrayList<String>(); } } TaskPersistenceContext persistenceContext = context.getPersistenceContext(); List<TaskSummary> tasks = (List<TaskSummary>) persistenceContext.queryWithParametersInTransaction("TasksByStatusByVariableName", persistenceContext.addParametersToMap( "userId", userId, "groupIds", groupIds, "variableName", variableName, "status", statuses), ClassUtil.<List<TaskSummary>>castClass(List.class)); return tasks; }
public List<TaskSummary> execute(Context cntxt) { TaskContext context = (TaskContext) cntxt; doCallbackUserOperation(userId, context); if(statuses == null ){ statuses = new ArrayList<Status>(); statuses.add(Status.Ready); statuses.add(Status.InProgress); statuses.add(Status.Reserved); } if(groupIds == null) { groupIds = doUserGroupCallbackOperation(userId, null, context); if(groupIds == null) { groupIds = new ArrayList<String>(); } } TaskPersistenceContext persistenceContext = context.getPersistenceContext(); List<TaskSummary> tasks = (List<TaskSummary>) persistenceContext.queryWithParametersInTransaction("TasksByStatusByVariableNameAndValue", persistenceContext.addParametersToMap( "userId", userId, "groupIds", groupIds, "variableName", variableName, "variableValue", variableValue, "status", statuses), ClassUtil.<List<TaskSummary>>castClass(List.class)); return tasks; }
TaskPersistenceContext persistenceContext = ((org.jbpm.services.task.commands.TaskContext)context).getPersistenceContext(); Map<String, Object> params = new HashMap<>(); params.put("owners", resolvedUsers);
@Override public List<R> execute(Context cntxt) { TaskContext context = (TaskContext) cntxt; TaskAuditQueryCriteriaUtil queryCriteriaUtil = new TaskAuditQueryCriteriaUtil(context.getPersistenceContext()); List<Q> implResult = queryCriteriaUtil.doCriteriaQuery(getQueryWhere(), getQueryType()); return QueryCriteriaUtil.convertListToInterfaceList(implResult, getResultType()); }
TaskPersistenceContext persistenceContext = context.getPersistenceContext();
@Override public Void execute(Context context) { TaskContext ctx = (TaskContext) context; TaskPersistenceContext persistenceContext = ctx.getPersistenceContext(); TaskDeadlinesService deadlineService = ctx.getTaskDeadlinesService(); try { long now = System.currentTimeMillis(); List<DeadlineSummary> resultList = persistenceContext.queryInTransaction("UnescalatedStartDeadlines", ClassUtil.<List<DeadlineSummary>>castClass(List.class)); for (DeadlineSummary summary : resultList) { long delay = summary.getDate().getTime() - now; deadlineService.schedule(summary.getTaskId(), summary.getDeadlineId(), delay, DeadlineType.START); } resultList = persistenceContext.queryInTransaction("UnescalatedEndDeadlines", ClassUtil.<List<DeadlineSummary>>castClass(List.class)); for (DeadlineSummary summary : resultList) { long delay = summary.getDate().getTime() - now; deadlineService.schedule(summary.getTaskId(), summary.getDeadlineId(), delay, DeadlineType.END); } } catch (Exception e) { logger.error("Error when executing deadlines", e); } return null; }
public static void rescheduleDeadlinesForTask(final InternalTask task, TaskContext taskContext, DeadlineType ...types) { Environment environment = taskContext.getTaskContentService().getMarshallerContext(task).getEnvironment(); TaskPersistenceContext persistenceContext = taskContext.getPersistenceContext(); taskContext.loadTaskVariables(task); PeopleAssignments peopleAssignments = task.getPeopleAssignments(); List<OrganizationalEntity> businessAdministrators = peopleAssignments.getBusinessAdministrators(); List<DeadlineType> deadlineTypes = Arrays.asList(types); Deadlines deadlines = HumanTaskHandlerHelper.setDeadlines(task.getTaskData().getTaskInputVariables(), businessAdministrators, environment); if(deadlineTypes.contains(DeadlineType.START)) { for(Deadline deadline : deadlines.getStartDeadlines()) { task.getDeadlines().getStartDeadlines().add(deadline); persistenceContext.persistDeadline(deadline); } } if(deadlineTypes.contains(DeadlineType.END)) { for(Deadline deadline : deadlines.getEndDeadlines()) { task.getDeadlines().getEndDeadlines().add(deadline); persistenceContext.persistDeadline(deadline); } } persistenceContext.updateTask(task); scheduleDeadlinesForTask(task, taskContext, types); }
public Void execute(Context cntxt) { TaskContext context = (TaskContext) cntxt; doCallbackUserOperation(userId, context, true); groupIds = doUserGroupCallbackOperation(userId, null, context); context.set("local:groups", groupIds); context.getTaskInstanceService().release(taskId, userId); Task task = context.getPersistenceContext().findTask(taskId); if(task.getTaskData().getPreviousStatus().equals(Status.InProgress)) { DeadlineSchedulerHelper.rescheduleDeadlinesForTask((InternalTask) task, context, DeadlineType.START); } return null; }
UserInfo userInfo = (UserInfo) context.get(EnvironmentName.TASK_USER_INFO); TaskPersistenceContext persistenceContext = ctx.getPersistenceContext();
UserInfo userInfo = (UserInfo) context.get(EnvironmentName.TASK_USER_INFO); TaskPersistenceContext persistenceContext = ctx.getPersistenceContext();
public Long execute(Context cntxt) { TaskContext context = (TaskContext) cntxt; Attachment attachmentImpl = attachment; if (attachmentImpl == null) { attachmentImpl = jaxbAttachment; } Content contentImpl = content; if (contentImpl == null) { contentImpl = jaxbContent; } if (rawContent != null && contentImpl == null) { Task task = context.getPersistenceContext().findTask(taskId); contentImpl = TaskModelProvider.getFactory().newContent(); ContentMarshallerContext ctx = TaskContentRegistry.get().getMarshallerContext(task.getTaskData().getDeploymentId()); ((InternalContent)contentImpl).setContent(ContentMarshallerHelper.marshallContent(task, rawContent, ctx.getEnvironment())); ((InternalAttachment)attachmentImpl).setSize(contentImpl.getContent().length); } doCallbackOperationForAttachment(attachmentImpl, context); return context.getTaskAttachmentService().addAttachment(taskId, attachmentImpl, contentImpl); }
/** * Retrieves a list of tasks that the users are currently assigned to, and which * are waiting to be worked on or are being worked on * @param users The list of users that we are interested in * @param context The TaskContext which is associated with the new task * @return A list of TaskInfo objects */ private synchronized List<TaskInfo> getUserActiveTaskLists(List<User> users, TaskContext context) { TaskPersistenceContext taskContext = ((org.jbpm.services.task.commands.TaskContext)context).getPersistenceContext(); Map<String, Object> params = new HashMap<>(); params.put("owners", users); return taskContext.queryStringWithParametersInTransaction(TASK_LIST_QUERY, params, ClassUtil.<List<TaskInfo>>castClass(List.class)); }
@Override public List<BAMTaskSummaryImpl> execute(Context cntxt) { TaskContext context = (TaskContext) cntxt; TaskAuditQueryCriteriaUtil queryCriteriaUtil = new TaskAuditQueryCriteriaUtil(context.getPersistenceContext()); return queryCriteriaUtil.doCriteriaQuery(getQueryWhere(), BAMTaskSummaryImpl.class); }
public List<TaskSummary> execute(Context cntxt) { TaskContext context = (TaskContext) cntxt; doCallbackUserOperation(userId, context); if(statuses == null ){ statuses = new ArrayList<Status>(); statuses.add(Status.Ready); statuses.add(Status.InProgress); statuses.add(Status.Reserved); } if(groupIds == null) { groupIds = doUserGroupCallbackOperation(userId, null, context); if(groupIds == null) { groupIds = new ArrayList<String>(); } } TaskPersistenceContext persistenceContext = context.getPersistenceContext(); List<TaskSummary> tasks = (List<TaskSummary>) persistenceContext.queryWithParametersInTransaction("TasksByStatusByVariableNameAndValue", persistenceContext.addParametersToMap( "userId", userId, "groupIds", groupIds, "variableName", variableName, "variableValue", variableValue, "status", statuses), ClassUtil.<List<TaskSummary>>castClass(List.class)); return tasks; }
@Override public List<R> execute(Context cntxt) { TaskContext context = (TaskContext) cntxt; TaskAuditQueryCriteriaUtil queryCriteriaUtil = new TaskAuditQueryCriteriaUtil(context.getPersistenceContext()); List<Q> implResult = queryCriteriaUtil.doCriteriaQuery(getQueryWhere(), getQueryType()); return QueryCriteriaUtil.convertListToInterfaceList(implResult, getResultType()); }