public ExecutionImpl beginNode(NodeImpl node) { ExecutionImpl propagatingExecution = this; if (node.isLocalScope()) { propagatingExecution = createScope(node); } fire(Event.NODE_BEGIN, node); return propagatingExecution; }
protected ExecutionImpl initializeScopes() { LinkedList<NodeImpl> enteredNodes = new LinkedList<NodeImpl>(); NodeImpl initial = processDefinition.getInitial(); ExecutionImpl scopedExecution = null; if (initial!=null) { enteredNodes.add(initial); NodeImpl parentNode = initial.getParentNode(); while (parentNode!=null) { enteredNodes.addFirst(parentNode); parentNode = parentNode.getParentNode(); } scopedExecution = this; initializeVariables(processDefinition, this); initializeTimers(processDefinition); for (NodeImpl enteredNode: enteredNodes) { if (enteredNode.isLocalScope()) { scopedExecution.setNode(enteredNode); scopedExecution = scopedExecution.createScope(enteredNode); } } scopedExecution.setNode(initial); } return scopedExecution; }
public void execute(ExecutionImpl execution) { List<Activity> startActivities = findStartActivities(execution); if (!startActivities.isEmpty()) { ExecutionImpl parent = execution.createScope(execution.getActivity()); for (Activity startActivity: startActivities) { parent.setState(Execution.STATE_INACTIVE_CONCURRENT_ROOT); ExecutionImpl concurrentExecution = parent.createExecution(); concurrentExecution.setState(Execution.STATE_ACTIVE_CONCURRENT); concurrentExecution.execute(startActivity); } } else { throw new JbpmException("Could not find start activity for the sub-process " + execution.getActivityName()); } }