簡體   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