繁体   English   中英

SuiteScript; 用户事件脚本中的异步HTTP请求

[英]SuiteScript; Asynchronous HTTP request inside of user event script

目的

我正在Netsuite中处理SuiteScript用户事件脚本,该脚本必须通过HTTP请求联系外部端点。 不幸的是,端点响应可能需要一些时间。 为了尽量减少用户的不便,我试图找到一种异步执行此调用的方法。

问题

不幸的是,用于HTTP请求的nlapiRequestURL()方法仅在客户端脚本中使用时才接受用于异步使用的回调函数。

到目前为止尝试

我已经研究过使用计划的脚本,这是Netsuite在这些实例中的建议,但是,一次可以排队的计划脚本的同时实例数受可用的手动创建的脚本部署数的限制。 。 我们担心如果客户端运行一次同时修改数千条记录的csv更新会发生什么情况。

最后,我尝试仅使用XMLHttpRequest,但SuiteScript不支持。

如果您认为异步调用适合于用户事件脚本,那么我猜您可以设置一个标志(自定义复选框字段)以指示需要从外部源更新记录并将http调用推迟到计划的脚本。 然后,您可以创建一个调度脚本来查找标记的记录,并使用nlapiRequestURL同步调用外部端点。 计划的脚本可以遍历记录并进行更新。

您可以只使计划的脚本频繁运行,也可以从用户事件脚本中触发实例。 确保使用部署ID和脚本ID调用nlapiScheduleScript。

如果用户需要知道此呼叫的成功或失败,则将其移至客户端。 在客户端事件脚本中,创建另一个标志,并在进行紧急呼叫时进行设置,并在呼叫返回时将其重置。 当设置了客户端标志时,您的保存页客户端脚本应该返回false,这样用户才能在更新记录之前提交记录。

nlapiRequestURL()是在服务器端发送HTTP请求的唯一方法(即您的用户事件),在服务器端不支持XMLHttpRequest

在客户端, nlapiRequestURL()XMLHttpRequest的包装,因此,它允许异步回调。

计划脚本使HTTP请求与记录创建/更新过程保持异步,但是请注意,计划脚本本身中的nlapiRequestURL不是异步的。

但是,可以一次排队的计划脚本的同时实例数受可用的手动创建的脚本部署数的限制。 我们担心如果客户端运行一次同时修改数千条记录的csv更新会发生什么情况。

首先,没有。 即使您创建了数千个部署(可以将它们排入队列,但实际上并不能立即将其部署),但在普通的NetSuite帐户中,可以并行运行的计划脚本的数量始终为1。 如果购买了SuiteCloud Plus许可证,则最多可以增加15个。其次,建议不要为每个记录更新触发不同的计划脚本,因为您可能会阻止其他计划脚本运行,因为排队的计划脚本太多了。

我建议您使用一个标志(选项1:可使用nlapiLoadConfiguration / nlapiSubmitConfiguration更新/访问的公司级脚本参数,选项2:使用自定义记录),然后安排另一个每隔几分钟运行一次的计划脚本来检查标志并触发nlapiRequestURL对于最近创建的记录,

要么

在公司级脚本参数中,跟踪上次运行时间,并在上次运行后创建的搜索中选择所有记录,并在计划的脚本中为它们触发nalpiRequestURL ,该脚本每隔几分钟运行一次。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM