Common patterns

Approval with rework

Approve, reject or send a request back for changes, and loop the revised request into review again.

An approval usually has three answers: approved, needs changes and rejected. "Needs changes" goes back to the requester, and the revised request returns to review through a merge gateway placed just before it.

Flowmark
process Expense approval
lanes Employee | Manager | Finance

lane Employee
start Expense submitted
lane Manager
xor #resubmitted
user Review expense
xor Expense approved?
  yes -> Pay expense
  needs changes -> Revise expense
  no (default) -> Notify rejection

lane Finance
service Pay expense
end Expense paid

lane Employee
user Revise expense
  -> #resubmitted

lane Manager
send Notify rejection
end Expense rejected

What to notice

  • xor #resubmitted sits before Review expense, so the review has one arrow in. The loop points to the merge, never straight back to the review.
  • Each outcome has its own named end event: Expense paid and Expense rejected.
  • The requester and the approver are in different lanes.

Variations

  • Second-level approval. Add a decision on the amount before review, such as "Amount over limit?", that routes large requests to a second approver in another lane.
  • Reminders and escalation. Add a timer to the review task. See Deadlines and reminders.

The Purchase request example puts both together.

On this page