in taverna-workflowmodel-extensions/src/main/java/org/apache/taverna/workflowmodel/processor/dispatch/layers/IntermediateProvenance.java [318:397]
public void receiveJob(DispatchJobEvent jobEvent) {
try {
// FIXME do we need this ProcessProvenanceItem?
ProcessProvenanceItem provenanceItem;
String[] split = jobEvent.getOwningProcess().split(":");
provenanceItem = new ProcessProvenanceItem();
String parentDataflowId = workflowItem.getParentId();
provenanceItem.setWorkflowId(parentDataflowId);
provenanceItem.setFacadeID(split[0]);
provenanceItem.setDataflowID(split[1]);
provenanceItem.setProcessId(jobEvent.getOwningProcess());
provenanceItem.setIdentifier(uuid());
provenanceItem.setParentId(workflowItem.getIdentifier());
ProcessorProvenanceItem processorProvItem;
processorProvItem = new ProcessorProvenanceItem();
processorProvItem.setWorkflowId(parentDataflowId);
processorProvItem.setProcessId(jobEvent
.getOwningProcess());
processorProvItem.setIdentifier(uuid());
processorProvItem.setParentId(provenanceItem.getIdentifier());
provenanceItem.setProcessId(jobEvent.getOwningProcess());
getReporter().addProvenanceItem(provenanceItem);
getReporter().addProvenanceItem(processorProvItem);
IterationProvenanceItem iterationProvItem = null;
iterationProvItem = new IterationProvenanceItem();
iterationProvItem.setWorkflowId(parentDataflowId);
iterationProvItem.setIteration(jobEvent.getIndex());
iterationProvItem.setIdentifier(uuid());
ReferenceService referenceService = jobEvent.getContext()
.getReferenceService();
InputDataProvenanceItem inputDataItem = new InputDataProvenanceItem();
inputDataItem.setDataMap(jobEvent.getData());
inputDataItem.setReferenceService(referenceService);
inputDataItem.setIdentifier(uuid());
inputDataItem.setParentId(iterationProvItem.getIdentifier());
inputDataItem.setProcessId(jobEvent.getOwningProcess());
List<Object> inputIndexOwnerList = new ArrayList<>();
inputIndexOwnerList.add(jobEvent.getIndex());
inputIndexOwnerList.add(jobEvent.getOwningProcess());
inputDataProvenanceItemMap.put(inputDataItem, inputIndexOwnerList);
// inputDataProvenanceItemList.add(inputDataItem);
iterationProvItem.setInputDataItem(inputDataItem);
iterationProvItem.setIteration(jobEvent.getIndex());
iterationProvItem.setProcessId(jobEvent.getOwningProcess());
for (Activity<?> activity : jobEvent.getActivities())
if (activity instanceof AsynchronousActivity) {
ActivityProvenanceItem activityProvItem = new ActivityProvenanceItem();
activityProvItem.setWorkflowId(parentDataflowId);
activityProvItem.setIdentifier(uuid());
iterationProvItem.setParentId(activityProvItem.getIdentifier());
// getConnector().addProvenanceItem(iterationProvItem);
activityProvItem.setParentId(processorProvItem.getIdentifier());
// processorProvItem.setActivityProvenanceItem(activityProvItem);
activityProvItem.setProcessId(jobEvent.getOwningProcess());
List<Object> activityIndexOwnerList = new ArrayList<>();
activityIndexOwnerList.add(jobEvent.getOwningProcess());
activityIndexOwnerList.add(jobEvent.getIndex());
activityProvenanceItemMap.put(activityProvItem,
inputIndexOwnerList);
// activityProvenanceItemList.add(activityProvItem);
// activityProvItem.setIterationProvenanceItem(iterationProvItem);
getReporter().addProvenanceItem(activityProvItem);
break;
}
getIndexesByProcess(jobEvent.getOwningProcess()).put(
indexStr(jobEvent.getIndex()), iterationProvItem);
iterationProvItem.setEnactmentStarted(new Timestamp(currentTimeMillis()));
getReporter().addProvenanceItem(iterationProvItem);
} catch (RuntimeException ex) {
logger.error("Could not store provenance for " + jobEvent, ex);
}
super.receiveJob(jobEvent);
}