@Override public void addParallel(List<ExecutionFlow> threads) { if (threads.size() >= 2) { String forkActivityId = popCurrentId(); String joinActivityId = "join-" + popCurrentId(); // split executions with fork String[] flowIds = splitExecution( forkActivityId, behaviorFactory.forkBehaviorInstance(), threads.size(), null); addFlows(flowIds, threads, joinActivityId); // add join builder .createActivity(joinActivityId) .behavior(behaviorFactory.joinBehaviorInstance()) .transition(genNextActivityId()) .endActivity(); } else if (threads.size() == 1) { addFlow(threads.get(0)); } }