1

目的

HTTP 要求を介して外部エンドポイントに接続する必要がある Netsuite の SuiteScript ユーザー イベント スクリプトに取り組んでいます。残念ながら、エンドポイントが応答するまでに少し時間がかかる可能性があります。ユーザーの不便を最小限に抑えるために、この呼び出しを非同期で実行する方法を見つけようとしています。

問題

残念ながら、HTTP リクエスト用の nlapiRequestURL() メソッドは、メソッドがクライアント スクリプト内で使用される場合、非同期使用のコールバック関数しか受け入れません。

これまでに試みた

これらのインスタンスで Netsuite が推奨するスケジュールされたスクリプトの使用を検討しましたが、一度にキューに入れることができるスケジュールされたスクリプトの同時インスタンスの数は、利用可能な手動で作成されたスクリプト展開の数によって制限されます. クライアントが一度に数千のレコードを変更する csv 更新を実行するとどうなるか心配です。

最後に、XMLHttpRequest を使用してみましたが、これは SuiteScript でサポートされていません。

4

2 に答える 2

1

nlapiRequestURL()サーバー側でHTTPリクエストを送信する唯一の方法(つまり、あなたの場合はユーザーイベント)は、XMLHttpRequestサーバー側ではサポートされていません。

クライアント側nlapiRequestURL()はラッパーXMLHttpRequestなので、非同期コールバックが可能です。

スケジュールされたスクリプトは、HTTP 要求をレコードの作成/更新プロセスから非同期にしますが、nlapiRequestURLスケジュールされたスクリプト自体は非同期ではないことに注意してください。

ただし、一度にキューに入れることができるスケジュールされたスクリプトの同時インスタンスの数は、利用可能な手動で作成されたスクリプト展開の数によって制限されます。クライアントが一度に数千のレコードを変更する csv 更新を実行するとどうなるか心配です。

まず、いいえ。並行して実行できるスケジュールされたスクリプトの数は、通常の NetSuite アカウントでは常に 1 です。これは、何千もの展開を作成した場合でも同じです (展開をキューに入れますが、本質的にすぐに起動するわけではありません)。SuiteCloud Plus ライセンスを購入した場合は、最大 15 まで可能です。第 2 に、レコードの更新ごとに異なるスケジュール スクリプトを実行することはお勧めできません。他のスケジュール スクリプトの実行をブロックする可能性があるためです。キューにスケジュール スクリプトが多すぎるためです。

いずれかのフラグを使用することをお勧めします (オプション 1: / を使用して更新可能/アクセス可能な会社レベルのスクリプト パラメーターnlapiLoadConfigurationnlapiSubmitConfigurationオプション 2: カスタム レコードを使用)。次に、数分ごとに実行される別のスケジュールされたスクリプトをスケジュールして、フラグをチェックしnlapiRequestURL、最近作成されたフラグを起動します。記録、

また

会社レベルのスクリプト パラメーターで、最後の実行時間を追跡し、最後の実行後に作成された検索ですべてのレコードを選択し、nalpiRequestURL数分ごとに実行されるように展開されているスケジュールされたスクリプトでそれらを起動します。

于 2015-12-16T02:39:35.280 に答える