use of io.automatiko.engine.workflow.bpmn2.core.SequenceFlow in project automatiko-engine by automatiko-io.
the class SubProcessHandler method end.
public Object end(final String uri, final String localName, final ExtensibleXmlParser parser) throws SAXException {
final Element element = parser.endElementBuilder();
Node node = (Node) parser.getCurrent();
// determine type of event definition, so the correct type of node can be
// generated
boolean found = false;
org.w3c.dom.Node xmlNode = element.getFirstChild();
while (xmlNode != null) {
String nodeName = xmlNode.getNodeName();
if ("multiInstanceLoopCharacteristics".equals(nodeName)) {
Boolean isAsync = Boolean.parseBoolean((String) node.getMetaData().get("customAsync"));
// create new timerNode
ForEachNode forEachNode = new ForEachNode();
forEachNode.setId(node.getId());
forEachNode.setName(node.getName());
forEachNode.setSequential(Boolean.parseBoolean(((Element) xmlNode).getAttribute("isSequential")));
forEachNode.setAutoComplete(((CompositeContextNode) node).isAutoComplete());
// for (io.automatiko.engine.api.definition.process.Node subNode : ((CompositeContextNode) node)
// .getNodes()) {
//
// forEachNode.addNode(subNode);
// }
forEachNode.addNode(node);
forEachNode.linkIncomingConnections(NodeImpl.CONNECTION_DEFAULT_TYPE, node.getId(), NodeImpl.CONNECTION_DEFAULT_TYPE);
forEachNode.linkOutgoingConnections(node.getId(), NodeImpl.CONNECTION_DEFAULT_TYPE, NodeImpl.CONNECTION_DEFAULT_TYPE);
forEachNode.setMetaData("UniqueId", ((CompositeContextNode) node).getMetaData("UniqueId"));
// forEachNode.setMetaData(ProcessHandler.CONNECTIONS,
// ((CompositeContextNode) node).getMetaData(ProcessHandler.CONNECTIONS));
VariableScope v = (VariableScope) ((CompositeContextNode) node).getDefaultContext(VariableScope.VARIABLE_SCOPE);
// ((VariableScope) ((CompositeContextNode) forEachNode.internalGetNode(2))
// .getDefaultContext(VariableScope.VARIABLE_SCOPE)).setVariables(v.getVariables());
List<SequenceFlow> connections = (List<SequenceFlow>) ((CompositeContextNode) node).getMetaData(ProcessHandler.CONNECTIONS);
ProcessHandler processHandler = new ProcessHandler();
processHandler.linkConnections((io.automatiko.engine.api.definition.process.NodeContainer) node, connections);
processHandler.linkBoundaryEvents((io.automatiko.engine.api.definition.process.NodeContainer) node);
node = forEachNode;
handleForEachNode(node, element, uri, localName, parser, isAsync);
found = true;
break;
}
xmlNode = xmlNode.getNextSibling();
}
if (!found) {
handleCompositeContextNode(node, element, uri, localName, parser);
}
NodeContainer nodeContainer = (NodeContainer) parser.getParent();
nodeContainer.addNode(node);
((ProcessBuildData) parser.getData()).addNode(node);
return node;
}
Aggregations