Query Workflow for User 'Requested for' Manager

codechaser
Giga Expert

This is an ongoing code I am scripting to query a workflow for the user submitting a request's Manager.   The query is supposed to check the manager field on the sys_user table for whether or not 'manager1' or 'manager2' is the current Supervisor for the user submitting the request.   If so, then it routes accordingly.   If no, it strings the name of the user's Manager.

// This script needs to set answer to 'yes' or 'no' to indicate the state of the activity.

var grMem = new GlideRecord('sys_user');  

grMem.addQuery('user', current.request.requested_for);

grMem.addQuery('manager', current.requested_for.manager);

grMem.query();

var reqMngr = new GlideRecord('sys_user');  

regMngr.addQuery('manager', current.requested_for.manager);

reqMngr.addQuery('manager.name', 'manager1');  

reqMngr.query();

var reqSup = new GlideRecord('sys_user');  

reqSup.addQuery('manager', current.requested_for.manager);

reqSup.addQuery('manager.name', 'manager2');  

reqSup.query();

if((grMem.next()) || (reqMngr.next())){  

  answer = 'yes';  

}  

else if((grMem.next()) || (reqSup.next())){  

  answer = 'yes';  

}  

else{  

  answer = 'no';

            answer.push(current.request.requested_for.manager.sys_id.toString());

}  

Bottom-line, I either get a pass-through on the workflow or an error when I run the script.   Any help would be GREATLY appreciated!

- Thx!

2 REPLIES 2

Raju Koyagura
Tera Guru

Please check the below highlighted lines



grMem.addQuery('user', current.request.requested_for) if this is correct grMem.addQuery('manager', current.requested_for.manager) is wrong. I mean request is missing



var grMem = new GlideRecord('sys_user');


grMem.addQuery('user', current.request.requested_for);


grMem.addQuery('manager', current.request.requested_for.manager); //


grMem.query();




var reqMngr = new GlideRecord('sys_user');


regMngr.addQuery('manager', current.request.requested_for.manager);


reqMngr.addQuery('manager.name', 'manager1');


reqMngr.query();




var reqSup = new GlideRecord('sys_user');


reqSup.addQuery('manager', current.request.requested_for.manager);


reqSup.addQuery('manager.name', 'manager2');


reqSup.query();




if((grMem.next()) || (reqMngr.next())){


  answer = 'yes';


}


else if((grMem.next()) || (reqSup.next())){


  answer = 'yes';


}


else{


  answer = 'no';


            answer.push(current.request.requested_for.manager.sys_id.toString());


}


Brad Tilton
ServiceNow Employee
ServiceNow Employee

Hi Jason,



If this is in an if activity and you're just trying to check to see if the user's manager is one of two people you shouldn't have to script it all, just use the condition builder.



Also, if it's an if activity then the answer should be either 'yes' or 'no', pushing the manager sys_id to a string shouldn't do anything or it may generate an error. If you need to use a value later on, I would write it to the workflow scratchpad.