Ankur Bawiskar
Tera Patron

Many a times there is a need to add some delay in your script in server side.

Below script will work in both global + scoped app. The value passed is duration value. I passed 10 seconds in duration format. It can be customized as per your requirement.

Script:

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());

Output: Global scope

AnkurBawiskar_0-1735380954481.png

 

Output: Scoped app

AnkurBawiskar_1-1735381021258.png

 

Comments
khandelwal2
Tera Contributor

Hi @Ankur Bawiskar ,

 

I tried this 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');
                        }
                    }
                }
            }
        }
    },
Ankur Bawiskar
Tera Patron

@khandelwal2 

can you post this as a separate question, share all the details and tag me there

Version history
Last update:
‎12-28-2024 02:17 AM
Updated by:
Contributors