2017-08-07 80 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(); 

这成功调用地图从用户事件减少脚本。

我希望这能帮助未来某个人。

谢谢。