2016-07-21 6 views
1

スケジュールスクリプトを再スケジュールして、ガバナーの制限に達する前にスケジュールスクリプトの使用を再スケジュールします。 Netsuiteのスケジュールスクリプトには10​​,000単位があります。 SuiteScript 1.0のバージョンでは、再スケジューリングは "nlapiScheduleScript()api"によって行われますが、SuiteScript 2.0のバージョンではスクリプトの再スケジュールが行われます。SuiteScript 2.0のバージョンを使用してNetsuiteでスケジュールスクリプトを再スケジュールする方法

私はこれを達成するのに役立ちます、事前に感謝します。

答えて

8

N/taskN/runtimeのモジュールがあります。再スケジューリングにはN/taskを使用し、現在のスクリプト情報を取得するにはN/runtimeを使用します。あなたの正確なコードなしで

は、私は非常に具体的な例を与えることはできませんが、あなたのスケジュールされたスクリプトは、一般的のようなものを見てしまいます。それはscheduledScriptTask.submitように思える

/** 
* @NApiVersion 2.x 
* @NScriptType ScheduledScript 
*/ 
define(['N/task', 'N/runtime'], function(task, runtime) { 

    /** 
    * Reschedules the current script and returns the ID of the reschedule task 
    */ 
    function rescheduleCurrentScript() { 
     var scheduledScriptTask = task.create({ 
      taskType: task.TaskType.SCHEDULED_SCRIPT 
     }); 
     scheduledScriptTask.scriptId = runtime.getCurrentScript().id; 
     scheduledScriptTask.deploymentId = runtime.getCurrentScript().deploymentId; 
     return scheduledScriptTask.submit(); 
    } 

    function execute(context) { 

     // Do stuff... 

     while(...) { 
      // Do processing in loop 

      // Check remaining usage and reschedule if necessary 
      if (runtime.getCurrentScript().getRemainingUsage() < 100) { 
       var taskId = rescheduleCurrentScript(); 
       log.audit("Rescheduling status: " + task.checkStatus(taskId)); 
       return; 
      } 
     } 
    } 

    return { 
     execute: execute 
    }; 
}); 
+0

これにより、実行中の同じポイントでスクリプトを終了することもできますか?たとえば、スケジュールされたスクリプトで保存された検索の結果をループしている場合、このメソッドはスクリプトが中断した保存された検索と同じ結果でスケジュールされたスクリプトを再開できますか?または、保存された検索の最初の結果から開始されますか? –

+2

スケジュールされたスクリプトを再スケジューリングするときは、中断したところで再開を管理する必要があります。これは通常、内部IDによる結果のソート、最後に処理されたIDの保管、および最後に処理されたIDよりも大きな内部IDの検索のフィルター処理によって実行されます。 – erictgrubaugh

+0

最後の処理IDはどこに保存するのが最も安全ですか? –

0

を()はnullを返しています。

var taskId = rescheduleCurrentScript(); 

上記のtaskIdは、ログに記録するとnullを返します。 NetSuite側のバグでしょうか?

関連する問題