Search in sources :

Example 51 with Node

use of org.apache.airavata.workflow.model.graph.Node in project airavata by apache.

the class NodeImpl method createID.

/**
 * Creates unique node ID in the graph that this node belongs to.
 */
public void createID() {
    String candidateID = StringUtil.convertToJavaIdentifier(this.name);
    Node node = this.graph.getNode(candidateID);
    while (node != null && node != this) {
        candidateID = StringUtil.incrementName(candidateID);
        node = this.graph.getNode(candidateID);
    }
    this.id = candidateID;
    for (PortImpl port : getAllPorts()) {
        port.createID();
    }
}
Also used : Node(org.apache.airavata.workflow.model.graph.Node)

Example 52 with Node

use of org.apache.airavata.workflow.model.graph.Node in project airavata by apache.

the class InterpreterUtil method getInputsForForEachNode.

/**
 * This method returns the input values for given foreach node
 *
 * @param forEachNode
 * @param listOfValues
 * @param invokerMap
 * @return
 * @throws WorkflowException
 */
public static Object getInputsForForEachNode(final ForEachNode forEachNode, final LinkedList<String> listOfValues, Map<Node, Invoker> invokerMap) throws WorkflowException {
    List<DataPort> inputPorts = forEachNode.getInputPorts();
    Object returnValForProvenance = null;
    for (DataPort inputPort : inputPorts) {
        Node inputNode = inputPort.getFromNode();
        // if input node for for-each is WSNode
        if (inputNode instanceof InputNode) {
            // for (DataPort dataPort : forEachNode.getInputPorts()) {
            returnValForProvenance = InterpreterUtil.findInputFromPort(inputPort, invokerMap);
            if (null == returnValForProvenance) {
                throw new WorkFlowInterpreterException("Unable to find input for the node:" + forEachNode.getID());
            }
            String[] vals = StringUtil.getElementsFromString(returnValForProvenance.toString());
            listOfValues.addAll(Arrays.asList(vals));
        // }
        }
    }
    return returnValForProvenance;
}
Also used : DataPort(org.apache.airavata.workflow.model.graph.DataPort) InputNode(org.apache.airavata.workflow.model.graph.system.InputNode) EndForEachNode(org.apache.airavata.workflow.model.graph.system.EndForEachNode) ForEachNode(org.apache.airavata.workflow.model.graph.system.ForEachNode) InputNode(org.apache.airavata.workflow.model.graph.system.InputNode) Node(org.apache.airavata.workflow.model.graph.Node) WorkFlowInterpreterException(org.apache.airavata.workflow.engine.interpretor.WorkFlowInterpreterException)

Example 53 with Node

use of org.apache.airavata.workflow.model.graph.Node in project airavata by apache.

the class InterpreterUtil method getNodeCountWithBodyColor.

public static int getNodeCountWithBodyColor(NodeExecutionState state, WSGraph graph) {
    int sum = 0;
    List<NodeImpl> nodes = graph.getNodes();
    for (Node node : nodes) {
        if (node.getState() == state) {
            ++sum;
        }
    }
    return sum;
}
Also used : NodeImpl(org.apache.airavata.workflow.model.graph.impl.NodeImpl) EndForEachNode(org.apache.airavata.workflow.model.graph.system.EndForEachNode) ForEachNode(org.apache.airavata.workflow.model.graph.system.ForEachNode) InputNode(org.apache.airavata.workflow.model.graph.system.InputNode) Node(org.apache.airavata.workflow.model.graph.Node)

Example 54 with Node

use of org.apache.airavata.workflow.model.graph.Node in project airavata by apache.

the class InterpreterUtil method findEndForEachFor.

/**
 * @param node
 * @return
 */
public static Node findEndForEachFor(ForEachNode node) {
    Collection<Node> toNodes = node.getOutputPort(0).getToNodes();
    if (toNodes.size() != 1) {
        throw new WorkflowRuntimeException("ForEach output does not contain single out-edge");
    }
    Node middleNode = toNodes.iterator().next();
    List<DataPort> outputPorts = middleNode.getOutputPorts();
    for (DataPort dataPort : outputPorts) {
        if (dataPort.getToNodes().size() == 1) {
            Node possibleEndForEachNode = dataPort.getToNodes().get(0);
            if (possibleEndForEachNode instanceof EndForEachNode) {
                return possibleEndForEachNode;
            }
        }
    }
    throw new WorkflowRuntimeException("EndForEachNode not found");
}
Also used : DataPort(org.apache.airavata.workflow.model.graph.DataPort) EndForEachNode(org.apache.airavata.workflow.model.graph.system.EndForEachNode) ForEachNode(org.apache.airavata.workflow.model.graph.system.ForEachNode) InputNode(org.apache.airavata.workflow.model.graph.system.InputNode) Node(org.apache.airavata.workflow.model.graph.Node) WorkflowRuntimeException(org.apache.airavata.workflow.model.exceptions.WorkflowRuntimeException) EndForEachNode(org.apache.airavata.workflow.model.graph.system.EndForEachNode)

Example 55 with Node

use of org.apache.airavata.workflow.model.graph.Node in project airavata by apache.

the class InterpreterUtil method getNodesWithBodyColor.

public static ArrayList<Node> getNodesWithBodyColor(NodeExecutionState state, WSGraph graph) {
    ArrayList<Node> list = new ArrayList<Node>();
    List<NodeImpl> nodes = graph.getNodes();
    for (Node node : nodes) {
        if (node.getState() == state) {
            list.add(node);
        }
    }
    return list;
}
Also used : NodeImpl(org.apache.airavata.workflow.model.graph.impl.NodeImpl) EndForEachNode(org.apache.airavata.workflow.model.graph.system.EndForEachNode) ForEachNode(org.apache.airavata.workflow.model.graph.system.ForEachNode) InputNode(org.apache.airavata.workflow.model.graph.system.InputNode) Node(org.apache.airavata.workflow.model.graph.Node) ArrayList(java.util.ArrayList)

Aggregations

Node (org.apache.airavata.workflow.model.graph.Node)74 InputNode (org.apache.airavata.workflow.model.graph.system.InputNode)46 WSNode (org.apache.airavata.workflow.model.graph.ws.WSNode)40 DataPort (org.apache.airavata.workflow.model.graph.DataPort)31 DynamicNode (org.apache.airavata.workflow.model.graph.dynamic.DynamicNode)24 Port (org.apache.airavata.workflow.model.graph.Port)20 OutputNode (org.apache.airavata.workflow.model.graph.system.OutputNode)20 StreamSourceNode (org.apache.airavata.workflow.model.graph.system.StreamSourceNode)18 EndForEachNode (org.apache.airavata.workflow.model.graph.system.EndForEachNode)16 ForEachNode (org.apache.airavata.workflow.model.graph.system.ForEachNode)16 MemoNode (org.apache.airavata.workflow.model.graph.system.MemoNode)15 NodeImpl (org.apache.airavata.workflow.model.graph.impl.NodeImpl)14 SubWorkflowNode (org.apache.airavata.workflow.model.graph.subworkflow.SubWorkflowNode)14 WorkflowRuntimeException (org.apache.airavata.workflow.model.exceptions.WorkflowRuntimeException)13 ConstantNode (org.apache.airavata.workflow.model.graph.system.ConstantNode)12 EndifNode (org.apache.airavata.workflow.model.graph.system.EndifNode)12 IfNode (org.apache.airavata.workflow.model.graph.system.IfNode)12 GraphException (org.apache.airavata.workflow.model.graph.GraphException)11 LinkedList (java.util.LinkedList)9 ArrayList (java.util.ArrayList)8