private void generateRules()

in jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/ProcessBuilderImpl.java [328:367]


    private void generateRules(org.kie.api.definition.process.Node[] nodes, Process process, StringBuffer builder) {
        for (int i = 0; i < nodes.length; i++) {
            if (nodes[i] instanceof Split) {
                Split split = (Split) nodes[i];
                if (split.getType() == Split.TYPE_XOR || split.getType() == Split.TYPE_OR) {
                    for (Connection connection : split.getDefaultOutgoingConnections()) {
                        Collection<Constraint> constraints = split.getConstraints(connection);
                        if (constraints != null) {
                            for (Constraint constraint : constraints)
                                if (constraint != null && "rule".equals(constraint.getType())) {
                                    builder.append(createSplitRule(process,
                                            connection,
                                            constraint.getConstraint()));
                                }
                        }
                    }
                }
            } else if (nodes[i] instanceof StateNode) {
                StateNode state = (StateNode) nodes[i];
                builder.append(createStateRules(process, state));
            } else if (nodes[i] instanceof StartNode) {
                StartNode startNode = (StartNode) nodes[i];

                List<Trigger> triggers = startNode.getTriggers();
                if (triggers != null) {
                    for (Trigger trigger : triggers) {
                        if (trigger instanceof ConstraintTrigger) {
                            builder.append(createStartConstraintRule(process, startNode.getParentContainer(),
                                    (ConstraintTrigger) trigger));
                        }
                    }
                }
            } else if (nodes[i] instanceof NodeContainer) {
                generateRules(((NodeContainer) nodes[i]).getNodes(), process, builder);
            } else if (nodes[i] instanceof EventNode) {
                EventNode state = (EventNode) nodes[i];
                builder.append(createEventStateRule(process, state));
            }
        }
    }