I need to Fetch caller/user's manager and manager's manager and so on till top level until the last manager whose manager should be empty
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-25-2021 05:38 AM
Hi Leads,
i had a requirement below, please help on this.
- caller creates a incident.
- Background process (a rule or client script) looks at caller's manager ànd manager’s manager so on … till top level until the last manager whose manager should be empty.
- But using below script i can able to loop till third level, is any feature in snow restricting my function, or my script is wrong please help.
Client Script:
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
var callerID = g_form.getValue('caller_id');
var si =new GlideAjax('getCallerID');
si.addParam('sysparm_name','getUserInfo');
si.addParam('sysparm_caller_id',callerID);
//si.getXML(getManager);
si.getXML(getUserInfo);
//function getManager(response){
function getUserInfo(response){
var manager = response.responseXML.documentElement.getAttribute('answer');
alert("Manager Name: "+ manager);
}
}
Script Include :
var getCallerID = Class.create();
getCallerID.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getUserInfo: function() {
var userID = this.getParameter('sysparm_caller_id');
var gr = new GlideRecord('sys_user');
gr.addQuery('sys_id',userID);
gr.query();
gr.next();
if(gr.manager!=''){
//while(gr.next()!=''){
for (i = 0; i < gr.next(); i++)
{
manager = gr.manager.getRefRecord().getDisplayValue('manager');
}
// var i= 0;
// do{
// //if(i<1){
// if(gr.manager()!=''){
// manager = gr.manager.getRefRecord().getDisplayValue('manager');
// return manager;
// }
// i++;
// }while(i<5);
return manager;
}
},
type: 'getCallerID'
});
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-25-2021 07:03 AM
Hi Willem,
It's working, but again it is also rolling upto 2 levels am getting the return value as 2nd level manager.
Is there any restrictions on Snow instance.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-25-2021 07:10 AM
Hard to do it without being able to test, but can you try this:
- Call the function with topManager each time.
var getCallerID = Class.create();
getCallerID.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getUserInfo: function () {
var userID = this.getParameter('sysparm_caller_id');
var manager = '';
var topManager = '';
var gr = new GlideRecord('sys_user');
gr.addQuery('sys_id', userID);
gr.query();
while (gr.next()) {
manager = this.checkManager(userID);
while(manager != topManager){
manager = this.checkManager(topManager);
if(manager){
topManager = manager;
}
}
return topManager;
}
},
checkManager: function (user) {
var gr = new GlideRecord('sys_user');
gr.get(user)
if(gr.manager){
return gr.manager.getDisplayValue();
}
else{
return '';
}
},
type: 'getCallerID'
});
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-25-2021 07:40 AM
Hi Willem,
Yes, it's true.
if you are okay, I can provide you my instance details 😉 but i hope it will be too much to utilize your time.