2016-07-21 1 views
1

Я хочу, чтобы перепланировать сценарий расписания, когда используется сценарий расписания, прежде чем ударить пределы регулятора. сценарий расписания в Netsuite насчитывает 10 000 единиц. В версии SuiteScript 1.0 перепланирование осуществляется «nlapiScheduleScript() api», но в версии SuiteScript 2.0 как перенести сценарий.Как перенести сценарий расписания в Netsuite с помощью версии SuiteScript 2.0

Помогите мне достичь этого, спасибо заранее.

ответ

8

Модули N/task и N/runtime имеют то, что вы ищете. Вы будете использовать N/task, чтобы выполнить перепланирование, и N/runtime, чтобы получить информацию о текущем скрипте.

Без вашего точного кода я не могу дать очень конкретный пример, но ваш запланированного сценария будет в конечном итоге выглядит как правило, что-то вроде:

/** 
* @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

Всякий раз, когда вы перепланируете Scheduled Script, вам нужно управлять возобновлением, где он остановился. Обычно это выполняется путем сортировки результатов по внутреннему идентификатору, хранению последнего обработанного идентификатора и фильтрации поиска внутренних идентификаторов, превышающих последние обработанные. – erictgrubaugh

+0

Где безопасное место для хранения последнего обработанного ID? –

0

Похоже, scheduledScriptTask.submit() возвращает нуль.

var taskId = rescheduleCurrentScript(); 

taskId выше возвращает null при регистрации. Возможно, это ошибка в стороне NetSuite?