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');
                        }
                    }
                }
            }
        }
    },
1 REPLY 1

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