Every non-branching step follows its first outgoing transition — so give every step except decision, get_next_task and review exactly one. A step with none fails the instance at runtime (end and stop excepted).
decision: one outgoing transition per branch; the branch's transitionId must match.
get_next_task: exactly two, labelled HAS_TASK and EMPTY.
review: exactly two, labelled APPROVED (forward) and REVISE (back to the step under review).
Transition ids are yours to choose. Keep them readable: tr_pass, tr_loop_back.
Loops — transitions back to an earlier step — are allowed and are how task iteration works. Guard every loop with something that terminates it: get_next_task's EMPTY branch, or a decision with a bounded retry counter.