@Override public Set<TaskInstance> getUserInstanceTasks( final String userId, final ProcessInstanceUUID instanceUUID, final ActivityState taskState) { Misc.checkArgsNotNull(taskState); // History only contains finished tasks if (taskState.equals(ActivityState.READY) || taskState.equals(ActivityState.EXECUTING) || taskState.equals(ActivityState.SUSPENDED) ) { return Collections.emptySet(); } return super.getUserInstanceTasks(userId, instanceUUID, taskState); }
@Override public Set<TaskInstance> getUserTasks(final String userId, final ActivityState taskState) { Misc.checkArgsNotNull(taskState); // History only contains finished tasks if (taskState.equals(ActivityState.READY) || taskState.equals(ActivityState.EXECUTING) || taskState.equals(ActivityState.SUSPENDED) ) { return Collections.emptySet(); } return super.getUserTasks(userId, taskState); } }
private static long getActivityScopeDate(final ActivityInstance activityInstance, final long defaultDate) { long maxDate = -1; if (!activityInstance.getState().equals(ActivityState.READY) && !activityInstance.getState().equals(ActivityState.SUSPENDED) && !activityInstance.getState().equals(ActivityState.EXECUTING)) { maxDate = activityInstance.getLastStateUpdate().getUpdatedDate().getTime(); } else { maxDate = defaultDate; } return maxDate; }
private Date getLastUpdateDate(final ActivityInstanceUUID activityUUID) throws ActivityNotFoundException { final StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("getActivity for getLastAttachment "); stringBuilder.append(activityUUID); Misc.log(Level.FINE, stringBuilder.toString()); final ActivityInstance activity = getActivityInstance(activityUUID); Date date = null; if (!activity.getState().equals(ActivityState.READY) && !activity.getState().equals(ActivityState.SUSPENDED) && !activity.getState().equals(ActivityState.EXECUTING)) { date = activity.getLastStateUpdate().getUpdatedDate(); } else { date = new Date(); } return date; }
public void setActivityState(final ActivityState newState, final String userId) { if (ActivityState.FINISHED.equals(newState) || ActivityState.CANCELLED.equals(newState) || ActivityState.ABORTED.equals(newState) || ActivityState.SKIPPED.equals(newState)) { if (ActivityState.READY.equals(newState)) { readyDate = actual.getTime(); } else if (ActivityState.EXECUTING.equals(newState)) { startedDate = actual.getTime(); startedBy = userId; } else if (ActivityState.FINISHED.equals(newState) || ActivityState.CANCELLED.equals(newState) || ActivityState.ABORTED.equals(newState)) { endedDate = actual.getTime(); endedBy = userId; } else if (ActivityState.SKIPPED.equals(newState)) { startedDate = actual.getTime(); startedBy = userId;
@Override public boolean canExecuteTask(final ActivityInstanceUUID taskUUID) throws TaskNotFoundException { final TaskInstance task = getTask(taskUUID); if (!task.getState().equals(ActivityState.READY)) { return false; } final String userId = EnvTool.getUserId(); if (task.isTaskAssigned()) { return task.getTaskUser().equals(userId); } return task.getTaskCandidates().contains(userId); }
LOG.fine("Checking compatible state of " + task); if (!task.getState().equals(ActivityState.SUSPENDED)) { final Set<ActivityState> expectedStates = new HashSet<ActivityState>(); expectedStates.add(ActivityState.SUSPENDED);
if (!state.equals(ActivityState.READY) && !state.equals(ActivityState.FAILED)) { final Set<ActivityState> expectedStates = new HashSet<ActivityState>(); expectedStates.add(ActivityState.READY); if ((ActivityState.READY.equals(currentActivity.getState()) || ActivityState.FAILED.equals(currentActivity.getState())) && !activityInstanceUUID.equals(currentActivity.getUUID())) { recorder.recordActivitySkipped(currentActivity, currentUserId); AbstractActivity abstractActivity = (AbstractActivity) activityDef.getBehaviour(); if (!ActivityState.ABORTED.equals(internalExecution.getActivityInstance().getState())) { abstractActivity.signal(internalExecution, AbstractActivity.BODY_SKIPPED, null); if (LOG.isLoggable(Level.FINE)) {
@Override public void recordTaskResumed(final ActivityInstanceUUID taskUUID, final String loggedInUserId) { Misc.checkArgsNotNull(taskUUID); final TaskInstance task = getTaskInstance(taskUUID); ActivityState stateBeforeSuspend = null; for (final StateUpdate su : task.getStateUpdates()) { if (su.getActivityState().equals(ActivityState.SUSPENDED)) { stateBeforeSuspend = su.getInitialState(); } } ((InternalActivityInstance) task).setActivityState(stateBeforeSuspend, loggedInUserId); }
public static void finish(final ActivityInstanceUUID taskUUID, final boolean assignTask) throws TaskNotFoundException, IllegalTaskStateException { final TaskInstance task = getTask(taskUUID); if (!ActivityState.ABORTED.equals(task.getState()) && !ActivityState.FAILED.equals(task.getState())) { if (LOG.isLoggable(Level.FINE)) { LOG.fine("Checking compatible state of " + task); if (!task.getState().equals(ActivityState.EXECUTING)) { final Set<ActivityState> expectedStates = new HashSet<ActivityState>(); expectedStates.add(ActivityState.EXECUTING); if (!ActivityState.ABORTED.equals(activityState) && !ActivityState.FAILED.equals(activityState)) { abstractActivity.signal(internalExecution, AbstractActivity.BODY_FINISHED, null); if (LOG.isLoggable(Level.FINE)) {
@Override protected boolean isJoinOK() throws Exception { instantiator.execute(); int join = instantiator.getJoinNumber(); final APIAccessor accessor = new StandardAPIAccessorImpl(); final QueryRuntimeAPI queryRuntimeAPI = accessor.getQueryRuntimeAPI(AccessorUtil.QUERYLIST_JOURNAL_KEY); Set<LightActivityInstance> activities = queryRuntimeAPI.getLightActivityInstances(getProcessInstanceUUID(), getActivityName()); int count = 0; for (LightActivityInstance activityInstance : activities) { if (ActivityState.READY.equals(activityInstance.getState()) && getIterationId().equals(activityInstance.getIterationId())) { count++; } } int finishedactivities = activities.size() - count; return join <= finishedactivities; }
public static void start(final ActivityInstanceUUID taskUUID, final boolean assignTask) throws IllegalTaskStateException, TaskNotFoundException { final TaskInstance task = getTask(taskUUID); if (!ActivityState.ABORTED.equals(task.getState())) { if (LOG.isLoggable(Level.FINE)) { LOG.fine("Checking compatible state of " + task); if (!task.getState().equals(ActivityState.READY)) { final Set<ActivityState> expectedStates = new HashSet<ActivityState>(); expectedStates.add(ActivityState.READY);
public static void executeConnectors(final ActivityDefinition activityDef, final Execution execution, final Event event, final Map<String, Object> parameters) { final List<HookDefinition> hooks = activityDef.getConnectors(); if (hooks != null) { for (final HookDefinition hook : hooks) { if (hook.getEvent() != null && hook.getEvent().equals(event)) { if (!ActivityState.ABORTED.equals(execution.getActivityInstance().getState())) { executeConnector(execution, activityDef.getName(), hook, parameters); } } } } }
@Override protected boolean executeBusinessLogic(final Execution execution) { final InternalActivityDefinition activityDefinition = execution.getNode(); final ActivityInstance activity = execution.getActivityInstance(); if (activityDefinition.isAsynchronous()) { if (hasConnectorsAutomaticOnEnter(activityDefinition)) { if (!ActivityState.ABORTED.equals(activity.getState())) { final EventService eventService = EnvTool.getEventService(); final String eventName = BonitaConstants.CONNECTOR_AUTOMATIC_ON_ENTER_PREFIX + activity.getUUID(); final Job job = JobBuilder.connectorsAutomaticOnEnterJob(eventName, execution.getInstance() .getRootInstanceUUID(), execution.getEventUUID(), execution.getInstance().getProcessInstanceUUID()); eventService.storeJob(job); } // if it has connector OnEnter the execution must stop return false; } } else { ConnectorExecutor.executeConnectors(activityDefinition, execution, Event.automaticOnEnter); } ConnectorExecutor.executeConnectors(activityDefinition, execution, Event.automaticOnExit); return !ActivityState.ABORTED.equals(activity.getState()); }