protected void addStart() { add(new StartEvent(startId())); }
@Override public String toString() { return "StartEvent (" + getId() + ")"; } }
private static List<AbstractElement> addEntryPoint(IdGenerator idGenerator, List<AbstractElement> elements) throws ParserException { if (elements.size() < 1) { throw new ParserException("Can't add an entry point to a empty block"); } List<AbstractElement> l = new ArrayList<>(elements); AbstractElement first = l.get(0); AbstractElement last = l.get(l.size() - 1); String startId = idGenerator.nextId(); String endId = idGenerator.nextId(); l.add(0, new StartEvent(startId)); l.add(1, new SequenceFlow(idGenerator.nextId(), startId, first.getId())); l.add(new SequenceFlow(idGenerator.nextId(), last.getId(), endId)); l.add(new EndEvent(endId)); return l; }
Command startCmd = new ProcessElementCommand(cmd.getDefinitionId(), start.getId()); actions.add(new PushCommandAction(startCmd));
StartEvent ev = new StartEvent(id); children.add(ev); break;
@Override public ProcessInstance reduce(ProcessInstance state, Action action) throws ExecutionException { if (!(action instanceof FindAndCallActivityAction)) { return state; } FindAndCallActivityAction a = (FindAndCallActivityAction) action; String proc = resolveCalledElement(state, a); // find a called process' definition IndexedProcessDefinition sub = null; if (cfg.isAvoidDefinitionReloadingOnCall()) { Definitions defs = state.getDefinitions(); sub = defs.get(proc); } if (sub == null) { sub = definitionProvider.getById(proc); } // add the found definition to the process state state = state.setDefinitions(state.getDefinitions().put(sub)); log.debug("reduce ['{}'] -> new child process '{}'", state.getBusinessKey(), sub.getId()); // push the start event of the child process to the stack StartEvent ev = ProcessDefinitionUtils.findStartEvent(sub); state = state.setStack(state.getStack().push(new ProcessElementCommand(sub.getId(), ev.getId()))); return state; }
public List<AbstractElement> wrapAsProcess(Chunk c) { List<AbstractElement> l = new ArrayList<>(); String startId = nextId(); l.add(new StartEvent(startId)); if (c.isEmpty()) { String endId = nextId(); l.add(new SequenceFlow(nextId(), startId, endId)); l.add(new EndEvent(endId)); return l; } l.add(new SequenceFlow(nextId(), startId, c.firstElement().getId())); l.addAll(c.getElements()); if (!c.getOutputs().isEmpty()) { String endId = nextId(); for (String src : c.getOutputs()) { l.add(new SequenceFlow(nextId(), src, endId)); } l.add(new EndEvent(endId)); } return l; }