Overview

How to require everyone to Approve, but only need one person to Reject

This example shows how to allow a single reviewer to Reject whilst requiring all reviewers to Approve.

Content reviews will often mandate that several reviewers agree – either Approve or Reject – before the workflow transitions to another state.

However, in the case of Reject, it is often cumbersome to require everyone agree – if there's something wrong with the content, it needs to be rejected regardless. It is therefore very common to set up reviews so that only a single Reject is required for a transition to occur.

Default functionality – everyone must agree

This workflow has three states – Editing, Review, and Published. The default review functionality is that everyone has to agree before a transition occurs.

{workflow:name=Slow rejection}
   {state:Editing|submit=Review}
   {state}
   {state:Review|approved=Published|rejected=Editing}
      {approval:Review|minimum=5}
   {state}
   {state:Published|final=true|updated=Editing}
   {state}
{workflow}

We've used the minimum=5 parameter; at least 5 reviewers must agree to Approve or Reject before the transition occurs. However, if the content needs further edits, that is the case regardless of the number of rejections – so let's make it transition as soon as the first rejection comes in.

Fast-tracked Rejection

Note the {trigger} and {set-state} macros at the end of the script:

{workflow:name=Fast-tracked rejection}
   {state:Editing|submit=Review}
   {state}
   {state:Review|approved=Published|rejected=Editing}
      {approval:Review|minimum=5}
   {state}
   {state:Published|final=true|updated=Editing}
   {state}
   {trigger:pagerejected|approval=Review|partial=true}
      {set-state:Editing}
   {trigger}
{workflow}

Here's how it works:

The result is that a single Reject will cause transition to Editing state, whereas at least five people need to Approve before a transition to the Published state occurs.