首页 文章

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

提问于
浏览
1

目标

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

问题

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

试图到目前为止

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

最后,我尝试过使用XMLHttpRequest,但SuiteScript不支持 .

2 回答

  • 1

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

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

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

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

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

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

    要么

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

  • 4

    如果您正在考虑将异步调用视为适合用户事件脚本,那么我猜你可以设置一个标志(自定义复选框字段)来指示记录需要从外部源更新并将http调用推迟到预定脚本 . 然后,您可以创建一个查找标记记录的调度脚本,并同步使用nlapiRequestURL调用外部 endpoints . 预定的脚本可以突破记录并更新它们 .

    您可以只是频繁地运行预定脚本,也可以从用户事件脚本中触发实例 . 确保使用部署ID和脚本ID调用nlapiScheduleScript .

    如果用户需要知道此呼叫的成功或失败,则将其移至客户端 . 在客户端事件脚本中创建另一个标志,并在进行异步调用时设置该标志,并在调用返回时重置它 . 当设置客户端标志时,您的保存页面客户端脚本应返回false,以便用户在更新之前无法提交记录 .

相关问题