protected Element serializeDataflow(Dataflow df) throws SerializationException { Element result = new Element(DATAFLOW, T2_WORKFLOW_NAMESPACE); result.setAttribute(DATAFLOW_ID,df.getInternalIdentier()); try { name.setText(df.getLocalName()); result.addContent(name); result.addContent(dataflowInputPorts(df.getInputPorts())); result.addContent(dataflowOutputPorts(df.getOutputPorts())); for (Processor processor : df.getProcessors()) { processors.addContent(processorToXML(processor)); result.addContent(conditionsToXML(df.getProcessors())); result.addContent(DatalinksXMLSerializer.getInstance().datalinksToXML(df.getLinks()));
public static Dataflow getDataflow(Version.ID id) throws RegistryException { synchronized (id) { if (!cache.containsKey(id)) { logger.info("Before Calculate component version"); Version componentVersion; try { componentVersion = calculateComponentVersion(id); } catch (Exception e) { throw new RegistryException(e.getMessage(), e); } logger.info("Calculated component version"); Dataflow dataflow = componentVersion.getDataflow(); dataflow.checkValidity(); cache.put(id, dataflow); } } return cache.get(id); }
private static void rememberSubworkflows(final Processor p) throws SerializationException { for (final Activity<?> a : p.getActivityList()) if (a instanceof NestedDataflow) { NestedDataflow da = (NestedDataflow) a; Dataflow df = da.getNestedDataflow(); if (!requiredSubworkflows.containsKey(df.getIdentifier())) { requiredSubworkflows.put(df.getIdentifier(), DataflowXMLSerializer.getInstance() .serializeDataflow(df)); for (Processor sp : df.getProcessors()) rememberSubworkflows(sp); } } }
List<DataflowInputPort> inputsList =new ArrayList<DataflowInputPort>(df.getInputPorts()); Collections.sort(inputsList, portComparator); for (DataflowInputPort dataflowInput : inputsList) { List<DataflowOutputPort> outputsList =new ArrayList<DataflowOutputPort>(df.getOutputPorts()); Collections.sort(outputsList, portComparator); for (DataflowOutputPort dataflowOutput : outputsList) { List<Processor> processorsList = new ArrayList<Processor>(df.getProcessors()); Collections.sort(processorsList, namedWorkflowEntityComparator); for (Processor processor : processorsList){ List<? extends Datalink> datalinksList = (List<? extends Datalink>) df.getLinks(); Collections.sort(datalinksList, datalinkComparator); List<Merge> mergesList = new ArrayList<Merge>(df.getMerges()); Collections.sort(mergesList, namedWorkflowEntityComparator); for (Merge merge: mergesList) {
public Element serializeDataflow(Dataflow df) throws SerializationException { Element result = new Element(DATAFLOW, T2_WORKFLOW_NAMESPACE); result.setAttribute(DATAFLOW_ID,df.recordIdentifier()); try { name.setText(df.getLocalName()); result.addContent(name); result.addContent(dataflowInputPorts(df.getInputPorts())); result.addContent(dataflowOutputPorts(df.getOutputPorts())); for (Processor processor : df.getProcessors()) { processors.addContent(processorToXML(processor)); result.addContent(conditionsToXML(df.getProcessors())); result.addContent(DatalinksXMLSerializer.getInstance().datalinksToXML(df.getLinks()));
public WorkflowInstanceFacadeImpl(final Dataflow dataflow, InvocationContext context, String parentProcess) throws InvalidDataflowException { DataflowValidationReport report = dataflow.checkValidity(); if (!report.isValid()) { throw new InvalidDataflowException(dataflow, report); this.portsToComplete = dataflow.getOutputPorts().size(); this.processorsToComplete = dataflow.getProcessors().size(); this.localName = "facade" + owningProcessId.getAndIncrement(); workflowItem.setProcessId(instanceOwningProcessId); workflowItem.setIdentifier(workflowRunId); workflowItem.setParentId(dataflow.getIdentifier()); workflowItem.setWorkflowId(dataflow.getIdentifier()); for (Processor processor: dataflow.getProcessors()){ String expectedProcessId = instanceOwningProcessId + ":" + dataflow.getLocalName() + ":" + processor.getLocalName(); ProcessorFinishedObserver observer = new ProcessorFinishedObserver(workflowItem, expectedProcessId); ((ProcessorImpl) processor).addObserver(observer);
public static Collection<Processor> getProcessorsWithActivity( Dataflow dataflow, Activity<?> activity) { Set<Processor> processors = new HashSet<Processor>(); for (Processor processor : dataflow.getProcessors()) { if (processor.getActivityList().contains(activity)) { processors.add(processor); } } return processors; }
public FacadeResultListener(Dataflow dataflow, WorkflowProvenanceItem workflowItem) { this.workflowItem = workflowItem; portsToComplete = dataflow.getOutputPorts().size(); }
if (!dataflow.getInputPorts().isEmpty()) { html = html + "<tr><th>Input Port Name</th>" + "<th>Depth</th>" +"</tr>"; for (DataflowInputPort dip : dataflow.getInputPorts()) { html = html + "<tr><td>" + dip.getName() + "</td><td>" + (dip.getDepth() < 0 ? "invalid/unpredicted" : dip.getDepth()) + "</td></tr>"; if (!dataflow.getOutputPorts().isEmpty()) { html = html + "<tr><th>Output Port Name</th>" + "<th>Depth</th>" +"</tr>"; for (DataflowOutputPort dop : dataflow.getOutputPorts()) { html = html + "<tr><td>" + dop.getName() + "</td><td>" + (dop.getDepth() < 0 ? "invalid/unpredicted" : dop.getDepth()) + "</td>"
for (DataflowOutputPort output : workflow.getOutputPorts()) { if (output.getInternalInputPort().equals(port)) { return workflow; List<? extends Merge> merges = workflow.getMerges(); for (Merge merge : merges) { for (EventHandlingInputPort input : merge.getInputPorts()) { List<? extends Processor> processors = workflow.getProcessors(); for (Processor processor : processors) { for (EventHandlingInputPort output : processor.getInputPorts()) {
for (DataflowInputPort input : workflow.getInputPorts()) { if (input.getInternalOutputPort().equals(port)) { return workflow; List<? extends Merge> merges = workflow.getMerges(); for (Merge merge : merges) { if (merge.getOutputPort().equals(port)) { List<? extends Processor> processors = workflow.getProcessors(); for (Processor processor : processors) { for (OutputPort output : processor.getOutputPorts()) {
public void pushData(WorkflowDataToken token, String portName) throws TokenOrderException { // TODO: throw TokenOrderException when token stream is violates order // constraints. for (DataflowInputPort port : dataflow.getInputPorts()) { if (portName.equals(port.getName())) { port.receiveEvent(token.pushOwningProcess(localName)); } } pushDataCalled = true; }
public UpdateDataflowNameEdit(Dataflow dataflow,String newName) { super(dataflow); this.newName=newName; this.oldName=dataflow.getLocalName(); }
public String processWorkflowStructure(Dataflow df) { topLevelDataflowName = df.getLocalName(); topLevelDataflowID = df.getIdentifier(); // check whether we already have this WF in the DB List<String> workflowIds = null; try { workflowIds = pq.getAllworkflowIds(); } catch (SQLException e) { logger.warn("Problem processing workflow structure", e); } if (workflowIds != null && workflowIds.contains(topLevelDataflowID)) { // already in the DB } else { logger.info("new workflow structure with ID "+topLevelDataflowID); ProvenanceProcessor provProc = new ProvenanceProcessor(); provProc.setIdentifier(UUID.randomUUID().toString()); provProc.setProcessorName(topLevelDataflowName); provProc.setFirstActivityClassName(ProvenanceProcessor.DATAFLOW_ACTIVITY); provProc.setWorkflowId(topLevelDataflowID); provProc.setTopLevelProcessor(true); // record the top level dataflow as a processor in the DB try { pw.addProcessor(provProc); // pw.addProcessor(topLevelDataflowName, DATAFLOW_PROCESSOR_TYPE, topLevelDataflowID, true); // true -> is top level } catch (SQLException e) { logger.warn("Can't add processor " + topLevelDataflowID, e); } } // logger.info("top level wf name: "+topLevelDataflowName); return processDataflowStructure(df, topLevelDataflowID, df.getLocalName()); // null: no external name given to top level dataflow }
for (Datalink dl : d.getLinks()) {
public UpdateDataflowInternalIdentifierEdit(Dataflow dataflow,String newId) { super(dataflow); this.newId=newId; this.oldId=dataflow.getIdentifier(); }
public WorkflowInstanceFacadeImpl(final Dataflow dataflow, InvocationContext context, String parentProcess) throws InvalidDataflowException { DataflowValidationReport report = dataflow.checkValidity(); if (!report.isValid()) { throw new InvalidDataflowException(dataflow, report); workflowItem.setProcessId(instanceOwningProcessId); workflowItem.setIdentifier(UUID.randomUUID().toString()); workflowItem.setParentId(dataflow.getInternalIdentier());
/** * Creates a MergeImpl instance. Merge names are generated as 'Merge0', * 'Merge1', 'Merge2', etc. The next merge to be added always gets the name * as the previous merge in the list with its index incremented by one. If a * merge is deleted, that is not taken into account when generating merges' * names. */ public Merge createMerge(Dataflow dataflow) { String mergeName; // Get all merges for a workflow List<? extends Merge> merges = (List<? extends Merge>) dataflow .getMerges(); if (merges.isEmpty()) { mergeName = "Merge0"; // the first merge to be added to the list } else { String lastMergeName = merges.get(merges.size() - 1).getLocalName(); // Get the index of the last Merge int lastMergeIndex = Integer.parseInt(lastMergeName.substring(5)); mergeName = "Merge" + String.valueOf((lastMergeIndex + 1)); } return new MergeImpl(mergeName); }
for (DataflowInputPort input : sourceDataflow.getInputPorts()) { String portName = Tools.uniquePortName(prefix + input.getName(), dataflow.getInputPorts()); DataflowInputPort newInpPort = edits.createDataflowInputPort( portName, input.getDepth(), input.getGranularInputDepth(), for (DataflowOutputPort output : sourceDataflow.getOutputPorts()) { String portName = Tools.uniquePortName(prefix + output.getName(), dataflow.getOutputPorts()); DataflowOutputPort newOutputPort = edits.createDataflowOutputPort( portName, dataflow); for (Processor processor : sourceDataflow.getProcessors()) { String originalName = processor.getLocalName(); String processorName = Tools.uniqueProcessorName(prefix for (Merge merge : sourceDataflow.getMerges()) { String originalName = merge.getLocalName(); String mergeName = Tools.uniqueProcessorName(prefix + originalName, for (DataflowInputPort inputPort : sourceDataflow.getInputPorts()) { try { Set<? extends Datalink> outgoingLinks = inputPort for (DataflowOutputPort outputPort : sourceDataflow.getOutputPorts()) { try { Datalink incomingLink = outputPort.getInternalInputPort()
private Processor findProcessorForActivity(Dataflow dataflow, Activity<?> activity) { for (Processor p : dataflow.getProcessors()) { for (Activity<?> a : p.getActivityList()) { if (a == activity) return p; } } return null; }