Overview
Content reviews will often assign several reviewers. Once assigned the workflow requires that all the assigned reviewers agree – either Approve or Reject – before the workflow transitions to another state.
Rather than waiting for all the assigned reviewers to approve the content, the workflow author may want to transition the workflow after receiving approvals from a set number of the assigned reviewers.
We can do this using a metadata item as a counter and incrementing the counter using the{increment-metadata}
macro.
Set and increment the approval counter to action the approval
The workflow uses the following trigger actions:
- initialize a counter value using
{set-metadata}
macro - increment the counter value using the
{increment-metadata}
macro - action the
approved
transition using the{approve-page}
macro when the counter value reaches a specified number
In the simple increment metadata example, the content is approved when three of the five assigned reviewers have approved the content.
{workflow:name=Increment Metadata Counter for an approval} {description} A simple approval workflow with use of increment-metadata macro to set the number of assigned reviewer approval decisions to trigger the approval transition. {description} {state:Review|approved=Approved|Rejected=Rejected|taskable=true} {approval:Review|user=&suni,adam,elle,matilde,milo} {state} {state:Rejected|submit=Review|taskable=true} {state} {state:Approved|final=true|updated=Review|hideselection=true} {state} {trigger:statechanged|state=Review} {set-metadata:approval-counter}0{set-metadata} {trigger} {trigger:pageapproved|approval=Review|partial=true} {increment-metadata:approval-counter} {trigger} {trigger:pageparameterupdate|parameter=@approval-counter@|@approval-counter@=3} {approve-page:Review|comment=Three reviewers have approved the content} {trigger} {workflow}
This example may be useful when you have a large number of users who are members of a global Confluence group that is the assigned reviewer group but your approval practice does not require all assigned users to undertake the content review.
Here's how each trigger action works
Trigger | Event | Action macro | Notes |
---|---|---|---|
Initialize the metadata | statechanged |
| |
Approval counter | pageapproved | {increment-metadata} |
|
Approve the page | pageparameterupdate | {approve-page} |
|
An individual reviewer rejection decision on its own does not impact the metadata approval-counter
value but be aware there is an impact on the context of an approval transition. For example
- the
{approve-page}
macro is triggered when theapproval-counter
value is 3 even if one or more of the assigned reviewers have rejected the content - the
approval-counter
value is not decreased if a previous user changes their approved decision to rejected.
This may mean the approve-page
action may occur if
- an assigned approver has rejected the content but three other assignees have approved the content
- a single assignee approves and rejects the content two times and then undertakes a third approval decision without any other assignee approving the content
We obviously need to avoid these mixed decisions causing an overall approval by managing a rejection decision.
Manage reviewer rejection of the content
An additional trigger may be useful to initiate a fast-tracked rejection.
{trigger:pagerejected|approval=Review|partial=true} {set-state:Rejected} {trigger}
A single rejection decision will transition the content to the Rejected state.
The addition of the fast-tracked rejection trigger to this workflow can be used to manage:
- when a single reviewer rejects the content
- when a reviewer changes their content review decision before any transition occurs