在 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。
您可以在处理每个目标时提前发出进度通知,并减少 运行 成为治理问题的可能性
我有一个 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。 您可以在处理每个目标时提前发出进度通知,并减少 运行 成为治理问题的可能性