2017-08-07 69 views
0

下午好。SuiteScript 2.0 UserEvent腳本調用Map Reduce

我想要獲取用戶事件腳本來調用或使用Map Reduce腳本。我對Map Reduce腳本的概念非常陌生,並且找不到資源。實質上,我想要做的就是調用Map Reduce腳本,該腳本用相同的Item Name查找打開的事務,並將該項目上的Class設置爲User設置的新項目。 Map Reduce腳本需要當前記錄中的項目名稱和類別。

這裏是我的用戶事件:

/** 
* @NApiVersion 2.0 
* @NScriptType UserEventScript 
*/ 

define(['N/record', 'N/log'], 
    function (record, log) { 
     function setFieldInRecord (scriptContext) { 
      log.debug({ 
       'title': 'TESTING', 
       'details': 'WE ARE IN THE FUNCTION!' 
      }); 
      if (scriptContext.type === scriptContext.UserEventType.EDIT) { 
       var old_Record = scriptContext.oldRecord; 
       var cur_Record = scriptContext.newRecord; 
       var oldClassId = old_Record.getValue({ fieldId: 'class'}); 
       var curClassId = cur_Record.getValue({ fieldId: 'class'}); 
       if (oldClassId != curClassId) { 
        // CALL MAP REDUCE HERE 
       } 
      } 
     } 
     return { 
      beforeSubmit: setFieldInRecord 
     }; 
    } 
); 

是地圖減少腳本一個單獨的文件或者是嵌入在用戶事件的腳本?我想如果我知道如何從用戶事件中調用它,我可以讓Map Reduce工作。我很感謝這個問題的任何意見。謝謝!

回答

0

以下是我們如何處理這種情況。

我們確保將'N/task'添加到用戶事件的上述代碼中的define語句中。然後,待條件成熟時,以調用的Map/Reduce腳本得到滿足用戶事件,我們這樣做:

var scriptTask = task.create({ 
    taskType: task.TaskType.MAP_REDUCE 
}); 
scriptTask.scriptId = 'customscript_id'; 
scriptTask.deploymentId = 'customdeploy_id'; 
var scriptTaskId = scriptTask.submit(); 

這成功調用地圖從用戶事件減少腳本。

我希望這能幫助未來某個人。

謝謝。