用戶定義屬性組與用戶定義屬性開發(fā)使用指南_第1頁
用戶定義屬性組與用戶定義屬性開發(fā)使用指南_第2頁
用戶定義屬性組與用戶定義屬性開發(fā)使用指南_第3頁
用戶定義屬性組與用戶定義屬性開發(fā)使用指南_第4頁
用戶定義屬性組與用戶定義屬性開發(fā)使用指南_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

用戶定義屬性組與用戶定義屬性開發(fā)使用指南版本維護(hù)人維護(hù)時(shí)間相關(guān)文檔備注V60陳偉2009-07-07V6公共服務(wù)V60陳偉2009-11-12界面顯示自定義項(xiàng)的方法變更V60陳偉2010-4-6為解決同一界面多個(gè)模板需要多次遠(yuǎn)程調(diào)用來實(shí)現(xiàn)用戶定義屬性顯示問題、及一個(gè)界面需要顯示多個(gè)實(shí)體的用戶定義屬性問題,提出container與preparator分離的設(shè)計(jì)方案,container負(fù)責(zé)遠(yuǎn)程杳詢所有用戶定義屬性引用,界面可以配置多個(gè)preparator來顯示用戶定義屬性V60陳偉2010-4-7自定義檔案為參照時(shí),需要按組織過濾1術(shù)語1.1用戶定義屬性即以前版本的自定義項(xiàng)。它的具體含義是指業(yè)務(wù)對象中預(yù)留若干字段,這些字段的數(shù)據(jù)類型是在系統(tǒng)運(yùn)行期由用戶定義的。在V6版本中,對字段可定義的數(shù)據(jù)類型進(jìn)行了擴(kuò)充:它可以是基本類型,如字符串、整數(shù)、數(shù)值(小數(shù))、布爾、日期等;也可以引用系統(tǒng)預(yù)置檔案、枚舉或用戶自定義檔案。1.2用戶定義屬性組用戶定義屬性的集合升級用戶定義屬性組,即以前版本的自定義項(xiàng)對象。一個(gè)用戶定義屬性組有自己的編碼、名稱及包含用戶定義屬性的數(shù)量。抽象出用戶定義屬性組的目的,是為了允許多個(gè)業(yè)務(wù)對象引用同一組用戶定義屬性,以保證多個(gè)業(yè)務(wù)對象中的用戶定義屬性一一對應(yīng)。如在采購流程中,希望采購單、入庫單的自定義項(xiàng)一一對應(yīng),可以定義一個(gè)公共的“采購流程用戶定義屬性組”。用戶定義屬性組引用將一個(gè)業(yè)務(wù)對象關(guān)聯(lián)到一個(gè)用戶定義屬性組,以表明這個(gè)業(yè)務(wù)對象的自定義字段的數(shù)據(jù)類型是由用戶定義屬性組中包含的用戶定義屬性所定義的,這時(shí)稱業(yè)務(wù)對象與用戶定義屬性組間的關(guān)聯(lián)關(guān)系為用戶定義屬性組引用。2設(shè)計(jì)概要2.1簡單類圖■PBillListPanelWrapperBillCardPanelWrappoemChangeListenerIUseBillCardPanelDefaultUserdefitemChan+用戶定義屬性組引用UserDefItemTools#initCardPanel()+getBillCardPanel():#initListPane()+getBillListPanel():BillListPaitemQryService丄istenerUserDefltemListTools+updateHeadItemByDef()+updateHeadItemByUserdefruleCode+updateHeadItemByUserdefruleName()+updateHeadMetaDataItemByDef()+updateBodyItemByDef()+updateBodyItemByUserdefruleCode)+updateBodyItemByUserdefruleName+updateBodyMetaDataItemByDef()()+updateHeadItemByDef()+updateHeadItemByUserdefruleCode+updateHeadItemByUserdefruleName()+updateHeadMetaDataItemByDef()+updateBodyItemByDef()+updateBodyItemByUserdefruleCode「■PBillListPanelWrapperBillCardPanelWrappoemChangeListenerIUseBillCardPanelDefaultUserdefitemChan+用戶定義屬性組引用UserDefItemTools#initCardPanel()+getBillCardPanel():#initListPane()+getBillListPanel():BillListPaitemQryService丄istenerUserDefltemListTools+updateHeadItemByDef()+updateHeadItemByUserdefruleCode+updateHeadItemByUserdefruleName()+updateHeadMetaDataItemByDef()+updateBodyItemByDef()+updateBodyItemByUserdefruleCode)+updateBodyItemByUserdefruleName+updateBodyMetaDataItemByDef()()+updateHeadItemByDef()+updateHeadItemByUserdefruleCode+updateHeadItemByUserdefruleName()+updateHeadMetaDataItemByDef()+updateBodyItemByDef()+updateBodyItemByUserdefruleCode「)+updateBodyItemByUserdefruleName+updateBodyMetaDataItemByDef()UserdefruleVO+用戶定義屬性組UserdefltemVO+用戶定義屬性:()圖1用戶定義屬性類圖3使用說明及API3.1元數(shù)據(jù)建模時(shí)設(shè)置自定義屬性元數(shù)據(jù)建模時(shí),如果該實(shí)體需要預(yù)留用戶定義的屬性,需要將該字段的數(shù)據(jù)類型設(shè)置為自定義項(xiàng)”,如圖2所示屬性I操作I業(yè)勢接口屬性映射「鬢照增加刪,除'下移上移置頂置底名稱 I擴(kuò)展標(biāo)簽顯示名稱I類型樣式類字段名稱def6def6自SINGLE自def6def7自定萸項(xiàng)7SINGLE自靈瑣def7def8自定僉項(xiàng)8SINGLEdef9自定購gSINGLEBLOB▲己fgdeflO自定轡項(xiàng)IQSINGLECLOB?fiodefll自罡SINGLEmflldefl2自定聶頊12SINGLE▼EflZdefl3自定燙項(xiàng)13SINGLE曰疋乂丄貝deflldefl4自定殖h斗SINGLE自定腳defl4白左:油佈CTMCI匚白帯卷侃圖2元數(shù)據(jù)建模時(shí)指定字段數(shù)據(jù)類型為自定義項(xiàng)3.2創(chuàng)建用戶定義屬性組在“開發(fā)平臺/開發(fā)配置工具”結(jié)點(diǎn)下有一個(gè)“用戶定義屬性組”結(jié)點(diǎn),可在此結(jié)點(diǎn)創(chuàng)建和維護(hù)用戶定義屬性組,如圖3所示。|St訳|首頁"□開發(fā)平臺我的幣種我的人員日開發(fā)配置工具04系統(tǒng)管理工具功能注冊集成平臺工具田J模板管理BJ單據(jù)管理業(yè)務(wù)插件注冊|用?戶定義Jj性齟參數(shù)複板丘箜置自定義檔案定義測試服務(wù)測試參照圖3用戶定義屬性組結(jié)點(diǎn)打開結(jié)點(diǎn)后,左側(cè)樹顯示的是現(xiàn)有的用戶定義屬性組。可以通過左側(cè)樹上方的按鈕創(chuàng)建和維護(hù)用戶定義屬性組所在的模塊,如圖4所示。修改規(guī)則編碼規(guī)則名稱日afdsdasdasdasdasd引用規(guī)則的實(shí)體規(guī)則變更校驗(yàn)類名E模塊tlCUSt客商基本信息醞custsale客商銷售信息己material物料基本信息已materialsale物料銷售信息修改規(guī)則編碼規(guī)則名稱日afdsdasdasdasdasd引用規(guī)則的實(shí)體規(guī)則變更校驗(yàn)類名E模塊tlCUSt客商基本信息醞custsale客商銷售信息己material物料基本信息已materialsale物料銷售信息supplierclass供應(yīng)商分類模塊編碼*|模塊名稱*| Start新増]首頁用尸定義雇性蛆用戶定義屬性組用戶定文雇性組關(guān)聯(lián)用戶定義雇性組刪除刷新創(chuàng)建維護(hù)模塊£保存|「取消圖4創(chuàng)建維護(hù)用戶定義屬性組所在模塊通過結(jié)點(diǎn)上方可創(chuàng)建和維護(hù)用戶定義屬性,如圖5所示。圖5創(chuàng)建維護(hù)用戶定義屬性組完成上述功能后,開發(fā)人員需要將生成的模塊信息和用戶定義屬性組數(shù)據(jù)導(dǎo)入到基準(zhǔn)庫中,模塊信息和用戶定義屬性組的數(shù)據(jù)記錄在bd_userdefrule表中。創(chuàng)建用戶定義屬性組引用創(chuàng)建好用戶定義屬性組后,需要指定對該屬性組的引用。在用戶定義屬性組結(jié)點(diǎn)中,選中一個(gè)用戶定義屬性組后,可在界面右下方的表體中為該屬性組指定引用,如圖創(chuàng)建好用戶定義屬性組后,需要指定對該屬性組的引用。在用戶定義屬性組結(jié)點(diǎn)中,選中一個(gè)用戶定義屬性組后,可在界面右下方的表體中為該屬性組指定引用,如圖6所示。圖6為用戶定義屬性組設(shè)置引用引用用戶定義屬性組的實(shí)體,是通過參照選擇的,參照的范圍是所有元數(shù)據(jù)實(shí)體。但需要注意的是,最終選擇的引用實(shí)體必須有數(shù)據(jù)類型為“自定義項(xiàng)”的屬性,并且“自定義項(xiàng)”屬性的數(shù)量必須與前述用戶定義屬性組設(shè)定的用戶定義屬性數(shù)量相等。如圖6所示,用戶定義屬性組“客商銷售信息”設(shè)定的用戶定義屬性數(shù)量是30,則在為該屬性組設(shè)置引用實(shí)體時(shí),所中的實(shí)體“custsaleinfo”中必須有30個(gè)數(shù)據(jù)類型為“自定義項(xiàng)”的屬性,否則系統(tǒng)不允許保存。開發(fā)人員可以在設(shè)置用戶定義屬性組引用時(shí),為該引用設(shè)置變更校驗(yàn)類的類名,該字段不是必輸?shù)模鐖D7所示。該校驗(yàn)類應(yīng)該實(shí)現(xiàn)nc.itf.bd.userdefrule.IUserdefitemChangeListener接口,當(dāng)用戶定義屬性組中包含的用戶定義屬性發(fā)生變化時(shí),會調(diào)用所有引用實(shí)體注冊的校驗(yàn)類的校驗(yàn)方法(userdefitemChanged(UserdefitemVO,UserdefitemVO))。如果開發(fā)人員在指定引用實(shí)體時(shí)未指定變更校驗(yàn)類名,則在相應(yīng)用戶定義屬性發(fā)生變化時(shí)按默認(rèn)的校驗(yàn)規(guī)則進(jìn)行校驗(yàn)。默認(rèn)的校驗(yàn)規(guī)則如下:當(dāng)某個(gè)用戶定義屬性變更時(shí),如引用實(shí)體中的對應(yīng)字段在數(shù)據(jù)庫中的值不全部為空,則會拋出異常、不允許保存用戶定義屬性變更。規(guī)則編碼custsale規(guī)則名稱客商銷售信息規(guī)則編碼custsale規(guī)則名稱客商銷售信息用戶定義雇性數(shù)量關(guān)聯(lián)用戶定義犀性組両用規(guī)則的實(shí)體規(guī)則變更校驗(yàn)類名1custsaleinfonc.impl.uap.bd.CustsalelnfoDefCheck1圖7在引用實(shí)體時(shí)指定變更校驗(yàn)類的類名完成上述功能后,開發(fā)人員需要將生成的用戶定義屬性組引用數(shù)據(jù)導(dǎo)入到基準(zhǔn)庫中,用戶定義屬性組引用的數(shù)據(jù)記錄在bd_userdefruleref表中。用戶定義屬性設(shè)置用戶定義屬性可以在全局設(shè)置,也可以在集團(tuán)設(shè)置,分別對應(yīng)“用戶定義屬性-全局”和“用戶定義屬性-集團(tuán)”兩個(gè)結(jié)點(diǎn),如圖8所示。

start苜頁| 品企業(yè)連模平臺田匚I田匚I田」i■+\:+:+JL田養(yǎng)數(shù)設(shè)詈R俊共信息

出急員信息地址信息客戶信息供應(yīng)帝信息檢料信息財(cái)務(wù)會計(jì)信息結(jié)算信息業(yè)務(wù)信息項(xiàng)目信息目定義項(xiàng)用戶定殳厘性-全局用戶定義屬性篠團(tuán)H自定交檔案定交自定殳襠案錐護(hù)-全局自定史檔案維護(hù)-集團(tuán)自定或檔実維護(hù)空司數(shù)據(jù)導(dǎo)2資產(chǎn)信息任務(wù)中心流程平臺編瑪規(guī)則圖8用戶定義屬性結(jié)點(diǎn)同一個(gè)用戶定義屬性,在全局設(shè)置后,在各集團(tuán)均可見,并且各集團(tuán)均不能修改;在任一集團(tuán)設(shè)置后,在全局結(jié)點(diǎn)也不能修改,但全局結(jié)點(diǎn)中該屬性設(shè)置仍為空。可以為用戶定義屬性設(shè)置顯示名稱、數(shù)據(jù)類型、輸入長度和精度。數(shù)據(jù)類型是通過參照選擇的,選擇的范圍是所有擴(kuò)展標(biāo)簽帶“DOC”標(biāo)簽的元數(shù)據(jù)實(shí)體或枚舉,如圖9所示。僅當(dāng)數(shù)據(jù)類型是字符串、整數(shù)、數(shù)值時(shí),可以設(shè)置輸入長度;僅當(dāng)數(shù)據(jù)類型為數(shù)值時(shí),可以指定精度。

圖9為用戶定義屬性設(shè)置數(shù)據(jù)類型3.5用戶定義屬性的界面顯示當(dāng)完成3.1.1、3.1.2、3.1.3步驟的設(shè)置后,希望在引用用戶定義屬性組的業(yè)務(wù)實(shí)體的界面中顯示用戶定義屬性,這時(shí)需要開發(fā)人員在業(yè)務(wù)實(shí)體界面的初始化過程中,利用用戶定義屬性的顯示工具對界面進(jìn)行設(shè)置。3.5.1UI工廠中的處理方法在UI工廠的界面開發(fā)中,IControllerBase接口中有兩個(gè)方法getHeadZYXKey()和getBodyZYXKey(),這兩個(gè)方法允許用戶分別指定表頭關(guān)聯(lián)的用戶定義屬性組名稱和表體關(guān)聯(lián)的用戶定義屬性組名稱。只要用戶在IControllerBase的實(shí)現(xiàn)類中指定了表頭和/或表體的用戶定義屬性組名稱,系統(tǒng)會自動查詢相關(guān)用戶定義屬性組在當(dāng)前登錄集團(tuán)的設(shè)置情況,并按前綴名“def”和“vdef”分別重置表頭和表體的用戶定義屬性的顯示設(shè)置。因此,如果業(yè)務(wù)對象的UI界面是UI工廠實(shí)現(xiàn)的、并且其中用戶定義屬性字段的前綴為“def”或“vdef”,則可以通過在IControllerBase實(shí)現(xiàn)類中指定用戶定義屬性組名稱的方法,實(shí)現(xiàn)用戶定義屬性的界面展現(xiàn)。UI工廠中用戶定義屬性的界面展現(xiàn)代碼樣例如下:publicclassSaleOrederControllerimplementsICardController{?OverridepublicStringgetBodyZYXKey(){return"供應(yīng)鏈-銷售訂單-表體";}?OverridepublicintgetBusinessActionType(){returnIBusinessActionType.PLATFORM;}@OverridepublicStringgetChildPkField(){return"pk_saleorder_item";}@OverridepublicStringgetHeadZYXKey(){return"供應(yīng)鏈-銷售訂單-表頭";}}3.5.2UI工廠II中的處理方法在UI工廠II中,主要的IEditor如BatchBillTable、BillForm、BillCardPanelForm都聚合了IBillData或IBillListData用于處理用戶定義屬性的展現(xiàn)。UI工廠II中,由于界面結(jié)構(gòu)比較復(fù)雜,這里分以下幾個(gè)場景分別描述用戶定義屬性展現(xiàn)的處理方法。(1) 簡單界面簡單界面,即單據(jù)模板的一個(gè)區(qū)域(表頭或表體)僅展現(xiàn)一個(gè)用戶定義屬性組的用戶定義屬性(即不支持同一表頭/表體展現(xiàn)兩個(gè)不同用戶定義屬性組中的用戶定義屬性),并且該界面不支持動態(tài)擴(kuò)展機(jī)制。為使簡單界面展現(xiàn)用戶定義屬性,需要在界面的XML配置文件中顯式的注射工具類UserdefitemBillDataPreparator或UserdefitemBillListDataPreparator,并為這兩個(gè)工具類注射必要的屬性,其中UserdefitemBillDataPreparator用于卡片界面(BillCardPanel)的用戶定義屬性展現(xiàn)、UserdefitemBillListDataPreparator用于列表界面(BillListPanel)的用戶定義屬性展現(xiàn)。如果當(dāng)前界面的單據(jù)模板是由元數(shù)據(jù)生成的、并且僅主實(shí)體需要處理用戶定義屬性,則僅需為上述preparator設(shè)置context構(gòu)造子參數(shù)即可(注意,context應(yīng)包含正確的組織信息)。配置樣例如下:<beanid="areaeditor"class="nc.ui.bd.cust.areaclass.view.AreaClassEditor"init-method="initUI"><property<property<property<beanname="model"ref="appmodel"></property>name="nodekey"><value>areaelass</value></property>name="userdefitemPreparator">class="nc.ui.uif2.editor.UserdefitemBillDataPreparator"><construetor-arg><refbean="eontext"/></eonstruetor-arg></bean></property></bean>如果當(dāng)前界面的單據(jù)模板不是元數(shù)據(jù)生成的、或者要同時(shí)展現(xiàn)表頭及表體的用戶定義屬性,則除需要為上述preparator設(shè)置context構(gòu)造子參數(shù)外,還需要為其設(shè)置用戶定義屬性組的編碼或名稱、以及用戶定義屬性字段的前綴;如果需要在表體展現(xiàn)用戶定義屬性,還需要指定表體所在頁簽的頁簽編碼。配置樣例如下:<beanname="userdefitemPreparator"class="nc.ui.uif2.editor.UserdefitemBillDataPreparator"><construetor-arg><refbean="eontext"/></eonstruetor-arg><propertyname="headUserdefitemPrefix"value="zxy"/><propertyname="headUserdefruleName"value="人員檔案"/><propertyname="bodyTabCodes"><list><value>psnjobs</value><value>psnfund</value></list></property><propertyname="bodyUserdefitemPrefixs"><list><value>def</value><value>vdef</value></list></property><propertyname="bodyUserdefruleNames"><list><value>人員任職信息</value><value>人員備用金</value></list></property></bean><!--卡控件--><beanid="billFormEditor"elass="ne.ui.bd.psn.psndoe.view.PsndoeEditor"init-method="initUI"><propertyname="userdefitemPreparator"ref="userdefitemPreparator"/></bean>(2) 需要同時(shí)展現(xiàn)多個(gè)實(shí)體的用戶定義屬性的界面場景1已經(jīng)可以支持多數(shù)應(yīng)用場景,但存在以下兩點(diǎn)弊端:不支持同一表頭/表體展現(xiàn)兩個(gè)不同用戶定義屬性組中的用戶定義屬性如果需要展現(xiàn)多個(gè)用戶定義屬性組的用戶定義屬性,則需要多次遠(yuǎn)程調(diào)用來查詢用戶定義屬性的引用情況。為了解決上述問題,場景2米用了UserDefItemContainer與UserdefitemContainerPreparator/UserdefitemContainerListPreparator配合

使用的方式在界面展現(xiàn)用戶定義屬性。UserDefItemContainer負(fù)責(zé)遠(yuǎn)程查詢界面所需的所有用戶定義屬性組中用戶定義屬性的引用情況,UserdefitemContainerPreparator/UserdefitemContainerListPreparator從UserDefltemContainer中讀取用戶定義屬性的引用情況,并做相應(yīng)處理。首先需要為UserDefItemContainer注射環(huán)境變量context、和查詢參數(shù)歹U表params。params是結(jié)構(gòu)化參數(shù),用于查詢用戶定義屬性組,中需為每個(gè)參數(shù)指定用戶定義屬性組編碼(rulecode)或?qū)嶓w元數(shù)據(jù)全名(mdfullname,即卩namespace.entityname)中的一個(gè)即可。這里不再支持按用戶定義屬性組名稱查找用戶定義屬性組。之后,需要為每個(gè)iEditor配置相應(yīng)的UserdefitemContainerPreparator或每個(gè)preparator必須指定對應(yīng)的UserDefItemContainer每個(gè)preparator必須指定對應(yīng)的UserDefItemContainer,另外還需要指定一個(gè)格式化參數(shù)列表,每個(gè)參數(shù)對應(yīng)一個(gè)用戶定義中參數(shù)的相應(yīng)UserdefitemContainerListPreparator。屬性組的展現(xiàn),其中rulecode和mdfullname與UserDefItemContainer屬性含義相同,并且前后要保持一致,以便preparator能根據(jù)參數(shù)從UserDefItemContainer讀取用戶定義屬性的引用情況(如contain中參數(shù)指定的是rulecode,J則在之后的preparator中也應(yīng)扌旨定rulecode,且值應(yīng)相同)。一■個(gè)preparator可以有一組參數(shù),因此可以展現(xiàn)多個(gè)用戶定義屬性組中的用戶定義屬性。配置樣例如下:<beanid="userdefitemContainer"class="nc.ui.uif2.userdefitem.UserDefltemContainer"><propertyname="context"ref="context"/><propertyname="params"><list><beanclass="nc.ui.uif2.userdefitem.QueryParam"><propertyname="mdfullname"value="md1.entity1"/></bean><beanclass="nc.ui.uif2.userdefitem.QueryParam"><propertyname="rulecode"value="rulecode1"/></bean><beanclass="nc.ui.uif2.userdefitem.QueryParam"><propertyname="mdfullname"value="md2.entity2"/></bean><beanclass="nc.ui.uif2.userdefitem.QueryParam"><propertyname="rulecode"value="rulecode2"/></bean></list></property></bean><beanid="headEditor"class="nc.ui.uif2.editor.BillForm"init-method="initUI"><propertyname="userdefitemListPreparator"><beanid="userdefitemListPreparator"class="nc.ui.uif2.editor.UserdefitemContainerPreparator"><propertyname="container"ref="userdefitemContainer"/><propertyname="params"><list><beanclass="nc.ui.uif2.editor.UserdefQueryParam"><propertyname="mdfullname"value="md1.entity1"/><propertyname="pos"value="0"/><propertyname="prefix"value="def"/></bean><beanclass="nc.ui.uif2.editor.UserdefQueryParam"><propertyname="rulecode"value="rulecode1"/><propertyname="pos"value="0"/><propertyname="prefix"value="vdef"/></bean><beanclass="nc.ui.uif2.editor.UserdefQueryParam"><propertyname="mdfullname"value="md2.entity2"/><propertyname="pos"value="1"/><propertyname="prefix"value="zyx"/></bean><beanclass="nc.ui.uif2.editor.UserdefQueryParam"><propertyname="rulecode"value="rulecode2"/><propertyname="pos"value="1"/><propertyname="prefix"value="userdef"/></bean></list></property></bean></property></bean>(3) 支持動態(tài)擴(kuò)展機(jī)制的界面上述兩種方法均可實(shí)現(xiàn)動態(tài)擴(kuò)展界面的用戶定義屬性展現(xiàn),但方法一需要在擴(kuò)展點(diǎn)和擴(kuò)展頁簽分另U配置UserdefitemBillDataPreparator或UserdefitemBillListDataPreparator,這樣會造成多次遠(yuǎn)程調(diào)用,因此在此場景下,建議使用場景2的方法,但這時(shí)需要在擴(kuò)展頁簽中引用preprocessor,以便為UserDefltemContainer動態(tài)注射查詢參數(shù)。擴(kuò)展頁簽在preprocessor的初始化方法會在srpingbeans實(shí)例化之前調(diào)用,因此可以在UserDefltemContainer進(jìn)行遠(yuǎn)程查詢前動態(tài)收集所有頁簽用戶定義屬性的查詢條件。配置樣例如下:擴(kuò)展點(diǎn)配置信息:<beanid="userdefitemContainer"class="nc.ui.uif2.userdefitem.UserDefltemContainer"><propertyname="context"ref="context"/><propertyname="params"><list><beanid="customerUserdefitemParam"class="nc.ui.uif2.userdefitem.QueryParam"><propertyname<propertyname="value="uap.customer"</bean></list></property></bean><beanid="baseinfoEditor"class="nc.ui.bd.cust.baseinfo.editor.CustBaseInfoEditor"init-method="initUI"><propertyname="userdefitemPreparator"><beanclass="nc.ui.uif2.editor.UserdefitemContainerPreparator"><propertyname="container"ref="userdefitemContainer"/><propertyname="params"><list><beanname="cardUserdefitemQueryParam"class="nc.ui.uif2.editor.UserdefQueryParam"><propertyname="mdfullname"value="uap.customer"/><propertyname="pos"value="0"/><propertyname="prefix"value="def"/></bean></list></property></bean></property></bean>擴(kuò)展頁簽配置信息:<beanid="userdefitemFinancePreprocessor"class="nc.ui.uif2.editor.UserdefitemUIPreprocessor"init-method="init">

<propertyname="container"ref="userdefitemContainer"/><propertyname="params"><list><beanclass="nc.ui.uif2.userdefitem.QueryParam"><propertyname="mdclassname"value="uap.custfinance"/></bean></list></property></bean><beanid="custFinanceEditor"class="nc.ui.bd.cust.finance.view.CustFinanceEditor"init-method="initUI"><propertyname="userdefitemPreparator"><beanclass="nc.ui.uif2.editor.UserdefitemContainerPreparator"><propertyname="container"ref="userdefitemContainer"/><propertyname="params"><list><beanclass="nc.ui.uif2.editor.UserdefQueryParam"><propertyname="mdfullname"value="uap.custfinance"/><propertyname="pos"value="0"/><propertyname="prefix"value="def"/></bean></list></property></bean></property></bean>其中,擴(kuò)展頁簽中的UserdefitemUIPreprocessor指定了對應(yīng)的擴(kuò)展點(diǎn)中的userdefitemContainer,并且指定了自己的查詢參數(shù)。在擴(kuò)展點(diǎn)的userdefitemContainer執(zhí)行查詢前,UserdefitemUIPreprocessor會將本頁簽配置的查詢參數(shù)注射到擴(kuò)展點(diǎn)userdefitemContainer的參數(shù)列表params中,以便擴(kuò)展點(diǎn)的userdefitemContainer能一次查詢所有頁簽的用戶定義屬性引用情況。(4) 以上方法的比較就上述三個(gè)場景進(jìn)行比較,實(shí)現(xiàn)用戶定義屬性顯示通過可通過配置UserdefitemBillDataPreparator/UserdefitemBillListDataPreparator,或通過配置UserDefItemContainer配合UserdefitemContainerPreparator/UserdefitemContainerListPreparator實(shí)現(xiàn)。大多數(shù)情況(即除去單據(jù)模板同一區(qū)域顯示多個(gè)用戶定義屬性組的用戶定義屬性的場景)下,兩種方式都能實(shí)現(xiàn)。前者簡單但可能需要多次遠(yuǎn)程查詢,后臺配置麻煩但能夠一次查詢界面所需的所有用戶定義屬性引用情況。因此建議使rnI—:-fv.用后者。3.5.3其他情況的處理方法如果以上兩種場景都無法滿足界面開發(fā)的需要,則需要開發(fā)人員自己調(diào)用工具類來設(shè)置用戶定義屬性的界面顯示了。列表界面和卡片界面分別提供nc.ui.bill.tools.UserDefItemListTools和nc.ui.bill.tools.UserDefItemTools兩個(gè)工具類,這兩個(gè)工具類分別提供了根據(jù)用戶定義屬性組編碼、用戶定義屬性級名稱、引用用戶定義屬性組的實(shí)體ID等信息初始化單據(jù)模板的方法,具體API如下(僅以UserDefItemTools為例):/***根據(jù)表體業(yè)務(wù)實(shí)體的元數(shù)據(jù)ID,更新表體用戶定義屬性字段的展現(xiàn)屬性?*適用于已知引用用戶定義屬性組的業(yè)務(wù)實(shí)體的元數(shù)據(jù)ID的場景.@paramdata業(yè)務(wù)實(shí)體的單據(jù)模板數(shù)據(jù)@parambeanlD表體的業(yè)務(wù)實(shí)體元數(shù)據(jù)ID@paramtabcode表體編碼@paramprefix表體用戶定義屬性字段的前綴@parampk_org當(dāng)前組織主鍵*/publicstaticvoidupdateBodyItemByDef(BillDatadata,StringbeanID,Stringtabcode,Stringprefix,Stringpk_org);/***根據(jù)表體實(shí)體關(guān)聯(lián)的用戶定義屬性組編碼,更新表體用戶定義屬性字段的展現(xiàn)屬性?*適用于僅知道關(guān)聯(lián)的用戶定義屬性組編碼的場景?@paramuserdefruleCode表體實(shí)體關(guān)聯(lián)的用戶定義屬性組編碼@paramdata業(yè)務(wù)實(shí)體的單據(jù)模板數(shù)據(jù)@paramtabcode表體編碼@paramprefix表體用戶定義屬性字段的前綴@parampk_org當(dāng)前組織主鍵*/publicstaticvoidupdateBodyItemByUserdefruleCode(StringuserdefruleCode,BillDatadata,Stringtabcode,Stringprefix,Stringpk_org);/***根據(jù)表體實(shí)體關(guān)聯(lián)的用戶定義屬性組名稱,更新表體用戶定義屬性字段的展現(xiàn)屬性?*適用于僅知道關(guān)聯(lián)的用戶定義屬性組名稱的場景?@paramuserdefruleName表體實(shí)體關(guān)聯(lián)的用戶定義屬性組名稱@paramdata業(yè)務(wù)實(shí)體的單據(jù)模板數(shù)據(jù)@paramtabcode表體編碼@paramprefix表體用戶定義屬性字段的前綴@parampk_org當(dāng)前組織主鍵*/publicstaticvoidupdateBodyItemByUserdefruleName(StringuserdefruleName,BillDatadata,Stringtabcode,Stringprefix,Stringpk_org);/***根據(jù)單據(jù)模板中表體實(shí)體的元數(shù)據(jù),更新表頭用戶定義屬性的元數(shù)據(jù)屬性.*適用于業(yè)務(wù)實(shí)體的單據(jù)模板由元數(shù)據(jù)生成的場景,這時(shí)單據(jù)模板本身記錄了表體業(yè)*務(wù)實(shí)體的元數(shù)據(jù)ID.*@paramdata業(yè)務(wù)實(shí)體的單據(jù)模板數(shù)據(jù)*@paramtabcode表體編碼*@paramprefix表體用戶定義屬性字段的前綴*@parampk_org當(dāng)前組織主鍵*/publicstaticvoidupdateBodyMetaDataItemByDef(BillDatadata,Stringtabcode,Stringprefix,Stringpk_org);/***用戶表頭關(guān)聯(lián)的用戶定義屬性組編碼,更新表頭用戶定義屬性組的展現(xiàn)屬性.*適用于僅知道關(guān)聯(lián)的用戶定義屬性組編碼的場景.*@paramuserdefrule

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論