Script¶
Script 节点的作用是使用 JavaScript 将有效负载转换为另一种格式。
节点类型¶
Action。
输入和输出能力¶
该节点具有多个入口点和 1 个出口点。输入和输出可以是任何格式。你可以使用编写的 JavaScript 定义格式,其返回数据即为输出消息。
备注
不支持 Javascript ES6。
节点属性¶
设置标签¶
名称
该节点的名称。
描述
该节点的描述。
Script 标签  ¶
JS 库文件
用于导入第三方 JS 库代码文件,同时在下方输入框內调用文件中的函数,实现自定义的功能。导入文件后,选择 启用 
,该文件将参与流的运行,再次选择 禁用 
 将禁用文件。
Function Transform
用于将输入转换为所需格式的 JavaScript(支持 ES5.1)。受支持的函数为 transform,带有两个参数,分别为 msg 和 metadata。msg 是输入消息,而 metadata 可以是 MQTT topic,该 topic 可在脚本中使用。
你也可使用内置的 JavaScript 函数。有关可用函数的列表,参见 JavaScript 内置函数概述。
选择 测试 按钮,通过输入消息来测试 JavaScript,查看 JavaScript 是否能按设计意图操作。
使用限制¶
最大入口点数:100
msg和metadata需要在脚本函数中返回。不支持 Javascript ES6。
示例¶
输入示例¶
输入取决于脚本的要求。
输出示例¶
输出取决于脚本处理输入的方式。
脚本示例¶
if(!msg.Data){
  return tools.resultBuilder.build(false);
}
var dataArray = msg.Data.data;
var stream = msg.Data.stream;
var device_id = stream.camera;
var flag = true;
for (var i=0; i<dataArray.length; i++) {
  var data = dataArray[i];
  if(!data.eventName){
    flag = false;
    break;
  }
  var paramsArray = new Array();
  if(data.eventName === "Event1"){
    var mps = {};
    mps["raw_data_count"] = JSON.stringify(data.count);
    mps["alarm_data_event_name"] = data.eventName;
    mps["raw_data_imgpath"] = JSON.stringify(data.imgpath);
    mps["raw_data_start_time"] = data.startTime;
    mps["raw_data_timestamp"] = data.timestamp;
    mps["raw_stream_camera"] = stream.camera;
    var params = {};
    params["measurepoints"] = mps;
    params["time"] = new Date().getTime();
    params["device_id_no"] = device_id;
    paramsArray.push(params);
  }else{
    paramsArray = metadata.params;
  }
}
if(!flag){
  return tools.resultBuilder.build(false);
}
return tools.resultBuilder.build(true,JSON.stringify(paramsArray));