Sample workflow: multiple approvals

In this scenario, an organization has a policy in place for provisioning an account on a Windows server that is used for financial applications.

When a request is generated, a service owner must enter the appropriate account information before any approvals can take place. Then the request must be approved by both the Chief Financial Officer and the direct manager of the requestee. Each approver has one full day to act on the request.

After receiving a result from both approval requests, an email is generated and sent to the direct manager of the requestee. The email details the result and the process completes.

If both participants approve the request, the request is completed and the account is provisioned. If either of the participants rejects the request for approval, the process is completed without provisioning the account and the process result is set to Rejected.

All relevant activity is logged in the Audit Log.
Figure 1. Sample workflow: multiple approvals required
Sample workflow: multiple approvals required
Table 1. Node properties: Sample workflow for multiple approvals
Node Feature Value
Start Activity ID Start
Split Type AND
JavaScript N/A
RFI Activity ID Service_Owner
Participant Service_Owner
Escalation Participant System Administrator
Escalation Limit 1 day
Join Type AND
Split Type AND
Entity Type Account
Entity WinLocal
Subprocess Activity ID Supervisor_Approval
Subprocess Workflow created in “Sample workflow: manager approval of accounts”
Join Type AND
Split Type AND
Approval Activity ID CFO
Participant [Org Role] Chief Financial Officer
Escalation Participant System Administrator
Escalation Limit 1 day
Join Type AND
Split Type AND
Entity Type Account
Script Activity ID Process_Status
Join Type AND
Split Type AND
JavaScript
supervisorApproval=
process.getActivity("Supervisor_Approval").result
Summary
cfoApproval=process.getActivity("CFO").resultSummary
if(supervisorApproval==activity.APPROVED &&
cfoApproval==activity.APPROVED)
{ process.setResult(process.APPROVED) }
else
{ process.setResult(process.REJECTED) }
Work Order Activity ID Notify_Supervisor
Participant Manager
Escalation Participant System Administrator
Escalation Limit 1 day
Join Type AND
Split Type AND
Subject New <JS>process.subject;</JS> provisioning request for <JS>process.requesteeName;</JS>
Message Process Result: <JS>process.resultSummary</JS>
End Activity ID End
Join Type AND
JavaScript N/A
Transition LineStart > Service_Owner RFI JavaScript [Custom]
true
Transition LineService_Owner RFI > Supervisor_Approval Subprocess JavaScript [Custom]
true
Transition LineService_Owner RFI > CFO Approval JavaScript [Custom]
true
Transition LineSupervisor_Approval Subprocess > Process_Status Script JavaScript [Custom]
true
Transition LineCFO Approval > Process_Status Script JavaScript [Custom]
true
Transition LineProcess_Status Script > Notify_Supervisor Work Order   [Custom]
true
Transition LineNotify_Supervisor Work Order > End JavaScript [Custom]
true