/** * Returns true if processor contains a nested workflow. */ public static boolean containsNestedWorkflow(Processor processor) { return ((!processor.getActivityList().isEmpty()) && processor .getActivityList().get(0) instanceof NestedDataflow); }
protected Element processorToXML(Processor processor) throws IOException, JDOMException { Element result = new Element(PROCESSOR, T2_WORKFLOW_NAMESPACE); Element nameElement = new Element(NAME, T2_WORKFLOW_NAMESPACE); nameElement.setText(processor.getLocalName()); result.addContent(nameElement); // input and output ports Element inputPorts = processorInputPortsToXML(processor); Element outputPorts = processorOutputPortsToXML(processor); result.addContent(inputPorts); result.addContent(outputPorts); // annotations result.addContent(annotationsToXML(processor)); // list of activities Element activities = new Element(ACTIVITIES, T2_WORKFLOW_NAMESPACE); for (Activity<?> activity : processor.getActivityList()) { activities.addContent(activityToXML(activity)); } result.addContent(activities); // dispatch stack result.addContent(dispatchStackToXML(processor.getDispatchStack())); // iteration strategy result.addContent(iterationStrategyStackToXML(processor .getIterationStrategy())); return result; }
private EventForwardingOutputPort findOutputPort(Processor processor, String name) { for (EventForwardingOutputPort outputPort : processor.getOutputPorts()) { if (outputPort.getName().equals(name)) { return outputPort; } } return null; }
public Element conditionsToXML(List<? extends Processor> processors) { Element result = new Element(CONDITIONS, T2_WORKFLOW_NAMESPACE); // gather conditions Set<Condition> conditions = new HashSet<Condition>(); for (Processor p : processors) { for (Condition c : p.getControlledPreconditionList()) { conditions.add(c); } } for (Condition c : conditions) { Element conditionElement = new Element(CONDITION, T2_WORKFLOW_NAMESPACE); conditionElement.setAttribute("control", c.getControl() .getLocalName()); conditionElement.setAttribute("target", c.getTarget() .getLocalName()); result.addContent(conditionElement); } return result; } }
public AddConditionAction(Dataflow dataflow, Processor control, Processor target, Component component) { super(dataflow, component); this.control = control; this.target = target; Activity<?> activity = control.getActivityList().get(0); Icon activityIcon = ActivityIconManager.getInstance().iconForActivity(activity); putValue(SMALL_ICON, activityIcon); putValue(NAME, control.getLocalName()); }
private void transferProcessor(List<Edit<?>> editList, Map<Object, Object> oldNewMapping, Dataflow nestedDataflow, Processor p) throws Exception { editList.add(edits.getRemoveProcessorEdit(currentDataflow, p)); Processor newProcessor = pasteProcessor(copyProcessor(p), nestedDataflow); oldNewMapping.put(p, newProcessor); for (ProcessorInputPort pip : p.getInputPorts()) for (ProcessorInputPort newPip : newProcessor.getInputPorts()) if (pip.getName().equals(newPip.getName())) { oldNewMapping.put(pip, newPip); break; } for (ProcessorOutputPort pop : p.getOutputPorts()) for (ProcessorOutputPort newPop : newProcessor.getOutputPorts()) if (pop.getName().equals(newPop.getName())) { oldNewMapping.put(pop, newPop); break; } }
@SuppressWarnings("null") @Test public void testBoundPortOverridesDefault() throws Exception { Dataflow dataflow = loadAndTranslateWorkflow("bound_port_overides_default.xml"); assertEquals("there should only be 2 processors",2,dataflow.getProcessors().size()); Processor processor_A=null; Processor processor_B=null; for (Processor p : dataflow.getProcessors()) { if (p.getLocalName().equals("Processor_A")) processor_A=p; if (p.getLocalName().equals("Processor_B")) processor_B=p; } assertNotNull("Could not find processor A",processor_A); assertNotNull("Could not find processor B",processor_B); assertEquals("processor_A should have no inputs",0,processor_A.getInputPorts().size()); assertEquals("processor_A should have 1 output",1,processor_A.getOutputPorts().size()); assertEquals("processor_B should have 1 input",1,processor_B.getInputPorts().size()); assertEquals("processor_B should have 1 input named input_1","input_1",processor_B.getInputPorts().get(0).getName()); assertEquals("processor_B should have 1 output",1,processor_B.getOutputPorts().size()); assertEquals("processor_B should have 1 activity",1,processor_B.getActivityList().size()); Activity<?>activity = processor_B.getActivityList().get(0); assertEquals("activity should have 3 input ports",3,activity.getInputPorts().size()); }
assertTrue(processorNames.remove(processor.getLocalName())); for (Port inputPort : processor.getInputPorts()) { assertTrue(portNames.remove(inputPort.getName())); for (Port outputPort : processor.getOutputPorts()) { assertTrue(portNames.remove(outputPort.getName())); assertEquals(1, processor.getActivityList().size()); Activity<?> activity = processor.getActivityList().get(0); assertNotNull(processor.getLocalName(), activity); Map<String, String> inputPortMap = activity.getInputPortMapping(); Map<String, String> outputPortMap = activity.getOutputPortMapping(); .getPreconditionList(); if (processor.getLocalName().equals("processor_b")) { assertEquals(1, conditions.size()); assertEquals("processor_a", conditions.get(0).getControl() .getLocalName()); assertEquals("processor_b", conditions.get(0).getTarget() .getLocalName()); } else { assertEquals(0, conditions.size()); .getIterationStrategy(); assertEquals(1, iterationStrategies.getStrategies().size()); if (processor.getLocalName().equals("processor_a")) { AbstractIterationStrategyNode terminal = (AbstractIterationStrategyNode) iterationStrategies .getStrategies().get(0).getTerminal();
@Override protected String getViewTitle() { return "Processor " + processor.getLocalName(); }
public void actionPerformed(ActionEvent e) { try { List<? extends ProcessorInputPort> inputPorts = processor.getInputPorts(); List<? extends ProcessorOutputPort> outputPorts = processor.getOutputPorts(); List<? extends Condition> controlledPreconditions = processor.getControlledPreconditionList(); List<? extends Condition> preconditions = processor.getPreconditionList(); List<Edit<?>> editList = new ArrayList<Edit<?>>(); for (ProcessorInputPort inputPort : inputPorts) {
private EventHandlingInputPort findInputPort(Processor processor, String name) { for (EventHandlingInputPort inputPort : processor.getInputPorts()) { if (inputPort.getName().equals(name)) { return inputPort; } } return null; }
public static Loop getLoopLayer(Processor p) { Loop result = null; for (DispatchLayer dl : p.getDispatchStack().getLayers()) { if (dl instanceof Loop) { result = (Loop) dl; break; } } return result; }
processor); services.add(processorNode); if (processor.getActivityList().isEmpty()) { continue; Activity<?> activity = processor.getActivityList().get(0); List<? extends Condition> controllinksList = (List<? extends Condition>) processor.getControlledPreconditionList(); if (!controllinksList.isEmpty()) { for (Condition controllink: controllinksList) {
public void fire(String owningProcess, InvocationContext context) { String newOwningProcess = owningProcess + ":" + getLocalName(); for (Processor p : processors) { if (p.getInputPorts().isEmpty()) { p.fire(newOwningProcess, context); } } }
public void testCreation() throws ActivityConfigurationException, EditException { create(); assertTrue(p1.getControlledPreconditionList().size() == 1); assertTrue(p2.getPreconditionList().size() == 1); }
private static List<AddConditionAction> getAddConditionActions(Dataflow dataflow, Processor targetProcessor, Component component) { List<AddConditionAction> actions = new ArrayList<AddConditionAction>(); Set<Processor> invalidControlProcessors = new HashSet<Processor>(); invalidControlProcessors.add(targetProcessor); for (Condition condition : targetProcessor.getPreconditionList()) { invalidControlProcessors.add(condition.getControl()); } for (Processor processor : dataflow.getProcessors()) { if (!invalidControlProcessors.contains(processor)) { actions.add(new AddConditionAction(dataflow, processor, targetProcessor, component)); } } return actions; }
private void considerNearestDownstream(TokenProcessingEntity investigate) { if (investigate instanceof Processor) for (Condition condition : ((Processor) investigate) .getControlledPreconditionList()) considerInclusion(condition.getTarget()); for (EventForwardingOutputPort outputPort : investigate .getOutputPorts()) for (Datalink datalink : outputPort.getOutgoingLinks()) { EventHandlingInputPort sink = datalink.getSink(); if (sink instanceof ProcessorInputPort) considerInclusion(((ProcessorInputPort) sink) .getProcessor()); else if (sink instanceof MergeInputPort) considerInclusion(((MergeInputPort) sink).getMerge()); // The merge it self doesn't count as a processor else { // Ignore dataflow ports } } }
@SuppressWarnings("null") @Test public void testBoundPortOverridesDefault() throws Exception { Dataflow dataflow = loadAndTranslateWorkflow("bound_port_overides_default.xml"); assertEquals("there should only be 2 processors",2,dataflow.getProcessors().size()); Processor processor_A=null; Processor processor_B=null; for (Processor p : dataflow.getProcessors()) { if (p.getLocalName().equals("Processor_A")) processor_A=p; if (p.getLocalName().equals("Processor_B")) processor_B=p; } assertNotNull("Could not find processor A",processor_A); assertNotNull("Could not find processor B",processor_B); assertEquals("processor_A should have no inputs",0,processor_A.getInputPorts().size()); assertEquals("processor_A should have 1 output",1,processor_A.getOutputPorts().size()); assertEquals("processor_B should have 1 input",1,processor_B.getInputPorts().size()); assertEquals("processor_B should have 1 input named input_1","input_1",processor_B.getInputPorts().get(0).getName()); assertEquals("processor_B should have 1 output",1,processor_B.getOutputPorts().size()); assertEquals("processor_B should have 1 activity",1,processor_B.getActivityList().size()); Activity<?>activity = processor_B.getActivityList().get(0); assertEquals("activity should have 3 input ports",3,activity.getInputPorts().size()); }
assertTrue(processorNames.remove(processor.getLocalName())); for (Port inputPort : processor.getInputPorts()) { assertTrue(portNames.remove(inputPort.getName())); for (Port outputPort : processor.getOutputPorts()) { assertTrue(portNames.remove(outputPort.getName())); assertEquals(1, processor.getActivityList().size()); Activity<?> activity = processor.getActivityList().get(0); assertNotNull(processor.getLocalName(), activity); Map<String, String> inputPortMap = activity.getInputPortMapping(); Map<String, String> outputPortMap = activity.getOutputPortMapping(); .getPreconditionList(); if (processor.getLocalName().equals("processor_b")) { assertEquals(1, conditions.size()); assertEquals("processor_a", conditions.get(0).getControl() .getLocalName()); assertEquals("processor_b", conditions.get(0).getTarget() .getLocalName()); } else { assertEquals(0, conditions.size()); .getIterationStrategy(); assertEquals(1, iterationStrategies.getStrategies().size()); if (processor.getLocalName().equals("processor_a")) { AbstractIterationStrategyNode terminal = (AbstractIterationStrategyNode) iterationStrategies .getStrategies().get(0).getTerminalNode();
@Override public String getViewTitle() { return "Loop of " + processor.getLocalName(); }