123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254 |
- //默认值设置
- 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;
|