var GLOBAL_ITEMS=function(){var t=[];for(var e in this)t.push(e);return t}();!function(){this.MooTools={version:"1.5.0dev",build:"%build%"};var t=this.typeOf=function(t){if(null==t)return"null";if(null!=t.$family)return t.$family();if(t.nodeName){if(1==t.nodeType)return"element";if(3==t.nodeType)return/\S/.test(t.nodeValue)?"textnode":"whitespace"}else if("number"==typeof t.length){if(t.callee)return"arguments";if("item"in t)return"collection"}return typeof t},e=(this.instanceOf=function(t,e){if(null==t)return!1;for(var n=t.$constructor||t.constructor;n;){if(n===e)return!0;n=n.parent}return!!t.hasOwnProperty&&t instanceof e},this.Function),n=!0;for(var r in{toString:1})n=null;n&&(n=["hasOwnProperty","valueOf","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","constructor"]),e.prototype.overloadSetter=function(t){var e=this;return function(r,i){if(null==r)return this;if(t||"string"!=typeof r){for(var a in r)e.call(this,a,r[a]);if(n)for(var o=n.length;o--;)a=n[o],r.hasOwnProperty(a)&&e.call(this,a,r[a])}else e.call(this,r,i);return this}},e.prototype.overloadGetter=function(t){var e=this;return function(n){var r,i;if("string"!=typeof n?r=n:arguments.length>1?r=arguments:t&&(r=[n]),r){i={};for(var a=0;a>>0;n>>0;i>>0,r=e<0?Math.max(0,n+e):e||0;r>>0,r=Array(n),i=0;i>>0;n-1:String(this).indexOf(t)>-1},trim:function(){return String(this).replace(/^\s+|\s+$/g,"")},clean:function(){return String(this).replace(/\s+/g," ").trim()},camelCase:function(){return String(this).replace(/-\D/g,(function(t){return t.charAt(1).toUpperCase()}))},hyphenate:function(){return String(this).replace(/[A-Z]/g,(function(t){return"-"+t.charAt(0).toLowerCase()}))},capitalize:function(){return String(this).replace(/\b[a-z]/g,(function(t){return t.toUpperCase()}))},escapeRegExp:function(){return String(this).replace(/([-.*+?^${}()|[\]\/\\])/g,"\\$1")},toInt:function(t){return parseInt(this,t||10)},toFloat:function(){return parseFloat(this)},hexToRgb:function(t){var e=String(this).match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);return e?e.slice(1).hexToRgb(t):null},rgbToHex:function(t){var e=String(this).match(/\d{1,3}/g);return e?e.rgbToHex(t):null},substitute:function(t,e){return String(this).replace(e||/\\?\{([^{}]+)\}/g,(function(e,n){return"\\"==e.charAt(0)?e.slice(1):null!=t[n]?t[n]:""}))}}),Function.extend({attempt:function(){for(var t=0,e=arguments.length;t1?Array.slice(arguments,1):null,r=function(){},i=function(){var a=t,o=arguments.length;this instanceof i&&(r.prototype=e.prototype,a=new r);var s=n||o?e.apply(a,n&&o?n.concat(Array.slice(arguments)):n||arguments):e.call(a);return a==t?s:a};return i},pass:function(t,e){var n=this;return null!=t&&(t=Array.from(t)),function(){return n.apply(e,t||arguments)}},delay:function(t,e,n){return setTimeout(this.pass(null==n?[]:n,e),t)},periodical:function(t,e,n){return setInterval(this.pass(null==n?[]:n,e),t)}}),Number.implement({limit:function(t,e){return Math.min(e,Math.max(t,this))},round:function(t){return t=Math.pow(10,t||0).toFixed(t<0?-t:0),Math.round(this*t)/t},times:function(t,e){for(var n=0;n3&&t<21?"th":["th","st","nd","rd","th"][Math.min(t%10,4)]},lessThanMinuteAgo:"less than a minute ago",minuteAgo:"about a minute ago",minutesAgo:"{delta} minutes ago",hourAgo:"about an hour ago",hoursAgo:"about {delta} hours ago",dayAgo:"1 day ago",daysAgo:"{delta} days ago",weekAgo:"1 week ago",weeksAgo:"{delta} weeks ago",monthAgo:"1 month ago",monthsAgo:"{delta} months ago",yearAgo:"1 year ago",yearsAgo:"{delta} years ago",lessThanMinuteUntil:"less than a minute from now",minuteUntil:"about a minute from now",minutesUntil:"{delta} minutes from now",hourUntil:"about an hour from now",hoursUntil:"about {delta} hours from now",dayUntil:"1 day from now",daysUntil:"{delta} days from now",weekUntil:"1 week from now",weeksUntil:"{delta} weeks from now",monthUntil:"1 month from now",monthsUntil:"{delta} months from now",yearUntil:"1 year from now",yearsUntil:"{delta} years from now"}),function(){var t=this.Date,e=t.Methods={ms:"Milliseconds",year:"FullYear",min:"Minutes",mo:"Month",sec:"Seconds",hr:"Hours"};["Date","Day","FullYear","Hours","Milliseconds","Minutes","Month","Seconds","Time","TimezoneOffset","Week","Timezone","GMTOffset","DayOfYear","LastMonth","LastDayOfMonth","UTCDate","UTCDay","UTCFullYear","AMPM","Ordinal","UTCHours","UTCMilliseconds","UTCMinutes","UTCMonth","UTCSeconds","UTCMilliseconds"].each((function(e){t.Methods[e.toLowerCase()]=e}));var n=function(t,e,r){return 1==e?t:t28)return 1;0==o&&s<-2&&(r=new t(r).decrement("day",i),i=0),(n=new t(r.get("year"),0,1).get("day")||7)>4&&(a=-7)}else n=new t(r.get("year"),0,1).get("day");return a+=r.get("dayofyear"),a+=6-i,(a+=(7+n-e)%7)/7},getOrdinal:function(e){return t.getMsg("ordinal",e||this.get("date"))},getTimezone:function(){return this.toString().replace(/^.*? ([A-Z]{3}).[0-9]{4}.*$/,"$1").replace(/^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/,"$1$2$3")},getGMTOffset:function(){var t=this.get("timezoneOffset");return(t>0?"-":"+")+n((t.abs()/60).floor(),2)+n(t%60,2)},setAMPM:function(t){t=t.toUpperCase();var e=this.get("hr");return e>11&&"AM"==t?this.decrement("hour",12):e<12&&"PM"==t?this.increment("hour",12):this},getAMPM:function(){return this.get("hr")<12?"AM":"PM"},parse:function(e){return this.set("time",t.parse(e)),this},isValid:function(t){return t||(t=this),"date"==typeOf(t)&&!isNaN(t.valueOf())},format:function(e){if(!this.isValid())return"invalid date";if(e||(e="%x %X"),"string"==typeof e&&(e=a[e.toLowerCase()]||e),"function"==typeof e)return e(this);var r=this;return e.replace(/%([a-z%])/gi,(function(e,i){switch(i){case"a":return t.getMsg("days_abbr")[r.get("day")];case"A":return t.getMsg("days")[r.get("day")];case"b":return t.getMsg("months_abbr")[r.get("month")];case"B":return t.getMsg("months")[r.get("month")];case"c":return r.format("%a %b %d %H:%M:%S %Y");case"d":return n(r.get("date"),2);case"e":return n(r.get("date"),2," ");case"H":return n(r.get("hr"),2);case"I":return n(r.get("hr")%12||12,2);case"j":return n(r.get("dayofyear"),3);case"k":return n(r.get("hr"),2," ");case"l":return n(r.get("hr")%12||12,2," ");case"L":return n(r.get("ms"),3);case"m":return n(r.get("mo")+1,2);case"M":return n(r.get("min"),2);case"o":return r.get("ordinal");case"p":return t.getMsg(r.get("ampm"));case"s":return Math.round(r/1e3);case"S":return n(r.get("seconds"),2);case"T":return r.format("%H:%M:%S");case"U":return n(r.get("week"),2);case"w":return r.get("day");case"x":return r.format(t.getMsg("shortDate"));case"X":return r.format(t.getMsg("shortTime"));case"y":return r.get("year").toString().substr(2);case"Y":return r.get("year");case"z":return r.get("GMTOffset");case"Z":return r.get("Timezone")}return i}))},toISOString:function(){return this.format("iso8601")}}).alias({toJSON:"toISOString",compare:"diff",strftime:"format"});var r=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],i=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],a={db:"%Y-%m-%d %H:%M:%S",compact:"%Y%m%dT%H%M%S",short:"%d %b %H:%M",long:"%B %d, %Y %H:%M",rfc822:function(t){return r[t.get("day")]+t.format(", %d ")+i[t.get("month")]+t.format(" %Y %H:%M:%S %Z")},rfc2822:function(t){return r[t.get("day")]+t.format(", %d ")+i[t.get("month")]+t.format(" %Y %H:%M:%S %z")},iso8601:function(t){return t.getUTCFullYear()+"-"+n(t.getUTCMonth()+1,2)+"-"+n(t.getUTCDate(),2)+"T"+n(t.getUTCHours(),2)+":"+n(t.getUTCMinutes(),2)+":"+n(t.getUTCSeconds(),2)+"."+n(t.getUTCMilliseconds(),3)+"Z"}},o=[],s=t.parse,u=function(e,n,r){var i=-1,a=t.getMsg(e+"s");switch(typeOf(n)){case"object":i=a[n.get(e)];break;case"number":if(!(i=a[n]))throw new Error("Invalid "+e+" index: "+n);break;case"string":var o=a.filter((function(t){return this.test(t)}),new RegExp("^"+n,"i"));if(!o.length)throw new Error("Invalid "+e+" string");if(o.length>1)throw new Error("Ambiguous "+e);i=o[0]}return r?a.indexOf(i):i},c=1900,l=70;t.extend({getMsg:function(t,e){return Locale.get("Date."+t,e)},units:{ms:Function.convert(1),second:Function.convert(1e3),minute:Function.convert(6e4),hour:Function.convert(36e5),day:Function.convert(864e5),week:Function.convert(6084e5),month:function(e,n){var r=new t;return 864e5*t.daysInMonth(null!=e?e:r.get("mo"),null!=n?n:r.get("year"))},year:function(e){return e=e||(new t).get("year"),t.isLeapYear(e)?316224e5:31536e6}},daysInMonth:function(e,n){return[31,t.isLeapYear(n)?29:28,31,30,31,30,31,31,30,31,30,31][e]},isLeapYear:function(t){return t%4==0&&t%100!=0||t%400==0},parse:function(e){var n,r=typeOf(e);return"number"==r?new t(e):"string"!=r?e:(e=e.clean()).length?(o.some((function(t){var r=t.re.exec(e);return!!r&&(n=t.handler(r))})),n&&n.isValid()||(n=new t(s(e)))&&n.isValid()||(n=new t(e.toInt())),n):null},parseDay:function(t,e){return u("day",t,e)},parseMonth:function(t,e){return u("month",t,e)},parseUTC:function(e){var n=new t(e),r=t.UTC(n.get("year"),n.get("mo"),n.get("date"),n.get("hr"),n.get("min"),n.get("sec"),n.get("ms"));return new t(r)},orderIndex:function(e){return t.getMsg("dateOrder").indexOf(e)+1},defineFormat:function(t,e){return a[t]=e,this},defineParser:function(t){return o.push(t.re&&t.handler?t:g(t)),this},defineParsers:function(){return Array.flatten(arguments).each(t.defineParser),this},define2DigitYearStart:function(t){return c=t-(l=t%100),this}}).extend({defineFormats:t.defineFormat.overloadSetter()});var h,f=function(e){return new RegExp("(?:"+t.getMsg(e).map((function(t){return t.substr(0,3)})).join("|")+")[a-z]*")},d={d:/[0-2]?[0-9]|3[01]/,H:/[01]?[0-9]|2[0-3]/,I:/0?[1-9]|1[0-2]/,M:/[0-5]?\d/,s:/\d+/,o:/[a-z]*/,p:/[ap]\.?m\.?/,y:/\d{2}|\d{4}/,Y:/\d{4}/,z:/Z|[+-]\d{2}(?::?\d{2})?/};d.m=d.I,d.S=d.M;var g=function(e){if(!h)return{format:e};var n=[],r=(e.source||e).replace(/%([a-z])/gi,(function(e,n){return function(e){switch(e){case"T":return"%H:%M:%S";case"x":return(1==t.orderIndex("month")?"%m[-./]%d":"%d[-./]%m")+"([-./]%y)?";case"X":return"%H([.:]%M)?([.:]%S([.:]%s)?)? ?%p? ?%z?"}return null}(n)||e})).replace(/\((?!\?)/g,"(?:").replace(/ (?!\?|\*)/g,",? ").replace(/%([a-z%])/gi,(function(t,e){var r=d[e];return r?(n.push(e),"("+r.source+")"):e})).replace(/\[a-z\]/gi,"[a-z\\u00c0-\\uffff;&]");return{format:e,re:new RegExp("^"+r+"$","i"),handler:function(e){e=e.slice(1).associate(n);var r=(new t).clearTime(),i=e.y||e.Y;for(var a in null!=i&&p.call(r,"y",i),"d"in e&&p.call(r,"d",1),("m"in e||e.b||e.B)&&p.call(r,"m",1),e)p.call(r,a,e[a]);return r}}},p=function(e,n){if(!n)return this;switch(e){case"a":case"A":return this.set("day",t.parseDay(n,!0));case"b":case"B":return this.set("mo",t.parseMonth(n,!0));case"d":return this.set("date",n);case"H":case"I":return this.set("hr",n);case"m":return this.set("mo",n-1);case"M":return this.set("min",n);case"p":return this.set("ampm",n.replace(/\./g,""));case"S":return this.set("sec",n);case"s":return this.set("ms",1e3*("0."+n));case"w":return this.set("day",n);case"Y":return this.set("year",n);case"y":return(n=+n)<100&&(n+=c+(n>> 0; for (var i = (from < 0) ? Math.max(0, length + from) : from || 0; i < length; i++){ if (this[i] === item) return i; } return -1; } }}; library.defineProperties(Array.prototype, o); })(); bind.library = library; //print 重载, console, Error if (!bind.oPrint) bind.oPrint = print; var print = function(str, type){ var d = new Date(); var t = (type || "PRINT").toUpperCase(); var l = "[Script]"; bind.oPrint(d.format("db")+"."+d.getMilliseconds()+" "+t+" "+l+" "+str); } var _parsePrint = function(str){ if (!str && str!==0 && str!==false) return str; var text = (typeOf(str)!=="string") ? str.toString() : str; try{ var i = 1; while (text.indexOf("%s")!==-1 && i++i) ? functionArguments[i] : null; failure = (n>++i) ? functionArguments[i] : null; parameters.each(function(p, x){ parameter[p] = (n>++i) ? functionArguments[i] : null; }); if (service.method && (service.method.toLowerCase()==="post" || service.method.toLowerCase()==="put")){ data = (n>++i) ? functionArguments[i] : null; } }else{ parameters.each(function(p, x){ parameter[p] = (n>x) ? functionArguments[x] : null; }); if (service.method && (service.method.toLowerCase()==="post" || service.method.toLowerCase()==="put")){ data = (n>++i) ? functionArguments[i] : null; } success = (n>++i) ? functionArguments[i] : null; failure = (n>++i) ? functionArguments[i] : null; } return _self.invoke({"name": key, "data": data, "parameter": parameter, "success": success, "failure": failure}); }; }; var createMethod = function(service, key){ var jaxrsUri = service.uri; var re = new RegExp("\{.+?\}", "g"); var replaceWords = jaxrsUri.match(re); var parameters = []; if (replaceWords) parameters = replaceWords.map(function(s){ return s.substring(1,s.length-1); }); this[key] = invokeFunction.call(this, service, parameters, key); }; Object.keys(this.actions).forEach(function(key){ var service = this.actions[key]; if (service.uri) if (!this[key]) createMethod.call(this, service, key); }, this); this.invoke = function(option){ if (this.actions[option.name]){ var uri = this.actions[option.name].uri; var method = this.actions[option.name].method || "get"; if (option.parameter){ Object.keys(option.parameter).forEach(function(key){ var v = option.parameter[key]; uri = uri.replace("{"+key+"}", v); }); } var res = null; try{ switch (method.toLowerCase()){ case "get": res = bind.applications.getQuery(this.root, uri); break; case "post": res = bind.applications.postQuery(this.root, uri, JSON.stringify(option.data)); break; case "put": res = bind.applications.putQuery(this.root, uri, JSON.stringify(option.data)); break; case "delete": res = bind.applications.deleteQuery(this.root, uri); break; default: res = bind.applications.getQuery(this.root, uri); } if (res && res.getType().toString()==="success"){ var json = JSON.parse(res.toString()); if (option.success) option.success(json); }else{ if (option.failure) option.failure(((res) ? JSON.parse(res.toString()) : null)); } return res; }catch(e){ if (option.failure) option.failure(e); } } }; } bind.Action.applications = bind.applications; bind.Actions = { "loadedActions": {}, "load": function(root){ if (this.loadedActions[root]) return this.loadedActions[root]; var jaxrsString = bind.applications.describeApi(root); var json = JSON.parse(jaxrsString.toString()); if (json && json.jaxrs){ var actionObj = {}; json.jaxrs.each(function(o){ if (o.methods && o.methods.length){ var actions = {}; o.methods.each(function(m){ var o = {"uri": "/"+m.uri}; if (m.method) o.method = m.method; if (m.enctype) o.enctype = m.enctype; actions[m.name] = o; }.bind(this)); actionObj[o.name] = new bind.Action(root, actions); } }.bind(this)); this.loadedActions[root] = actionObj; return actionObj; } return null; } }; //组织相关 var getNameFlag = function(name){ var t = library.typeOf(name); if (t==="array"){ var v = []; name.forEach(function(id){ v.push((library.typeOf(id)==="object") ? (id.distinguishedName || id.id || id.unique || id.name) : id); }); return v; }else{ return [(t==="object") ? (name.distinguishedName || name.id || name.unique || name.name) : name]; } }; bind.org = { "group": function() { return this.oGroup}, "identity": function() { return this.oIdentity}, "person": function() { return this.oPerson}, "personAttribute": function() { return this.oPersonAttribute}, "role": function() { return this.oRole}, "unit": function() { return this.oUnit}, "unitAttribute": function() { return this.oUnitAttribute}, "unitDuty": function() { return this.oUnitDuty}, "getObject": function(o, v){ var arr = []; if (!v || !v.length){ return null; }else{ for (var i=0; i -1){ if (callback) callback.apply(this); return; } var scriptAction; var scriptData; switch ( type ){ case "portal" : bind.portalActions.getScript( application, name, {"importedList":includedScripts[application]}, function(json){ if (json.data){ includedScripts[application] = includedScripts[application].concat(json.data.importedList); scriptData = json.data; } }.bind(this)); break; case "process" : bind.processActions.getScript( name, application, {"importedList":includedScripts[application]}, function(json){ if (json.data){ includedScripts[application] = includedScripts[application].concat(json.data.importedList); scriptData = json.data; } }.bind(this)); break; case "cms" : bind.cmsActions.getScript(name, application, {"importedList":includedScripts[application]}, function(json){ if (json.data){ includedScripts[application] = includedScripts[application].concat(json.data.importedList); scriptData = json.data; } }.bind(this)); break; case "service" : bind.serviceActions.getScript(name, {"importedList":includedScripts[application]}, function(json){ if (json.data){ includedScripts[application] = includedScripts[application].concat(json.data.importedList); scriptData = json.data; } }.bind(this)); break; } includedScripts[application].push(name); if (scriptData && scriptData.text){ exec(scriptData.text, this); if (callback) callback.apply(this); } }; //optionsOrName : { // type : "", //默认为process, 可以为 process cms // application : "", //流程/CMS的名称/别名/id, 默认为当前应用 // name : "", // 数据字典名称/别名/id // enableAnonymous : false //允许在未登录的情况下读取CMS的数据字典 //} //或者name: "" // 数据字典名称/别名/id bind.Dict = function(optionsOrName){ var options = optionsOrName; if( typeOf( options ) == "string" ){ options = { name : options }; } var name = this.name = options.name; var type; if( options.type === "service"){ type = options.type; }else{ type = ( options.type && options.application ) ? options.type : "service"; } var applicationId = options.application; var enableAnonymous = options.enableAnonymous || false; //MWF.require("MWF.xScript.Actions.DictActions", null, false); var action; if( type == "cms" ){ action = bind.cmsActions; }else if( type == "service" ){ action = bind.serviceActions; }else if( type == "portal" ){ action = bind.portalActions; }else{ action = bind.processActions; } var encodePath = function( path ){ var arr = path.split(/\./g); var ar = arr.map(function(v){ return encodeURIComponent(v); }); return ( type === "portal" || type === "service" ) ? ar.join(".") : ar.join("/"); }; this.get = function(path, success, failure){ var value = null; if( type === "service" ){ if (path){ var p = encodePath( path ); action.getDictData(encodeURIComponent(this.name), p, function(json){ value = json.data; if (success) success(json.data); }, function(xhr, text, error){ if (failure) failure(xhr, text, error); }); }else{ action.getDictRoot(encodeURIComponent(this.name), function(json){ value = json.data; if (success) success(json.data); }, function(xhr, text, error){ if (failure) failure(xhr, text, error); }, false); } }else{ if (path){ var p = encodePath( path ); action[(enableAnonymous && type == "cms") ? "getDictDataAnonymous" : "getDictData"](encodeURIComponent(this.name), applicationId, p, function(json){ value = json.data; if (success) success(json.data); }, function(xhr, text, error){ if (failure) failure(xhr, text, error); }); }else{ action[(enableAnonymous && type == "cms") ? "getDictRootAnonymous" : "getDictRoot"](encodeURIComponent(this.name), applicationId, function(json){ value = json.data; if (success) success(json.data); }, function(xhr, text, error){ if (failure) failure(xhr, text, error); }, false); } } return value; }; this.set = function(path, value, success, failure){ var p = encodePath( path ); //var p = path.replace(/\./g, "/"); if( type === "service" ){ action.setDictData(encodeURIComponent(this.name), p, value, function(json){ if (success) success(json.data); }, function(xhr, text, error){ if (failure) failure(xhr, text, error); }, false, false); }else{ action.setDictData(encodeURIComponent(this.name), applicationId, p, value, function(json){ if (success) success(json.data); }, function(xhr, text, error){ if (failure) failure(xhr, text, error); }, false, false); } }; this.add = function(path, value, success, failure){ var p = encodePath( path ); //var p = path.replace(/\./g, "/"); if( type === "service" ) { action.addDictData(encodeURIComponent(this.name), p, value, function(json){ if (success) success(json.data); }, function(xhr, text, error){ if (failure) failure(xhr, text, error); }, false, false); }else{ action.addDictData(encodeURIComponent(this.name), applicationId, p, value, function(json){ if (success) success(json.data); }, function(xhr, text, error){ if (failure) failure(xhr, text, error); }, false, false); } }; this["delete"] = function(path, success, failure){ var p = encodePath( path ); //var p = path.replace(/\./g, "/"); if( type === "service" ) { action.deleteDictData(encodeURIComponent(this.name), p, function(json){ if (success) success(json.data); }, function(xhr, text, error){ if (failure) failure(xhr, text, error); }, false, false); }else{ action.deleteDictData(encodeURIComponent(this.name), applicationId, p, function(json){ if (success) success(json.data); }, function(xhr, text, error){ if (failure) failure(xhr, text, error); }, false, false); } }; this.destory = this["delete"]; }; bind.Table = function(name){ this.name = name; this.action = Actions.load("x_query_assemble_surface").TableAction; this.listRowNext = function(id, count, success, error, async){ this.action.listRowNext(this.name, id, count, success, error, async); }; this.listRowPrev = function(id, count, success, error, async){ this.action.listRowPrev(this.name, id, count, success, error, async); }; this.listRowSelect = function(where, orderBy, size, success, error, async){ this.action.listRowSelect(this.name, {"where": where, "orderBy": orderBy, "size": size || ""}, success, error, async); }; this.listRowSelectWhere = function(where, success, error, async){ this.action.listRowSelectWhere(this.name, where, success, error, async); }; this.rowCountWhere = function(where, success, error, async){ this.action.rowCountWhere(this.name, where, success, error, async); }; this.deleteRow = function(id, success, error, async){ this.action.rowDelete(this.name, id, success, error, async); }; this.deleteAllRow = function(success, error, async){ this.action.rowDeleteAll(this.name, success, error, async); }; this.getRow = function(id, success, error, async){ this.action.rowGet(this.name, id, success, error, async); }; this.insertRow = function(data, success, error, async){ this.action.rowInsert(this.name, data, success, error, async); }; this.addRow = function(data, success, error, async){ this.action.rowInsertOne(this.name, data, success, error, async); }; this.updateRow = function(id, data, success, error, async){ this.action.rowUpdate(this.name, id, data, success, error, async); }; } bind.statement = { execute: function (obj, callback) { if( obj.format ){ return this._execute(obj, callback, obj.format); }else{ if( this.needCheckFormat(obj) ){ var value; var _self = this; bind.Actions.load("x_query_assemble_surface").StatementAction.getFormat(obj.name, function(json){ value = _self._execute(obj, callback, json.data.format); }); return value; }else{ return this._execute(obj, callback, ""); } } }, needCheckFormat: function(s){ if( s.format )return false; if( typeOf(s.parameter) === "object" ){ for( var p in s.parameter ){ if( typeOf( s.parameter[p] ) === "date" )return true; } } if( typeOf(s.filter) === "array" ){ for( var i=0; i< s.filter.length; i++){ var fType = s.filter[i].formatType; if( ["dateTimeValue", "datetimeValue", "dateValue", "timeValue"].indexOf( fType ) > -1 )return true; } } return false; }, _execute: function (statement, callback, format) { var parameter = this.parseParameter(statement.parameter, format); var filterList = this.parseFilter(statement.filter, parameter, format); var obj = { "filterList": filterList, "parameter" : parameter }; var value; bind.Actions.load("x_query_assemble_surface").StatementAction.executeV2( statement.name, statement.mode || "data", statement.page || 1, statement.pageSize || 20, obj, function (json) { if (callback) callback(json); value = json; } ); return value; }, parseFilter : function( filter, parameter, format ){ if( typeOf(filter) !== "array" )return []; if( !parameter )parameter = {}; var filterList = []; ( filter || [] ).each( function (d) { //var parameterName = d.path.replace(/\./g, "_"); var pName = d.path.replace(/\./g, "_"); var parameterName = pName; var suffix = 1; while( parameter[parameterName] ){ parameterName = pName + "_" + suffix; suffix++; } var value = d.value; if( d.comparison === "like" || d.comparison === "notLike" ){ if( value.substr(0, 1) !== "%" )value = "%"+value; if( value.substr(value.length-1,1) !== "%" )value = value+"%"; parameter[ parameterName ] = value; //"%"+value+"%"; }else{ if( ["sql", "sqlScript"].contains(format) ) { if (d.formatType === "numberValue") { value = parseFloat(value); } }else{ if (d.formatType === "dateTimeValue" || d.formatType === "datetimeValue") { value = "{ts '" + value + "'}" } else if (d.formatType === "dateValue") { value = "{d '" + value + "'}" } else if (d.formatType === "timeValue") { value = "{t '" + value + "'}" } else if (d.formatType === "numberValue") { value = parseFloat(value); } } parameter[ parameterName ] = value; } d.value = parameterName; filterList.push( d ); }); return filterList; }, parseParameter : function( obj, format ){ if( typeOf(obj) !== "object" )return {}; var parameter = {}; //传入的参数 for( var p in obj ){ var value = obj[p]; if( typeOf( value ) === "date" ){ if( ["sql", "sqlScript"].contains(format) ){ value = value.format("db"); }else{ value = "{ts '"+value.format("db")+"'}" } } parameter[ p ] = value; } return parameter; }, "select": function () {} }; bind.view = { "lookup": function(view, callback){ var filterList = {"filterList": (view.filter || null)}; var value; bind.Actions.load("x_query_assemble_surface").ViewAction.executeWithQuery(view.view, view.application, filterList, function(json){ var data = { "grid": json.data.grid || json.data.groupGrid, "groupGrid": json.data.groupGrid }; if (callback) callback(data); value = data; }); return value; }, "select": function(view, callback, options){} }; bind.service = { restful: function(method, url, headers, body, connectTimeout, readTimeout){ var service = bind.java_resources.getWebservicesClient(); var bodyData = ((typeof body)==="object") ? JSON.stringify(body) : (body||""); var res = service.restful(method, url, (headers||null), bodyData, (connectTimeout||2000), (readTimeout||300000)); var o = { "responseCode" : res.responseCode, "headers" : res.headers, "body": res.body } try { o.json = JSON.parse(res.body); }catch(e){} return o; }, "get": function(url, headers, connectTimeout, readTimeout){ return this.restful("get", url, headers, "", connectTimeout, readTimeout); }, "post": function(url, headers, body, connectTimeout, readTimeout){ return this.restful("post", url, headers, body, connectTimeout, readTimeout); }, soap: function(wsdl, method, pars){ var service = bind.java_resources.getWebservicesClient(); return service.soap(wsdl, method, pars); }, soapXml: function(wsdl, xml){ var service = bind.java_resources.getWebservicesClient(); return service.jaxwsXml(wsdl, xml); } } //---------------------------------------------------------- //java对象: invoke //java_resources: getContext(); getApplications(); getOrganization(); getWebservicesClient(); ok //java_effectivePerson ; //java_customResponse //java_requestText; //java_request //agent //java_resources: getContext(); getApplications(); getOrganization(); getWebservicesClient(); ok //JPQL //java_resources: getContext(); getApplications(); getOrganization(); getWebservicesClient(); ok //java_effectivePerson ; //java_parameters; //接口响应对象 /** * 用于服务管理的接口脚本,描述服务的响应对象。
* @o2range 服务管理-接口 * @o2cn 服务的响应对象 * @module server.service.response * @o2category server.service * @o2ordernumber 245 * @o2syntax * var res = this.response; */ var response = { /** * @summary 服务返回一个303跳转。 * @method seeOther * @methodOf service.service.module:response * @static * @param {String} [url] 跳转的url。 * @o2syntax * this.response.seeOther(url); */ seeOther: function(url){ bind.java_customResponse.seeOther(url); }, /** * @summary 服务返回一个301跳转。 * @method redirect * @methodOf service.service.module:response * @static * @param {String} [url] 跳转的url。 * @o2syntax * this.response.redirect(url); */ redirect: function(url){ bind.java_customResponse.temporaryRedirect(url); }, /** * @summary 服务返回一个301跳转。 * @method setBody * @methodOf service.service.module:response * @static * @param {String|Object} [body] 响应内容,文本或json对象。 * @param {String} [contentType] 响应头的Content-Type。 * @o2syntax * this.response.setBody(body, contentType); * @example * //设置json格式的响应内容 * this.response.setBody({ * "key1": "value1", * "key2": "value2" * }, "application/json"); */ setBody: function(body, contentType){ var o = body; if (typeOf(o)==="object"){ o = JSON.stringify(o); } bind.java_customResponse.setBody(o, contentType || ""); } } library.defineProperties(response, { "customResponse": { "configurable": true, "get": function(){ return bind.java_customResponse || null } } }); function _get(key, java_data){ if (!bind["o"+key]) bind["o"+key] = JSON.parse(java_data); return bind["o"+key]; } var o= { "entityManager": { "configurable": true, "get": function(){return null;} }, "context": { "configurable": true, "get": function(){return ((bind.java_resources) ? bind.java_resources.getContext() : null)} }, "applications": { "configurable": true, "get": function(){return ((bind.java_resources) ? bind.java_resources.getApplications() : null)} }, "organization": { "configurable": true, "get": function(){return ((bind.java_resources) ? bind.java_resources.getOrganization() : null)} }, //"service": { "configurable": true, "get": function(){return ((bind.java_resources) ? bind.java_resources.getWebservicesClient() : null)} }, /** * 获取当前用户的全称。 * @module server.currentPerson * @o2cn 当前用户全称 * @o2category server.common * @o2ordernumber 250 * @o2syntax * var user = this.currentPerson; */ "currentPerson": { "configurable": true, "get": function(){return (bind.java_effectivePerson || null)} }, "effectivePerson": { "configurable": true, "get": function(){return (bind.java_effectivePerson || null)} }, /** * 用于数据中心查询语句的脚本中,可获取语句参数。json对象,在调用此语句的时候传入
* @o2range 数据中心-查询配置-通过脚本创建查询语句 * @o2cn 数据中心查询语句参数 * @module server.service.parameters * @o2category server.service * @o2ordernumber 255 * @o2syntax * var pars = this.parameters; * @example * * 通过this.statement.execute调用一个名为“task”的查询配置,并传入parameters,代码如下: *
//用一个名为“task”的查询配置,并传入parameters
     * this.statement.execute({
     *  "name": "task",
     *  "mode" : "all",
     *  "parameter" : {
     *     "person" : "xxx@xxx@p",  //传入人员参数
     *     "startTime" : (new Date("2020-01-01")) //传入时间参数
     *  }
     * }, function(json){
     *  var count = json.count; //总数语句执行后返回的数字
     *  var list = json.data; //查询语句后返回的数组
     *   //......
     * });
     *     
* * 在task查询配置的脚本中,parameters对象就可获取到执行查询时传入的parameters对象,以便于动态创建查询语句 * * //动态生成查询指定用户,在指定时间之后的所有待办数据 * var user = this.parameters.person; * var startTime = (new Date(this.parameters.startTime)).format("db"); //格式化为yyyy-mm-dd hh:mm:ss * return "SELECT o FROM Task o WHERE o.person='"+user+"' AND o.startTime>{ts '"+startTime+"'}" */ "parameters": { "configurable": true, "get": function(){return ((bind.java_parameters) ? _get("parameters", bind.java_parameters) : null)} }, /** * 调用接口时传入的请求消息体的文本内容。 * @o2range 服务管理-接口 * @module server.requestText * @o2cn 传入的服务消息体文本 * @o2category server.service * @o2ordernumber 250 * @o2syntax * var text = this.requestText; * @example * var text = this.requestText; //传入的服务消息体文本 * var object = JSON.parse(text); //转成对象 */ "requestText": { "configurable": true, "get": function(){return bind.java_requestText || null; } }, "request": { "configurable": true, "get": function(){return bind.java_request || null; } }, "resources": { "configurable": true, "get": function(){return (bind.java_resources || null)} }, "customResponse": { "configurable": true, "get": function(){return (bind.java_customResponse || null)} }, "message": { "configurable": true, "get": function(){return (bind.java_message) ? _get("message", bind.java_message) : null;} } } library.defineProperties(bind, o); /* 清除 engine */ this.engine = null;