用于调用Map Reduce的SuiteScript 2.0 UserEvent脚本

时间:2017-08-07 18:24:13

标签: mapreduce suitescript

下午好。

我正在尝试使用User Event脚本来调用或使用Map Reduce脚本。我对Map Reduce脚本的概念很陌生,并且没有太多运气找到资源。基本上,我想要做的是调用Map Reduce脚本来查找具有相同项目名称的打开事务,并将该项目上的Class设置为User设置的新项目。 Map Reduce脚本需要来自当前记录的Item Name和Class。

这是我的用户活动:

/**
* @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 Script是一个单独的文件还是嵌入在User Event脚本中?如果我知道如何从用户事件中调用它,我想我可以让Map Reduce工作。我对这个问题的任何意见表示感谢。谢谢!

1 个答案:

答案 0 :(得分:1)

以下是我们处理这种情况的方法。

我们确保将'N/task'添加到上述用户事件代码中的define语句中。然后,在满足条件的用户事件中,为了调用Map / Reduce Script,我们这样做了:

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

这成功地从用户事件中调用了Map Reduce脚本。

我希望将来可以帮助某人。

谢谢。