Name
global.CMDBDataManagerTaskApprovalHelper
Description
No description available
Script
var CMDBDataManagerTaskApprovalHelper = Class.create();
CMDBDataManagerTaskApprovalHelper.prototype = {
initialize: function() {},
triggerTaskApprovalSubFlow: function(taskRecord) {
var msg = '';
try {
var subflow = '509b682c536320108cabddeeff7b12af';
var subflowGr = new GlideRecord('sys_hub_flow');
subflowGr.addQuery('sys_id', subflow);
subflowGr.addQuery('active', true);
subflowGr.query();
if (!subflowGr.next()) {
msg = 'Invalid task: Missing approval subflow record';
gs.error(msg);
// Update task to error
handleFailure(msg);
return;
}
// Grab subflow
var subflowName = subflowGr.getValue('sys_scope') + '.' + subflowGr.getValue('internal_name');
var inputs = {};
inputs['task'] = taskRecord;
var DEF_TIME_OUT = 1000 * 60 * 10;
var TIME_OUT = gs.getProperty('glide.cmdb.data.manager.approval.subflow.timeout') || DEF_TIME_OUT;
// Trigger approval workflow
var res = sn_fd.FlowAPI.getRunner()
.subflow(subflowName)
.inBackground()
.withInputs(inputs)
.timeout(TIME_OUT)
.run();
} catch (ex) {
var message = ex.getMessage();
gs.error(message);
handleFailure(message);
}
function handleFailure(closeNotes) {
taskRecord.setValue('state', 4); // Closed Incomplete
taskRecord.setValue('close_notes', closeNotes);
taskRecord.update();
// send notification
var grUserRoles = new GlideRecord("sys_user_has_role");
grUserRoles.addQuery("role", "b156309e53722010af64ddeeff7b1227"); // data_manager_admin role
grUserRoles.query();
var userList = [];
if (runAsUser) {
userList.push(runAsUser);
}
while (grUserRoles.next()) {
userList.push(grUserRoles.user);
}
if (userList.length == 0) {
gs.warn(gs.getMessage("The CMDB Data Manager policy: {0} does not have any users to send notification emails", taskRecord.policy_id));
return;
}
gs.eventQueue("cmdbdatamanager.task.failed", taskRecord, userList.toString(), taskRecord.policy_id);
}
},
type: 'CMDBDataManagerTaskApprovalHelper'
};
Sys ID
4c4f7bd1773320108043270bba1061f6