@Override public void setParent(Processor parent) { if (this.parent != null && this.parent != parent) this.parent.getOutputPorts().remove(this); this.parent = parent; if (parent != null) parent.getOutputPorts().add(this); }
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<Iterable<? extends WorkflowBean>> children = new ArrayList<>(); children.add(getInputPorts()); children.add(getOutputPorts()); outer: for (Iterable<? extends WorkflowBean> it : children) for (WorkflowBean bean : it) if (!bean.accept(visitor)) break outer; if (getIterationStrategyStack() != null) getIterationStrategyStack().accept(visitor); } return visitor.visitLeave(this); }
private OutputProcessorPort findOrCreateProcessorOutputPort(Processor p, String name, Integer depth, Integer granularDepth) { OutputProcessorPort port = p.getOutputPorts().getByName(name); if (port == null) { port = new OutputProcessorPort(); port.setParent(p); port.setName(name); port.setDepth(depth); port.setGranularDepth(granularDepth); } return port; }
@Test public void processorOutputPorts() throws Exception { Processor hello = workflowBundle.getMainWorkflow().getProcessors() .getByName("Hello"); assertEquals(1, hello.getOutputPorts().size()); assertEquals("greeting", hello.getOutputPorts().getByName("greeting") .getName()); assertEquals(0, hello.getOutputPorts().getByName("greeting").getDepth() .intValue()); assertEquals(0, hello.getOutputPorts().getByName("greeting") .getGranularDepth().intValue()); }
public void removePortsBindingForUnknownPorts(ProcessorBinding binding) { // First, remove ports no longer owned by processor Iterator<ProcessorInputPortBinding> inputBindings = binding .getInputPortBindings().iterator(); Activity activity = binding.getBoundActivity(); Processor processor = binding.getBoundProcessor(); for (ProcessorInputPortBinding ip : iterable(inputBindings)) { if (!activity.getInputPorts().contains(ip.getBoundActivityPort())) { inputBindings.remove(); continue; } if (!processor.getInputPorts().contains(ip.getBoundProcessorPort())) { inputBindings.remove(); continue; } } Iterator<ProcessorOutputPortBinding> outputBindings = binding .getOutputPortBindings().iterator(); for (ProcessorOutputPortBinding op : iterable(outputBindings)) { if (!activity.getOutputPorts().contains(op.getBoundActivityPort())) { outputBindings.remove(); continue; } if (!processor.getOutputPorts() .contains(op.getBoundProcessorPort())) { outputBindings.remove(); continue; } } }
@Test public void uriForDatalinkWithMerge() throws Exception { Processor hello = wfBundle.getMainWorkflow().getProcessors() .getByName("Hello"); List<DataLink> greetingLinks = scufl2Tools.datalinksFrom(hello .getOutputPorts().getByName("greeting")); URI uri = uriTools.uriForBean(greetingLinks.get(0)); assertEquals( HELLOWORLD_URI + "datalink?from=processor/Hello/out/greeting&to=out/results&mergePosition=0", uri.toASCIIString()); }
@Test public void resolveDataLinkWithMerge() throws Exception { Processor hello = wfBundle.getMainWorkflow().getProcessors() .getByName("Hello"); OutputProcessorPort greeting = hello.getOutputPorts().getByName( "greeting"); List<DataLink> datalinks = scufl2Tools.datalinksFrom(greeting); assertSame( datalinks.get(0), uriTools.resolveUri( HELLOWORLD_URI .resolve("datalink?from=processor/Hello/out/greeting&to=out/results&mergePosition=0"), wfBundle)); }
@Test public void resolveProcessorOutput() throws Exception { Processor hello = wfBundle.getMainWorkflow().getProcessors() .getByName("Hello"); OutputProcessorPort greeting = hello.getOutputPorts().getByName( "greeting"); assertSame(greeting, uriTools.resolveUri( HELLO_URI.resolve("out/greeting"), wfBundle)); }
@Test public void uriForProcessorOutPort() throws Exception { Processor hello = wfBundle.getMainWorkflow().getProcessors() .getByName("Hello"); URI uri = uriTools.uriForBean(hello.getOutputPorts().getByName( "greeting")); assertEquals(HELLO_URI + "out/greeting", uri.toASCIIString()); }
public void createActivityPortsFromProcessor(Activity activity, Processor processor) { for (InputProcessorPort processorPort : processor.getInputPorts()) new InputActivityPort(activity, processorPort.getName()) .setDepth(processorPort.getDepth()); for (OutputProcessorPort processorPort : processor.getOutputPorts()) { OutputActivityPort activityPort = new OutputActivityPort(activity, processorPort.getName()); activityPort.setDepth(processorPort.getDepth()); activityPort.setGranularDepth(processorPort.getGranularDepth()); } }
@Test public void processorPortBindingForOutputProcessorPort() throws Exception { Profile profile = workflowBundle.getMainProfile(); Processor hello = workflowBundle.getMainWorkflow().getProcessors() .getByName("Hello"); OutputProcessorPort port = hello.getOutputPorts().getByName("greeting"); ProcessorBinding processorBinding = profile.getProcessorBindings() .getByName("Hello"); ProcessorOutputPortBinding outputPortBinding = processorBinding .getOutputPortBindings().iterator().next(); assertSame(outputPortBinding, scufl2Tools.processorPortBindingForPort(port, profile)); }
@Test public void resolveProcessorBindingOut() throws Exception { Processor hello = wfBundle.getMainWorkflow().getProcessors() .getByName("Hello"); ProcessorOutputPortBinding binding = scufl2Tools .processorPortBindingForPort( hello.getOutputPorts().getByName("greeting"), wfBundle.getMainProfile()); assertSame(binding, uriTools.resolveUri( PROFILE_URI.resolve("processorbinding/Hello/out/greeting"), wfBundle)); }
public void bindActivityToProcessorByMatchingPorts(ProcessorBinding binding) { Activity activity = binding.getBoundActivity(); Processor processor = binding.getBoundProcessor(); for (InputActivityPort activityPort : activity.getInputPorts()) { InputProcessorPort processorPort = processor.getInputPorts() .getByName(activityPort.getName()); if (processorPort != null && processorPortBindingInternalInBinding(processorPort, binding) == null) new ProcessorInputPortBinding(binding, processorPort, activityPort); } for (OutputProcessorPort processorPort : processor.getOutputPorts()) { OutputActivityPort activityPort = activity.getOutputPorts() .getByName(processorPort.getName()); if (activityPort != null && processorPortBindingInternalInBinding(activityPort, binding) == null) new ProcessorOutputPortBinding(binding, activityPort, processorPort); } }
@Test public void processorPortsWait4Me() throws Exception { Processor wait4me = workflowBundle.getMainWorkflow().getProcessors() .getByName("wait4me"); assertEquals(0, wait4me.getInputPorts().size()); assertEquals(0, wait4me.getOutputPorts().size()); }
assertEquals(1, pIn2.getDepth().intValue()); assertEquals(3, p.getOutputPorts().size()); OutputProcessorPort pOut1 = p.getOutputPorts().getByName("out1"); assertEquals(null, pOut1.getDepth()); assertEquals(null, pOut1.getGranularDepth()); OutputProcessorPort pOut2 = p.getOutputPorts().getByName("out2"); assertEquals(0, pOut2.getDepth().intValue()); assertEquals(null, pOut2.getGranularDepth()); OutputProcessorPort pOut3 = p.getOutputPorts().getByName("out3"); assertEquals(2, pOut3.getDepth().intValue()); assertEquals(1, pOut3.getGranularDepth().intValue());
@Test public void portBindings() throws Exception { ProcessorBinding hello = profile.getProcessorBindings().getByName( "Hello"); assertEquals(1, hello.getInputPortBindings().size()); assertEquals(1, hello.getOutputPortBindings().size()); ProcessorInputPortBinding input = hello.getInputPortBindings() .iterator().next(); InputActivityPort inputActivityPort = profile.getActivities() .getByName("HelloScript").getInputPorts() .getByName("personName"); assertEquals(inputActivityPort, input.getBoundActivityPort()); InputProcessorPort inputProcessorPort = bundle.getMainWorkflow() .getProcessors().getByName("Hello").getInputPorts() .getByName("name"); assertEquals(inputProcessorPort, input.getBoundProcessorPort()); ProcessorOutputPortBinding output = hello.getOutputPortBindings() .iterator().next(); OutputActivityPort outputActivityPort = profile.getActivities() .getByName("HelloScript").getOutputPorts().getByName("hello"); assertEquals(outputActivityPort, output.getBoundActivityPort()); OutputProcessorPort outputProcessorPort = bundle.getMainWorkflow() .getProcessors().getByName("Hello").getOutputPorts() .getByName("greeting"); assertEquals(outputProcessorPort, output.getBoundProcessorPort()); }
throw new ReaderException("Link from unknown processor " + processorName); OutputProcessorPort candidate = processor.getOutputPorts() .getByName(portName); if (candidate == null)
@Test public void createProcessorFromActivity() throws Exception { Profile profile = new Profile(); Activity a = new Activity(); a.setParent(profile); new InputActivityPort(a, "in1"); new InputActivityPort(a, "in2").setDepth(1); new OutputActivityPort(a, "out1"); new OutputActivityPort(a, "out2").setDepth(0); OutputActivityPort aOut3 = new OutputActivityPort(a, "out3"); aOut3.setDepth(2); aOut3.setGranularDepth(1); ProcessorBinding binding = scufl2Tools.createProcessorAndBindingFromActivity(a); Processor p = binding.getBoundProcessor(); assertEquals(profile, binding.getParent()); assertEquals(2, p.getInputPorts().size()); assertEquals(3, p.getOutputPorts().size()); assertEquals(2, binding.getInputPortBindings().size()); assertEquals(3, binding.getOutputPortBindings().size()); assertEquals(a, binding.getBoundActivity()); assertEquals(p, binding.getBoundProcessor()); }
@Test public void createProcessorPortsFromActivityWithOverwrite() throws Exception { Activity a = new Activity(); new InputActivityPort(a, "in1"); new OutputActivityPort(a, "out1"); new OutputActivityPort(a, "out2").setDepth(1); Processor p = new Processor(); new InputProcessorPort(p, "other"); OutputProcessorPort toBeOverWritten = new OutputProcessorPort(p, "out1"); toBeOverWritten.setDepth(1); assertEquals(p, toBeOverWritten.getParent()); scufl2Tools.createProcessorPortsFromActivity(p, a); // Still there assertNotNull(p.getInputPorts().getByName("other")); // but out1 has been overwritten OutputProcessorPort pOut1 = p.getOutputPorts().getByName("out1"); assertNull(pOut1.getDepth()); assertNotSame(toBeOverWritten, pOut1); }