在suitecript restlet处理期间提供反馈?

时间:2017-01-26 02:13:28

标签: netsuite restlet suitescript

我有一个NetSuite RESTlet正在进行一些搜索和处理,然后在portlet中显示结果。一切都很好。但是,如果这个过程需要一段时间,我想向客户提供实际发生的事情的反馈。这样做的最佳方法是什么?我可以将搜索分解成批次并在调用之间提供反馈,但这会导致我不需要额外的治理。

这是我的搜索代码。 (样板)。我想再次调用RESTlet然后提供带有记录计数的回调,但是我需要发送auth params。那是为什么?

最好的方法是什么?

function doWork() {
    // do the search
    var accountSearch = search.create({
        type: search.Type.CUSTOMER,
        columns: searchColumns,
        filters: searchFilters
    });
    // GOVERNANCE: 5 
    var searchResultsPagedData = accountSearch.runPaged({
        'pageSize': 1000
    });

    if (searchResultsPagedData && searchResultsPagedData.count > 0) {
        var foundIDs = [];
        for (var pageIndex = 0; pageIndex < searchResultsPagedData.pageRanges.length; pageIndex++) {
            var pageRange = searchResultsPagedData.pageRanges[pageIndex];
            if (pageRange.index >= max)
                break;

            var searchPage = searchResultsPagedData.fetch({ index: pageRange.index });

            // THIS IS WHAT I HAD IN MIND
            var jsonText = JSON.stringify({ "recordType": "resultCallback", "index": pageRange.index });
            var restletUrl = url.resolveScript({
                scriptId: 'customscript_script_id',
                deploymentId: 'customdeploy_deploy_id',
            });


            var response = https.post({
                url: restletUrl,
                body: jsonText
            });
            log.debug({
                title: 'response',
                details: response
            })


            // Iterate over the list of results on the current page
            searchPage.data.forEach(function (result) {
                // Process the individual result
                var internalid = result.id;
                // etc etc
            });
        };
    }
    var returnJson = {
        'accountslength': records.length,
        'contactlength': contactRecords.length,
        'accounts': records,
        'contacts': contactRecords
    };

    return returnJson;
}

回复给我;

"type":"http.ClientResponse","code":401

3 个答案:

答案 0 :(得分:2)

我通常分两部分来做这件事。

首先,我将目标集返回给客户端。这可以让你知道负载有多大。

然后将每个目标记录一次发送到suitelet或restlet。 您可以在处理每个目标时提前进度通知,并减少遇到治理问题的可能性

答案 1 :(得分:0)

您是否尝试过使用Suitelet向用户提供反馈?

答案 2 :(得分:0)

您可以使用在每次更新记录后更新的计数器创建自定义记录,例如(处理100条记录中的10条)并每隔x秒对其进行一次portlet检查。