boc

来源:互联网 发布:廊坊银行网络账户 编辑:程序博客网 时间:2024/06/08 18:45
/*** @description 调用服务端BOC的对象* @client ClientBOController对象*/var bocInvoker = new BOControllerInvoker();function BOControllerInvoker(){this.bocName = "BOControllerAction";this.bocMethod = "executeBoc";this.callback = function(result){};this.invoke = BOCI_invoke;//调用服务this.invokeSynchronized = BOCI_invokeSynchronized;//同步调用this.invokeAsynchronized = BOCI_invokeAsynchronized;//异步调用}/*** @description 同步访问后台的服务,返回结果字符串* @param client 客户端*/function BOCI_invokeSynchronized(client){return this.invoke(client,null,false);}/*** @description 异步访问后台的服务,通过回调方法处理从后台返回的结果* @param client 客户端 * @param callback 回调函数*/function BOCI_invokeAsynchronized(client,callback){this.invoke(client,callback,true);}/*** @description 调用后台服务* @param callback 回调函数* @param AsynFlag 异步调用标识(true:异步调用,其他同步调用)* */function BOCI_invoke(client,callback,AsynFlag){requestURL = path + "/"+ this.bocName+".do?method=" + this.bocMethod + "";//调用服务if(AsynFlag == true){                 //异步调用}else{                                //同步调用var loader = dhtmlxAjax.postSync(requestURL, client.assemblePostParameter());return outputResponse(loader);}}function outputResponse(loader) {var loaderer = '';    if (loader.xmlDoc.responseXML != null){    try{    loaderer = loader.doSerialization();    }catch (e) {alert('xml文件解释错误!');return false;}    if(loaderer.length == 0)    return loader.xmlDoc.responseText;    return loaderer;    }    else return loader.xmlDoc.responseText;}/*** @description 客户端BOController对象* @param boControllerName BOC注册名* @param boControllerMethod BOC方法名*/function ClientBOController(boControllerName,boControllerMethod){this.boControllerName = boControllerName;//this.boControllerMethod = boControllerMethod;// this.parameterNames = new Array(); //参数名数组this.parameterValues = new Array();//参数值数组this.datawindows = new Array();//数据窗口名数组this.validateDataType = CBOC_validateDataType;  //验证参数是否是复杂数据类型this.valuedateDataType = new Map();this.toXmlString = CBOC_toXmlString;  //this.addParameter = CBOC_addParameter;  //this.clearParameter = CBOC_clearParameter;  //this.addDataWindow = CBOC_addDataWindow;  //this.clearDataWindows = CBOC_clearDataWindows;//this.assemblePostParameter = CBOC_assemblePostParameter;//}/*** @description 将服务内容转换成xml字符串**/function CBOC_toXmlString(){var xml = "<BOCEntity ";xml += ("moduleId=\"\"" + " bocName=\"" + this.boControllerName + "\" method=\"" + this.boControllerMethod + "\">");xml += "<parameters>";for(var i = 0;i < this.parameterNames.length; i++){var paramXml = "";if(this.valuedateDataType.get(this.parameterNames[i]) == null){paramXml += "<parameter";var str = replaceStr(this.parameterValues[i]);paramXml += " pname=\"" + this.parameterNames[i] + "\" pvalue=\"" + str + "\"/>";}else{paramXml += "<parameter>";paramXml += "<pname>" + this.parameterNames[i] + "</pname>";paramXml += "<pvalue>" + "<![CDATA[" + this.parameterValues[i] + "]]>" + "</pvalue>";paramXml += "</parameter>";}//为了发送复杂的数据,如xml类型的参数,使用CDATA格式//paramXml += "<value><![CDATA[" + this.parameterValues[i] + "]]></value>";xml += paramXml;}xml += "</parameters>";xml+="</BOCEntity>";this.clearParameter();return xml;}/*** @description 装配发送到服务端的参数。* 如果只有一个Datawindow则附加参数dwName=<DataWindow名称>* 以便可以在BOC中使用RequestUtil.getSingleDataWindow方法获取唯一的DataWindow对象**/function CBOC_assemblePostParameter(){ var postParameter = "";postParameter += "&serviceParam=" + this.toXmlString();return postParameter;}/*** @decription 添加参数* @param pname 参数名* @param pvalue 参数值*/function CBOC_addParameter(pname,pvalue){this.parameterNames.push(pname);this.parameterValues.push(pvalue);//this.validateDataType(pname,pvalue);}/*** @decription 判断参数是否是复杂数据类型* @param pname 参数名* @param pvalue 参数值*/function CBOC_validateDataType(pname,pvalue){var pvalue = new String(pvalue);if(pvalue.indexOf("<") != -1 || pvalue.indexOf("<![CDATA[") != -1){this.valuedateDataType.put(pname,"isCDATA");}}/*** @description 清除所有参数*/function CBOC_clearParameter(){this.parameterNames = new Array();this.parameterValues = new Array();}/*** @description 添加数据窗口名到datawindows数组* @param dwname 数据窗口名*/function CBOC_addDataWindow(dwname){this.datawindows.push(dwname);}/*** @description 清除datawindows*/function CBOC_clearDataWindows(){this.datawindows = new Array();}