Name
global.ApprovalEngineUtils
Description
Determine the approval engine to be used for a document.
Script
/* global gs, approvalengine_record, GlideProperties */
/* eslint-disable strict, quotes */
var ApprovalEngineUtils = Class.create();
ApprovalEngineUtils.prototype = {
initialize: function() {
},
/**
* Determine which approval engine the record should be using.
*
* Inputs:
* approvalengine_record is the record to determine the approval engine for and is available
* as a javascript variable by the same name
*
* Returns:
* "approval_engine" - use the simple approval engine (approval rules)
* "process_guide" - use advanced approvals (process guides)
* "off" Don't use approval rules, use this setting if workflows are managing approvals.
*/
determine: function() {
// if this is a sysapproval, determine the engine based its task
if (approvalengine_record.getRecordClassName() == 'sysapproval_approver') {
if (approvalengine_record.sysapproval.nil() || approvalengine_record.sysapproval.sys_id.nil())
return "off"; // This approval is for a non-task target record
var gr = approvalengine_record.sysapproval.sys_id.getGlideRecord();
if (!gr.isValid())
return "off";
var engine = this.getEngineForTarget(gr);
// sysapproval_approver record are always handled by the ApprovalEngine - if it is bound
// to a Process Guide, the ApprovalEngine will call into the Process Guide to handle it
if (engine === "process_guide")
engine = "approval_engine";
return engine;
}
return this.getEngineForTarget(approvalengine_record);
},
getEngineForTable: function(tableName) {
var engine = gs.getProperty("glide.approval_engine." + tableName, "") + '';
if (engine == "")
engine = gs.getProperty("glide.approval_engine_default", "off") + "";
return engine;
},
getEngineForTarget: function(record) {
// Do not run any approval engines if we are using workflow
if (record.instanceOf('sc_req_item'))
if ((record.cat_item.workflow != null) && (!record.cat_item.workflow.nil()))
return "off";
// approval is only appropriate for task tables
if (!record.instanceOf('task'))
return "off";
return this.getEngineForTable(record.getRecordClassName());
},
type: 'ApprovalEngineUtils'
};
Sys ID
db3bb86a0a6a805b066ae79bcecdac23