Dynamic Approval Group Scripting

chrish5
Giga Guru

I need to have the approval group in my workflow be dynamic based on what the users selects from a request form field.   Here are the details.     My request form has a lookup select box called Location (location) that is referring a table holding all my locations.     I am using a BR to copy the selected location to a table column called Shuttle Location (shuttle_location).   I have a workflow associated with this request form with a group approval and this approval has to vary depending on the location is selected.   Each location has its own approval group.   And there are dozens of locations, thus the need to do this dynamically.   I could build this in the workflow with a switch flowing to all the different approvals, but that would be ugly and not very maintainable since locations will change.   I've tried using the below script to make this approval group dynamic, but I keep getting an error that "shuttle_location" is not defined.   Is this switch script the correct way to do this?   Should it be referencing the form variable location rather than the table column shuttle_location that I am copy location to?  

var answer = [];

switch(shuttle_location){

case 'nebraska city':

  1. answer.push('Shuttle - Nebraska City');

break;

case 'new rockford':

  1. answer.push('Shuttle - New Rockford');

break;

case 'jamestown':

  1. answer.push('Shuttle - Jamestown');

break;

case 'amarillo':

  1. answer.push('Shuttle - Amarillo');

break;

default:

  1. answer.push('Default Approvers');

}

1 ACCEPTED SOLUTION

Please mark answer as correct.



Regards,


Sachin


View solution in original post

21 REPLIES 21

It is a Lookup Select Box variable that is referencing a table called Shuttle Locations (u_shuttle_locations)


one quick question what is the variable name on catalog form.



vl.png


The variable name on the catalog item form is Location (location)





Sent from my Verizon, Samsung Galaxy smartphone


var answer = [];


gs.log('what is in variable :'+current.variables.location.toString());


switch(current.variables.location.toString()){


case 'nebraska city':


answer.push('Shuttle - Nebraska City');


break;


case 'new rockford':


answer.push('Shuttle - New Rockford');


break;


case 'jamestown':


answer.push('Shuttle - Jamestown');


break;


case 'amarillo':


answer.push('Shuttle - Amarillo');


break;


default:


answer.push('Default Approvers');


}



try now and let me know if it does not work



http://wiki.servicenow.com/index.php?title=Using_Variables_in_a_Workflow#Overview



current.variables.<it will be name of the variable>;


There was a log entry this time.   The variable came in as New Rockford, so I changed the script to capitalize the case part.   New Rockford instead of new rockford.   Ran a couple more request thru and it's still skipping the approval step and not pushing the Shuttle - New Rockford approval group into the approval step.  



var answer = [];


gs.log('what is in variable :'+current.variables.location.toString());


switch(current.variables.location.toString()){


case 'Nebraska City':


answer.push('Shuttle - Nebraska City');


break;


case 'New Rockford':


answer.push('Shuttle - New Rockford');


break;


case 'Jamestown':


answer.push('Shuttle - Jamestown');


break;


case 'Amarillo':


answer.push('Shuttle - Amarillo');


break;


default:


answer.push('Default Approvers');


}