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

Provide feedback during suitescript restlet processing?

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

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

解决此问题的最佳方法是什么?

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

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

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

我通常分两部分做这类事情。

首先我return将目标设置为客户端。这让你知道负载有多大。

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