版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MX展现框架扩 概 建立MX框架扩展模 用MXFramework的格式扩展控 非MX规范方式控件扩 添加/替换资源:样式、、 自定义登录页面及主 日志管理扩 概 日志管理模块扩展方 异常管理扩 概 自定义异常的提示页 自定义服务端异常类 工具类的自定义开 概 自定义开发工具 BPM任务列表的自定义扩 概 任务列表的自定义扩 服务端方法自定义开 客户端方法的自定义开 流程接口与服务说 BPM集成模块接口(egrate.bpm.api)BPM集成模块接口 BPM模块 Web服 MXMXMX扩展项目名称可自定义,然后下一步进行指定扩展的mx模块bundle,在Plug-inID一行点击Browse“浏览”按钮,在弹出的框中找到完成这两步后,mxframework当MXFramework的控件不能满足项目组需要时,项目组可以使用MXFrameworkMX相同的结构,即在扩展模块下建立mx文件夹,然后在其下建立scripts/editors,editors为有的,因此在其下面建SampleTextEditor.jsMX的格式进行控件扩展。如下所示:mx.editors.SampleTextEditor=function(){varme=varbase=me.text=null;me.valuelength=0;base.init=me.init;me.init={me.setText={me.textMode=me.setMaxLength={me.valuelength=returnMXMX控varsam=newmx.editors.SampleTextEditor();MX非MX规范方式扩展同样需要在mx/scripts 件夹,例如extd,然后在此文件下定义扩展的组件,如下图所示。p={varme=$extend(mx.containers.Container);varbase={};me.dataGrid=me.toolBar=base.init=me.init;me.init={}function{{me.dataGrid=ontrols.DataGrid)?me.dataGrid: me.toolBar=$instanceOf(me.toolBar,mx.controls.ToolBar)?me.toolBar:(newmx.controls.ToolBar(me.toolBar));}returnMXMX控varext=添加/替换资源:样式、、<mx:FrameworkdebugMode='true'theme='default'ie67三套库,用户可以通过页面的配置<mx:FrameworkdebugMode='true'theme='default'用户如果需要改变框架的风格和控件样式,可以在扩展模块中mx/resources/themes定义自己的库,例如这里我们建立了android库,。其中,images文件夹放置了控件中需要使用的库的样式文件可按照MXFramework给出的默认的两套库的基础上进行修改,关于控件样式的。的样式开发及应用相关内容需要提醒的是
csscss文件,则务必将扩展控件csstheme.csscss可用。MXFramework中默认使用的通用图标,可以用同样的方式在扩展模块的mx/icons文件夹下以相同名称的来达到修改图标的目的。.mx.tabControl>{bottom:0px;top:auto;height:33px.mx.tabControl>{bottom:0px;top:auto;height:33px;}.mx.tabControl>{bottom:bottom:32px;top:0px;padding:5px;}.mx.tabControl>#head>{border-bottom:1pxsolid#898C95;border-top:none;margin-top:0px;height:33px;}.mx.tabControl>#head>{color:#FFFFFF;}.mx.tabControl>#head>{top:0px;height:33px;border-top:border-bottom:1pxsolid#898C95;color:#FFFFFF;}.mx.tabControl>#head>{border-bottom:1pxsolid#898C95;}默认样式扩展是 用户需要在模块1中使用头在底部的TabControl,而在模块2中使用默认的.ext.tabControl>{bottom:0px;top:auto;height:33px;}.ext.b1}.ext.b2}.ext.tabControl.ext.tabControl>{bottom:0px;top:auto;height:33px;}.ext.b1}.ext.b2}.ext.tabControl>{bottom:32px;top:0px;padding:5px;}.ext.tabControl>#head>{border-bottom:1pxsolid#898C95;border-top:none;margin-top:0px;height:33px;}.ext.tabControl>#head>{color:#FFFFFF;}.ext.ext.tabControl>#head>{top:0px;height:33px;border-top:border-bottom:1pxsolid#898C95;color:#FFFFFF;}.ext.tabControl>#head>{border-bottom:1pxsolid#898C95;}onstart:{varmvc=newDefectManage.views.MainViewController();onstart:{varmvc=newDefectManage.views.MainViewController();}id:"DefectManage",name:"缺陷管理",requires:["PM tention/ext","bpm/bpmintegrate"],onload:function(e){me._onactivate方法中添加以下代码WebletWebletWeblet.DefectManage.tabControl>{bottom:0px;top:auto;height:33px;}.DefectManage.tabControl>{bottom:0px;top:auto;height:33px;}.DefectManage.toolbaritem>{bottom:0px;top:auto;height:33px;}.DefectManage.tabControl>{bottom:32px;top:0px;padding:5px;}.DefectManage.tabControl>#head>{border-bottom:1pxsolid#898C95;border-top:none;margin-top:0px;height:33px;}.DefectManage.tabControl>#head>{color:#FFFFFF;}.DefectManage.tabControl>#head>{top:top:0px;height:33px;border-top:border-bottom:1pxsolid#898C95;color:#FFFFFF;}.DefectManage.tabControl>#head>{border-bottom:1pxsolid#898C95;}最后引入扩展样式,需要在Weblet的onload中引入扩展样式文件id:"DefectManage",name:"缺陷管理",onload:function(e){onstart:{varmvc=newDefectManage.views.MainViewController();}me._onactivate方法中添加以下代码同样,Weblet客户端实关于需要扩展MXFramework中的文件 以将系统默认的messages.js内容拷贝后,在扩展模块下建立 mx.messages={DAY_0:DAY_1:DAY_2:DAY_3:DAY_4:mx.messages={DAY_0:DAY_1:DAY_2:DAY_3:DAY_4:DAY_5:"FRI",DAY_6:"SAT"}服务端实1)src2)的资源文件统一放在新建的文件夹locales下,资源文件名为 .properties则调用如下实现*在uap项目的perties属性文件中增加如下配置##格式为。weblet间调用的方式(weblet调用可以参考《SG-方法可以参考《SG-UAP_V1.5_高级用户手册_2.客户端开发.doc节。main.jsp为业务系统自定义开发的首页登录界面,则只需在\uap-\WebContent\WEB-INF\configuration\perties文件中修改登录页的设置,ISC_WORKBENCH_LOGINURL=~/模块名/weblet名/main.jspISC的varvarparams=userName:password:{if{me.currentUser={,"}}(value="/login",method=public@ResponseBodyObjectlogin(@RequestBodyStringp_loginData,HttpServletRequestp_request)throwsIOException{{ObjectMappermapper=newMap<String,Object>map1=mapper.readValue(p_loginData,Map<String,Object>map=(Map<String,Object>)Stringurl=(String)ResponseEntity<String>ResponseEntity<String>entity te.postForEntity(url,p_loginData,String.class);Map<String,Object>validateMap=if{if(p_request!={}}}catch(Exception{ 验证失败",returnnewPortalResult(false,null,}returnnewPortalResult(false,null,}privatefinalstaticLogxxlog=privatefinalstaticLogxxlog=if(log.isDebugEnableddebugif(log.isDebugEnableddebug} tform: tform:Third's:%5p%c{1}:%L-%m%n .hibernate=error,.springframework=error,thirdparty.apache=error,thirdpartylog4jappenderlog4j框架是用Java语言编写的事实上的标准日志记录框架。作为Jakarta项目的一部分它在Apache软件(ApacheSoftwareLicense)OSI)认证的一种流行的开放源代码证。log4j环境是完全可配置的,或者XMLlog4j志记录器指定如下级别:ALL INFO、 FATA或OFF layout(布局):appender:log4j框架允许向任何日志记录器附加多个appender。可以在任何时候对某个日子记录器添加(或删除)appenderlog4jappender个,包括:ConsoleAppender、FileAppender、SMTPAppender、JDBCAppenderJMSAppender、NTEventLogAppender、也可以创建自己的自定义appender,appenderAppenderSkeletonappender是否需要layout如果某些属性必须同时激活,则应该在activateOptions()方法内完close()方法。它必须把closedtrue。记得释ErrorHandler编写append()方法的代码。这个方法负责附加日志记录,并在错Appenderpackagepackageimportorg.apache.log4j.spi.LoggingEvent;importpublicclassIMAppenderextendsAppenderSkeletonprivateStringhost;privateintport=5222;privateStringusername;privateStringpassword;privateStringrecipient;privatebooleanchatroom=false;privateStringnickname;privatebooleanSSL=privateintbufferSize=//Set/GetmethodsforpublicvoidsetHost(Stringhost){this.host=host;}publicStringgetHost(){returnthis.host;}...otherset/get//AppenderSkeletoncallbackpublicbooleanrequiresLayout(){...}publicvoidactivateOptions(){...}publicvoidappend(LoggingEventevent){...}publicsynchronizedvoidclose(){...}}log4j.rootLoggerlog4j.rootLogger=packagepackageimportimportGeneratesthenumberofloggingeventsindicatedbytheargumentvalue.TheapplicationendswithanERRORleveltotriggertheIMAppenderpublicclassEventCounterprivatestaticLoggerlogger=publicstaticvoidmain(Stringargs[])Stringlog4jConfigFile=args[1];forfor(inti=1;i<=numEvents;i++){("Event#"+i);}logger.error("Thiserroreventtriggersthedelivery",newException("Thisisamockexception"));}}执行ttsswtglwt0_.IDasID7_,ttsswtglwt0_.WTBHasWTBH7_,ttsswtglwt0_.LYLX ttsswtglwt0_.JCPTBBasJCPTBB7_,ttsswtglwt0_.TYQXBBasttsswtglwt0_.BPMBBasBPMBB7_,ttsswtglwt0_.HJMSasHJMS7_,ttsswtglwt0_.WTDJasWTDJ7_,ttsswtglwt0_.WTTJRQasWTTJRQ7_,ttsswtglwt0_.WTZTasWTZT7_,ttsswtglwt0_.XWJJSJasXWJJSJ7_,ttsswtglwt0_.SJJJSJasSJJJSJ7_,ttsswtglwt0_.BUGBSasBUGBS7_,ttsswtglwt0_.SSXMZasSSXMZ7_ 标识符无效。服务器节点信息平台提供了两个基类异常tformRuntimeException(运行时异常)和publicclassTestExceptionpublicclassTestException *}exceptionCpertiesthrownewthrownewutilspackagepackagecom.sgcc.uap.test;importjava.io.FileInputStream;importjava.io.InputStream;importjava.math.BigDecimal;importjava.text.ParseException;importimportjava.util.ArrayList;importjava.sql.Date;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importimportimportorg.apache.poi.ss.usermodel.Cell;importorg.apache.poi.ss.usermodel.CellStyle;importorg.apache.poi.ss.usermodel.Row;importorg.apache.poi.ss.usermodel.Sheet;importorg.apache.poi.ss.usermodel.Workbook;importimport@title@descriptionExcel*@authorpublicclassExcelUtilsprivateExcelUtils(){privatestaticSimpleDateFormatsf= @param@throwspublicstaticMap<String,List<Object>>readExcel(StringruleName,Stringpath,ISysCodeCacheServiceservice)throwsException{InputStreaminput=null;try{input=newWorkbookworkbook=newHSSFWorkbook(input);List<String>sheetNames=Map<String,List<Object>>valueMap=newHashMap<String,for(StringsheetName:sheetNames)Sheetsheet=if(sheetnullthrownewRuntimeException("导入Excel格式不正确,缺少sheet页'"+sheetName+"'");List<Object>values=readObjectList(sheet,ExcelConfiguration.getRowRuleBySheetName(ruleName,sheetName),valueMap.put(sheetName,}return}catch(Exceptione)throw}finallyif(input!=null){}}}publicstaticWorkbookbuildWorkbook(StringruleName,List<Object>value,Stringtem tePath)throwsException{Workbookworkbook=newHSSFWorkbook(new List<String>sheetNames=for(StringsheetName:sheetNames)Sheetsheet=buildRowByObject(sheet,value,ExcelConfiguration.getRowRuleBySheetName(ruleName,sheetName));}return}privatestaticvoidbuildRowByObject(Sheetsheet,List<Object>value,RowRulerowRule)throwsException{Class<?>clazz=intstartRow=for(Objectobject:value)if(object.getClass()!=clazz)BeanMapbeanMap=Rowrow=sheet.createRow(startRow++);List<ColumnRule>cRules=rowRule.getColumRules();for(ColumnRulecRule:cRules){inti=cRule.getColumnNum();Cellcell=row.createCell(i);ObjectcellValue=setCellValue(cell,}}}@paramprivatestaticvoidsetCellStyle(Cellcell){CellStylestyle=}privatestaticvoidsetCellValue(Cellcell,Objectvalue)if(cell==null)return;if(value==null)return;if(valueinstanceofString){}if(valueinstanceofBigDecimal){cell.setCellValue(((BigDecimal)value).doubleValue());}if(valueinstanceofNumber)}if(valueinstanceofDate){cell.setCellValue((Date)value);cell.getCellStyle().setDataFormat((short)14);}if(valueinstanceofjava.util.Date){cell.setCellValue((java.util.Date)value);cell.getCellStyle().setDataFormat((short)14);}if(valueinstanceofBoolean){cell.setCellValue((Boolean)value);}} @param@param@throwsprivatestaticList<Object>readObjectList(Sheetsheet,rule,ISysCodeCacheServiceservice)throwsException{List<Object>result=newArrayList<Object>();intstartRowNum=rule.getStartRowNum();intendRowNum=rule.getEndRowNum();endRowNum=(endRowNum==startRowNum)?sheet.getLastRowNum():for(inti=startRowNum;i<=endRowNum;i++)Objectvalue=exchangeRow2Object(sheet.getRow(i),if(value==null)}return}@param@param@throwsprivatestaticObjectexchangeRow2Object(Rowrow,RowRulerule,ISysCodeCacheServiceservice)throwsException{if(row==null||((row.getCell(1)==nullrow.getCell(1).getCellType()==Cell.CELL_TYPE_BLANK)&&(row.getCell(2)==null||row.getCell(2).getCellType()==Cell.CELL_TYPE_BLANK)(row.getCell(2)==null||==Cell.CELL_TYPE_BLANK)))returnintrowNum=row.getRowNum()+Class<?>clazz=Class.forName(rule.getObjectName());Objectbase=clazz.newInstance();BeanMapbeanMap=CGLibUtil.getInstance().getBeanMap(base);List<ColumnRule>cRules=rule.getColumRules();for(ColumnRulecRule:cRules)Cellcell=StringpropName=Objectvalue=getCellValue(cell,value=getCodeKey(cRule,beanMap,value,beanMap.put(propName,}return}@param@paramprivatestaticObjectgetCellValue(Cellcell,Stringtype)if("Date".equals(type))return}if("String".equals(type))return}if("BigDecimal".equals(type))return}return}privatestaticObjectgetCodeKey(ColumnRulecRule,BeanMapbeanMap,Objectvalue,ISysCodeCacheServiceservice){StringcodeType=cRule.getCodeType();StringparentProp=cRule.getParentProp();//if(codeType==null&&parentProp==null)returnif(value==null)returnif(codeType!=null)returnservice.getSysCodeKeyWithCache(codeType,}ObjectparentValue=if(parentProp!=null&&parentValue!=null)}return}@paramprivatestaticStringgetCellString(Cellcell)if(cell==null)returnreturn}@paramprivatestaticDategetCellDate(Cellcell)if(cell==null)returnif(cell.getCellType()==Cell.CELL_TYPE_NUMERIC)returnnew}if(cell.getCellType()==Cell.CELL_TYPE_STRING)return}return}@paramprivatestaticDateparseDate(Stringvalue)if(value==null)returntryreturnnew}catch(ParseExceptione){return}@paramprivatestaticBigDecimalgetCellBigDecimal(Cellcell)if(cell==null)returnif(cell.getCellType()==Cell.CELL_TYPE_NUMERIC)returnnew}if(cell.getCellType()==Cell.CELL_TYPE_STRING){Stringnum=cell.getStringCellValue();if(num==null||"".equals(num))returnnull;try{doublevalue=returnnew}catch(Exceptione)return}}return}}importimportpublicpublicMap<String,yzeExcel(StringStringpath)throwsreturnExcelUtils.readExcel(rulleName,path,}publicWorkbookbuildWorkbook(StringruleName,List<Object>value,Stringtem tePath){Workbookworkbook=null;try{workbook=ExcelUtils.buildWorkbook(ruleName,value, }catch(Exceptione){}return}待处理的任务:等待当前用户处理的任务,即用户限处理的任务委托的任务:当前用户或者协办出去的任务当前用户的关系,由限的人完成的任务;按照任务的来源可以分为自己的任务的任务的任务协办的任务等BPMAPIWebService开发流程相关BPM外提供。如果需要业务模块需要进行比较复杂的流程处理,可以直接调用com.sgcc.uap.bpm.apicom.sgcc.uap.bpm.apiBPM原服务端的Controller层是rest服务调用的层,其提供了客户端获取待restpublicpubliccom.sgcc.uap.rest.support.Reqonditionjavax.servlet.http.HttpServletRequestparams-{"filter":"","orderStr":"age","columns":"id,name"}封装为Reqondition对象ta>getMetaData(@ColumnRequestParam(value="params") VO中获取页面展示元数据信息columns-将请求参数{columns:["id","name"]}publicvoidjava.lang.Stringjavax.servlet.http.HttpServletRequestjavax.servlet.http.HttpServletResponserequestpublicvoid publicpubliccom.sgcc.uap.rest.support.Reqondition params-{"filter":"","orderStr":"age","columns":"id,name"}封装为 ondition对象 ta>getMetaData(@ColumnRequestParam(value="params") vo中获取页面展示元数据信息columns-将请求参数{columns:["id","name"]}publicvoidjava.lang.Stringjavax.servlet.http.HttpServletRequestjavax.servlet.http.HttpServletResponserequestpublicvoid publicinterfaceITasklistBizcextendsIBPMBizcBPMdaibanQuery(com.sgcc.uap.rest.support.ReqonditionqueryConditiojavax.servlet.http.HttpServletRequestqueryConditionyibanQuery(com.sgcc.uap.rest.support.ReqonditionqueryCondition,javax.servlet.http.HttpServletRequestqueryConditionvoidforDeal(javax.servlet.http.HttpServletRequestrequest,javax.servlet.http.HttpServletResponseresponse,java.lang.StringworkitemID)throwsrequestresponse-varrestUrl=/*初始化EntityContainer*/me.gridEntityContainernewvarrestUrl=/*初始化EntityContainer*/me.gridEntityContainernewbaseUrl:loadMeta:false,primaryKey:"workitemid" .timeout=/*DataGridme.dataGrid=new searchBox:new fields: name"workitempmsncaption执行权限",editorType:"CheckListEditor",columns:3,width:200,items[{text全部value"ALL"},{text公共value"PUBLIC"},{text个人value{name"workitemscopecaption任务来源",editorType:"CheckListEditor",columns:5,width:300,items:[{text:"全部",value:"ALL"},{text: value:"DELEG"},{text:"协办",value:"HELP"},{text:" ",value:"AGENT"},{text:"自己",value:"SELF"}]}] name"workitemidcaption工作项IDeditorType:"TextEditor"}, name"workitemnamecaption工作项名称renderCell:function(p_item,{varitemvalue=p_item.getValue("workitemname");varworkitemid=p_item.getValue("workitemid");varbusine =p_item.getValue("busine varfordeal="<ahref=\"javascript:forDeal('"+workitemid+"','"+ +"');\">"+itemvalue+} name:"currentstate",caption:"当前状态",editorType:"DropDownEditor" name"partinamecaption参与者名称editorType:"TextEditor"}, name"createtimecaption创
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司工作总结
- 人际交往的距离
- 伤寒患者的护理
- 高尿酸人群科学管理方案总结2026
- 蔬果第三方检测合作规范
- 2026届黑龙江省哈尔滨市高考考前提分历史仿真卷含解析
- 2025-2026学年安康市高考适应性考试历史试卷含解析
- 2025年电力系统智能电网行业研究报告
- 循证康复实践中的康复-拓展创新
- 2026年零售智能货架管理系统创新报告
- 林业中心面试题及答案
- 花都安全生产培训试题及答案解析
- 实施指南(2025)《CJT 542-2020 模块化雨水储水设施》
- 胃肠镜院感知识培训课件
- DB14T 3563-2025 县域医共体慢病管理中心建设与运行规范
- 食堂燃气安全日常检查表
- 五年(2021-2025)高考语文真题分类汇编:专题15 语言文字运用(选择+简答题组)(全国)(解析版)
- 禽类屠宰企业安全培训课件
- 外科及外科各方向住院医师规范化培训结业临床实践能力考核方案(2023版)
- 【生物】云南省昭通市第一中学教研联盟2024-2025学年高一下学期期末质量检测试题(A卷)(解析版)
- 2025年广西二级造价师真题及答案
评论
0/150
提交评论