/** * Returns the name of the <code>Workflow</code> to run. If no * <code>Workflow</code> name is set the main <code>Workflow</code> from the * <code>WorkflowBundle</code> will be run. * * @return the <code>Workflow</code> to run */ public String getWorkflowName() { if (workflowName == null && workflowBundle.getMainWorkflow() != null) return workflowBundle.getMainWorkflow().getName(); return workflowName; }
private Workflow parseWorkflow(ScuflType wf) { Workflow oldCurrentWorkflow = parserState.get().getCurrentWorkflow(); Workflow workflow = new Workflow(); workflow.setParent(parserState.get().getCurrentWorkflowBundle()); parserState.get().addMapping(wf, workflow); parserState.get().setCurrentWorkflow(workflow); WorkflowDescriptionType description = wf.getWorkflowdescription(); workflow.setName(sanitiseName(description.getTitle())); parseWorkflowInputs(wf); parseWorkflowOutputs(wf); parseProcessors(wf); parseLinks(wf); parseCoordinations(wf); parseAnnotations(wf); replaceDefaultsWithStringConstants(wf); // To be done parserState.get().setCurrentWorkflow(oldCurrentWorkflow); return workflow; }
public void clearWorkflowData() { for (DataLink dl : workflow.getDataLinks()) dataLinkResolvedDepthMap.remove(dl); for (InputWorkflowPort iwp : workflow.getInputPorts()) { senderDataLinkMap.remove(iwp); portResolvedDepthMap.remove(iwp); } for (Processor p : workflow.getProcessors()) { for (InputProcessorPort ipp : p.getInputPorts()) { portResolvedDepthMap.remove(ipp); receiverDataLinkMap.remove(ipp); } for (OutputProcessorPort opp : p.getOutputPorts()) { portResolvedDepthMap.remove(opp); senderDataLinkMap.remove(opp); } } for (OutputWorkflowPort owp : workflow.getOutputPorts()) { portResolvedDepthMap.remove(owp); receiverDataLinkMap.remove(owp); } } }
@Override public boolean accept(Visitor visitor) { if (visitor.visitEnter(this)) { List<WorkflowBean> children = new ArrayList<>(); children.addAll(getInputPorts()); children.addAll(getOutputPorts()); children.addAll(getProcessors()); children.addAll(getDataLinks()); children.addAll(getControlLinks()); children.add(getCurrentRevision()); for (WorkflowBean bean : children) if (!bean.accept(visitor)) break; } return visitor.visitLeave(this); }
protected Workflow skeletonDataflow(Dataflow df) { Workflow wf = new Workflow(); parserState.get().setCurrentWorkflow(wf); wf.setName(df.getName()); wf.setIdentifier(WORKFLOW_ROOT.resolve(df.getId() + "/")); return wf; }
@Test public void readBundleStream() throws Exception { InputStream inputStream = new ByteArrayInputStream( getStructureFormatWorkflowBundle().getBytes("utf-8")); WorkflowBundle wfBundle = bundleIO.readBundle(inputStream, TEXT_VND_TAVERNA_SCUFL2_STRUCTURE); assertEquals("HelloWorld", wfBundle.getName()); assertEquals("HelloWorld", wfBundle.getMainWorkflow().getName()); assertTrue(wfBundle.getMainWorkflow().getProcessors() .containsName("Hello")); }
@Override public void setParent(Workflow parent) { if (this.parent != null && this.parent != parent) this.parent.getProcessors().remove(this); this.parent = parent; if (parent != null) parent.getProcessors().add(this); }
@Test public void cloneWorkflow() throws Exception { Workflow original = originalWfBundle.getMainWorkflow(); assertEquals(originalWfBundle, original.getParent()); Workflow clone = (Workflow) original.clone(); assertNull(clone.getParent()); assertEquals(original.getName(), clone.getName()); assertNotSame(original.getProcessors().getByName("Hello"), clone .getProcessors().getByName("Hello")); assertNotSame(original.getCurrentRevision(), clone.getCurrentRevision()); assertEquals(original.getCurrentRevision(), clone.getCurrentRevision()); }
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; }
/** * @throws java.lang.Exception */ @Before public void setUp() throws Exception { subject = new Workflow(); statusReport = new StatusReport<Workflow,StatusReport<?,?>>(subject); }
@Test public void workflowsNotEqualsUnlessOrphans() { Workflow wf1 = new Workflow(); Workflow wf2 = new Workflow(); wf1.setName("fred"); wf2.setName("fred"); // No parents, so they are equal assertEquals(wf1, wf2); WorkflowBundle wb1 = new WorkflowBundle(); WorkflowBundle wb2 = new WorkflowBundle(); // Make them look "equal" wb2.setName(wb1.getName()); wb2.setGlobalBaseURI(wb1.getGlobalBaseURI()); assertFalse(wb1.equals(wb2)); wf1.setParent(wb1); wf2.setParent(wb2); assertFalse(wf1.equals(wf2)); wf1.setParent(null); assertFalse(wf1.equals(wf2)); assertFalse(wf2.equals(wf1)); wf2.setParent(null); assertTrue(wf1.equals(wf2)); }
@SuppressWarnings("unchecked") @Test public void expectedOrder() throws Exception { Workflow wf = new Workflow(); wf.setName("wf"); Processor a = new Processor(wf, "a"); Processor b = new Processor(wf, "b"); Processor c = new Processor(wf, "c"); Processor d = new Processor(wf, "d"); BlockingControlLink b_blocks_c = new BlockingControlLink(c, b); BlockingControlLink a_blocks_c = new BlockingControlLink(c, a); BlockingControlLink a_blocks_b = new BlockingControlLink(b, a); BlockingControlLink b_blocks_d = new BlockingControlLink(d, b); BlockingControlLink a_blocks_d = new BlockingControlLink(d, a); ArrayList<ControlLink> links = new ArrayList<ControlLink>(wf.getControlLinks()); assertEquals(Arrays.asList(a_blocks_b, a_blocks_c, a_blocks_d, b_blocks_c, b_blocks_d), links); Collections.shuffle(links); Collections.sort(links); assertEquals(Arrays.asList(a_blocks_b, a_blocks_c, a_blocks_d, b_blocks_c, b_blocks_d), links); }
append(wf); appendPorts(2, wf); for (Processor p : sorted(wf.getProcessors())) { newLine(2); append("Processor"); for (DataLink dl : wf.getDataLinks()) links.add(datalink(dl.getReceivesFrom()) + " -> " + datalink(dl.getSendsTo())); Collections.sort(links); if (!wf.getControlLinks().isEmpty()) { newLine(2); append("Controls"); List<ControlLink> controlLinks = new ArrayList<>(wf.getControlLinks()); Collections.sort(controlLinks); for (ControlLink controlLink : controlLinks) { newLine(3); append("Processor"); String name = " '" + escapeName(pb.getBoundProcessor().getParent().getName()); name = name + ":" + escapeName(pb.getBoundProcessor().getName()) + "'"; append(name);
protected void parseWorkflow( org.apache.taverna.scufl2.xml.Workflow workflow, URI wfUri) throws ReaderException { Workflow wf = new Workflow(); wf.setParent(getParserState().getCurrent(WorkflowBundle.class)); try { if (workflow.getName() != null) wf.setName(workflow.getName()); if (workflow.getWorkflowIdentifier() != null && workflow.getWorkflowIdentifier().getResource() != null) wf.setIdentifier(getParserState().getCurrentBase().resolve( workflow.getWorkflowIdentifier().getResource()));
wb.setName("bundle1"); Workflow workflow = new Workflow(); workflow.setName("workflow1"); workflow.setParent(wb); workflow.newRevision();
@SuppressWarnings({ "unchecked", "unused" }) @Test public void expectedOrder() throws Exception { Workflow wf = new Workflow(); wf.setName("wf"); InputWorkflowPort a = new InputWorkflowPort(wf, "a"); InputWorkflowPort b = new InputWorkflowPort(wf, "b"); InputWorkflowPort c = new InputWorkflowPort(wf, "c"); OutputWorkflowPort x = new OutputWorkflowPort(wf, "x"); OutputWorkflowPort y = new OutputWorkflowPort(wf, "y"); OutputWorkflowPort z = new OutputWorkflowPort(wf, "z"); DataLink c_x = new DataLink(wf, c, x); DataLink b_x = new DataLink(wf, b, x); DataLink b_z = new DataLink(wf, b, z); DataLink a_z = new DataLink(wf, a, z); DataLink a_x = new DataLink(wf, a, x); ArrayList<DataLink> links = new ArrayList<DataLink>(wf.getDataLinks()); assertEquals(Arrays.asList(a_x, a_z, b_x, b_z, c_x), links); Collections.shuffle(links); Collections.sort(links); assertEquals(Arrays.asList(a_x, a_z, b_x, b_z, c_x), links); }
@Override public void visitWorkflow(Workflow bean) { Set<DataLink> dataLinks = bean.getDataLinks(); Set<ControlLink> controlLinks = bean.getControlLinks(); // ports are done in Ported NamedSet<Processor> processors = bean.getProcessors(); URI workflowIdentifier = bean.getIdentifier(); if (workflowIdentifier != null) { if (!workflowIdentifier.isAbsolute()) listener.nonAbsoluteURI(bean, "workflowIdentifier", workflowIdentifier); else if (workflowIdentifier.getScheme().equals("file")) listener.nonAbsoluteURI(bean, "workflowIdentifier", workflowIdentifier); } if (checkComplete) { if (dataLinks == null) listener.nullField(bean, "dataLinks"); if (controlLinks == null) listener.nullField(bean, "controlLinks"); if (processors == null) listener.nullField(bean, "processors"); if (workflowIdentifier == null) listener.nullField(bean, "workflowIdentifier"); } }
@Test public void replaceOnRename() throws Exception { Workflow wf = new Workflow(); Processor fish = new Processor(wf, "fish"); @SuppressWarnings("unused") Processor soup = new Processor(wf, "soup"); assertEquals(2, wf.getProcessors().size()); assertEquals(new HashSet(Arrays.asList("fish", "soup")), wf .getProcessors().getNames()); fish.setName("soup"); assertEquals(new HashSet(Arrays.asList("soup")), wf .getProcessors().getNames()); assertEquals(1, wf.getProcessors().size()); assertEquals(fish, wf.getProcessors().iterator().next()); assertEquals(fish, wf.getProcessors().getByName("soup")); assertNull(wf.getProcessors().getByName("fish")); }