sg-uap v3.00高級開發(fā)手冊分冊5平臺功能擴展_第1頁
sg-uap v3.00高級開發(fā)手冊分冊5平臺功能擴展_第2頁
sg-uap v3.00高級開發(fā)手冊分冊5平臺功能擴展_第3頁
sg-uap v3.00高級開發(fā)手冊分冊5平臺功能擴展_第4頁
sg-uap v3.00高級開發(fā)手冊分冊5平臺功能擴展_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

MX展現(xiàn)框架擴 概 建立MX框架擴展模 用MXFramework的格式擴展控 非MX規(guī)范方式控件擴 添加/替換資源:樣式、、 自定義登錄頁面及主 日志管理擴 概 日志管理模塊擴展方 異常管理擴 概 自定義異常的提示頁 自定義服務端異常類 工具類的自定義開 概 自定義開發(fā)工具 BPM任務列表的自定義擴 概 任務列表的自定義擴 服務端方法自定義開 客戶端方法的自定義開 流程接口與服務說 BPM集成模塊接口(egrate.bpm.api)BPM集成模塊接口 BPM模塊 Web服 MXMXMX擴展項目名稱可自定義,然后下一步進行指定擴展的mx模塊bundle,在Plug-inID一行點擊Browse“瀏覽”按鈕,在彈出的框中找到完成這兩步后,mxframework當MXFramework的控件不能滿足項目組需要時,項目組可以使用MXFrameworkMX相同的結(jié)構(gòu),即在擴展模塊下建立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規(guī)范方式擴展同樣需要在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給出的默認的兩套庫的基礎上進行修改,關于控件樣式的。的樣式開發(fā)及應用相關內(nèi)容需要提醒的是

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中的文件 以將系統(tǒng)默認的messages.js內(nèi)容拷貝后,在擴展模塊下建立 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)的資源文件統(tǒng)一放在新建的文件夾locales下,資源文件名為 .properties則調(diào)用如下實現(xiàn)*在uap項目的perties屬性文件中增加如下配置##格式為。weblet間調(diào)用的方式(weblet調(diào)用可以參考《SG-方法可以參考《SG-UAP_V1.5_高級用戶手冊_2.客戶端開發(fā).doc節(jié)。main.jsp為業(yè)務系統(tǒng)自定義開發(fā)的首頁登錄界面,則只需在\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環(huán)境是完全可配置的,或者XMLlog4j志記錄器指定如下級別:ALL INFO、 FATA或OFF layout(布局):appender:log4j框架允許向任何日志記錄器附加多個appender。可以在任何時候?qū)δ硞€日子記錄器添加(或刪除)appenderlog4jappender個,包括:ConsoleAppender、FileAppender、SMTPAppender、JDBCAppenderJMSAppender、NTEventLogAppender、也可以創(chuàng)建自己的自定義appender,appenderAppenderSkeletonappender是否需要layout如果某些屬性必須同時激活,則應該在activateOptions()方法內(nèi)完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"));}}執(zhí)行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_ 標識符無效。服務器節(jié)點信息平臺提供了兩個基類異常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}待處理的任務:等待當前用戶處理的任務,即用戶限處理的任務委托的任務:當前用戶或者協(xié)辦出去的任務當前用戶的關系,由限的人完成的任務;按照任務的來源可以分為自己的任務的任務的任務協(xié)辦的任務等BPMAPIWebService開發(fā)流程相關BPM外提供。如果需要業(yè)務模塊需要進行比較復雜的流程處理,可以直接調(diào)用com.sgcc.uap.bpm.apicom.sgcc.uap.bpm.apiBPM原服務端的Controller層是rest服務調(diào)用的層,其提供了客戶端獲取待restpublicpubliccom.sgcc.uap.rest.support.Reqonditionjavax.servlet.http.HttpServletRequestparams-{"filter":"","orderStr":"age","columns":"id,name"}封裝為Reqondition對象ta>getMetaData(@ColumnRequestParam(value="params") VO中獲取頁面展示元數(shù)據(jù)信息columns-將請求參數(shù){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中獲取頁面展示元數(shù)據(jù)信息columns-將請求參數(shù){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執(zhí)行權(quán)限",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:"協(xié)辦",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:"當前狀態(tài)",editorType:"DropDownEditor" name"partinamecaption參與者名稱editorType:"TextEditor"}, name"createtimecaption創(chuàng)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論