Find your people. Pick a challenge. Ship something real. The CreatorCon Hackathon is coming to the Community Pavilion for one epic night. Every skill level, every role welcome. Join us on May 5th and learn more here.

Need to add delay in script include

khandelwal2
Tera Contributor

Hi @Ankur Bawiskar ,

 

I want to add delay in the script include.

I tried the script mentioned in this https://www.servicenow.com/community/service-operations-workspace/add-sleep-or-delay-in-your-script-...  in my script but it didn't work. I want the workflow to trigger after few seconds. Can you please let me know what am i doing wrong here?

 

createTransferOrderLines: function(transferOrderGr, recordProducer) {

        var assets = recordProducer.assets + '';

        var assetsArr = assets.split(",");
        var assetsArrLength = assetsArr.length;
        if (assetsArrLength === 0) {
            return false;
        } else {
            for (var i = 0; i < assetsArrLength; i++) {
                //create order lines
                var assetGR = new GlideRecord('alm_asset');
                if (assetGR.get(assetsArr[i])) {
                    var transferAsset = new GlideRecord('alm_transfer_order_line');

                    transferAsset.initialize();

                    transferAsset.setValue('transfer_order', transferOrderGr);
                    transferAsset.setValue('asset', assetsArr[i]);
                    transferAsset.setValue('quantity_requested''1');
                    transferAsset.setValue('model', assetGR.model);
                    transferAsset.setValue('stage''draft');

                    transferAsset.setWorkflow(false);

                    var transferOrderLine = transferAsset.insert();

                    //  transferAsset.setWorkflow(true);
                    if (transferOrderLine) {
                        gs.info('Before delay->' + new GlideDateTime().getValue());

                        var now = new GlideDateTime();
                        while (GlideDateTime.subtract(now, new GlideDateTime()) < "1970-01-01 00:00:10") {
                            // loop for 10 seconds
                        }

                        gs.info('After delay->' + new GlideDateTime().getValue());


                        var wflw = new Workflow();
                        var wfId = wflw.getWorkflowFromName('Transfer Order Line');
                        if (wfId) {
                            wflw.startFlow(wfId, transferAsset, 'insert');
                        }
                    }
                }
            }
        }
    },
2 REPLIES 2

Ankur Bawiskar
Tera Patron

@khandelwal2 

update as this

createTransferOrderLines: function(transferOrderGr, recordProducer) {

    var assets = recordProducer.assets + '';

    var assetsArr = assets.split(",");
    var assetsArrLength = assetsArr.length;
    if (assetsArrLength === 0) {
        return false;
    } else {
        for (var i = 0; i < assetsArrLength; i++) {
            //create order lines
            var assetGR = new GlideRecord('alm_asset');
            if (assetGR.get(assetsArr[i])) {
                var transferAsset = new GlideRecord('alm_transfer_order_line');

                transferAsset.initialize();

                transferAsset.setValue('transfer_order', transferOrderGr);
                transferAsset.setValue('asset', assetsArr[i]);
                transferAsset.setValue('quantity_requested', '1');
                transferAsset.setValue('model', assetGR.model);
                transferAsset.setValue('stage', 'draft');

                transferAsset.setWorkflow(false);

                var transferOrderLine = transferAsset.insert();

                //  transferAsset.setWorkflow(true);
                if (transferOrderLine) {
                    gs.info('Before delay->' + new GlideDateTime().getValue());

                    var secondsValue = 10;
                    var seconds = parseInt(secondsValue, 10) * 1000;
                    var start = parseInt(new Date().getTime()) + seconds;
                    while (start > parseInt(new Date().getTime())) {
                        // do nothing
                    }

                    gs.info('After delay->' + new GlideDateTime().getValue());


                    var wflw = new Workflow();
                    var wfId = wflw.getWorkflowFromName('Transfer Order Line');
                    if (wfId) {
                        wflw.startFlow(wfId, transferAsset, 'insert');
                    }
                }
            }
        }
    }
},

💡 If my response helped, please mark it as correct and close the thread 🔒— this helps future readers find the solution faster! 🙏

Regards,
Ankur
Certified Technical Architect  ||  10x ServiceNow MVP  ||  ServiceNow Community Leader

@khandelwal2 

Hope you are doing good.

Did my reply answer your question?

💡 If my response helped, please mark it as correct and close the thread 🔒— this helps future readers find the solution faster! 🙏

Regards,
Ankur
Certified Technical Architect  ||  10x ServiceNow MVP  ||  ServiceNow Community Leader