Array Question

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-02-2016 05:04 AM
I have a scenario, where I have 30 variables and 3 outcomes.
I'm trying to find the best way to make this as dynamic as possible. They are all check boxes. Basically I'll be looking at 1-15 if any are true, do this, 16-30 if any are true do that, if none are true, go here.
Doing a run script as a switch because multiple outcomes can happen concurrently.
I could use abit of help with the syntax. I looked up the arrayutil in the wiki which I think will help as it does the contains option. ArrayUtil - ServiceNow Wiki
But i'm not sure how to setup the array using vars and telling it to search through all 15 at a time. I'm assuming I manually have to enter them into the array.
Any thoughts out there? This is on the workflow side for clarity.
- Labels:
-
Scripting and Coding
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-02-2016 06:40 AM
/* assumptions
30 variables only
All are true / false type
Else, script will require changes
*/
var counter = 0;
var gr = new GlideRecord('sc_item_option_mtom');
gr.addQuery('request_item','current.sys_id');
gr.orderBy('sc_item_option.order'); // sort variables by ascending order
gr.query();
while(gr.next()){
counter++;
if(counter<=15){
if(gr.sc_item_option.value == 'true') // please check this line, not sure what is stored as true whether 1 or string true
callFirst(); // function defined in your run script to return 1st output
}
else if(counter> 15 && counter<=30){
if(gr.sc_item_option.value == 'true'){
callSecond(); // function defined in your run script to return 2nd output
}
}
else callThird(); // function defined in your run script to return 3rd output
}
}
Please check if it helps

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-02-2016 11:04 AM
That definately is helping, the other issue is, they are in 3 different areas in the order and not side by side. they are in sections. So I don't think i can use the counter. I have no problem delcaring out the vars if I must.
Any suggestions? (Btw what you have written I would not of figured out anytime soon)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-02-2016 11:22 AM
Can you let us know a little more about what you are trying to accomplish and/or post a screenshot of your catalog item variables?

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-02-2016 11:42 AM
Sure, this shows all the variables visually and my quandry. I am looking to find a way to say for example, if any of 1001 is checked in all 3 areas, it goes to 1 takes route a. (that is the simple version) the problem is, as you can see, alot more variables. so I'm looking to see how I can set this up without making a whole load of if statements and was looking at arrays with using the arrayutils to do a contain to check for a true. So if any of the listed vars. (for example 1001-1100) are checked it goes route A, if 4200-42009 are checked (any of them = true) then go route B, and then route C if there isn't any checked. Both A and B can both be checked so I am using a scratchpad marker as my conditional in code.