//默认值设置 defaultinput = { classname: "/cncc/action/test", clsoption: "with ttl=10 day, version=true, nickname='test'", data: null, datafilename: "", datafiledir: "/opt/cncc/data/test", jsfilename: "/script/cncc/api/测试.js", fieldmap: { id: "jid" }, fields: { idUnique: "string,key" }, mustfield: "id,idUnique", }; cfgs = [ { classname: "/cncc/action/change_main", datafiledir: "/opt/cncc/action/change_main", jsfilename: "/script/cncc/ITIL/变更单.js", clsoption: "with ttl=10 day, version=true, nickname='change_main'", }, { classname: "/cncc/action/event", datafiledir: "/opt/cncc/action/event", jsfilename: "/script/cncc/ITIL/事件单.js", clsoption: "with ttl=10 day, version=true, nickname='event'", }, { classname: "/cncc/action/problem", datafiledir: "/opt/cncc/action/problem", jsfilename: "/script/cncc/ITIL/问题单.js", clsoption: "with ttl=10 day, version=true, nickname='problem'", }, { classname: "/cncc/action/report", datafiledir: "/opt/cncc/action/report", jsfilename: "/script/cncc/ITIL/报备.js", clsoption: "with ttl=10 day, version=true, nickname='report'", }, { classname: "/cncc/action/device_power_on_off", datafiledir: "/opt/cncc/action/device_power_on_off", jsfilename: "/script/cncc/ITIL/设备上下电.js", clsoption: "with ttl=10 day, version=true, nickname='device_power_on_off'", }, { classname: "/cncc/action/data_collect", datafiledir: "/opt/cncc/action/data_collect", jsfilename: "/script/cncc/ITIL/数据获取.js", clsoption: "with ttl=10 day, version=true, nickname='data_collect'", }, { classname: "/cncc/action/drill", datafiledir: "/opt/cncc/action/drill", jsfilename: "/script/cncc/ITIL/应急演练.js", clsoption: "with ttl=10 day, version=true, nickname='drill'", }, { classname: "/cncc/action/implement", datafiledir: "/opt/cncc/action/implement", jsfilename: "/script/cncc/ITIL/项目实施或巡检.js", clsoption: "with ttl=10 day, version=true, nickname='implement'", } ]; inputmapping = {}; for (var i = 0; i < cfgs.length; i++) { inputmapping[cfgs[i].classname] = cfgs[i]; } // 输入输出参数格式化 input = INPUT; output = {}; try { input = decodeURIComponent(input); } catch (e) { } try { input = base64.decode(input); } catch (e) { } try { input = JSON.parse(input); input = JSON.parse(input); } catch (e) { } // 通用函数 function isempty(o) { if (o) { for (var k in o) { return false; } } return true; } // 引用函数库 eval(dfs.read("/script/matrix/utils/ajs/JsonImporterFuncs.js")); // 定义主程序 function main() { output.detail = {}; output.detail.p0 = { step: "确认参数" }; classname = input.classname; if (!classname) { classname = defaultinput.classname; } if (classname[0] != "/") { throw ("classname必须以 / 开头"); } if (classname.substring(0, 8) == "/matrix/") { throw ("classname不能以 /matrix/ 开头"); } p = inputmapping[classname]; if (p) { for (var k in p) { defaultinput[k] = p[k]; } } data = input.data; if (isempty(data)) { data = defaultinput.data; if (isempty(data)) { datafilename = input.datafilename; if (!datafilename) { datafilename = defaultinput.datafilename; } if (datafilename) { try { data = dfs.read(datafilename); data = JSON.parse(data); } catch (e) { } } } if (isempty(data)) { datafiledir = input.datafiledir; if (!datafiledir) { if (classname == defaultinput.classname) { datafiledir = defaultinput.datafiledir; } else { datafiledir = "/opt" + classname; } } // 读取所有文件,综合数据 data = {}; files = dfs.readdir(datafiledir); for (i = 0; i < files.length; i++) { try { adat = dfs.read(files[i].fullname); adat = JSON.parse(adat); if (typeof (adat) != "object") { throw ("只接收JSON对象数据"); } for (var k in adat) { if (!data[k]) { data[k] = adat[k]; } else if (adat[k]) { if (typeof (adat[k]) == "object") { if (JSON.stringify(adat[k]).length > JSON.stringify(data[k]).length) { data[k] = adat[k]; } } else if (typeof (adat[k]) == "string") { if (typeof (data[k]) != "string") { data[k] = adat[k]; } else if (adat[k].length > data[k].length) { data[k] = adat[k]; } } else if (typeof (adat[k]) == "number") { if (typeof (data[k]) == "number") { if (("" + adat[k]).indexOf(".") >= 0) { data[k] = adat[k]; } } } else if (typeof (adat[k]) == "boolean") { if (typeof (data[k]) != "boolean") { data[k] = "" + adat[k]; } } } } } catch (e) { } } } } if (data["--testing--"]) { throw("一般程序怎么会用这样的字段名:“--testing--”") } jsfilename = input.jsfilename; if (!jsfilename) { jsfilename = defaultinput.jsfilename; } clsoption = input.clsoption; if (!clsoption) { clsoption = defaultinput.clsoption; } fieldmap = input.fieldmap; if (!fieldmap) { fieldmap = defaultinput.fieldmap; } mustfield = input.mustfield; if (!mustfield) { mustfield = defaultinput.mustfield; } fields = input.fields; if (!fields) { fields = defaultinput.fields; } reqinput = { classname: classname, jsfilename: jsfilename, clsoption: clsoption, fieldmap: fieldmap, fields: fields, mustfield: mustfield, data: data, }; output.detail.p1 = { step: "生成类" }; output.detail.p1.result = alterClass(reqinput); if (output.detail.p1.result.error) { return; } output.detail.p2 = { step: "生成脚本" }; output.detail.p2.result = generateJsonImporterJS(reqinput); if (output.detail.p2.result.error) { return; } output.detail.p3 = { step: "激活脚本" }; output.detail.p3.result = activeServerJS(jsfilename); if (output.detail.p3.result.error) { return; } output.detail.p4 = { step: "验证测试" }; data["--testing--"] = true output.detail.p4.result = runServerJS(jsfilename, data); delete(data, "--testing--") if (output.detail.p4.result.error) { return; } output.detail.p5 = { step: "完成" }; for(var k in output.detail.p4.result) { output[k] = output.detail.p4.result[k] } } // 执行主程序 try { main(); } catch (e) { if (typeof (e) == "object") { output.error = e; } else if (typeof (e) == "string") { output.error = "错误:" + e; } else { output.error = JSON.stringify(e); } } // 返回输出信息 OUTPUT = output;