public StartNode getStart()

in jbpm/jbpm-flow/src/main/java/org/jbpm/ruleflow/core/RuleFlowProcess.java [118:171]


    public StartNode getStart(String trigger, Function<String, Object> varResolver) {
        Node[] nodes = getNodes();

        for (int i = 0; i < nodes.length; i++) {
            if (nodes[i] instanceof StartNode) {

                StartNode start = ((StartNode) nodes[i]);

                // return start node that is not event based node
                if (trigger == null && ((start.getTriggers() == null
                        || start.getTriggers().isEmpty())
                        && start.getTimer() == null)) {
                    return start;
                } else {
                    if (start.getTriggers() != null) {
                        for (Trigger t : start.getTriggers()) {
                            if (t instanceof EventTrigger) {
                                EventTrigger eventTrigger = (EventTrigger) t;
                                Map<String, String> mappings = eventTrigger.getInMappings();
                                Object event = null;
                                if (varResolver != null) {
                                    switch (mappings.size()) {
                                        case 0:
                                            event = null;
                                            break;
                                        case 1:
                                            event = varResolver.apply(mappings.values().iterator().next());
                                            break;
                                        default:
                                            event = varResolver.apply("event");
                                            break;
                                    }
                                }

                                for (EventFilter filter : eventTrigger.getEventFilters()) {
                                    if (filter.acceptsEvent(trigger, event, varResolver)) {
                                        return start;
                                    }
                                }
                            } else if (t instanceof ConstraintTrigger && "conditional".equals(trigger)) {
                                return start;
                            }
                        }
                    } else if (start.getTimer() != null) {

                        if ("timer".equals(trigger)) {
                            return start;
                        }
                    }
                }
            }
        }
        return null;
    }