Knowledge Article

Pratiksha KC
Tera Guru

Two sets of approvals should go out at the same time, and only one user from each group is required to approve. The two sets of approval are: 1. send to the Ownership group 2. according to knowledge article it should go to particular group, for example if Knowledge base is known error than approval should send to the 'known error' group or if Knowledge base is Itil user than approval should send to the 'users with itil role' group 

 

For this I have modified the script include - 

var KBWorkflow = Class.create();
KBWorkflow.prototype = Object.extendsObject(KBWorkflowSNC, {
    initialize: function() {},


    getApprovers: function(knowledgeGR) {
        var approvers = {
            kbApprovalUser: '' // Stores a single approver for KB Approval Group
        };

        var kbName = knowledgeGR.kb_knowledge_base.sys_id;
        var kbApprovalGroupId = '';

        gs.info("Welcome");

        if (kbName == "dbf2021003f07e2c1ac0739ab") {
            kbApprovalGroupId = "e101c06b91f034bcb85"; // KB Approval - known error Group
            gs.info("Case1");
        } else if (kbName == "da796501d08eb53604bcb4e") {
            kbApprovalGroupId = "f595d711c06b91f034bcb8a"; // KB Approval - itil group
            gs.info("Case2");
        } else if (kbName == "fb107fa31bb53604bcbe4") {
            kbApprovalGroupId = "6b86d71b1bef5e10034bcb36"; // KB Approval - US Group
            gs.info("Case3");
        }

        // Debugging output
        gs.info("Selected KB Approval Group ID: " + kbApprovalGroupId);

        if (kbApprovalGroupId) {
            approvers.kbApprovalUser = this._getGroupMembers(kbApprovalGroupId);
        }

        return approvers;
    },

    _getGroupMembers: function(groupId) {
        var members = [];
        var gr = new GlideRecord('sys_user_grmember');
        gr.addQuery('group', groupId);
        //gr.addQuery('user.active', true);
        gr.query();

        while (gr.next()) {
            var userId = members.push(gr.user.getUniqueValue());
            var userName = gr.user.name;
            gs.info("Added user: " + userName + " (User ID: " + userId + ")");
        }
        gs.info("Total members found: " + members.length);
        return members;

    },
    type: 'KBWorkflow'
});
2 REPLIES 2

Murthy Ch
Giga Sage

@Pratiksha KC 

Made few changes, otherwise your script looks good!

Are you overriding the OOB approval flow?

var KBWorkflow = Class.create();
KBWorkflow.prototype = Object.extendsObject(KBWorkflowSNC, {
    initialize: function() {},

    getApprovers: function(knowledgeGR) {
        var approvers = {
            kbApprovalUser: '' // Stores a single approver for KB Approval Group
        };

        var kbName = knowledgeGR.kb_knowledge_base.sys_id;
        var kbApprovalGroupId = '';

        gs.info("Welcome");

        if (kbName == "dbf2021003f07e2c1ac0739ab") {
            kbApprovalGroupId = "e101c06b91f034bcb85"; // KB Approval - known error Group
            gs.info("Case1");
        } else if (kbName == "da796501d08eb53604bcb4e") {
            kbApprovalGroupId = "f595d711c06b91f034bcb8a"; // KB Approval - itil group
            gs.info("Case2");
        } else if (kbName == "fb107fa31bb53604bcbe4") {
            kbApprovalGroupId = "6b86d71b1bef5e10034bcb36"; // KB Approval - US Group
            gs.info("Case3");
        }

        // Debugging output
        gs.info("Selected KB Approval Group ID: " + kbApprovalGroupId);

        if (kbApprovalGroupId) {
            approvers.kbApprovalUser = this._getGroupMembers(kbApprovalGroupId);
        }

        return JSON.stringify(approvers);
    },

    _getGroupMembers: function(groupId) {

        var members = [];
        var gr = new GlideRecord('sys_user_grmember');
        gr.addQuery('group', groupId);
        //gr.addQuery('user.active', true);
        gr.query();

        while (gr.next()) {
            var userId = members.push(gr.getValue("user"));
            var userName = gr.user.name;
            gs.info("Added user: " + userName + " (User ID: " + userId + ")");
        }
        gs.info("Total members found: " + members.length);
        return members;

    },
    type: 'KBWorkflow'
});

 

Thanks,
Murthy

Yes. Got the solution. Thank You!!!!!!