Name
global.DiscoveryApplicationDiscoMatcher
Description
Determines how to match an application during application classification.
Script
// Discovery class
/**
* Matches an application during application classification.
*
* Aleck Lin aleck.lin@service-now.com
*/
var DiscoveryApplicationDiscoMatcher = Class.create();
DiscoveryApplicationDiscoMatcher.prototype = {
initialize: function(ciData, appClassificationGr) {
this.ciData = ciData;
this.appClassificationGr = appClassificationGr;
this.newCI = false;
this.cidata = this.ciData.getData();
},
match: function () {
var gr = this._find();
if (JSUtil.notNil(gr))
return gr;
return this._create();
},
_find: function() {
var appName = this.cidata.application_name;
var tableName = this.appClassificationGr.getValue('table');
var gr = new GlideRecord(tableName);
gr.addQuery("name", appName);
gr.addQuery("correlation_id", this._getCorrelationID());
gr.query();
if (!gr.next())
return;
this._setAppCIValues(gr);
gr.update();
return gr;
},
_create: function() {
var tableName = this.appClassificationGr.getValue('table');
var gr = new GlideRecord(tableName);
this._setAppCIValues(gr);
gr.insert();
this.newCI = true;
return gr;
},
_setAppCIValues: function(gr) {
// Convert base values in cidata to the app gr
for (var name in this.cidata) {
var value = this.cidata[name];
var objType = JSUtil.type_of(value);
if (objType == "object" || objType == "function")
continue;
if (JSUtil.nil(value))
continue;
gr[name] = value;
}
gr.name = this.cidata.application_name;;
gr.short_description = this.cidata.description;
gr.correlation_id = this._getCorrelationID();
var grg = new GlideRecord("sys_user_group");
grg.addQuery("name", this.cidata.ownership);
grg.query();
if (grg.next())
gr.support_group = grg.sys_id + '';
},
_getCorrelationID: function() {
return this.cidata.application_name + "@" + this.cidata.systemCI;
},
isNewCI: function() {
return this.newCI;
},
type: "DiscoveryApplicationDiscoMatcher"
}
Sys ID
0ea9a458ff51200098d5361332f49d5c