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; }
final String eventName = ActivityUtil.getErrorEventName(activityDefinition, errorCode); final Recorder recorder = EnvTool.getRecorder(); if (eventName != null) { 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());