Sample workflow: approval loop

This example displays a workflow that loops an Approval node.

In this workflow, the manager approval is set within the Loop node. The manager approval repeats five times before failing if an approved or rejected response is not received within the escalation Limit.

Conditions for the transition lines to the RETURN_APPROVED and RETURN_REJECTED script nodes must be defined to retrieve and evaluate the results of the Approval node. The loop node does not return a response from the Approval.

Figure 1. Sample workflow: approval loop
Sample workflow: approval loop
Table 1. Node properties: Sample workflow with an approval loop
Node Feature Value
Start Activity ID Start
Split Type AND
JavaScript N/A
Loop Activity ID Approval_Loop
Loop Type Until
Loop Condition var flag = approvalFlag.get();return (loopcount <= 5 && (flag != "APPROVED" && flag != "REJECTED"));
Split Type OR
Join Type OR
Approval Activity ID Manager_Approval
Participant Manager
Escalation Limit 1 day
Entity Type Account
Postscript if (activity.resultSummary == activity.APPROVED) { approvalFlag.set("APPROVED");} else if (activity.resultSummary == activity.REJECTED){approvalFlag.set("REJECTED");}
Join Type OR
Split Type OR
   
RETURNED_APPROVED Activity ID RETURNED_APPROVED
Join Type OR
Split Type OR
JavaScript
process.setResult(process.APPROVED);
RETURN_REJECTED Activity ID RETURN_REJECTED
Join Type OR
Split Type OR
JavaScript
process.setResult(process.REJECTED);
End Activity ID End
Join Type OR
JavaScript N/A
Transition LineStart > Approval Loop JavaScript [Custom]
true
Transition LineApproval Loop > RETURN_APPROVED JavaScript [Custom]
approvalFlag.get() == "APPROVED"
Transition LineApproval Loop > RETURN_REJECTED JavaScript [Custom]
approvalFlag.get() == "REJECTED"
Transition LineRETURN_APPROVED > END JavaScript [Custom]
true
Transition LineRETURN_REJECTED > END JavaScript [Custom]
true
Relevant DataapprovalFlag ID approvalFlag
Description Data for storing the last approval result
Context N/A
Type String
Default Value FALSE