called via scripted rest endpoint
script include logic:
=======================
script include logic:
=======================
getOpenRequests: function() {
//--Courtesy of https://snprotips.com/blog/2016/7/15/scripted-rest-apis-in-servicenow-how-to-retrieve-catalog-item-variables
//--done this way
due to issues with gliderecord/memory leakage!!
var responseObj =
{};
try {
//gs.log('1:' + this.LINUX_SERVER_REQ);
/*test it this way:
var si= new _ansible_servicerequest();
var sRes= si.getOpenRequests()
gs.print('result:\n ' +JSON.stringify(sRes));
*/
var itemSYSID =
this.LINUX_SERVER_REQ;
var grTasks = new GlideRecord('sc_task');
grTasks.addActiveQuery();
grTasks.addQuery('request_item.cat_item=' + itemSYSID);
grTasks.orderBy('number');
grTasks.query();
responseObj.numberOfAnsibleTasks = grTasks.getRowCount();
if (grTasks.getRowCount() > 0) {
while (grTasks.next()) {
var sNum = grTasks.number;
//return snNumberList;
var taskObj, ritmVariables, variableName;
ritmVariables = grTasks.request_item.variables;
taskObj = {};
taskObj['field:number'] = this.u_getTaskField(grTasks,'number') ;//--use this
method to avoid a weird memory leakage on the GlideRecord which I couldnt quite
get to the bottom of...
taskObj['field:short_description'] =
this.u_getTaskField(grTasks,'short_description') ;//--use this
taskObj['field:requestor'] = this.u_getRequestValue_ReqFor(grTasks.request)
;//--use this
for (variableName in ritmVariables) {
if (ritmVariables.hasOwnProperty(variableName) && ritmVariables[variableName])
{ //Make sure the property exists and isn't null or unknown.
variableName = variableName.toString(); //Make sure we're all proper strings
here.
taskObj['variable:' +variableName] =
ritmVariables[variableName].getDisplayValue().toString();
}
}
responseObj = this.u_addObjToObj(responseObj, taskObj, 'ansibleTask:' +
grTasks. number);
}
}
} catch (ex)
{
gs.logError('ISSUE:' + ex.toString());
}
return
responseObj;
},
u_addObjToObj: function(parent, child, name) {
parent[name] =
child;
return parent;
//Note: Does not break pass-by-reference, because we're declaring a new object
on each loop on line 39 above.
},
u_getTaskField: function (grTask, fieldName){
return (grTask.getValue(fieldName));
},
u_getRequestValue_ReqFor: function(sysid){
//--insert code to retrieve the requested for from REQ record, pass in task.request as param
}
Comments
Post a Comment