private static void destroyEvents(final Execution execution) { if (LOG.isLoggable(Level.FINE)) { LOG.fine("destroying events of " + execution.toString()); } final ActivityInstanceUUID activityUUID = execution.getActivityInstanceUUID(); if (activityUUID != null) { if (execution.getNode() == null || execution.getNode().hasBoundaryEvents()) { ActivityUtil.deleteBoundaryEvents(activityUUID); } ActivityUtil.deleteJobs(execution.getEventUUID()); } }
static String getErrorEventName(final ActivityDefinition activity, final String errorCode) { final List<ErrorBoundaryEventImpl> events = getErrorEvents(activity.getBoundaryEvents()); int i = 0; String errorName = null; String errorAllName = null; while (errorName == null && i < events.size()) { final ErrorBoundaryEventImpl event = events.get(i); final String eventErrorCode = event.getErrorCode(); if (eventErrorCode == null) { errorAllName = event.getName(); } else if (errorCode.equals(eventErrorCode)) { errorName = event.getName(); } i++; } String errorEventName = null; if (errorName != null) { errorEventName = errorName + EventConstants.SEPARATOR + errorCode; } else if (errorAllName != null) { errorEventName = errorAllName + EventConstants.SEPARATOR + "all"; } else if (errorCode.equals(activity.getTimerCondition())) { errorEventName = activity.getName() + EventConstants.SEPARATOR + errorCode; } return errorEventName; }
String correlationKeyName = eventDefinition.getCorrelationKeyName1(); if (correlationKeyName != null) { final String correlationKey = getEvaluatedCorrelationKey(activityUUID, correlationKeyName, eventDefinition.getCorrelationKeyExpression1()); eventInstance.setCorrelationKey1(correlationKey); final String correlationKey = getEvaluatedCorrelationKey(activityUUID, correlationKeyName, eventDefinition.getCorrelationKeyExpression2()); eventInstance.setCorrelationKey2(correlationKey); final String correlationKey = getEvaluatedCorrelationKey(activityUUID, correlationKeyName, eventDefinition.getCorrelationKeyExpression3()); eventInstance.setCorrelationKey3(correlationKey); final String correlationKey = getEvaluatedCorrelationKey(activityUUID, correlationKeyName, eventDefinition.getCorrelationKeyExpression4()); eventInstance.setCorrelationKey4(correlationKey); final String correlationKey = getEvaluatedCorrelationKey(activityUUID, correlationKeyName, eventDefinition.getCorrelationKeyExpression5()); eventInstance.setCorrelationKey5(correlationKey);
joinOK = ActivityUtil.isJoinOk(execution.getInstance(), execution.getNode()); if (joinOK || !checkJoinType) { if (AbstractActivity.LOG.isLoggable(Level.FINE)) { AbstractActivity.LOG.fine("Creating a new iteration on activity : " + this); ActivityUtil.createNewIteration(execution, activity); if (ActivityUtil.evaluateLoopCondition(activity, execution)) { final Execution newExecution = execution.createChildExecution(execution.getNode().getName()); initializeActivityInstance(newExecution, null);
@Override protected boolean executeBusinessLogic(Execution execution) { final InternalProcessInstance instance = execution.getInstance(); final ActivityDefinition activity = execution.getNode(); Job errorJob = ActivityUtil.getErrorEventSubProcessJob(execution, activity.getTimerCondition()); if (errorJob == null) { errorJob = ActivityUtil.getTargetErrorJob(execution); } execution.abort(); final Recorder recorder = EnvTool.getRecorder(); recorder.recordInstanceAborted(instance.getUUID(), EnvTool.getUserId()); if (errorJob != null) { final EventService eventService = EnvTool.getEventService(); eventService.storeJob(errorJob); } else { ProcessUtil.removeInternalInstanceEvents(instance.getUUID()); instance.finish(); } return false; }
final String eventName = ActivityUtil.getErrorEventName(activityDefinition, errorCode); final Recorder recorder = EnvTool.getRecorder(); if (eventName != null) { EnvTool.getEventService().storeJob(boundaryError); } else { final Job errorJob = ActivityUtil.getErrorEventSubProcessJob(execution, errorCode); if (errorJob != null) { execution.abort(); final ActivityDefinition parentActivityDefinition = EnvTool.getJournalQueriers().getActivity( parentActivity.getActivityDefinitionUUID()); final String parentEventName = ActivityUtil.getErrorEventName(parentActivityDefinition, errorCode); final Execution parentExecution = EnvTool.getJournal().getExecutionOnActivity( parentActivity.getProcessInstanceUUID(), parentActivity.getUUID());
outgoingEvent.getToProcessName(), outgoingEvent.getToActivityName(), evaluatedParameters, instanceUUID, activityUUID, overdue); ActivityUtil.addCorrelationKeys(outgoingEvent, eventInstance, activityUUID); eventService.fire(eventInstance); final List<IncomingEventInstance> messageSubProcessesIncomingEvents = eventService.getMessageEventSubProcessIncomingEvents(instanceUUID, eventInstance.getId());
if (t.isDefault()) { defaultTransition = t; } else if (ActivityUtil.evaluateTransition(t, internalExecution)) { final TransitionState transitionState = internalExecution.getInstance().getTransitionState(t.getName()); if (transitionState == null || transitionState.equals(TransitionState.READY)) {
static Job getTargetErrorJob(final Execution execution) { final ProcessDefinition process = execution.getProcessDefinition(); final ProcessInstance instance = execution.getInstance(); ActivityInstanceUUID parentActivityUUID = null; if (ProcessType.EVENT_SUB_PROCESS.equals(process.getType())) { final InternalProcessInstance rootEventSubProcess = EnvTool.getJournalQueriers().getProcessInstance( instance.getParentInstanceUUID()); parentActivityUUID = rootEventSubProcess.getParentActivityUUID(); } else { parentActivityUUID = instance.getParentActivityUUID(); } if (parentActivityUUID != null) { final Execution exec = EnvTool.getJournalQueriers().getExecutionOnActivity( parentActivityUUID.getProcessInstanceUUID(), parentActivityUUID); final String eventName = ActivityUtil.getErrorEventName(exec.getNode(), execution.getNode().getTimerCondition()); if (eventName != null) { final int indexOf = eventName.indexOf(EventConstants.SEPARATOR); return JobBuilder.boundaryErrorJob(eventName.substring(0, indexOf), exec.getInstance().getRootInstanceUUID(), exec.getEventUUID(), exec.getInstance().getProcessInstanceUUID()); } } return null; }
loop = ActivityUtil.evaluateLoopCondition(activity, internalExecution);
@Override protected boolean executeBusinessLogic(final Execution execution) { final ActivityDefinition activity = execution.getNode(); final ActivityInstanceUUID activityUUID = execution.getActivityInstanceUUID(); final EventService eventService = EnvTool.getEventService(); final IncomingEventDefinition incomingEvent = activity.getIncomingEvent(); String eventUUID = execution.getEventUUID(); final ProcessInstanceUUID instanceUUID = execution.getInstance().getUUID(); if (eventUUID == null) { eventUUID = UUID.randomUUID().toString(); } if (execution.getNode().hasIncomingTransitions()) { final IncomingEventInstance eventInstance = new IncomingEventInstance(incomingEvent.getName(), incomingEvent.getExpression(), instanceUUID, activity.getUUID(), activityUUID, execution.getProcessDefinition() .getName(), activityName, eventUUID, EventConstants.INTERMEDIATE, System.currentTimeMillis(), true); ActivityUtil.addCorrelationKeys(incomingEvent, eventInstance, activityUUID); eventService.subscribe(eventInstance); } else { eventUUID = instanceUUID + "-----START-----"; } execution.setEventUUID(eventUUID); execution.lock("Incoming event " + eventUUID); return false; }
instanceUUID, activity.getUUID(), activityUUID, processName, activityName, executionEventUUID, EventConstants.MESSAGE_BOUNDARY_EVENT, System.currentTimeMillis(), true); ActivityUtil.addCorrelationKeys(message, eventInstance, activityUUID); eventService.subscribe(eventInstance); } else if (boundaryEvent instanceof SignalBoundaryEventImpl) {
String correlationKeyName = message.getCorrelationKeyName1(); if (correlationKeyName != null) { final String correlationKey = getEvaluatedCorrelationKey(activityUUID, correlationKeyName, message.getCorrelationKeyExpression1()); eventInstance.setCorrelationKey1(correlationKey); final String correlationKey = getEvaluatedCorrelationKey(activityUUID, correlationKeyName, message.getCorrelationKeyExpression2()); eventInstance.setCorrelationKey2(correlationKey); final String correlationKey = getEvaluatedCorrelationKey(activityUUID, correlationKeyName, message.getCorrelationKeyExpression3()); eventInstance.setCorrelationKey3(correlationKey); final String correlationKey = getEvaluatedCorrelationKey(activityUUID, correlationKeyName, message.getCorrelationKeyExpression4()); eventInstance.setCorrelationKey4(correlationKey); final String correlationKey = getEvaluatedCorrelationKey(activityUUID, correlationKeyName, message.getCorrelationKeyExpression5()); eventInstance.setCorrelationKey5(correlationKey);