@Override protected void cloneInto(WorkflowBean clone, Cloning cloning) { DataLink cloneLink = (DataLink)clone; cloneLink.setMergePosition(getMergePosition()); cloneLink.setReceivesFrom(cloning.cloneIfNotInCache(getReceivesFrom())); cloneLink.setSendsTo(cloning.cloneIfNotInCache(getSendsTo())); }
protected void parseDataLink(DataLink original) { URI fromUri = getParserState().getCurrentBase().resolve( original.getReceiveFrom().getResource()); URI toUri = getParserState().getCurrentBase().resolve( original.getSendTo().getResource()); WorkflowBean from = resolveBeanUri(fromUri); WorkflowBean to = resolveBeanUri(toUri); uk.org.taverna.scufl2.api.core.DataLink link = new uk.org.taverna.scufl2.api.core.DataLink(); link.setReceivesFrom((SenderPort) from); link.setSendsTo((ReceiverPort) to); if (original.getMergePosition() != null) { link.setMergePosition(original.getMergePosition().getValue()); } link.setParent(getParserState().getCurrent(Workflow.class)); mapBean(getParserState().getCurrentBase().resolve(original.getAbout()), link); }
aLink.setMergePosition(0); DataLink bLink = new DataLink(w, b, outA); bLink.setMergePosition(1); aLink2.setMergePosition(1); DataLink bLink2 = new DataLink(w, b, outB); bLink2.setMergePosition(0);
public Workflow makeMainWorkflow() { workflow = new Workflow(); workflow.setName("HelloWorld"); // NOTE: setWorkflowIdentifier should only be called when loading a // workflow // which already has an ID workflow.setIdentifier(URI .create("http://ns.taverna.org.uk/2010/workflow/00626652-55ae-4a9e-80d4-c8e9ac84e2ca/")); InputWorkflowPort yourName = new InputWorkflowPort(workflow, "yourName"); yourName.setDepth(0); OutputWorkflowPort results = new OutputWorkflowPort(workflow, "results"); // Not needed: // workflow.getInputPorts().add(yourName); // workflow.getOutputPorts().add(results); workflow.getProcessors().add(makeProcessor()); workflow.getProcessors().add(makeProcessor2()); // Make links DataLink directLink = new DataLink(workflow, yourName, results); directLink.setMergePosition(1); DataLink greetingLink = new DataLink(workflow, processorGreeting, results); greetingLink.setMergePosition(0); nameLink = new DataLink(workflow, yourName, processorName); condition = new BlockingControlLink(processor, wait4me); return workflow; }
dataLink.setMergePosition(mergePosition);
@Test public void testCorrectnessOfMergePositionSpecifiedCorrectly() { Workflow w = new Workflow(); DataLink dataLink = new DataLink(); dataLink.setParent(w); InputWorkflowPort iwp = new InputWorkflowPort(); iwp.setParent(w); OutputWorkflowPort owp = new OutputWorkflowPort(); owp.setParent(w); dataLink.setReceivesFrom(iwp); dataLink.setSendsTo(owp); Integer mergePosition = Integer.valueOf(3); dataLink.setMergePosition(mergePosition); CorrectnessValidator cv = new CorrectnessValidator(); ReportCorrectnessValidationListener rcvl = new ReportCorrectnessValidationListener(); cv.checkCorrectness(dataLink, false, rcvl); Set<NegativeValueProblem> negativeValueProblems = rcvl.getNegativeValueProblems(); assertEquals(Collections.EMPTY_SET, negativeValueProblems); }