Name
sn_itam_recomm.ImportantActionSetupsEvaluator
Description
No description available
Script
var ImportantActionSetupsEvaluator = Class.create();
ImportantActionSetupsEvaluator.prototype = Object.extendsObject(global.AssetManagementBaseJob, {
initialize: function (dashboardSysIds, runInDomain, invokedFromRefresh, invokedFromJobWithID) {
this.dashboardSysIds = dashboardSysIds;
this.runInDomain = runInDomain;
this.invokedFromRefresh = invokedFromRefresh;
this.importantActionUtils = new sn_itam_recomm.ImportantActionUtils();
this.SCHEDULE_ITEM = 'JOB RUNNING: ' + invokedFromJobWithID;
var triggerID = null;
if (invokedFromJobWithID) {
new global.GlideQuery('sys_trigger')
.where('document_key', invokedFromJobWithID)
.selectOne('sys_id')
.ifPresent(function (trigger) {
triggerID = trigger.sys_id;
});
}
if (!gs.nil(triggerID)) { this.SCHEDULE_ITEM = triggerID; }
},
/* *******************************************************************
Process Setups
******************************************************************* */
clearJobTriggerOnDashboardResult: function (dashboardId) {
this.importantActionUtils.upsertJobResultRecord(dashboardId, this.getCurrentDomainSysId(), '');
},
setJobTriggerOnDashboardResult: function (dashboardId) {
this.importantActionUtils.upsertJobResultRecord(
dashboardId,
this.getCurrentDomainSysId(),
this.SCHEDULE_ITEM
);
},
processSetupsOfDashboard: function (dashboardSysId, setupIDs) {
// Skip if a refresh is already running on dashboard
if (!this.invokedFromRefresh
&& this.importantActionUtils.isRefreshRunningOnDashboard(dashboardSysId, this.getCurrentDomainSysId())) {
return;
}
// If refresh is invoked manually, sys_trigger would
// already be stamped on the dashboard result.
if (!this.invokedFromRefresh) { this.setJobTriggerOnDashboardResult(dashboardSysId); }
var setupId;
var setupGr = new GlideRecord('sn_itam_recomm_setup');
for (var i in setupIDs) {
setupId = setupIDs[i];
setupGr.initialize();
setupGr.get(setupId);
if (setupGr.isValidRecord()) {
this.importantActionUtils.evaluateSetupAndSaveResult(
setupGr,
this.getCurrentDomainSysId()
);
}
}
this.clearJobTriggerOnDashboardResult(dashboardSysId);
this.importantActionUtils.updateLastCalculatedOnJobResultRecord(
dashboardSysId,
this.getCurrentDomainSysId()
);
},
evaluateDashboardSetups: function (dashboardSetups) {
for (var dashboardSysId in dashboardSetups) {
this.processSetupsOfDashboard(dashboardSysId, dashboardSetups[dashboardSysId]);
}
},
/* *******************************************************************
Get Setups Per Dashboard (Unique)
******************************************************************* */
getSetupsPerDashboard: function () {
var dashboardSysId;
var dashboardSetups = [];
var dashboardSetupId;
var uniqueSetups = [];
var uniqueSetupsPerDashboard = {};
for (var i in this.dashboardSysIds) {
dashboardSysId = this.dashboardSysIds[i];
dashboardSetups = [];
uniqueSetupsPerDashboard[dashboardSysId] = [];
new global.GlideQuery('sn_itam_recomm_setup')
.where('active', true)
.where('dashboards', 'CONTAINS', dashboardSysId)
.select('sys_id')
.forEach(function (setup) { // eslint-disable-line
dashboardSetups.push(setup.sys_id);
});
for (var j in dashboardSetups) {
dashboardSetupId = dashboardSetups[j];
if (uniqueSetups.indexOf(dashboardSetupId) === -1) {
uniqueSetups.push(dashboardSetupId);
uniqueSetupsPerDashboard[dashboardSysId].push(dashboardSetupId);
}
}
}
return uniqueSetupsPerDashboard;
},
/* *******************************************************************
Main functions
******************************************************************* */
runJob: function () {
var dashboardSetups = this.getSetupsPerDashboard();
this.evaluateDashboardSetups(dashboardSetups);
},
getDomains: function () {
if (this.runInDomain) { return [this.runInDomain]; }
var domainsArray = ['global'];
new global.GlideQuery('domain')
.where('active', true)
.select()
.forEach(function (domain) {
domainsArray.push(domain.sys_id);
});
return domainsArray;
},
type: 'ImportantActionSetupsEvaluator',
});
Sys ID
1c69b4a0537130106b86ddeeff7b1256