- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-14-2019 03:07 PM
Hello everyone, i am trying to come up with a workflow query that will allow me to:
- To check if the requester is in the Support Group or this new "Authorized Users" slush bucket of the Batch Job.
- If not, then an approval would need to go to the Managed By for the Batch Job
-The requested for field is a reference field on the catalog item, "support_group" and "batch job" are on the "u_cmdb_ci_batch_job" table.
I basically want to look at the requested for field, the batch job field, and support_group field to see if the users belongs to the group based off of the selection in the batch job field.
This is the code i tried, but it didn't yield any results at all:
answer = ifScript();
function ifScript() {
var gr = new GlideRecord('u_cmdb_ci_batch_job');
gr.addQuery('name', current.variables.job);
gr.addQuery('support_group', current.variables.requested_for);
gr.query();
{
return 'yes';
}
return 'no';
}
Can anyone see if i am heading in the right direction? Any feedback would be greatly appreciated.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-17-2019 01:29 PM
Hi Ya,
I've had another go at simplifying the if activity script using an IIFE and dot walking to the support group information:
answer = (function(current) {
var supportGrpSysId = current.variables.job.support_group.toString(); //assumes the support group is reference field. Dot walk to the support group through the job reference field
var userSysId = current.variables.requested_for.toString(); //assumes requested_for is reference field.
/*Determine if the requested_for user is part of the support group assigned to job*/
var grGrpMem = new GlideRecord("sys_user_grmember");
grGrpMem.addQuery("group",supportGrpSysId);
grGrpMem.addQuery("user",userSysId);
grGrpMem.setLimit(1); //only need to return one record from the query
grGrpMem.query();
if (grGrpMem.next()) {
return "yes"; //return "yes" if they are part of the group
}
else {
return "no"; //return "no" if they are not part of the group
}
})(current);
Give that a go and let me know how you get along,
Brent
P.S. If my suggestion helped then please mark as helpful and/or correct so other community members can benefit from this information.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-18-2019 12:59 PM
Hi Ya,
I assume that authorized_users is a variable on the catalog item? If so, I would check the requested_for sys_id against this variable first as we don't need to go any further if we get a match. The following should work:
Code:
answer = (function(current) {
var userSysId = current.request.requested_for.toString(); // sys_id of the requested_for user.
var authorizedUsers = current.variables.authorized_users.toString(); //comma separated list of authorized users sys_id's.
/*Do the authorized users check first. If the user is listed in this variable then we don't need to go any further
* The index will be greater than 0 if we get a match on the users sys_id
*/
if (authorizedUsers.indexOf(userSysId) > 0) {
return "yes";
}
var supportGrpSysId = current.variables.job.support_group.toString(); //assumes the support group is reference field. Dot walk to the support group through the job reference field
/*Determine if the requested_for user is part of the support group assigned to job
*/
var grGrpMem = new GlideRecord("sys_user_grmember");
grGrpMem.addQuery("group",supportGrpSysId);
grGrpMem.addQuery("user",userSysId);
grGrpMem.setLimit(1); //only need to return one record from the query
grGrpMem.query();
if (grGrpMem.next()) {
/* return "yes" if they are part of the job support group or are one of the authorized users*/
return "yes";
}
else {
return "no"; //return the result
}
})(current);
Let me know how you get along.
Brent
P.S. If my suggestion helped then please mark as helpful and/or correct so other community members can benefit from this information.