Ask for Approval for unique managers and additional managers

NikhithaNikki
Tera Contributor

How to use this code in script include using function 

 

var ritmId = fd_data.trigger.current;
var str = new QuestCatalogItemHelper().getuniqueApprovalCoordinator(ritmId);
return str;
 
And calling that function in flow.

 

getuniqueApprovalCoordinator: function(ritmId) {

        var current = new GlideRecord("sc_req_item");

        gs.log("TEST123"  );

        if (current.get(ritmId)) {

 

            var items = JSON.parse(current.variables.configuration_item_100);

           

            var supportGroups = {};

 

            for (var i = 0; i < items.length; i++) {

                var ciGr = new GlideRecord("cmdb_ci_server");

                if (ciGr.get(items[i].ci) && ciGr.support_group) {

                    supportGroups[ciGr.support_group.toString()] = true;

                }

            }

 

            var groupInfoList = [];

 

            for (var groupId in supportGroups) {

                var grp = new GlideRecord("sys_user_group");

                if (grp.get(groupId)) {

                    var managers = [];

 

                    if (grp.manager)

                        managers.push(grp.manager.getDisplayValue());

 

                    if (grp.u_additional_mgrs)

                        managers.push(grp.u_additional_mgrs.getDisplayValue());

 

                    groupInfoList.push({

                        group: grp.getDisplayValue('name'),

                        managers: managers

                    });

                }

            }

 

            gs.info(JSON.stringify(groupInfoList, null, 4));

 

            var taskAppLoaded = false;

            var cleanTaskApprovers = [];

            var str = '';

            groupInfoList.forEach(groupObject => {

                var managers = groupObject.managers;

                var prefix;

                if (taskAppLoaded) {

                    prefix = '&AnyU[';

                } else {

                    prefix = 'ApprovesAnyU[';

                }

                str += prefix + managers.join(',') + ']';

                taskAppLoaded = true;

 

                managers.forEach(manager => {

                    if (!cleanTaskApprovers.includes(manager)) {

                        cleanTaskApprovers.push(manager);

                    }

                });

            });

            str += 'OrRejectsAnyU[' + cleanTaskApprovers.join(',') + ']';

            return str;

        }

 

    },

 

 
1 REPLY 1

harish41
Tera Guru

Hi Nikitha,

I assume, the code is already enclosed in the function. 

You can create a new script include with name 'QuestCatalogItemHelper' and you can call it like you are calling in line 2, if you are trying to call from server side script.

If you want to call from Client side script. Please use AJAX methodology.