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();
}
}
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;
}
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;
}
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");
}
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;
}
Aggregations