private Map<String, T2Reference> getInData(String jobIdentifier) { AbstractDispatchEvent inEvent; synchronized (incomingJobs) { inEvent = incomingJobs.get(jobIdentifier); } Map<String, T2Reference> inData = new HashMap<>(); if (inEvent instanceof DispatchJobEvent) inData = ((DispatchJobEvent) inEvent).getData(); return inData; }
@Override public boolean handleError() { currentActivityIndex++; if (currentActivityIndex == jobEvent.getActivities().size()) return false; List<Activity<?>> newActivityList = new ArrayList<>(); newActivityList.add(jobEvent.getActivities().get( currentActivityIndex)); getBelow().receiveJob( new DispatchJobEvent(jobEvent.getOwningProcess(), jobEvent .getIndex(), jobEvent.getContext(), jobEvent .getData(), newActivityList)); return true; } }
/** * If the job contains errors, or collections which contain errors * themselves then bounce a result message with error documents in back up * to the layer above */ @Override public void receiveJob(DispatchJobEvent jobEvent) { Set<T2Reference> errorReferences = new HashSet<>(); for (T2Reference ei : jobEvent.getData().values()) if (ei.containsErrors()) errorReferences.add(ei); if (errorReferences.isEmpty()) // relay the message down... getBelow().receiveJob(jobEvent); else { getState(jobEvent.getOwningProcess()).incrementErrorsReflected(); sendErrorOutput(jobEvent, null, errorReferences); } }
/** * Receive a job from the layer above, store it in the state map then relay * it to the layer below with a modified activity list containing only the * activity at index 0 */ @Override public void receiveJob(DispatchJobEvent jobEvent) { addJobToStateList(jobEvent); List<Activity<?>> newActivityList = new ArrayList<>(); newActivityList.add(jobEvent.getActivities().get(0)); getBelow().receiveJob( new DispatchJobEvent(jobEvent.getOwningProcess(), jobEvent .getIndex(), jobEvent.getContext(), jobEvent.getData(), newActivityList)); }
private DispatchJobEvent prepareNewJobEvent( Map<String, T2Reference> data, AbstractDispatchEvent dispatchEvent) { DispatchJobEvent dispatchJobEvent = (DispatchJobEvent) dispatchEvent; Map<String, T2Reference> newInputs = new HashMap<String, T2Reference>( dispatchJobEvent.getData()); newInputs.putAll(data); DispatchJobEvent newJobEvent = new DispatchJobEvent(dispatchEvent .getOwningProcess(), dispatchEvent.getIndex(), dispatchEvent.getContext(), newInputs, ((DispatchJobEvent) dispatchEvent).getActivities()); /* * TODO: Should this be registered as an incomingJobs? If so the * conditional could even feed to itself, and we should also keep a * list of originalJobs. */ return newJobEvent; }
inputDataItem.setDataMap(jobEvent.getData()); inputDataItem.setReferenceService(referenceService); inputDataItem.setIdentifier(uuid());