NCV5-自定義技術(shù)紅皮書.doc_第1頁
NCV5-自定義技術(shù)紅皮書.doc_第2頁
NCV5-自定義技術(shù)紅皮書.doc_第3頁
NCV5-自定義技術(shù)紅皮書.doc_第4頁
NCV5-自定義技術(shù)紅皮書.doc_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

自定義技術(shù)紅皮書NC-UAP 5.0用友NC-UAP2019-11-14目 錄第一章前言1第二章自定義項(xiàng)引用節(jié)點(diǎn)展現(xiàn)21.實(shí)現(xiàn)方式22.需要產(chǎn)品組配合的工作22.1預(yù)制腳本22.2程序中向bd_defused表中插入數(shù)據(jù)3第三章自定義項(xiàng)引用校驗(yàn)41.V5以前版本自定義項(xiàng)引用的檢查的注冊機(jī)制及其存在的弊端41.1自定義項(xiàng)引用節(jié)點(diǎn)修改某個自定義項(xiàng)的引用關(guān)系的校驗(yàn):41.2刪除校驗(yàn)42.V5中單據(jù)或檔案自定義項(xiàng)使用了統(tǒng)計(jì)型自定義項(xiàng)后的檢查分析52.1應(yīng)用場景52.2解決方案53.總結(jié):需要產(chǎn)品組配合的工作73.1提供預(yù)制腳本73.2刪除以前版本中在bd_ref_relation表中預(yù)置的腳本7第四章自定義項(xiàng)使用后的顯示81.通用情況82.特殊情況和特殊需求83.工具類設(shè)計(jì)84.工具類使用說明94.1卡片界面引用自定義項(xiàng)的顯示:94.2列表界面引用自定義項(xiàng)的顯示104.3管理界面引用自定義項(xiàng)的顯示105.使用舉例106.特殊情況的處理106.1查找自定義項(xiàng)的引用情況106.2初始化自定義項(xiàng)106.3顯示引用了的自定義項(xiàng)11第五章自定義項(xiàng)使用后的打印121.統(tǒng)計(jì)型自定義項(xiàng)打印涉及的修改122.把統(tǒng)計(jì)型自定義項(xiàng)的主鍵翻譯成名稱的方法123.使用舉例124.類圖13第六章自定義項(xiàng)檔案的升級API141.API介紹142.本升級方案的前提143.升級方案143.1普通情況的升級143.2一張表中保存了兩種或多種數(shù)據(jù)的單據(jù)或檔案的升級153.3自定義項(xiàng)字段與業(yè)務(wù)字段不在同一張表的情況下的升級15第七章附錄161.升級接口JAVADOC163第 頁第一章 前言自定義項(xiàng)管理包括定義自定義項(xiàng)、引用自定義項(xiàng)及自定義項(xiàng)檔案定義。主要解決系統(tǒng)業(yè)務(wù)單據(jù)中已有項(xiàng)目不能滿足實(shí)際需要時,可以在系統(tǒng)中設(shè)置自定義項(xiàng),并在單據(jù)中引用。較之以前版本,V5.0從效率和易用性上有比較大的改變,具體體現(xiàn)在如下幾個方面:l 任何檔案的自定義項(xiàng)都可以引用基本檔案、自定義項(xiàng)檔案。例如:存貨管理檔案的自定義項(xiàng)1可以引用自定義項(xiàng)檔案、也可以引用任何基本檔案(包括存貨管理檔案它自己)。l 檔案或單據(jù)的自定義項(xiàng)使用后,如果使用的是統(tǒng)計(jì)性自定義項(xiàng),則保存的都是被引用檔案的主鍵。例如:存貨的自定義項(xiàng)1引用了客商管理檔案,則存貨的自定義項(xiàng)1中保存的是客商管理檔案的主鍵。(以前保存的可能是主鍵、也有可能是名稱)。l 自定義項(xiàng)引用節(jié)點(diǎn)的展現(xiàn)方式的改變。我們提供了一些API或注冊機(jī)制以幫助開發(fā)人員快速實(shí)現(xiàn)上述這些改變。本文的目的是對這些API或者注冊機(jī)制進(jìn)行詳細(xì)的描述,以供開發(fā)人員參考。第二章 自定義項(xiàng)引用節(jié)點(diǎn)展現(xiàn)本章指的是自定項(xiàng)引用節(jié)點(diǎn)的界面展現(xiàn)方式的改變,著眼于實(shí)現(xiàn)V5的如下新需求:修改該檔案的展現(xiàn)方式。完全列表的方式不便于應(yīng)用,修改為左邊是進(jìn)行自定義項(xiàng)引用的對象樹(都是平級的)(如果可能按照產(chǎn)品模塊構(gòu)造樹),右側(cè)是該對象包含的自定義項(xiàng)列表。需求條目:B05090109解決版本:V51. 實(shí)現(xiàn)方式為了實(shí)現(xiàn)自定義項(xiàng)引用的展現(xiàn)方式,并且“按照產(chǎn)品模塊構(gòu)造樹”,決定在bd_defused表中增加一個字段fun_code,其數(shù)據(jù)類型是varchar(60)。用來存儲某功能節(jié)點(diǎn)所屬模塊的功能節(jié)點(diǎn)號。例如:客商檔案和存貨檔案都是數(shù)據(jù)客戶話的基本檔案,所以客商和存貨的自定義項(xiàng)引用在bd_defused表中的預(yù)制數(shù)據(jù)的fun_code的值都是“1008”(基本檔案的功能節(jié)點(diǎn)號是1008)2. 需要產(chǎn)品組配合的工作2.1 預(yù)制腳本凡是在安裝盤中對表bd_defused進(jìn)行預(yù)制數(shù)據(jù)的腳本都需要修改,添加對該表新加字段fun_code的初始值,其值是功能節(jié)點(diǎn)所屬模塊的功能節(jié)點(diǎn)號。例如:原預(yù)制腳本:insert into bd_defused(pk_defused,objcode,objname,defnum,freenum,pk_corp,ts,dr) values( secent00000000000001,secent,結(jié)算中心,20,0,null,2001-09-17 13:57:39,0)修改后預(yù)制腳本(由于“結(jié)算單位”是屬于“基本檔案”,其功能節(jié)點(diǎn)號是:1008):insert into bd_defused (pk_defused, objcode, objname, defnum, freenum, pk_corp, ts, dr, fun_code) values( secent00000000000001,secent,結(jié)算中心,20,0,null,2001-09-17 13:57:39,0,1008)2.2 程序中向bd_defused表中插入數(shù)據(jù)現(xiàn)在只發(fā)現(xiàn)基本檔案中的“項(xiàng)目檔案”存在此種用法,如果還有其他產(chǎn)品組存在此種用法,請?zhí)砑有录幼侄蔚念A(yù)制值。第三章 自定義項(xiàng)引用校驗(yàn)本章講的自定義項(xiàng)引用的校驗(yàn)主要指如下兩方面:其一,自定義項(xiàng)引用節(jié)點(diǎn)修改某個自定義項(xiàng)的引用關(guān)系的校驗(yàn):例如:客商檔案的自定義項(xiàng)1引用了自定義項(xiàng)檔案“明族”,并且在某條具體的客商檔案數(shù)據(jù)中的自定項(xiàng)1保存了具體的某個民族(如:漢族),如果在自定項(xiàng)檔案中又想把客商檔案的自定義1修改為自定義項(xiàng)檔案“學(xué)歷”,這就會在客商檔案表中導(dǎo)致錯誤數(shù)據(jù),所以要做此校驗(yàn)。其二,就是刪除校驗(yàn)。1. V5以前版本自定義項(xiàng)引用的檢查的注冊機(jī)制及其存在的弊端1.1 自定義項(xiàng)引用節(jié)點(diǎn)修改某個自定義項(xiàng)的引用關(guān)系的校驗(yàn):以前版本中不管具體檔案或單據(jù)中是否真正使用了該引用的自定義項(xiàng),在自定義項(xiàng)引用節(jié)點(diǎn)中都沒法修改該單據(jù)或檔案的自定義項(xiàng)引用。1.2 刪除校驗(yàn)V5以前采用的是使用向表bd_ref_relation表中注冊默認(rèn)腳本的方式來實(shí)現(xiàn)的。例如:客商管理檔案有30個自定義項(xiàng)(def1.def30),按照以前的做法,就往bd_ref_relation表中注冊了30條語句,認(rèn)為被引用表都是bd_defdoc。這種默認(rèn)注冊機(jī)制存在以下弊端:單據(jù)或檔案自定義項(xiàng)引用后保存名稱這種情況下,以前的版本沒有做引用檢查。例如:客商的自定義項(xiàng)1引用了自定義項(xiàng)檔案“民族”,某條具體客商記錄中的def1保存了“漢族”這個民族自定義項(xiàng)檔案內(nèi)容的名稱,則在刪除自定義項(xiàng)檔案“民族”的檔案內(nèi)容“漢族”時,是檢查不到客商的自定義項(xiàng)1已經(jīng)使用過它的,從而導(dǎo)致刪除了不該刪的數(shù)據(jù)。單據(jù)或檔案自定義項(xiàng)引用后保存主鍵沿用上面的例子:客商的自定義項(xiàng)1引用了自定義項(xiàng)檔案“民族”,某條具體客商記錄中的def1保存了“漢族”這個民族自定義項(xiàng)檔案內(nèi)容的主鍵,則在刪除自定義項(xiàng)檔案“民族”的檔案內(nèi)容“漢族”時,可以通過自定義項(xiàng)引用檢查,得知客商的def1已經(jīng)使用了該自定義項(xiàng)檔案內(nèi)容,不能刪除該自定義項(xiàng)檔案。由于向表bd_ref_relation表中注冊的信息太多,會導(dǎo)致性能低下例如:客商管理檔案有30個自定義項(xiàng)(def1.def30),按照以前的做法,就往bd_ref_relation表中注冊了30條語句,認(rèn)為被引用表都是bd_defdoc(現(xiàn)在這種認(rèn)為是錯誤的)!而在實(shí)際情況中,這30個自定義項(xiàng)極為少數(shù)的情況能都用上(即使用上也不一定都是統(tǒng)計(jì)型的),但是在引用檢查時就需要檢查30次了。如果引用的不是自定義檔案,而是引用基本檔案,則以前沒有辦法做校驗(yàn)例如:如果客商檔案通過自定義的方式引用的存貨檔案,根據(jù)以前的機(jī)制,在刪除某存貨檔案時,是沒法去校驗(yàn)該存貨是否被某個客商檔案引用了。2. V5中單據(jù)或檔案自定義項(xiàng)使用了統(tǒng)計(jì)型自定義項(xiàng)后的檢查分析基于V5自定義項(xiàng)檔案部分的最新情況,也為了解決單據(jù)或檔案的自定項(xiàng)使用了統(tǒng)計(jì)型自定義項(xiàng)后引用檢查存在的問題(如果引用的是基本檔案,則不能檢查;檢查的時候性能低下)。我們有了如下的解決方案:按需注冊正確的引用腳本。2.1 應(yīng)用場景A. 定義一個統(tǒng)計(jì)型自定義項(xiàng)“AAAA”,讓他引用“存貨管理檔案”B. 在自定義項(xiàng)引用處,讓客商管理檔案的自定義項(xiàng)1,引用“AAAA”,此時在bd_ref_relation表中注冊一條信息(如果修改成其他的統(tǒng)計(jì)型自定義項(xiàng),也要相應(yīng)的修改,如果修改成非統(tǒng)計(jì)型自定義項(xiàng)檔案,擇需要刪除注冊信息):主鍵引用表名引用字段名被引用表名被引用字段名Pk1客商管理檔案表客商管理檔案的def1存貨管理檔案表明存貨管理檔案主鍵名C. 修改統(tǒng)計(jì)型自定義項(xiàng)“AAAA”,讓他引用“民族”(自定義項(xiàng)檔案),則修改B在表bd_ref_relation中插入的注冊信息(如果已經(jīng)被引用了的統(tǒng)計(jì)型自定義項(xiàng)也不能修改了,則不需要做此處理)主鍵引用表名引用字段名被引用表名被引用字段名Pk1客商管理檔案表客商管理檔案的def1自定義項(xiàng)檔案表名自定義項(xiàng)項(xiàng)檔案主鍵名2.2 解決方案為了實(shí)現(xiàn)上述引用場景,我們主要需要解決獲取“引用表名”、“被引用表名”、“被引用字段名”的問題。2.2.1 獲取引用表名由于自定義項(xiàng)引用表中,只能知道某個選擇的自定義項(xiàng)引用記錄是屬于哪個檔案的(例如客商管理檔案),具體哪個檔案有哪幾個表并不清楚,所以我們新加一個表:bd_defcsttblnme字段名字段含義字段含義pk_defcsttblnme主鍵,本表的主鍵pk_defused自定義項(xiàng)使用表主鍵,bd_defused表的主鍵,一個主鍵對應(yīng)一個檔案,例如,客商管理檔案對應(yīng)的主鍵是:sm000000000000000003tablename表名,某個檔案對應(yīng)的表名checkclassname在自定義項(xiàng)引用節(jié)點(diǎn)中,校驗(yàn)?zāi)匙远x項(xiàng)引用是否可以修改的類,該類需要實(shí)現(xiàn)接口:nc.bs.bd.def.ICheckDefquoteCanChg如果此校驗(yàn)沒什么特殊性,則不需要注冊。例如:如果修改公司目錄的自定義項(xiàng),則交驗(yàn)規(guī)則其實(shí)就是根據(jù)select count(*) from bd_corp where def1 is not null or rtrim(def1)這條語句返回值來判斷,如果返回值為0,則認(rèn)為公司目錄還沒有真正使用該自定義項(xiàng),可以修改,否則,就不能修改了。這種情況下,就不需要注冊了,自定義項(xiàng)提供了默認(rèn)的實(shí)現(xiàn)(默認(rèn)實(shí)現(xiàn)類是nc.bs.bd.def.DefaultChkDefquoteCanChg)。例如:項(xiàng)目管理檔案的各個公司的自定義項(xiàng)可以引用不同的檔案,這種情況下不是一條普通語句就能判斷是否可以修改,就需要注冊交驗(yàn)該字段。fieldclassname如果在bd_defquote表中注冊的字段名和實(shí)際表中的字段名不一致,需要注冊一個類,該類實(shí)現(xiàn)如下接口nc.bs.bd.def.IRegistFieldContrastTableField我們需要在安裝盤中提供這個表的預(yù)制數(shù)據(jù)。需要產(chǎn)品組提供本表的預(yù)制腳本。一個檔案或單據(jù),可能會牽涉到多個表,例如,供應(yīng)鏈單據(jù)頭,可能牽涉到多個表,則需要在此表中預(yù)制多條數(shù)據(jù)。2.2.2 獲取被引用表名和被引用字段名可以通過這個自定義項(xiàng)引用的自定義檔案所對應(yīng)的bdinfo中獲取。2.2.3 由此引起的其他變化自定義項(xiàng)定義處,統(tǒng)計(jì)型的自定義項(xiàng)定義,如果被引用,則不能修改(以前是提示“請謹(jǐn)慎修改!”);自定義項(xiàng)引用處,如果引用的是統(tǒng)計(jì)型自定義項(xiàng)定義,則判斷該統(tǒng)計(jì)型自定義項(xiàng)定義是否參照了檔案,如果沒有,則報錯“您引用的是統(tǒng)計(jì)型自定義項(xiàng),請先關(guān)聯(lián)檔案后在引用!”(以前沒有這種判斷)3. 總結(jié):需要產(chǎn)品組配合的工作3.1 提供預(yù)制腳本本工作需要產(chǎn)品組做的事只有一件,就是提供表bd_defcsttblnme的預(yù)制腳本。這個預(yù)制腳本的形式如下(如果checkclassname字段和fieldclassname需要預(yù)置的話,):Insert into bd_defcsttblnme(pk_defcsttblnme, pk_defused, tablename, checkclassname, fieldclassname, dr, ts) values (BD000000000000000001, sm000000000000000003,bd_cubasdoc,0, null, null 2006-06-08 13:57:39)3.2 刪除以前版本中在bd_ref_relation表中預(yù)置的腳本由自定義項(xiàng)引用引起的一些在表bd_ref_relation中的預(yù)制腳本需要刪除,這些腳本可以用如下一條語句來找出:select * from bd_ref_relation where (referencingtablecolumn like def_ or referencingtablecolumn like def_ ) and referencedtablename=bd_defdoc第四章 自定義項(xiàng)使用后的顯示本章介紹利用單據(jù)模板開發(fā)的單據(jù)或者檔案使用了自定義項(xiàng)后的顯示問題。具體介紹程序員經(jīng)常使用的API。1. 通用情況對于用單據(jù)模板來開發(fā)UI界面的單據(jù)(或基本檔案)使用自定義項(xiàng),一般都需要做如下幾件事:l 該單據(jù)的自定義項(xiàng)引用是否引用了自定義項(xiàng)定義;l 如果引用了,根據(jù)自定義項(xiàng)定義的數(shù)據(jù)類型,在界面上顯示不同的控件;l 不同的數(shù)據(jù)類型,分別需要進(jìn)行如下的處理: 日期:日期參照 備注:字符錄入框(需要限定可錄入長度,為100) 統(tǒng)計(jì):參照 數(shù)字:數(shù)字錄入框(需要判斷小數(shù)位數(shù)和錄入長度);2. 特殊情況和特殊需求另外,在研究基本檔案各個功能節(jié)點(diǎn)的自定義項(xiàng)引用情況發(fā)現(xiàn)有如下一些比較特殊的情況:單據(jù)模板上顯示自定義項(xiàng)一般指的是在卡片界面、列表界面顯示自定義項(xiàng)。同時卡片和列表的表頭和表體都有可能有自定義項(xiàng)。表頭自定義項(xiàng)和表體自定義項(xiàng)都可能來自多個自定義項(xiàng)引用,例如:存貨管理檔案的表頭自定義項(xiàng)來自“存貨管理檔案”和“存貨檔案”、客商管理檔案的自定義項(xiàng)來自“客商管理檔案”和“客商檔案”等。在項(xiàng)目支持過程中,有客戶提出這樣的需求:存貨基本檔案的自定義項(xiàng)即時引用了,也不是一定需要顯示,只有集團(tuán)用戶登錄的時候才需要顯示。3. 工具類設(shè)計(jì)針對如上特殊情況和需求,對單據(jù)模板使用自定義項(xiàng)的UI,設(shè)計(jì)了如下一些工具類(類圖):4. 工具類使用說明4.1 卡片界面引用自定義項(xiàng)的顯示:如果是卡片界面需要顯示引用的自定義項(xiàng),則需要在加載界面時插入如下代碼:String strDefObjs=new String 結(jié)算單位; String strPrefix=new String def; new CardDefShowUtil(this.getBillCardPanel().showDefWhenRef(strDefObjs, strPrefix,true);如果不想引用就顯示,而是根據(jù)單據(jù)模板自定義項(xiàng)的設(shè)置情況進(jìn)行顯示,可以自己實(shí)現(xiàn)顯示策略:實(shí)現(xiàn)接口IDefShowStrategy impl(如果僅僅是根據(jù)單據(jù)模板原自定義項(xiàng)的顯示情況來判斷是否顯示,可以使用該默認(rèn)實(shí)現(xiàn):nc.ui.trade.bill.DefaultDefShowStrategyByBillItem),得到具體實(shí)現(xiàn)的實(shí)例impl,然后用如下方式調(diào)用:new CardDefShowUtil(this.getBillCardPanel(),impl).showDefWhenRef(strDefObjs, strPrefix,true);4.2 列表界面引用自定義項(xiàng)的顯示如果是列表界面,則用ListDefShowUtil,使用方法與1類似;4.3 管理界面引用自定義項(xiàng)的顯示如果是管理界面,則用ManageDefShowUtil,是用方法與1類似;5. 使用舉例可以參照NC5.0版的如下類:nc.ui.bd.invdoc.InvMandocUI存貨管理檔案nc.ui.bd.invdoc.InvBasDocUI存貨基本檔案nc.ui.bd.settle.SettleUnitUI結(jié)算單位nc.ui.bd.settle.SettleCenterUI結(jié)算中心6. 特殊情況的處理如果用以上工具不能解決問題,可以按照如下步驟來分解處理自定義項(xiàng)引用后的現(xiàn)實(shí)問題。6.1 查找自定義項(xiàng)的引用情況例如:IDef defservice = (IDef)NCLocator.getInstance().lookup(IDef.class.getName(); nc.vo.bd.def.DefVO defs=null;try defs = defservice.queryDefVO(物料生產(chǎn)檔案,getUnitCode(); catch (BusinessException e) Logger.error(e.getMessage(),e);6.2 初始化自定義項(xiàng)例如:getBillListPanel().getBillListData().updateItemByDef(defs,def,true);getBillCardPanel().getBillData().updateItemByDef(defs,def,true);6.3 顯示引用了的自定義項(xiàng)例如:SetDefVisuabled.getInstance().setDefVisuabled(getBillListPanel().getBillListData(),defs,def,true);SetDefVisuabled.getInstance().setDefVisuabled(getBillCardPanel().getBillData(),defs,def,true);如果需要按照策略進(jìn)行顯示,則可以實(shí)像接口nc.ui.trade.bill.IdefShowStrategy,得到具體實(shí)現(xiàn)類的實(shí)例impl(如果僅僅是根據(jù)單據(jù)模板原自定義項(xiàng)的顯示情況來判斷是否顯示,可以使用該默認(rèn)實(shí)現(xiàn):nc.ui.trade.bill.DefaultDefShowStrategyByBillItem),用如下方式調(diào)用:SetDefVisuabled.getInstance(impl).setDefVisuabled(getBillListPanel().getBillListData(),defs,def,true);SetDefVisuabled.getInstance(impl).setDefVisuabled(getBillCardPanel().getBillData(),defs,def,true);第五章 自定義項(xiàng)使用后的打印統(tǒng)計(jì)型自定義項(xiàng)統(tǒng)一存主鍵后,由于打印模板的自定義項(xiàng)是主鍵,所以需要通過一定的方式把主鍵變成名稱,以便于打印。1. 統(tǒng)計(jì)型自定義項(xiàng)打印涉及的修改首先,要修改打印模板(默認(rèn)自定義項(xiàng)是不打印的);其次,修改數(shù)據(jù)源,如果自定義項(xiàng)存的是主鍵,把它翻譯成名稱。2. 把統(tǒng)計(jì)型自定義項(xiàng)的主鍵翻譯成名稱的方法原來的打印,一般都有一個數(shù)據(jù)源(繼承nc.ui.pub.print.IdataSource的接口),我們就叫orign_datasource,我寫了一個裝飾類,用來給原來的數(shù)據(jù)源添加新功能(把統(tǒng)計(jì)型自定義項(xiàng)的主鍵翻譯成名稱的功能)。這個裝飾類為nc.ui.trade.pub.PrtDefDealedDecorator,它也繼承了nc.ui.pub.print.IdataSource接口,同時它把原來的數(shù)據(jù)源(orign_datasource)通過構(gòu)造注入,從而達(dá)到增加需要的功能的要求。同時,該裝飾類的構(gòu)造還需要兩個參數(shù):nc.ui.trade.pub.IcheckIsDef接口的實(shí)現(xiàn):用來判斷某個屬性是否是自定義項(xiàng),有默認(rèn)實(shí)現(xiàn)nc.ui.trade.pub.DefaultCheckIsDef,認(rèn)為以def且長度小于等于5的表達(dá)式, 認(rèn)為以vdef且長度小于等于6的表達(dá)式, 認(rèn)為以cdef且長度小于等于6的表達(dá)式, 認(rèn)為以c.def且長度小于等于7的表達(dá)式開頭的人為是自定義項(xiàng);nc.ui.trade.pub.IgetDefCodeOrName接口的實(shí)現(xiàn):用來獲取統(tǒng)計(jì)型自定義項(xiàng)主鍵對應(yīng)的名稱。有默認(rèn)實(shí)現(xiàn)nc.ui.trade.pub.DefaultGetDefCodeOrName,那些采用本套自定義項(xiàng)顯示機(jī)制(參見第四章)的,可以使用默認(rèn)實(shí)現(xiàn)。3. 使用舉例存貨管理檔案的打印:orign_datasource/獲取原來的數(shù)據(jù)源,認(rèn)為原數(shù)據(jù)源變量名為orign_datasource/*為支持自定義打印需要添加的代碼begin*/IGetDefCodeOrName getdefcodeOrName=new DefaultGetDefCodeOrName(orign_datasource);/獲得IgetDefCodeOrName接口的實(shí)現(xiàn)(此處采用默認(rèn)實(shí)現(xiàn))orign_datasource =new PrtDefDealedDecorator(new DefaultCheckIsDef(),getdefcodeOrName, orign_datasource);/創(chuàng)建裝飾類的實(shí)例,此處采用IcheckIsDef接口的默認(rèn)實(shí)現(xiàn)/*為支持自定義打印需要添加的代碼end*/4. 類圖請參照具體類第六章 自定義項(xiàng)檔案的升級API由于V5各個檔案或者單據(jù)的統(tǒng)計(jì)型自定義項(xiàng)都同意要求保存主鍵,以前有些檔案或者單據(jù)的統(tǒng)計(jì)型自定義項(xiàng)保存的是名稱,這就需要把那些保存名稱的檔案或單據(jù)的統(tǒng)計(jì)型自定義項(xiàng)修改為主鍵。1. API介紹nc.itf.uap.bd.update35to50.IDefDocName2PKForV35Upgrate2V5詳細(xì)信息請?jiān)擃惖腏avaDoc2. 本升級方案的前提要確定一個表的統(tǒng)計(jì)型自定義項(xiàng)都是用一個規(guī)則進(jìn)行保存的。也就是說,不能在同一個表中既有保存名稱的統(tǒng)計(jì)型自定義項(xiàng),又有保存主鍵的統(tǒng)計(jì)型自定義項(xiàng),這種情況本方案不支持。本方案只升級檔案或單據(jù)本身的統(tǒng)計(jì)型自定義項(xiàng),對那些使用這些自定義項(xiàng)的報表或單據(jù)不提供升級。例如,以前可能有些報表要使用統(tǒng)計(jì)型自定義項(xiàng)(由于存的是名稱,可以直接顯示),還有可能其他的單據(jù)又引用了統(tǒng)計(jì)型自定義項(xiàng),對這兩種情況本方案都不支持,需要單獨(dú)處理。要確定的是那些檔案的統(tǒng)計(jì)自定義項(xiàng)需要升級,即哪些檔案或單據(jù)的統(tǒng)計(jì)型自定義項(xiàng)是保存名稱的,對于這樣的檔案都需要升級。本升級方案認(rèn)為每個自定義項(xiàng)檔案的檔案內(nèi)容的名稱都是不重復(fù)的(重復(fù)規(guī)則是集團(tuán)+公司)。3. 升級方案首先要確定哪些檔案或者單據(jù)是需要升級的:那些在以前版本中自定義項(xiàng)中保存的是名稱的單據(jù)或者檔案就需要升級。3.1 普通情況的升級大多數(shù)情況都是一個表只保存一種數(shù)據(jù)的單據(jù)或自定義項(xiàng),而且自定義項(xiàng)是和一般的業(yè)務(wù)數(shù)據(jù)保存在一張表中(固定資產(chǎn)的自定義項(xiàng)是保存在子表中),如果需要區(qū)分公司的話,也是根據(jù)該表中的公司字段來區(qū)分的。也就是說,在自定義項(xiàng)使用表中(bd_defused),只有一條數(shù)據(jù)對應(yīng)于這個表。對于這種情況,可以使用如下工具進(jìn)行升級:nc.itf.uap.bd.update35to50.IDefDocName2PKForV35Upgrate2V5 impl=(nc.itf.uap.bd.update35to50.IDefDocName2PKForV35Upgrate2V5)NCLocator.getInstance().lookup(nc.itf.uap.bd.update35to50.IDefDocName2PKForV35Upgrate2V5.class.getName();impl.upgrateDefDocName2PK(表名,公司字段名);nc.itf.uap.bd.update35to50.IDefDocName2PKForV35Upgrate2V5的詳細(xì)信息請參考附錄1。注意:如果在自定義項(xiàng)引用表中注冊的自定名和實(shí)際表中的字段名不一致的話,可以調(diào)用impl.upgrateDefDocName2PK(表名,公司字段名,映射關(guān)系的HashMap);3.2 一張表中保存了兩種或多種數(shù)據(jù)的單據(jù)或檔案的升級例如:bd_accid表中,即保存了賬戶檔案數(shù)據(jù),有保存了內(nèi)部賬戶數(shù)據(jù);項(xiàng)目管理檔案的數(shù)據(jù)也都保存在一個表中的,但是根據(jù)項(xiàng)目類型來引用自定義項(xiàng)的,也就是說不同的項(xiàng)目類型引用的自定義項(xiàng)檔案也可能不一樣。對于這種情況需要特殊處理。目前只發(fā)現(xiàn)這兩個表有此種情況,已確認(rèn)不需要升級。3.3 自定義項(xiàng)字段與業(yè)務(wù)字段不在同一張表的情況下的升級固定資產(chǎn)有些單據(jù)有200個自定義項(xiàng),把自定義項(xiàng)保存在一個子表中的?,F(xiàn)已確定,固定資產(chǎn)不需要升級!第七章 附錄1. 升級接口JAVADOCnc.itf.uap.bd.update35to50. IDefDocName2PKForV35Upgrate2V5java.lang.StringcheckDefDocNameOrCodeIsRepeate() 檢查bd_defdoc表中名稱是否

溫馨提示

  • 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

提交評論