protected Edit<?> makeInsertNestedWorkflowEdit(Dataflow nestedFlow, String name) { List<Edit<?>> editList = new ArrayList<Edit<?>>(); insertedActivity = new DataflowActivity(); editList.add(edits.getConfigureActivityEdit(insertedActivity, nestedFlow)); Processor p = edits.createProcessor(name); editList.add(edits.getDefaultDispatchStackEdit(p)); editList.add(edits.getAddActivityEdit(p, insertedActivity)); editList.add(edits.getAddProcessorEdit(destinationDataflow, p)); CompoundEdit edit = new CompoundEdit(editList); return edit; }
@SuppressWarnings("unchecked") public Dataflow deserializeDataflow(Element element,Map<String,Element> innerDataflowElements) throws EditException, DeserializationException, ActivityConfigurationException, ClassNotFoundException, InstantiationException, IllegalAccessException { Dataflow df = edits.createDataflow(); edits.getUpdateDataflowNameEdit(df, name).doEdit(); edits.getUpdateDataflowInternalIdentifierEdit(df, id).doEdit(); Processor p = ProcessorXMLDeserializer.getInstance().deserializeProcessor(procElement,innerDataflowElements); createdProcessors.put(p.getLocalName(),p); edits.getAddProcessorEdit(df, p).doEdit();
editList.add(edits.getConfigureActivityEdit(strConstActivity, strConstConfBean)); suggestedProcessorName = base + "_" + counter++; Processor strConstProcessor = edits.createProcessor(suggestedProcessorName); Edit<Processor> processorEdit = edits.getAddActivityEdit(strConstProcessor, strConstActivity); editList.add(processorEdit); edits.createProcessorOutputPort(strConstProcessor, "value", 0, 0); // this port is the source of the datalink editList.add(edits.getAddProcessorOutputPortEdit(strConstProcessor, strConstProcessorOutputPort)); editList.add(edits.getAddActivityOutputPortMappingEdit(strConstActivity, "value", "value")); editList.add(edits.getDefaultDispatchStackEdit(strConstProcessor)); editList.add(edits.getAddProcessorEdit(dataflow, strConstProcessor)); Processor sinkProcessor = (Processor) (processorsWithInputPort.toArray()[0]); ProcessorInputPort sinkProcessorInputPort = edits.createProcessorInputPort(sinkProcessor, inputPort.getName(), inputPort.getDepth()); // this port is the sink of the datalink Activity<?> sinkActivity = null; for (Activity<?> procActivity : sinkProcessor.getActivityList()){ editList.add(edits.getAddProcessorInputPortEdit(sinkProcessor, sinkProcessorInputPort)); editList.add(edits.getAddActivityInputPortMappingEdit(sinkActivity, inputPort.getName(), inputPort.getName())); Datalink datalink = edits.createDatalink(strConstProcessorOutputPort,sinkProcessorInputPort); editList.add(edits.getConnectDatalinkEdit(datalink));
@Override protected Edit<?> makeInsertNestedWorkflowEdit(Dataflow nestedFlow, String name) { Edits edits = EditsRegistry.getEdits(); Edit<?> configureActivityEdit = edits.getConfigureActivityEdit(getActivity(), nestedFlow); List<Edit<?>> editList = new ArrayList<Edit<?>>(); editList.add(configureActivityEdit); Processor p = findProcessor(fileManager.getCurrentDataflow(), getActivity()); if (p != null && p.getActivityList().size() == 1) { editList.add(edits.getMapProcessorPortsForActivityEdit(p)); } return new CompoundEdit(editList); }
private EventHandlingInputPort getSinkPort(Processor processor, Activity<?> activity, String portName, List<Edit<?>> editList) { InputPort activityPort = net.sf.taverna.t2.workflowmodel.utils.Tools.getActivityInputPort(activity, portName); //check if processor port exists EventHandlingInputPort input = net.sf.taverna.t2.workflowmodel.utils.Tools.getProcessorInputPort(processor, activity, activityPort); if (input == null) { //port doesn't exist so create a processor port and map it ProcessorInputPort processorInputPort = edits.createProcessorInputPort(processor, activityPort.getName(), activityPort.getDepth()); editList.add(edits.getAddProcessorInputPortEdit(processor, processorInputPort)); editList.add(edits.getAddActivityInputPortMappingEdit(activity, activityPort.getName(), activityPort.getName())); input = processorInputPort; } return input; }
@Before public void makeDataflow() throws EditException { List<Edit<?>> compoundEdit = new ArrayList<Edit<?>>(); dataflow = fileManager.newDataflow(); Edits edits = EditsRegistry.getEdits(); proc1 = edits.createProcessor("processor1"); compoundEdit.add(edits.getAddProcessorEdit(dataflow, proc1)); Processor proc2 = edits.createProcessor("processor2"); compoundEdit.add(edits.getAddProcessorEdit(dataflow, proc2)); ProcessorInputPort in1 = edits.createProcessorInputPort(proc1, "in1", 0); compoundEdit.add(edits.getAddProcessorInputPortEdit(proc1, in1)); ProcessorInputPort in2 = edits .createProcessorInputPort(proc1, "in2", 0); compoundEdit.add(edits.getAddProcessorInputPortEdit(proc1, in2)); Activity<EchoConfig> activity = new AsynchEchoActivity(); compoundEdit.add(edits.getConfigureActivityEdit(activity, new EchoConfig())); compoundEdit.add(edits.getAddActivityEdit(proc1, activity)); compoundEdit.add(edits.getDefaultDispatchStackEdit(proc1)); editManager.doDataflowEdit(dataflow, new CompoundEdit(compoundEdit)); activityInputPort = activity.getInputPorts().iterator().next(); } }
edits.getAddActivityEdit(nestingProcessor, da).doEdit(); edits.getDefaultDispatchStackEdit(nestingProcessor).doEdit(); for (ActivityInputPort aip : da.getInputPorts()) { ProcessorInputPort pip = edits.createProcessorInputPort( nestingProcessor, aip.getName(), aip.getDepth()); edits.getAddProcessorInputPortEdit(nestingProcessor, pip) .doEdit(); edits.getAddActivityInputPortMappingEdit(da, aip.getName(), aip.getName()).doEdit(); ProcessorOutputPort pop = edits.createProcessorOutputPort( nestingProcessor, aop.getName(), aop.getDepth(), aop.getGranularDepth()); edits.getAddProcessorOutputPortEdit(nestingProcessor, pop) .doEdit(); edits.getAddActivityOutputPortMappingEdit(da, aop.getName(), aop.getName()).doEdit();
@SuppressWarnings("unchecked") public Processor deserializeProcessor(Element el,Map<String,Element>innerDataflowElements) throws EditException, ActivityConfigurationException, ClassNotFoundException, InstantiationException, IllegalAccessException, DeserializationException { String name=el.getChildText(NAME,T2_WORKFLOW_NAMESPACE); Processor result=edits.createProcessor(name); for (Element activity : (List<Element>)activities.getChildren(ACTIVITY,T2_WORKFLOW_NAMESPACE)) { Activity<?> a = ActivityXMLDeserializer.getInstance().deserializeActivity(activity,innerDataflowElements); edits.getAddActivityEdit(result, a).doEdit(); String portName=inputPort.getChildText(NAME,T2_WORKFLOW_NAMESPACE); int portDepth = Integer.valueOf(inputPort.getChildText(DEPTH,T2_WORKFLOW_NAMESPACE)); ProcessorInputPort port = edits.createProcessorInputPort(result, portName, portDepth); edits.getAddProcessorInputPortEdit(result, port).doEdit(); int portDepth = Integer.valueOf(outputPort.getChildText(DEPTH,T2_WORKFLOW_NAMESPACE)); int granularDepth = Integer.valueOf(outputPort.getChildText(GRANULAR_DEPTH,T2_WORKFLOW_NAMESPACE)); ProcessorOutputPort port = edits.createProcessorOutputPort(result, portName, portDepth, granularDepth); edits.getAddProcessorOutputPortEdit(result,port).doEdit();
d = ((NestedDataflow) a).getNestedDataflow(); } else { d = edits.createDataflow(); DataflowInputPort dip = edits.createDataflowInputPort( pip.getName(), pip.getDepth(), pip.getDepth(), d); componentWorkflowEditList.add(edits .getAddDataflowInputPortEdit(d, dip)); Datalink dl = edits.createDatalink( dip.getInternalOutputPort(), pip); componentWorkflowEditList.add(edits .getConnectDatalinkEdit(dl)); DataflowOutputPort dop = edits.createDataflowOutputPort( pop.getName(), d); componentWorkflowEditList.add(edits .getAddDataflowOutputPortEdit(d, dop)); Datalink dl = edits.createDatalink(pop, dop.getInternalInputPort()); componentWorkflowEditList.add(edits .getConnectDatalinkEdit(dl)); .getAddActivityInputPortMappingEdit(ca, pip.getName(), pip.getName())); .getAddActivityOutputPortMappingEdit(ca, pop.getName(), pop.getName()));
private EventForwardingOutputPort getSourcePort(Processor processor, Activity<?> activity, String portName, List<Edit<?>> editList) { OutputPort activityPort = net.sf.taverna.t2.workflowmodel.utils.Tools.getActivityOutputPort(activity, portName); //check if processor port exists EventForwardingOutputPort output = net.sf.taverna.t2.workflowmodel.utils.Tools.getProcessorOutputPort(processor, activity, activityPort); if (output == null) { //port doesn't exist so create a processor port and map it ProcessorOutputPort processorOutputPort = edits.createProcessorOutputPort(processor, activityPort.getName(), activityPort.getDepth(), activityPort.getGranularDepth()); editList.add(edits.getAddProcessorOutputPortEdit(processor, processorOutputPort)); editList.add(edits.getAddActivityOutputPortMappingEdit(activity, activityPort.getName(), activityPort.getName())); output = processorOutputPort; } return output; }
String portName = Tools.uniquePortName(prefix + input.getName(), dataflow.getInputPorts()); DataflowInputPort newInpPort = edits.createDataflowInputPort( portName, input.getDepth(), input.getGranularInputDepth(), dataflow); inp.put(input.getName(), newInpPort); compoundEdit.add(edits.getAddDataflowInputPortEdit(dataflow, newInpPort)); String portName = Tools.uniquePortName(prefix + output.getName(), dataflow.getOutputPorts()); DataflowOutputPort newOutputPort = edits.createDataflowOutputPort( portName, dataflow); outp.put(output.getName(), newOutputPort); compoundEdit.add(edits.getAddDataflowOutputPortEdit(dataflow, newOutputPort)); try { if (!processorName.equals(originalName)) { edits.getRenameProcessorEdit(processor, processorName) .doEdit(); compoundEdit.add(edits.getAddProcessorEdit(dataflow, processor)); try { if (!originalName.equals(mergeName)) { edits.getRenameMergeEdit(merge, mergeName).doEdit();
EditException, WorkflowTranslationException { Processor t2Processor = edits.createProcessor(t1Processor.getName()); edits.getAddProcessorEdit(dataflow, t2Processor).doEdit(); processorMap.put(t1Processor, t2Processor); edits.getAddActivityEdit(t2Processor, activity).doEdit(); edits.getAddActivityEdit(t2Processor, alternateActivity).doEdit();
Datalink datalink = edits.createDatalink(source, sink); edit = edits.getConnectDatalinkEdit(datalink); } else { List<Edit<?>> editList = new ArrayList<Edit<?>>(); merge = ((MergeOutputPort) incomingLink.getSource()).getMerge(); } else { merge = edits.createMerge(dataflow); editList.add(edits.getAddMergeEdit(dataflow, merge)); editList.add(edits.getDisconnectDatalinkEdit(incomingLink)); MergeInputPort mergeInputPort = edits.createMergeInputPort( merge, getUniqueMergeInputPortName(merge, incomingLink .getSource().getName() + "To" + merge.getLocalName() + "_input", counter++), incomingLink.getSink() .getDepth()); editList.add(edits.getAddMergeInputPortEdit(merge, mergeInputPort)); Datalink datalink = edits.createDatalink(incomingLink .getSource(), mergeInputPort); editList.add(edits.getConnectDatalinkEdit(datalink)); datalink = edits.createDatalink(merge.getOutputPort(), incomingLink.getSink()); editList.add(edits.getConnectDatalinkEdit(datalink)); MergeInputPort mergeInputPort = edits.createMergeInputPort(merge, getUniqueMergeInputPortName(merge, source.getName() + "To" + merge.getLocalName() + "_input", counter), sink.getDepth()); editList.add(edits.getAddMergeInputPortEdit(merge, mergeInputPort)); Datalink datalink = edits.createDatalink(source, mergeInputPort);
portNames.addAll(portMapping.keySet()); for (String portName : portNames) { editList.add(edits.getRemoveActivityInputPortMappingEdit(ra, portName)); portNames.addAll(portMapping.keySet()); for (String portName : portNames) { editList.add(edits.getRemoveActivityOutputPortMappingEdit(ra, portName)); editList.add(edits.getAddActivityInputPortMappingEdit(ra, portName, portMapping.get(portName))); editList.add(edits.getAddActivityOutputPortMappingEdit(ra, portName, portMapping.get(portName))); editList.add(edits.getRemoveActivityEdit(processor, disabledActivity)); editList.add(edits.getAddActivityEdit(processor, ra));
/** * Adds the selected dataflow to the currently opened one. Create a * processor with the same name as the nested dataflow (ie. the one just * opened). Add the configured dataflow activity to this processor. Then use * the {@link EditManager} to add the processor to the main dataflow so that * any GUI updates are forced * * @param dataflow */ private void addSelectedDataflowToCurrentDataflow(Dataflow dataflow) { createProcessor = EditsRegistry.getEdits().createProcessor( dataflow.getLocalName()); try { EditsRegistry.getEdits().getAddActivityEdit(createProcessor, dataflowActivity).doEdit(); EditManager.getInstance().doDataflowEdit( (Dataflow) ModelMap.getInstance().getModel( ModelMapConstants.CURRENT_DATAFLOW), EditsRegistry.getEdits() .getMapProcessorPortsForActivityEdit( createProcessor)); } catch (EditException e) { logger.error("Could not add nested workflow", e); } }
@Before public void setUp() throws Exception { activity = new DataflowActivity(); Edits edits = new EditsImpl(); activity.setEdits(edits); dataflow = edits.createDataflow(); edits.getCreateDataflowInputPortEdit(dataflow, "input", 0, 0).doEdit(); edits.getCreateDataflowOutputPortEdit(dataflow, "output").doEdit(); Datalink datalink = edits.createDatalink(dataflow.getInputPorts().get(0).getInternalOutputPort(), dataflow.getOutputPorts().get(0).getInternalInputPort()); edits.getConnectDatalinkEdit(datalink).doEdit(); }
Merge merge; if (sinkPort.getIncomingLink() == null) { merge = edits.createMerge(dataflow); edits.getAddMergeEdit(dataflow, merge).doEdit(); } else { if (sinkPort.getIncomingLink().getSource() instanceof MergeOutputPort) { + elementToString(datalink)); try { edits.getConnectMergedDatalinkEdit(merge, sourcePort, sinkPort) .doEdit(); Datalink link = edits.createDatalink(sourcePort, sinkPort); edits.getConnectDatalinkEdit(link).doEdit();
protected Map<String, DummyEventHandler> addDummyEventHandlersToOutputs( Dataflow dataflow) throws EditException { Edits edits = new EditsImpl(); Map<String, DummyEventHandler> eventHandlers = new HashMap<String, DummyEventHandler>(); for (DataflowOutputPort outputPort : dataflow.getOutputPorts()) { DummyEventHandler testOutputEventHandler = new DummyEventHandler( context.getReferenceService()); eventHandlers.put(outputPort.getName(), testOutputEventHandler); Datalink link = edits.createDatalink(outputPort, testOutputEventHandler); edits.getConnectDatalinkEdit(link).doEdit(); } return eventHandlers; }
Datalink newDatalink = edits.createDatalink( (EventForwardingOutputPort) oldNewMapping .get(datalinkSource), .get(datalinkSink)); try { edits.getConnectDatalinkEdit(newDatalink).doEdit(); } catch (EditException e1) { logger.error("failed to connect datalink", e1); outputPortMap .put(datalinkSource, edits .createDataflowOutputPort(portName, nestedDataflow)); edits.getAddDataflowOutputPortEdit(nestedDataflow, dop) .doEdit(); Datalink newDatalink = edits.createDatalink( (EventForwardingOutputPort) oldNewMapping .get(datalinkSource), dop .getInternalInputPort()); edits.getConnectDatalinkEdit(newDatalink).doEdit(); } catch (EditException e1) { logger.error("failed to add dataflow output", e1); inputPortMap.put( datalinkSink, edits.createDataflowInputPort(portName, dl.getResolvedDepth(),
private Processor createNestingProcessor(List<Edit<?>> editList) { Processor nestingProcessor = edits.createProcessor(uniqueProcessorName( nameField.getText(), currentDataflow)); if (includedProcessors.size() != 1 || !(includedProcessors.get(0) instanceof Processor)) return nestingProcessor; Processor includedProcessor = (Processor) includedProcessors.get(0); for (Class<?> c : at.getAnnotatingClasses(includedProcessor)) { AnnotationBeanSPI annotation = at.getAnnotation(includedProcessor, AbstractTextualValueAssertion.class); if ((annotation != null) && (annotation instanceof AbstractTextualValueAssertion)) editList.add(at.setAnnotationString(nestingProcessor, c, ((AbstractTextualValueAssertion) annotation).getText())); } return nestingProcessor; }