//默认值设置 defaultinput = { classname: "/cncc/action/test", clsoption: "with ttl=10 day, version=true, nickname='test'", data: null, datafilename: "", datafiledir: "/opt/cncc/ITIL/change_main", jsfilename: "/script/cncc/ITIL/测试.js", fieldmap: {id: "jid"}, fields: {idUnique: "string,key"}, mustfield: "id,idUnique", }; inputmapping = { "change": { classname: "/cncc/action/change_main", datafiledir: "/opt/cncc/ITIL/change_main", jsfilename: "/script/cncc/ITIL/变更单.js", clsoption: "with ttl=10 day, version=true, nickname='change_main'", }, "event": { classname: "/cncc/action/event", datafiledir: "/opt/cncc/ITIL/event", jsfilename: "/script/cncc/ITIL/事件单.js", clsoption: "with ttl=10 day, version=true, nickname='event'", }, "problem": { classname: "/cncc/action/problem", datafiledir: "/opt/cncc/ITIL/problem", jsfilename: "/script/cncc/ITIL/问题单.js", clsoption: "with ttl=10 day, version=true, nickname='problem'", }, "report": { classname: "/cncc/action/report", datafiledir: "/opt/cncc/ITIL/report", jsfilename: "/script/cncc/ITIL/报备.js", clsoption: "with ttl=10 day, version=true, nickname='report'", }, "device_power_on_off": { classname: "/cncc/action/device_power_on_off", datafiledir: "/opt/cncc/ITIL/device_power_on_off", jsfilename: "/script/cncc/ITIL/设备上下电.js", clsoption: "with ttl=10 day, version=true, nickname='device_power_on_off'", }, "data_collect": { classname: "/cncc/action/data_collect", datafiledir: "/opt/cncc/ITIL/data_collect", jsfilename: "/script/cncc/ITIL/数据获取.js", clsoption: "with ttl=10 day, version=true, nickname='data_collect'", }, "drill": { classname: "/cncc/action/drill", datafiledir: "/opt/cncc/ITIL/drill", jsfilename: "/script/cncc/ITIL/应急演练.js", clsoption: "with ttl=10 day, version=true, nickname='drill'", }, "implement": { classname: "/cncc/action/implement", datafiledir: "/opt/cncc/ITIL/implement", jsfilename: "/script/cncc/ITIL/项目实施或巡检.js", clsoption: "with ttl=10 day, version=true, nickname='implement'", } }; // 输入输出参数格式化 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; } // 主执行阶段 function main() { output.info = {}; output.info.p0 = {name: "确认参数"}; p = inputmapping[input.name]; if (p) { for (var k in p) { defaultinput[k] = p[k]; } } server = input.server; if (!server) { server = defaultinput.server; } author = input.author; if (!author) { author = defaultinput.author; } classname = input.classname; if (!classname) { classname = defaultinput.classname; } if (classname[0] != "/") { throw ("classname必须以 / 开头"); } if (classname.substring(0,8) == "/matrix/") { throw ("classname不能以 /matrix/ 开头"); } 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) {} } } } 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.info.p1 = {name:"生成类"}; output.info.p1.result = alterClass(reqinput) if (output.info.p1.result.error) { return; } output.info.p2 = {name:"生成脚本"}; output.info.p2.result = generateJsonImporterJS(reqinput) if (output.info.p2.result.error) { return; } output.info.p3 = {name:"激活脚本"}; output.info.p3.result = activeServerJS(jsfilename) if (output.info.p3.result.error) { return; } output.info.p4 = {name:"验证测试"}; output.info.p4.result = runServerJS(jsfilename, data) if (output.info.p4.result.error) { return; } output.info.p5 = {name:"完成"}; } 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;