nc65金盤2018nc6開發(fā)參考pubapp高級課件2012版_第1頁
nc65金盤2018nc6開發(fā)參考pubapp高級課件2012版_第2頁
nc65金盤2018nc6開發(fā)參考pubapp高級課件2012版_第3頁
nc65金盤2018nc6開發(fā)參考pubapp高級課件2012版_第4頁
nc65金盤2018nc6開發(fā)參考pubapp高級課件2012版_第5頁
已閱讀5頁,還剩125頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PUBAPP對UIF2的擴(kuò) 對外API以及工具 業(yè)務(wù)擴(kuò) 配置方 PubApp一覽 定義對 打開界面 第五章擴(kuò)展開 PUBAPPUI控件介 第八章常用組件、工 當(dāng)前解析中的處 PUBAPP主子孫擴(kuò) 主子孫UI擴(kuò) 分頁設(shè) 第十一章關(guān)鍵術(shù)語、重要知識點JAR Pubapp下的public下的 Pubapp下的下的 第一章PubAppafterEdit、sort等。標(biāo)準(zhǔn)視圖控件(如BillForm、BillListView)中值對模型進(jìn)行了處理,如需處理一個加入的會覆蓋之前加入的,不方便且不好管理和。PubApp在解決UIFactoryII基礎(chǔ)上支持業(yè)務(wù)、并封裝標(biāo)準(zhǔn)控件增加支持對模型UIF2的開發(fā)規(guī)范,仍然是以模型為中心,不同控件對模型進(jìn)行的觀察者模式。同時也是MVC的典型應(yīng)用。PUBAPP和UIF2并不是的,而是依賴的,開發(fā)人員也可以使用UIF2開發(fā)更靈活的業(yè)務(wù)功能,推薦同時使用并掌握UIF2PUBAPP。UAPUIF2典型界面組織形式,開發(fā)業(yè)務(wù)流程,或者開發(fā)流程節(jié)點等典型的NC節(jié)點時均可以提供支持。Pubapp的設(shè)計目標(biāo)是提供快速開發(fā)單據(jù)節(jié)點并實現(xiàn)ERP管理功能Pubappuif2uif2進(jìn)行了封裝、無論是在標(biāo)準(zhǔn)控件還是在領(lǐng)域模型中、對標(biāo)準(zhǔn)控件的支持?jǐn)U展了業(yè)務(wù)支持、懶加載、分UI以及模型轉(zhuǎn)發(fā)、結(jié)構(gòu)介紹PubApp的內(nèi)容按照上述結(jié)構(gòu)來展開進(jìn)行詳細(xì)解析。第三章為PubApp在性能上擴(kuò)展第四章為PubApp對流程的擴(kuò)展第七章介紹了Pubapp提供的配置功能的解析第八章介紹了Pubapp提供的常用工具的解析第九章介紹了對Pubapp擴(kuò)展的主子孫模式單據(jù)的解析第十章提供了一個使用Pubapp開發(fā)的案例DemoPubAppuif2的基礎(chǔ)上進(jìn)行擴(kuò)展、下面分三個模塊按照PubAppuif2PubAppBillListView、卡片BillForm、單表BatchBillTable都在初始化方法中增加了重新定義轉(zhuǎn)發(fā)機(jī)制、豐富了類型、其中在卡片BillForm下增加了主組織OrgPanel面板、以便定義單據(jù)的數(shù)據(jù)層次。此外、PubAppShowUpableBillListViewShowUpableBillForm、Action改變狀態(tài)的接口、表UIF2BillManageModelBatchBillTableModel、這些領(lǐng)域模型了界面數(shù)據(jù)、數(shù)據(jù)狀態(tài)、觸發(fā)、業(yè)務(wù)邏輯等功能、PubApp在此基礎(chǔ)上進(jìn)行單表擴(kuò)展了BatchBillTableModel添加業(yè)務(wù)、主要針對處理批量數(shù)據(jù)。UIF2的Actions提供了對單據(jù)的操作、例如增加、修改、刪除、查詢操作、PubApp在第二章PubappUIF2列表BillListVIewBIllForm、單表BatchBillTableBillTreeView、主子孫界面等model的并進(jìn)行處理、這里的包括控件和模型、pubapp里面在接收的時候并不區(qū)單表擴(kuò)展pubapp擴(kuò)展UIFactoryII的AppModel模型接口,新增IAppModelEx接口繼承自IAppModel, 自定義按鈕、目前擴(kuò)展的按鈕有以下Action、這些按鈕可以直接配置使用:左邊是查詢面板queryAreaS、是通過七巧板布局放置、上面是查詢按鈕、是通nc.ui.uif2.TangramContainerActions目前的單據(jù)管理模型都是繼承了流程平臺模型的自定義的處理類通過配置文件裝載入AppEventHandlerMediator中并根據(jù)時間對象類型對分類,之后在模型中。模型中按照類型分類。已提供的路徑:nc.ui.pubapp.uif2app.event包對于有返回值的Event必須設(shè)置其返回值,不能為空通過handleMap進(jìn)行配出的會被相應(yīng)的對象捕捉到、例如上圖的為卡片表頭表尾編輯后。通過handlerGroup進(jìn)行配多用來處理表體多頁簽的情況,使得的對哪些頁簽有效。handlerGroup來進(jìn)行配置、同時可以在里面設(shè)置可以挑剔的事件以便對具體的業(yè)務(wù)進(jìn)行處理、配置如下所示:屬性event取值為具體的event屬性picky取值可實現(xiàn)IPickyEventHandler接口來過濾是否派發(fā),如果取值為類才會派發(fā)到對應(yīng)的處理中 在自定義中、首先需要自定義對象、對象中有”類型Type”、”source”以及的環(huán)境對象”contextObject”、對象中對這三種類型進(jìn)行了封裝進(jìn)行定義、以便在觸發(fā)不同的操作件源可以發(fā)出不同類型的定義的類型。源面封裝好的邏輯、現(xiàn)在需要自定義源和觸發(fā)時機(jī)、當(dāng)然以Swing觸發(fā)的為基礎(chǔ)、在此基礎(chǔ)上通過領(lǐng)域模型也即(model)發(fā)送自定義的、通過模型驅(qū)動機(jī)制、然后由監(jiān)聽model的器去處理針對不同類型的邏輯操作。平臺中目前是在Swing的基礎(chǔ)上又封裝了一層、是通過標(biāo)準(zhǔn)界面控件觸發(fā)、然后在這個時機(jī)通過model觸發(fā)、分別被不同的器進(jìn)行捕捉并進(jìn)行相應(yīng)的處理個時候平臺中的控件到、例如BillScrollPane到DefaultListSelectionModel發(fā)出的事件、然后進(jìn)行相應(yīng)的邏輯處理、處理完畢后通過自己的數(shù)據(jù)模型(BillManageModel)發(fā)出器上面的“模型”或者“控件”發(fā)出對應(yīng)的器可以到、器可以是控件、也可以是單獨的一個類對象、但是即使定義好器也不知道改器的是哪個模型、義的器是直接顯示EventListener的然后直接到需要被的控件或者模型中就可會到改變、從而做出相應(yīng)對于UIFactoryII中的類型進(jìn)行區(qū)分并分別進(jìn)行不同的處理、支持流程處理、轉(zhuǎn)Pubapp中支持前臺Action抽第三章PubApp差異LazilyLoadManager的lazilyLoadSupporter屬性中、之后前臺界面在列表界面下點擊一條主數(shù)據(jù)、這時會懶加載改主數(shù)據(jù)下的子數(shù)據(jù)(前提是也沒vo的內(nèi)容、可以根據(jù)構(gòu)造函數(shù)來確定當(dāng)前的查詢要加載多少種類型的表體,VOVO可能不是在表頭的一共查出三條主數(shù)據(jù)、但只查出第一條主數(shù)據(jù)下的子數(shù)據(jù)、其他主數(shù)據(jù)下的子數(shù)據(jù)為*@param *@return@paramchildrenClz@parambills由于UIFactoryII的分頁經(jīng)過了兩次調(diào)用、第一次調(diào)用查詢pks、第二次調(diào)用根據(jù)這些pks來查數(shù)據(jù)、比較耗費性能、Pubapp了這一點、現(xiàn)在把兩次調(diào)用合并為一次調(diào)用、即在分頁第一次查詢所有pk的時候,順便把第一頁數(shù)據(jù)查到前臺、PubApp提供了一個對象PaginationTransferObject來所有的PK以及第一頁的數(shù)據(jù)。model分頁model派發(fā)PaginationBar接收更新數(shù)據(jù)、頁分頁model派發(fā)取配置查詢、只是實現(xiàn)的接口不一樣、其中模型管理器需要實現(xiàn)IPaginationModelListener、refreshable以及AppEventListener接口voidvoid間的數(shù)據(jù)、保證數(shù)據(jù)同步、但后面由于提供了一個BillManagePaginationDelegator作為內(nèi)部實現(xiàn)來完成這些事情、數(shù)據(jù)模型管理器僅僅初始化數(shù)據(jù)注意一下使用的model為pubapp下的分頁model、注入的service需要實現(xiàn)IPaginationQueryServicepk查詢數(shù)據(jù)即分頁ServicePubapp提供了一個nc.ui.pubapp.uif2app.model.pagination.UIPageQueryService、前臺分頁服dataOfPksQueryServiceMethod、需要注入定義的接口根據(jù)pk來查數(shù)據(jù)的方法。獲取的數(shù)據(jù)結(jié)果集過30萬。其主要目的就是防止錯誤的編程代碼造成數(shù)據(jù)庫的內(nèi)容被加載到內(nèi)存的時候出現(xiàn)內(nèi)存溢出,導(dǎo)致中間件。而防止內(nèi)存溢出也就成為V6支持大V515萬行時就能達(dá)到中間件內(nèi)ID查詢到內(nèi)存,然后以一萬為一批,分批加載整個VO的數(shù)據(jù)到內(nèi)存中計算。這樣也就防止了內(nèi)存的溢出。但是結(jié)果集過30萬行存單據(jù)行ID,然后繼續(xù)分批計算。 異VO傳到使用。行、方法后執(zhí)行、從輕量級差異VO獲取一個完整的客戶端VO、然后操作保存.更新的是帶有PK的數(shù)據(jù)、差異保存邏輯如下:通過前臺界面中獲取到新增的數(shù)據(jù)VOs、通過model獲取緩存中的VO數(shù)據(jù)oldVO、oldVO和VOsVOVO、也即輕量級VO(LightVO)、然后作為參數(shù)傳遞到。據(jù)庫中、返回數(shù)據(jù)庫中的單據(jù)VO。然后利用保存后具有完整數(shù)據(jù)的VO(這時VO已經(jīng)帶有TS和最新數(shù)據(jù))用 合并客戶端VO和保存后的聚合VO得到一個只有改變字段的聚合VO、通常有ts、pk組成、但也可能有其他數(shù)據(jù)組成并返回客戶端、這樣數(shù)據(jù)在傳輸?shù)倪^程中減少VOVO合并、得到一個完整的聚合VO、界面狀態(tài)為新增狀態(tài)、然后更新model、然后model發(fā)去更新標(biāo)準(zhǔn)界面。刪除操作、更新model以及界面。減少網(wǎng)絡(luò)的傳輸、提升性能、另外差異vo一般和流程業(yè)務(wù)有關(guān)、例如插入前規(guī)則、插入后需要的調(diào)用最多不超過6次、平臺中提供了 binatorCaller類來記性然后調(diào)用BillTemoader的prepare(param1,param2,param3,..)方法進(jìn)行獲取單據(jù)模板和板都會用一個Token來記錄狀態(tài)信息、Tokeninvoke程調(diào)用信息的收集、當(dāng)然Token中的狀態(tài)在收集完調(diào)用信息后會被置會ready狀態(tài)、然 3.4.3調(diào)用類第四章PubAppVO在下游單據(jù)中點在下游單據(jù)中點框及選擇上游單據(jù)中需要加載的上接轉(zhuǎn)到目的單據(jù)接轉(zhuǎn)到目的單據(jù)當(dāng)前單據(jù)是否支持{return}然后在配置文件中把該Action注入進(jìn)去,如下所示:<!--新增--<!--按鈕可以隨便寫--<!--按鈕的名稱POBillType.Order.getCode(),getModel().getContext().getEntranceUI(),null,null);if(PfUtil.isCloseOK())////}<!--參照采購訂單新增<!--來源單據(jù)類型編碼<!--來源單據(jù)類型名稱:<!--參照請購單新增<!--來源單據(jù)類型編碼<!--來源單據(jù)類型名稱<!--<!--新增菜單<!--<!--方法)獲取到下游單據(jù)VO,再調(diào)用下游單據(jù)提供的服務(wù)接口實現(xiàn)推單型和來源單據(jù)id,將這兩個屬性對應(yīng)到元數(shù)據(jù)的子實體對應(yīng)字段上,如下圖所示:V6中都需要刪除,保持為空的狀態(tài),使用默認(rèn)的查詢類model和單據(jù)類型,配置如下:下所示,更詳細(xì)的配置見文檔《打開界面.doc》<bean VO 4.3.5IBillFlowIMutiBillFlowFactory,通定類型的上游單據(jù)id的情況,使用時只需要在對應(yīng)id字段的元數(shù)據(jù)上配置如下:用時對于每一組的來源單據(jù)type和id,在元數(shù)據(jù)上分別配上“SRCGROUP_TYPE:X”和“SRCGROUP_ID:X”,其中X可以自己任意指定,只要保證對于每一組一致即可;4.3.6方publicpublicclassTagMutiSrcTypeDataFinderextendsMutiSrcTypeDataFinder CompositeBillFlowFactoryfactory=new}}第五章PubappAction、但是如果提供的Action不滿足當(dāng)前的業(yè)務(wù)需求、可直接定義Action繼承目前所使用的Action、通過重寫其doAction(ActionEvente)方法加入自己特有的邏輯并替換目前的Action。doAction(ActionEvente)方法然后去實現(xiàn)自己的業(yè)務(wù)邏輯。繼承更次的NCAction、自定義Action的code和name、覆蓋其doAction(ActionEvente)一般直接在繼承UIFactoryII的基礎(chǔ)上擴(kuò)展界面、需要在實現(xiàn)繼承的類中實現(xiàn) ponentWithActions這三個接繼承PubApp提供的列表ShowUpableBillListView、卡片ShowUpableBillForm、單表ShowUpableBatchBillTable、直接繼承即可、不需在重新實現(xiàn) ponent、 、ponentWithActions接口、這些接口Pubapp在上面提供 、ponentWithActions這三個接平時的業(yè)務(wù)如果對流程要求比較少、直接使用UIFactoryII的BillManageModel即可。繼承PubApp的BillManageModel基礎(chǔ)上進(jìn)行擴(kuò)展、PubApp的領(lǐng)域模型繼承了UIFactoryII的BillManageModel、在上面擴(kuò)展了支持業(yè)務(wù)流程功能、懶加載功能、轉(zhuǎn)發(fā)采用代ActionUIAction、領(lǐng)域模型BeanConfigFilePath的xml文件進(jìn)行定義需要在”功能”節(jié)點中為需要擴(kuò)展的功能節(jié)點添加PluginBeanConfigFilePath參數(shù)以及參數(shù)值、其中參數(shù)值為XMLXML文件中進(jìn)行擴(kuò)展操作、這樣做可以在不改變原有功能的前提下進(jìn)行擴(kuò)展、有利于二次開發(fā)。Action、給需要的目標(biāo)Action添加器、在器中定義Action執(zhí)行前操作、執(zhí)行規(guī)則組織方式簡單,可性強(qiáng); 可以從配置文件中加載行業(yè)和二次開發(fā)增加的業(yè)務(wù)規(guī)則 用戶需實現(xiàn)nc.impl.pubapp.pattern.rule.plugin.IPluginPoint接口,來進(jìn)行服務(wù)、操作、BP的二次開發(fā)插入點定義新增BPBP修改BPpublicAggApplyPayVO[]insert(AggApplyPayVO[]returnbp.insert(bills);}//為BP模板的規(guī)則處理器加入新增前業(yè)務(wù)規(guī)則IRule<AggApplyPayVOrulenewFillInsertDataRule();}}}字段vextendtype的值支持以下三種,不可為空,參見對map每個key對應(yīng)的插件集合按本地化+行業(yè)化優(yōu)先級進(jìn)行過濾,只保留優(yōu)先級最高的一個行業(yè)(行業(yè)匹配)+本地化(本地化匹配)行業(yè)為水平+本地化(本地化匹配)行業(yè)(行業(yè)匹配)+本地化為第六章PubAppUI暫時只與BillManageModel配合使用PubApp中提供的標(biāo)準(zhǔn)列表控件為nc.ui.pubapp.uif2app.view.BillListView、其中nc.ui.pubapp.uif2app.view.ShowUpableBillListView繼承該類并實現(xiàn)了 ponent切換時對外通知的接口、其中的單據(jù)模板為以設(shè)置不同的BillItem出平臺中的一個節(jié)點“客戶-”作為參考6.2卡片視圖(聚合VO的上卡片下列表形式)PubApp中提供的標(biāo)準(zhǔn)卡片控件為nc.ui.pubapp.uif2app.view.BillForm、其中nc.ui.pubapp.uif2app.view.ShowUpableBillForm繼承該類并實現(xiàn)了 ponent自動切換 ponent切換時對外通知的接口、IComponentWithActions肩膀頁簽按鈕接口、其中的單據(jù)模板為BillCardPanel、BillCardPanel中一個在BillModel中可以設(shè)置不同的BillItemBIllForm多為標(biāo)準(zhǔn)主子表單據(jù)所采用的卡片模型、大多數(shù)節(jié)點都會使用這種卡片模型用這里給出平臺中的一個節(jié)點“客戶-”作為參考形面板、右邊為卡片界面、采用的就是BillCardPanelForm控件以及模型。實現(xiàn)對BatchBillTableModel模型數(shù)據(jù)的展現(xiàn)及的響應(yīng),與BatchEditAction、BatchAddLineAction、BatchDelLineAction等動作配合使用PubAppnc.ui.pubapp.uif2app.view.BatchBillTable、里面增加了一些轉(zhuǎn)發(fā)和一些業(yè)務(wù)邏輯、繼承UIF2工廠的BatchBillTable、其中的單據(jù)模板為它是BillItem的集合、也了一個BillModel、在BillModel中可以設(shè)置不同的在左邊選擇一棵樹上的節(jié)點添加到右邊的那刻樹上時、需要處理其的model中的數(shù)據(jù)模型中的數(shù)據(jù)同步到ListToListPanel的IItemChooserModel模型中的數(shù)據(jù)。ListToListPanel一般用在兩邊都是樹形選擇的情形下、平臺中的“用戶”節(jié)點中在卡片的狀態(tài)下使用了ListToListPanel、效果如下樹表結(jié)構(gòu)、里面的單據(jù)模板為BillListPanel、但一般在卡片界面中的表體配置單表單據(jù)模板、并把第一列的信息替換為樹結(jié)構(gòu)、其他單元格的信息仍為表格模型,這里面在初始化初始化單據(jù)模板的據(jù)所有的BillItem

替換BillModel的第一列為樹表模型即TableTreeModel

通過轉(zhuǎn)換把具有樹表轉(zhuǎn)換為BiiModel第七章PubAppXxxMediator配置解析<beanid="doubleClickMediator" <propertyname="listView"ref="listView"<property 以為應(yīng)用的場景比較多、這里通過一個”雙擊列表顯示卡片”的方式來進(jìn)行說明、eander例如d片。象,又能對特定對象信息進(jìn)行操作。對象本身的管理。InitDataListener節(jié)點、配置方式比較簡單、經(jīng)提供好的、配置方式如下所示:<!--打開節(jié)點--<bean <propertyname="model"ref="manageAppModel"<propertyname="context"<propertyname="ui"ref="billFormEditor"VO<propertyname="voClassName"<property 的方法initData()進(jìn)行一些初始化的邏輯操作。ClosingListener<bean <propertyname="model"ref="ManageAppModel"<propertyname="saveAction"ref="saveAction"BaseOrgPanel在V6中,大部分單據(jù)都有個主組織,組織類型有:、公司、部門、銷售組織、庫<!--組織面板<beanid="orgPanel"class="nc.ui.pubapp.uif2app.view.OrgPanel"<propertyname="model"ref="ManageAppModel" BaseOrgPanelBaseOrgPanel提供了一個showOrgPanelTrue的時候會顯示主組織參照、當(dāng)設(shè)置為false的時候不會顯示主組織。則表示此VO屬于空子表、配置方式如下:<property過濾空行--><propertyname="fieldName"value="xxxx"nFilter"><property第八章常用組件、工具據(jù)上設(shè)置某個billItem為日期參照類型、則可以按照如下設(shè)置即可:UFDateTime類型、然后//IRelationForItemsitem=new//IDataSetForCaldatanewBillCardPanelDataSet(newBillCardPanelrow,item);//row改變的行/**}/**}ScaleUtilsscale=//ConditioncondnewCondition();////////////通過pk_group以及對應(yīng)卡片的billcardpanel來進(jìn)行構(gòu)造卡片精度處理對象privatevoidsetScale(BillScaleProcessorscale,TotalValueScaleProcessortotal){String[]costpricekeys=newString[] String[]globalmnykeys=new String[]groupmnykeys=new String[]orgmnykeys=new String[]mnykeys=newString[] String[]assistNumkeys=new String[]numkeys=new String[]pricekeys=new scale.setNumCtlInfo(assistNumkeys,PosEnum.body,null,ItemVO.CASTUNITID,PosEnum.body,null);scale.setNumCtlInfo(numkeys,PosEnum.body,null,PosEnum.body,scale.setMnyCtlInfo(mnykeys,PosEnum.body,null,PosEnum.head,scale.setMnyCtlInfo(orgmnykeys,PosEnum.body,null,PosEnum.head, }String[]numkeys=new scale.setNumCtlInfo(numkeys,PosEnum.body,null,ItemVO.CUNITID,PosEnum.body,null);模板上定義具有精度的item的code值、這里可以、也可以單獨定義一個精度對象item、數(shù)據(jù)項,調(diào)用VO處理對象的process方法進(jìn)行處理:解析器界面使用了UIF2基于配置文件的方式。nc.ui.pub.formulaedit.(c.u.b.ou.do.oruaReaEdoPan:(.tPlaud.rMPl解析器界面使用了UI工廠2,基于配置文件的方式。nc.ui.pub.formulaedit.在新的實現(xiàn)中,有兩個地方可以添加,F(xiàn)ormulaFunctionPanel(函數(shù)實現(xiàn))新加入的IFormulaTabBuilder接口包含創(chuàng)建Tab需要的一些基本功能,包括的點擊時發(fā)出相應(yīng)的IFormulaListener通知,大多數(shù)需求使用此界面即可。如果用戶需要自己實現(xiàn)界面進(jìn)行展示,那么就需要在某個Panel中實現(xiàn)IFormulaTabBuilder接口,并在initUI()方法中進(jìn)行初始化界面的操作,具體實現(xiàn)可以參照IFormulaTabBuilder接口實現(xiàn)配置到此list中(通過springIOC方式)builderIFormulaTabBuilderDefaultFormulaTabBuilder對象,使用UIList進(jìn)行展示。如果想自己定義一個新的界面的話,那么就可以繼承Component(或其子類實現(xiàn))并實現(xiàn)IFormulaTabBuilder接口,此時就可以自己定義界面并進(jìn)行實現(xiàn)。自己實現(xiàn)界面的話就必須在加入的IFormulaTabBuilder實現(xiàn)類中同時繼承自某個Component(或更加通用的UIPanel),比如TableFieldTabBuilder。就要執(zhí)行FormulaUtil類中的addKeyword并刷新(refresh)。為了兼容以前版本中對FormulaEditorDialog中一些加入頁簽Tab的操作,如addCustomTabBuilder,setCustomTabBuilderFormulaEditorDialog中仍然保存了慮解析的處理Tab實現(xiàn),但是要自定義展示列表(UIList)據(jù)的formulaItems屬性(List實現(xiàn))中數(shù)據(jù)的順序進(jìn)行展示。用戶也可以繼承DefaultFormulaTabBuilder并實現(xiàn) 法返回null(默認(rèn)實現(xiàn)為null),則按照字符串的大小順序。行自定義頁簽展示(不實現(xiàn)IFormulaTabBuilder)管理,中加入FormulaTypeManager作為函數(shù)類型的管理器,將管理所有的函數(shù),并將其在FormulaFunctionPanel中進(jìn)行展示。FormulaTypeManager中可以對函數(shù)進(jìn)行基本配置,其中basicTypeConfig是對基本函數(shù)類型(數(shù)學(xué)、字符串等)進(jìn)行配置,可以設(shè)置這些是否進(jìn)行顯示(show屬性),基本類型的FormulaTypetypeIdIFormulaConstantint值(String),用戶可以配置相應(yīng)的自定義類型FormulaType。FormulaType中配置了函數(shù)的類型,typeId可以唯一確定此type類型,故不能發(fā)生類似”1”,”3”的字符串),類型名稱typeName作為顯示在函數(shù)頁簽名稱,用戶可以配置name2FormulaItemMap類型,也可以配置 name2FormulaItemMap中,名稱-> 在不擴(kuò)展DefaultTabBuilder的同時加入一個自定義頁簽(名稱為“新類型”,在customerTypeList中暫時注掉了)。中單據(jù)模板編輯器中變量“表頭”信息就是用這種方法實現(xiàn)的。FormulaEditDialog中還有其他的實用方法,可參照為了支持“業(yè)務(wù)語言描述”到“原型”的轉(zhuǎn)換(通過“轉(zhuǎn)換器鏈”來實現(xiàn))以及支持“原型”到“業(yè)務(wù)語言描述”的轉(zhuǎn)換(通過“解析器鏈”來實現(xiàn)。現(xiàn)提供一個接口IConvertor接口用來實現(xiàn)“轉(zhuǎn)換器”和“解析器”。@parampublicStringpreConvert(String@parampublicStringpostConvert(String中編輯器界面和提示信息界面均屬于觀察者,他們要對對象“數(shù)字按鈕界面”、“邏輯按鈕界面”、“功能函數(shù)多界面”進(jìn)行。在新的解析中,觀察者需要實現(xiàn)IFormulaEventListenerFormulaRealEditorPanelFormulaHintMsgPanel,他們都需要對對象發(fā)出的請求FormulaEventSource進(jìn)行處理。對于對象,例如FormulaButtonPanel只需要配置一個listeners對象所有的觀察者并在必要時刻發(fā)出即可(也是通過spring配置即可)如果用戶需要實現(xiàn)自己的對象和觀察者,那么只需要實現(xiàn)接口IFormulaListener并對于IFormulaTabBuilder中的listeners處理,在FormulaFunctionPanel和FormulaVariablePanel中的listeners主要是為了兼容老版本中和內(nèi)置(將在后面介紹)的器實現(xiàn),也即老版本中l(wèi)istener自動為其所在的FormulaFunctionPanelFormulaVariablePanelIFormulaTabBuilderbuilder中l(wèi)isteners。持、其中主要用到了Apache的POI對于excel的操作、支持批量導(dǎo)出與批量導(dǎo)入

IImportableEditor中獲取

從單據(jù)模板中獲取數(shù)據(jù)以及billData構(gòu)造導(dǎo)出數(shù)

@return{@linkJComponent}對象publicJComponent publicList<InputItem>getInputItems();2,nc.ui.trade.excelimport.ExcelImporterexportToExcel這個3,nc.ui.trade.excelimport.Uif2BodyOnlyImportablePanelIImportableEditorExportAction需要注入模型以及導(dǎo)入/導(dǎo)出功和單表體導(dǎo)出類似、唯一不同的是主子表中導(dǎo)出導(dǎo)出實現(xiàn) 1,所有需要數(shù)據(jù)導(dǎo)入功能的(或單據(jù))的UI類(即結(jié)點類)必須實底層程序已經(jīng)確定的。IImportableEditor接口中的getInputItems方法用來返回(或單導(dǎo)入(如參數(shù)控制addNewsetValue方法,將save方法,進(jìn)行保存數(shù)據(jù)操作,完成了和業(yè)務(wù)邏4,數(shù)據(jù)導(dǎo)入工具提供導(dǎo)入時的錯誤信息提示和日志功能,能夠?qū)⒄{(diào)用各個(或單在導(dǎo)入的過程中、用戶首選需要選擇導(dǎo)出的文件格式(可以選擇Excel2003、Excel2007Excel2010版本)Excel文件中根據(jù)提示信息輸入數(shù)據(jù)、對于主子表錄入數(shù)據(jù)請多數(shù)原因是因為沒有設(shè)置好對應(yīng)的主子表之間在excel中的對應(yīng)關(guān)系。nc.ui.uif2.excelimport.ImportAction中需要注入對應(yīng)的實現(xiàn)IImportableEditor接口專門處理單表體導(dǎo)入導(dǎo)出功能的類、而在Uif2BodyOnlyImportablePanel中需要注入只是注意IImportableEditor接口的實現(xiàn)、這里不再贅述。3、editor:卡片界面打印模板的nodeKey->–>tem2、model:單據(jù)領(lǐng)域件)每隔2天分為一組。<propertyname="model"ref="ManageAppModel"/><!--分表屬性,可以根據(jù)具體單據(jù)進(jìn)<propertync.ui.scmpub.print.split:SplitPrintParamDlg分單打印框PrintDataSplitProcessor打印分單前處理類SplitBillData分單處理類SplitPrintAction第九章Pubapp面為孫表視圖(包括列表和卡片)UIPanel進(jìn)行封裝、上層為主子視圖、下層uif2uif2以以上是主子孫模式的設(shè)計類圖、平臺提供了對UI的擴(kuò)展即 posite列 以前的單據(jù)需要擴(kuò)展為具有主子孫結(jié)構(gòu)的單據(jù)、需要從三個層面上進(jìn)行擴(kuò)展:元數(shù)據(jù)擴(kuò)展、UI擴(kuò)展、以及模型擴(kuò)展、下面先講述元數(shù)據(jù)層面的擴(kuò)展:UI主子孫模式提供了UI層次上的擴(kuò)展、提供了一個抽象類 在此基礎(chǔ)上提供了針對列表和卡片兩種模式的主子孫封裝界面、列表即 posite這兩個主子孫UI控件分別組合了 模型、為了方便以及從統(tǒng)一的層面進(jìn)行控制、平臺提供了一個MainGrandModel來主子孫的數(shù)據(jù)、數(shù)據(jù)的狀態(tài)、數(shù)據(jù)的業(yè)務(wù)邏輯、以及自定義的轉(zhuǎn)發(fā)。定義一個實現(xiàn)IAppModel接口的抽象model對象、其中重要的是一個領(lǐng)域模現(xiàn)、MainGrandModel代碼如下:主子孫model中了新增和編輯緩存是作為記錄子數(shù)據(jù)中每一條數(shù)據(jù)下對應(yīng)那些孫model中提供了增、刪、改、查等方法來針對主子孫數(shù)據(jù)的增加、刪除、修改類型定義:用枚舉類型來對主子孫類型進(jìn)行定但是針對孫面板單獨的行為需要自定義Action繼承NCAction進(jìn)行特定行為的邏輯。第十章

溫馨提示

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

評論

0/150

提交評論