向?qū)Ь幋a樹卡模型最佳實踐_第1頁
向?qū)Ь幋a樹卡模型最佳實踐_第2頁
向?qū)Ь幋a樹卡模型最佳實踐_第3頁
向?qū)Ь幋a樹卡模型最佳實踐_第4頁
向?qū)Ь幋a樹卡模型最佳實踐_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、一、環(huán)境準備1二、創(chuàng)建工程22.1新建項目22.2新建組件項目32.3新增業(yè)務組件32.4工程目錄4模塊菜單6三、3.1前準備63.2 功能. 83.2.1 一級模塊8模塊.3 模塊初始化93.3 菜單. 103.3.1 一級菜單10菜單113.3.2四、元數(shù)據(jù)設計114.1 新建元數(shù)據(jù)114.1.1 新增實體組件124.1.2 導入模型文件134.2 模型設計器說明144.3 元數(shù)據(jù)設計說明144.3.1 組件信息設置144.3.2 實體屬性設置154.3.3 實體模型視圖設置164.3.4 接口、枚舉等信息設置184.5 發(fā)布元數(shù)據(jù)194.5.1 發(fā)布元數(shù)據(jù)194.5.2

2、 生成 java 源代碼204.5.3生成 sql并執(zhí)行214.6 本章小結224.7 附:相關知識224.6.1 代碼風格22器類型.3 元數(shù)據(jù)常用接口234.6.4 發(fā)布元數(shù)據(jù)涉及到的數(shù)據(jù)庫表244.6.5 序列化文件文件. 294.6.6 生成 javaVO 源代碼分析294.6.7 生成 sql結構目錄分析304.6.8 導出為 pdm(.xml)文件344.6.9 導出為圖片354.6.10 導入屬性354.6.11 導出多語364.6.12 導出特性37在 Wizard 生成代碼37五、5.1 新建主子表單據(jù)節(jié)點385.2 樹的類型選擇385.3 基本信息設置3

3、95.3.1 通過“瀏覽”Excel 獲取相關功能和菜單信息405.3.2 手動設置功能和菜單信息435.4功能設置445.5包名、接口信息設置455.5參數(shù)設置465.6多語設置485.7生成信息485.8走完向?qū)Тa結構說明495.8.1 公共類 public 代碼505.8.2 前臺類 client 代碼505.8.3 類 private 代碼515.8.4 resource 文件夾535.8.5 其他. 535.8.6 附:相關知識54六、節(jié)點權限分配55七、改造本案例587.1 單據(jù)模板的改造587.2代碼修改607.3配置文件修改637.4運行效果如下64樹卡模式向?qū)е械氖亲髽溆铱?/p>

4、的模式,并沒有左邊是樹、右邊是主子表的這種模式、現(xiàn)在通過向?qū)傻臉淇?、通過改造可以支持左邊是樹、右邊是主子表的這種方式、效果如下圖所示:下面講解開發(fā)的過程:一、環(huán)境準備環(huán)境準備主要涉及到數(shù)據(jù)庫和uap studio 的配置: 數(shù)據(jù)庫:需要是 V63 版本的庫。Uap studio 配置:需要正確配置數(shù)據(jù)源、開發(fā)者信息等其他信息;該項配置可在studio 界面菜單欄中窗口à首選項中配置。詳細請參閱UAP 環(huán)境初始化操作手冊.docxUAP 培訓案例系列 1 UAP-主子型開發(fā)二、創(chuàng)建工程首先需要建立合適的項目,下面是如何建立項目的簡單介紹:2.1 新建項目Uap studio 界面&

5、#224;文件à新建à其它àMDE 開發(fā)à業(yè)務組件項目:選擇向?qū)I(yè)務組件項目和模塊項目的區(qū)別(環(huán)境安裝文檔)UAP 培訓案例系列 2 UAP-主子型開發(fā)UPM 文件:需要選定某個項目,為該項目新建UPM 文件新增業(yè)務組件:需要選定某個項目,為該項目新建業(yè)務組件。2.2 新建組件項目繼續(xù)下一步:創(chuàng)建新的模塊項目,填寫項目名稱、模塊名稱信息,勾選是否開發(fā)模塊信息以及模塊配置文件默認 module.xml。詳細配置,此處以 testdemo 為例。注意:項目名稱和模塊名稱不需要一致,它們沒有直接關系; 模塊名稱:部署環(huán)境里 modules 下的各個目錄,比如

6、ua里的 module 是平級的。pbd,uapeai 等,部署環(huán)境從 CVS 檢出代碼:擇從 CVS 服務器中簽出代碼,在后續(xù)的向?qū)ы撝袝占嚓P信息。是否開發(fā)模塊信息:選擇是,會自表 md_module 中模塊信息;如果此處忘記勾選可以通過以下方式進行手動置的信息即可。,格式:只需要將涉及到的模塊信息換成設2.3 新增業(yè)務組件選擇新增業(yè)務組件:填寫名稱、顯示名稱再確定,此處我們以codetreedemo為例。該操作主要是為了剛建立的項目新建業(yè)務組件,其中名稱決定了生成的業(yè)務組件根目錄的名稱也是其UAP 培訓案例系列 3 UAP-主子型開發(fā)insert into md_module (cre

7、atetime, creator, description, displayname, dr, help, id, isactive, modifier, modifytime, name, parentmoduleid, resid,resmodule, ts, versiontype)values ('2013-08-21 14:40:10', ' UAP-STUDIO ', 'testdemo', ' testdemo', 0, 'testdemo', 'testdemo', 'Y&#

8、39;, ' UAP-STUDIO ', '2013-08-21 14:40:10', 'testdemo', NULL, NULL, NULL, '2013-08-21 14:40:10', 0);標識。點擊 完成 即完成業(yè)務組件項目的建立。2.4 工程目錄向?qū)瓿蓵梢韵聢D示的項目結構:src 目錄下自動生成 public、client、private、resource和 test 目錄。以及 module.xml 文件。·public:客戶端與服務器都要依賴的代碼放到這個目錄中,比如服務接口和 VO 等。

9、3;client:通常包含 UI 界面,處理,action 等代碼。·private:所有在服務器端運行的代碼都放到這個目錄中。·resource:文件,如多語文件。·test:單元測試等測試代碼。更為詳細的包結構分析參見第四章“走完向?qū)Тa結構說明”。UAP 培訓案例系列 4 UAP-主子型開發(fā)module.xml 文件內(nèi)容如下所示:注意:在以上操作都完成之后,我們需要查看一下 uaphomemodulestestdemoMETA-INF 目錄下是否生成 module.xml 文件。uaphome 使用如下方式打開即可:如果該文件沒有生成,可以自行添加。沒有該文

10、件在后期操作時會提示這時需要查看確認該文件在該目錄下是否存在。服務找不到的問題,UAP 培訓案例系列 5 UAP-主子型開發(fā)<?xml version="1.0" encoding="gb2312"?><module name="testdemo"><public></public><private></private></module>三、模塊菜單由于我們需要將開發(fā)出來的功能節(jié)點顯示在客戶端上,所以我們需要提前將能夠顯示該功能的菜單等信息,如功能、菜

11、單。具體操作如下所示:3.1前準備3.1.1 啟動中間件在瀏覽器視圖下,右擊 testdemo 工程,選擇運行方式à UAP 中間件直到server 啟動,啟動客戶端:出現(xiàn)以下信息說明 server 啟動完成。3.1.2 啟動客戶端在瀏覽器視圖下,右擊 testdemo 工程,選擇運行方式-UAP 客戶端UAP 培訓案例系列 6 UAP-主子型開發(fā)3.1.3 啟動客戶端之后,使用管理員登陸3.1.4 打開功能節(jié)點功能導航>應用管理平臺>開發(fā)者配置工具>功能,雙擊進入功能界面UAP 培訓案例系列 7 UAP-主子型開發(fā)3.2 功能以系統(tǒng)管理員登陸后,通過應用管理平臺-

12、>系統(tǒng)管理工具->功能,打開功能界面,首先需要的是添加一級模塊和模塊3.2.1 一級模塊一級模塊,如下圖所示,一級模塊號是 TE,模塊編碼是“TESTDEMO”,模塊名稱“練習用例”,對應模塊號必須與我們建的項目模塊名稱 testdemo 保持一致。1)模塊編碼:功能模塊的編碼2)模塊號:功能模塊號UAP 培訓案例系列 8 UAP-主子型開發(fā)3)模塊名稱:功能模塊名稱4)對應模塊號:對應模塊,如:uap5)應用范圍:或者 全局6)父模塊號:的父層模塊編碼7)組織類型:模塊所屬的組織類型即主組織類型。全局級節(jié)點是全局,級節(jié)點是,組織級節(jié)點是成本域、部門、業(yè)務單元等。為了保證節(jié)點限的主

13、組織只是節(jié)點所關心的類型組織。8)多語字段:模塊的多語 id,設置菜單的多語展示9)是否支持開關帳設置:如果設置,會在該模塊下顯示關帳功能節(jié)點10)是否會計平臺:標記該模塊是否和會計平臺關聯(lián),需要會計平臺生成下游單據(jù)注意:關于功能編碼規(guī)則的詳細介紹參見UAPV61-XX公司公共約定.docx文檔。模塊3.2.2模塊,如下圖所示,在一級模塊是 TE 的基礎上建立模塊,模塊號是 TE10,對應模塊號是 testdemo;界面功能同上簡介。3.2.3 模塊初始化以開發(fā)管理員登陸,應用系統(tǒng)管理 à 系統(tǒng)初始化 à 業(yè)務初始化來打開業(yè)務初始界面化,首先是增補模塊,然后選擇要增補的模塊

14、,在點擊下一步后,在點擊完成即可,如下圖所示:UAP 培訓案例系列 9 UAP-主子型開發(fā)增補模塊:后續(xù)增加的業(yè)務模塊可以采用增補模塊的方式進行啟用。3.3 菜單這里一級菜單和菜單,一級菜單是模塊菜單,菜單是業(yè)務組件菜單,以系統(tǒng)管理員登陸后,通過應用管理平臺->系統(tǒng)管理工具->菜單,步驟如下:3.3.1 一級菜單一級菜單,菜單編碼 TE,菜單項名稱是用來界面顯示的菜單此處設置為“練習用例”,同時勾選是否虛菜單UAP 培訓案例系列 10 UAP-主子型開發(fā)1)菜單項編碼:功能節(jié)點菜單編碼,數(shù)據(jù)庫中及當前項目中唯一2)菜單項名稱:功能節(jié)點的菜單名稱3)虛菜單:如果為 true 表示:對

15、菜單進行分類,用戶無法點擊來打開一個頁面;如果是 false:表示:需要關聯(lián)功能,用戶點擊后打開一個頁面。4)關聯(lián)功能編碼:是這個菜單需要關聯(lián)功能中的節(jié)點的功能節(jié)點編碼5)圖標相對路徑:可以設置菜單圖標,是參照選擇圖標路徑6)多語字段:是可以設置菜單的多語展示菜單3.3.2菜單:在一級菜單基礎上建立菜單,菜單編碼為 TE10 菜單項名稱是“案例”,同時勾選是否虛菜單;界面功能同上簡介。四、元數(shù)據(jù)設計此處簡單介紹元數(shù)據(jù)設計以及期間涉及到的相關知識,元數(shù)據(jù)設計,具體可參考元數(shù)據(jù)開發(fā)紅皮書。在該設計中我們使用的元數(shù)據(jù)是 team3.bmf 文件,這里我們只需要將該文件導入到項目中即可,但同時關于元數(shù)

16、據(jù)方面的相關知識也會簡單介紹。具體步驟如下:4.1 新建元數(shù)據(jù)建立元數(shù)據(jù):建立元數(shù)據(jù)有兩種方式,第一種可以通過“新建實體組件”的方式建立 bmf文件,然后設計元數(shù)據(jù)。第二種方式可以通過導入現(xiàn)有的 bmf 文件至項目工程中,此處我UAP 培訓案例系列 11 UAP-主子型開發(fā)們使用第二種方式導入現(xiàn)有的 team3.bmf 文件。4.1.1 新增實體組件首先,我們需要切換視圖至 uap MDP 視圖,需要在工具欄最右側“打開圖”,選擇“uapMDP 視圖”。圖選擇框視圖如下圖所示:切換視圖之后,在 MDP瀏覽器視圖中,右擊工程的業(yè)務組件,選擇新建實體組件,如下例圖所示(項目名稱為 testdemo

17、 目錄為 codetreedemo):注意:1)新建業(yè)務操作組件:模型文件的文件格式是*.bpf ,詳細使用方法參考幫助文檔。2)新增目錄:新建一個文件目錄3)刪除只能刪除組件以及文件夾,決不隨意刪除已經(jīng)發(fā)布的文件。選中“新建實體組件”點擊會彈出“新增實體組件”輸入框。需要設置新建文件名,如下圖所示:UAP 培訓案例系列 12 UAP-主子型開發(fā)說明:這里會通過與 UAP Studio 進行交互,獲得當前開發(fā)者的信息, 其中包括行業(yè)名稱、開發(fā)維度(行業(yè)級(1)、領域級(0)等)以及開發(fā)組織(基礎行業(yè) 0,行業(yè) 31,地產(chǎn)行業(yè) 32)。注意:組件描述的是一個相對和完整的業(yè)務塊,主要是從業(yè)務層次上

18、進行劃分,比如“銷售訂單”可以作為一個組件,“客商”也可以作為一個組件,劃分組件時,注意組件間的重用,且注意不要形成相互依賴。組件屬于模塊,一個模塊可以包含多個組件。4.1.2 導入模型文件第二種方式:選擇“導入模型文件”,導入現(xiàn)有的 bmf 文件,會將本機上存在的文件導入到系統(tǒng)中來,這屬于文件。注意:1. 如果該模型文件本身已在項目中存在,則不能導入,否則在發(fā)布、保存等操作時出現(xiàn)嚴 重問題!2. 確保模型文件的模塊號與所在工程的模塊號一致3. 確保名稱全局唯一UAP 培訓案例系列 13 UAP-主子型開發(fā)4.2 模型設計器說明以下視圖是模型設計器的界面,圖中簡單介紹了界面的功能區(qū)域,簡單認識

19、下設計器:模型設計器包括以下五個重要部分:瀏覽器、模型繪制畫布、工具面板、屬性面板、模型視圖。瀏覽器中組件所屬的目錄和組件的模塊沒有關系,目錄只是為了更好的組織和管理bmf 文件。 組件是部署的基本單元,一個典型的組件會包含若干個有相互關系的實體(但只能有一個主實體),以及業(yè)務接口、枚舉類型等,另外組件里還可以有服務和操作。注:該圖只為模型設計器說明,請不要參考圖中元數(shù)據(jù)等信息。4.3 元數(shù)據(jù)設計說明4.3.1 組件信息設置點間畫布空白區(qū)域,可以在視圖的右側屬性頁中設置組件信息:此處代碼風格設置為自定義樣式,名稱設置為 team3,顯示名稱為團隊信息,名稱空間設置為 testdemo,所屬模塊

20、必須設置與項目模塊一致為 testdemo,主實體必須設置,這里設置為“團隊信息”實體,其中名稱空間與所屬模塊可以不一致。:UAP 培訓案例系列 14 UAP-主子型開發(fā)版本號:組件當前版本,防止舊版本覆蓋新版本。版本號是自動生成的,每點擊一次保存,就會增加 1。代碼風格:有 NC 傳統(tǒng)樣式、標準樣式和自定義樣式三種;NC 傳統(tǒng)樣式:生成 AGGVO,標準樣式:SuperVO,自定義樣式:則按 PubApp 規(guī)則生成 VO 代碼多語言模塊:對應以前多語言里的文件夾名,現(xiàn)在按照組件劃分是否預加載:默認 false。如果選擇 true,而且所用的數(shù)據(jù)源也配置為預加載元數(shù)據(jù)(在uaphomeierp

21、perties 中配置),那么該組件就會在中間件啟動時被預先加載。主實體: 一個組件里如果有實體,則必須設置一個主實體名稱:該組件的名稱。必須全局唯一。名稱空間:一種標識,讓某些元數(shù)據(jù)可以集合起來。行業(yè)和修改人:默認從配置的開發(fā)者中獲取。4.3.2 實體屬性設置在模型繪制畫布中選中主實體“團隊信息”,設置實體屬性:本模型中的主實體“團隊信息”需要將器類型設置為AggVO,即聚合 VO器,其他子實體的一律選擇 NCVO。還需要設置包裝類名、類名稱、名稱、缺省表名、顯示名稱都需要設置,主屬性需要設置為“團UAP 培訓案例系列 15 UAP-主子型開

22、發(fā)隊主鍵”。并且子實體也要類似設置,但子實體的器類型設為NCVO,主實體與子實體之間的組合關系要設置好“源屬性”為主實體的“子表主鍵”,具體設置可見:器:器的作用在于適配模型與java 代碼的不一致性。器類型有 POJO,NCVO,AggVO。包裝類名:如果器類型是AggVO,則需要一個聚合 VO 類型的包裝類。指明主子實體的關系,說明誰是主誰是子。動態(tài)信息修改類:用于動態(tài)修改實體,比如運行時增加或者設置某些屬性??梢娦裕簆ublic,protected,default,private擴展:可以給實體加任意的,時可根據(jù)過濾。缺省表名:生成數(shù)據(jù)庫時對應的表名。是否繼承類:是否繼承自另外一個實體,

23、默認false。是否生成建庫:該實體是否生成建庫的 sql,否的話需要寫是否:該實體是否使用。顯示名稱:畫布上實體的顯示名稱修改人:行業(yè)和修改人:默認從配置的開發(fā)者中獲取。業(yè)務接口實現(xiàn)類:如果實體實現(xiàn)了業(yè)務接口,這里可以實現(xiàn)類。在“創(chuàng)建接口”小節(jié)中,將詳細介紹接口實現(xiàn)類的四種情況。主屬性:實體必須設置主屬性(對應數(shù)據(jù)庫表的主鍵)。4.3.3 實體模型視圖設置在視圖界面的下方,可以看見模型視圖,此處我們選中主實體以主實體進行分析;可以看UAP 培訓案例系列 16 UAP-主子型開發(fā)見“模型視圖(實體)”中有三個頁簽分別是“屬性”、“業(yè)務接口屬性”、“參照”。關于實體的信息我們可以在此一一詳細設置

24、。包括實體中每個字段的詳細信息、實體需要實現(xiàn)的接口以及接口的屬性還有參照等。關于代碼中元數(shù)據(jù)的屬性的獲取可以通過以下方式:List<IAttribute> nc.md.m.impl.MDBean.getAttributes(String tag)實體中屬性的設置要點如下:對于設置為 AggVO 樣式的實體,請檢查子表屬性(1-n 聚合關系),比如上圖中的子表主鍵,策略要設置為 BodyOfAggVOAccessor。類型樣式:目前支持 Single、REF、ARRAY、LIST 四種。類型:可以自行選擇,當建立實體間關系時,也會自動設置;主鍵一定要設置為 UFID類型。目前元數(shù)據(jù)支

25、持如下基本類型:String, UFID, Integer, UFDouble, UFBoolean, UFDate,UFDateTime, UFTime, UFMoney, IMAGE, BLOB, CLOB, CUSTOM, MEMO字段名稱:生成數(shù)據(jù)庫表列的名稱。計算屬性:由其他屬性計算得到,本身不需要保存到數(shù)據(jù)庫,生成數(shù)據(jù)庫的列。空:是否可以為空。:用于權限。擴展:可以自由的給屬性加上標注,比如uniqueCheck,在程序中便可以通過這個來過濾屬性。注意:元數(shù)據(jù)中,創(chuàng)建人,創(chuàng)建時間,修改人,修改時間字段的名稱應該分別為:creator,creationtime,modifier ,m

26、odifiedtime。元數(shù)據(jù)中字段創(chuàng)建避免關鍵字如:是 status,file若使用該向?qū)纱a,元數(shù)據(jù)中若包含“單據(jù)狀態(tài)”字段,則單據(jù)狀態(tài)類型必須設置為 uap->pf->pfbizitf.bmf 下的“單據(jù)狀態(tài)”枚舉類型。如:fstatusflagUAP 培訓案例系列 17 UAP-主子型開發(fā)4.3.4 接口、枚舉等信息設置業(yè)務接口屬性:在此案例中因為是的開發(fā),只需要以下接口,IBDObject、IAuditInfo、IOrgInfo 三個接口,并且接口中的相關屬性也要與實體的屬性上。如:IBDObject 需要id、code、name,IAuditInfo、IOrgInf

27、o 都上。具體的詳細如下圖所示:元數(shù)據(jù)需要實現(xiàn)的接口說明:必須接口:IBDObject(目錄為 Ref M/uap/meta/general_interface.bmf)元數(shù)據(jù)有審批需求需要實現(xiàn)的接口:流程信息獲取、回寫,單據(jù)主子 VO,業(yè)務 PK鎖(目錄為 Ref M/uap/pf/pfbizitf.bmf)元數(shù)據(jù)中,有創(chuàng)建人,創(chuàng)建時間,修改人,修改時間字段需要實現(xiàn)的接口:IAuditInfo(目錄為 Ref M/uap/bill/IBillInterface.bmf)元數(shù)據(jù)中有組織,組織多版本,業(yè)務日期字段需要實現(xiàn)的接口:IOrgInfo,IBillDate(目錄為 Ref M/uap/b

28、ill/IBillInterface.bmf)元數(shù)據(jù)中有行號字段的時候,需要實現(xiàn)的接口:IRowNo(目錄為 RefM/uap/bill/IBillInterface.bmf)注:關于接口方面的知識信息見 4.6 附:相關知識;4.3.5 子實體屬性設置選中子實體“團隊成員信息”在右側的屬性框中設置其子實體的屬性,需要設置名稱、缺省表名、類名稱、主屬性等,具體設置可參閱下圖:UAP 培訓案例系列 18 UAP-主子型開發(fā)4.3.6 子實體模型視圖設置選中子實體,在畫布的下方模型視圖設置框中我們可以設置子實體中的字段的屬性,具體設置可如下設置,此外我們還需要勾選動態(tài)屬性:4.5 發(fā)布元數(shù)據(jù)在元數(shù)

29、據(jù)設計完成之后,需要將元數(shù)據(jù)發(fā)布,期間包括三步操作:發(fā)布元數(shù)據(jù)、生成java源代碼、生成 sql并執(zhí)行。具體操作見下文:4.5.1 發(fā)布元數(shù)據(jù)元數(shù)據(jù)發(fā)布的最小單元是組件。在模型繪制畫布上選中實體組件右鍵,或者在畫布中點擊右鍵,選擇“發(fā)布元數(shù)據(jù)”選項即可發(fā)布元數(shù)據(jù),此處建議不要選擇“發(fā)布元數(shù)據(jù)(忽略版本)”。如下圖所示:UAP 培訓案例系列 19 UAP-主子型開發(fā)發(fā)布元數(shù)據(jù)需要注意以下幾點:必須保存后才能發(fā)布V63 開發(fā)環(huán)境中發(fā)布時不必啟動中間件,因為元數(shù)據(jù)會發(fā)布到數(shù)據(jù)庫中發(fā)布時會一起發(fā)布被依賴的組件,支持雙向依賴,循環(huán)依賴如果發(fā)布元數(shù)據(jù)時忽略版本,則完全以本地的模型文件,可能造成庫中新版本的

30、模型被覆蓋,非特殊情況不推薦使用。開發(fā)環(huán)境的發(fā)布只是為了開發(fā)測試需要,提交時只需要將 bmf 文件(位于組件METADATA 目錄)提交到相應組件的 METADATA 目錄下,安裝時會自行發(fā)布到數(shù)據(jù)庫中查看元數(shù)據(jù)發(fā)布是否,查看錯誤日志。4.5.2生成 java 源代碼右擊實體,選擇生成 java 源代碼選項即可生成 java 源代碼,會根據(jù)元數(shù)據(jù)組件的設定的代碼風格生成相應的 VO,詳細參見 javaVO 代碼分析。如下圖所示:UAP 培訓案例系列 20 UAP-主子型開發(fā)生成 java 代碼注意事項:可以在組件屬里設置代碼風格生成 Java 源代碼時,V63 可以不必啟動中間件生成 Java

31、 源代碼前,必須確保最新修改的組件已經(jīng)被發(fā)布生成的代碼都實現(xiàn)了 SuperVO4.5.3生成 sql并執(zhí)行右擊實體,選擇生成 sql并執(zhí)行即可,會彈出如下框,如下圖所示:UAP 培訓案例系列 21 UAP-主子型開發(fā)選擇生成 sql的位置2)export sql with foreignkey Info:3)Unicode charactor:該過程會根據(jù)屬性表md_property生成相應的建庫4.6 本章小結本章是元數(shù)據(jù)來展開敘述,從新建元數(shù)據(jù)到元數(shù)據(jù)設計到發(fā)布元數(shù)據(jù)的整個過程,以及操作過程中涉及到的相關信息與知識展開敘述,主線可以從每小節(jié)的標題可以看出先后操作過程。其中元數(shù)據(jù)設計環(huán)節(jié)是很

32、重要的,所以該環(huán)節(jié)的展開敘述較多。對于相關信息在操作中不便展示的,都在 4.7 附:相關知識中見。關于常用接口:IBDObject 是每種應用都需要實現(xiàn)的,關于 IFlowBizItf 流程信息獲取回寫、businInterface 單據(jù)主子 VO、IPfBillLock 業(yè)務 PK 鎖屬于流程操作中的接口,需要據(jù)此分析應用中是否需要流程來決定是否繼承這些接口。需要注意的是這些接口不僅要使實體繼承,還得在相對應的實體的業(yè)務接口屬性中設置。IAuditInfo、IOrgInfo應用在需要審計信息和設計到組織的場景。由于元數(shù)據(jù)設計這塊有很多知識,這里也只能簡單的將涉及到的部分簡單呈現(xiàn),關于元數(shù)據(jù)設

33、計的知識請參閱元數(shù)據(jù)開發(fā)紅皮書。4.7 附:相關知識4.6.1 代碼風格代碼風格有:NC 傳統(tǒng)樣式、標準樣式和自定義樣式三種。NC 傳統(tǒng)樣式:屬于較早 5 系列的應用,目前不推薦使用。標準樣式:一般對于單表的應用。自定義樣式:器類型4.6.2器類型:POJO、NCVO、AggVO 三種:POJO 為普通的BEANUAP 培訓案例系列 22 UAP-主子型開發(fā)主要主子表及多子表結構的應用,多用于單據(jù)的應用。NCVO 是面向?qū)ο蟮姆绞剑慈绻嬖谥髯颖黻P系,則主表 VO 存在子表 VO 的數(shù)組引用AggVO 是聚合 VO器說明:組件代碼風格選擇自定義樣式時,主子表或者多子表中主表對應的實體,器要設

34、置為 AggVO,其他的一律選擇 NCVO;還有目前 POJO 與 NCVO 不做區(qū)別,推薦使用 NCVO。器的作用在于適配模型與 java 代碼的不一致性。如果組件中存在主子關系,并且器類型設置為了”AggVO”類型,則主表中的聚合屬性字段“策略” 屬性必須設置為“nc.md.m.access.BodyOfAggVOAccessor”,否則無法進行屬性值的正確設置。4.6.3 元數(shù)據(jù)常用接口IBDObject:位置:uapmetageneral_interface.bmfIBDObject接口類:nc.vo.bd.meta.IBDObject說明:在所有的基本組件中,主實體必須實現(xiàn) IBDO

35、bject 接口,此業(yè)務接口提供了獲取實體基本特征(包括所屬pk_group、所屬組織 pk_org、主鍵 id、名稱 name、編碼 code、父實體主鍵 pid)的一些方法。IFlowBizItf 流程信息獲取、回寫位置:uappfpfbizitf.bmfIFlowBizItf接口類:nc.itf.uap.pf.metadata.IFlowBizItf默認實現(xiàn)類:nc.uap.pf.metadata.FlowBizImpl說明:審批流流轉過程中,需要把單據(jù)的審批狀態(tài)回寫到單據(jù)數(shù)據(jù)庫表以及單據(jù) VO 中,必須讓元數(shù)據(jù)實體實現(xiàn)業(yè)務接口IFlowBizItf。此業(yè)務接口提供了獲取實體基本特征(包

36、括單據(jù) ID billid、單據(jù)號 billno、所屬組織 pkorg、業(yè)務類型 busitype、制單人 billmaker、審批人approver、審批狀態(tài)approvestatus、審批批語approvenote、審批時間approvedate、類型 transtype、單據(jù)類型 billtype、類型 pk transtypepk、來源單據(jù)類型srcbilltype、來源單據(jù) idsrcbillid、修訂枚舉 emendenum、單據(jù)版本 pk billversionpk)的一些方法。IHeadBodyQueryItf 單據(jù)主子 VObusinInterfaceUAP 培訓案例系列23

37、 UAP-主子型開發(fā)位置:uappfpfbizitf.bmfbusinInterface接口類:nc.itf.uap.pf.metadata.IHeadBodyQueryItf默認實現(xiàn)類:nc.uap.pf.metadata.HeadBodyQueryImpl說明:流程平臺需要根據(jù)一些條件單據(jù) VO。目前,多子表時默認默認實現(xiàn)類只查第一個子表!單據(jù)主子 VO,流程平臺用于當前正在審批的單據(jù)。IPfBillLock 業(yè)務 PK 鎖位置:uappfpfbizitf.bmfIPfBillLock接口類:nc.vo.pub.pf.IPfBillLock默認實現(xiàn)類:nc.uap.pf.metadata.

38、GetLockDataImpl說明:用于單據(jù)在進行審批操作的過程中對單據(jù)進行加鎖,防止并發(fā)。實現(xiàn)了實體的基本特征(PK 鎖)的一些方法。IOrgInfo 組織多版本位置:uapbillIBillInterface.bmfIOrgInfo接口類:nc.itf.pubapp.pub.bill.IOrgInfo說明:此接口實現(xiàn)了實體的基本特征(包括組織pk_org、組織多版本 pk_org_v)的方法。IAuditInfo 自動填充審計信息位置:uapbillIBillInterface.bmfIAuditInfo接口類:nc.itf.pubapp.pub.bill.IAuditInfo說明:該接口

39、實現(xiàn)了實體的基本特征(創(chuàng)建人 creator、創(chuàng)建時間 creationtime、修改人modifiedtime、修改時間 modifier)的一些方法。IRowNo 行號位置:uapbillIBillInterface.bmfIRowNo接口類:nc.itf.pubapp.pub.bill.IRowNo說明:該接口提供了實體的基本特征(行號)的方法。詳細參見元數(shù)據(jù)開發(fā)紅皮書。4.6.4 發(fā)布元數(shù)據(jù)涉及到的數(shù)據(jù)庫表發(fā)布元數(shù)據(jù)會發(fā)布到數(shù)據(jù)庫中,涉及到 40 多張表,主要是以下三張表:組件表md_component:發(fā)布元數(shù)據(jù),會向該表元數(shù)據(jù)組件的信息元數(shù)據(jù)組件信息:UAP 培訓案例系列 24 U

40、AP-主子型開發(fā)到 md_component 表中的信息組件表md_component的表結構:元數(shù)據(jù)組件信息與組件表 md_component對照UAP 培訓案例系列 25 UAP-主子型開發(fā)元數(shù)據(jù)組件信息組件表 md_component說明創(chuàng)建時間createtime創(chuàng)建人creator描述description顯示名稱displaynamedrfromsourcebmf擴展helpIDid主鍵行業(yè)industry主鍵isbizm修改人modifier修改時間modifytime名稱name名稱空間namespace所屬模塊ownmodule是否預加載preload多語idresidres

41、module數(shù)據(jù)類型及實體表md_class:將元數(shù)據(jù)中的實體到該表中元數(shù)據(jù)中實體的信息:到 md_class 表中的信息數(shù)據(jù)類型及實體表md_class的表結構:元數(shù)據(jù)組件信息與數(shù)據(jù)類型及實體表md_class對照UAP 培訓案例系列 26 UAP-主子型開發(fā)元數(shù)據(jù)實體信息數(shù)據(jù)類型及實體表md_class說明器類型accessorclassnamets系統(tǒng)時間版本versionversiontype主鍵屬性表md_property1)表中的實體有哪些屬性2)生成的 sql就是根據(jù)這些屬性生成的。實體屬性信息:到屬性表md_property表中的信息UAP 培訓案例系列 27 UAP-主子型開

42、發(fā)bizitfimpclassnameclasstype元數(shù)據(jù)組件 IDcomponentidmd_component 表中的ID創(chuàng)建時間createtime創(chuàng)建人creator默認表名稱defaulttablename描述description顯示名稱displaynamedrfixedlength類名稱fullclassname擴展HelpIDId主鍵行業(yè)industry主鍵isactiveisauthen是否生成建庫iscreatesqlisextendbeanisprimary主表主鍵keyattribute實體主鍵值修改人modifier修改時間modifytimemodinfocl

43、assname名稱nameparentclassidpreciserefmname多語idresidreturntypestereotypetsuserdefclassnameversiontype主鍵屬性表md_property的表結構:實體屬性與屬性表md_property對照1)對照信息類似于組件表md_compoment和數(shù)據(jù)類型及實體表md_class2)屬性表md_property中的 classid 字段對應實體表md_class的 id 字段。UAP 培訓案例系列 28 UAP-主子型開發(fā)元數(shù)據(jù)發(fā)布相關的其他的表與元數(shù)據(jù)相關的表參見V6 數(shù)據(jù)庫結構.xls4.6.5 序列化文件

44、文件發(fā)布元數(shù)據(jù)之后,點擊畫布的空白處,在模型視圖(組件)視圖下可查看序列化文件,如下圖所示:序列化文件的,詳細參見UAP-元數(shù)據(jù)建模說明.docx4.6.6 生成 javaVO 源代碼分析對于不同的代碼風格和器類型會產(chǎn)生不同的JavaVO,此處生成的 JavaVO 的名稱以及路徑都是由元數(shù)據(jù)設計中的類名稱和包裝類名來決定的。NC 傳統(tǒng)樣式下生成的 JavaVO:標準樣式下生成的 JavaVO:單表生成一個 JavaVO。自定義樣式下生成的 JavaVO:以主子表單據(jù)為例,代碼風格自定義樣式,器類型為 AggVo,會產(chǎn)生以下四個 VO:QuotationHVO、QuotationBVO、Quot

45、ationVO、QuotationVOMeta表頭 VO:表體 VO:UAP 培訓案例系列 29 UAP-主子型開發(fā)包裝類 VO:QuotationHVO、QuotationBVO 分別是元數(shù)據(jù)中主實體以及子實體對應的值對象,他們都繼承了 SuperVO,此處需要說明的是這里關于實體間的關系:在畫布上,主實體與子實體的關系顯示在主實體中,但是 VO 中子實體 QuotationBVO 含有主實體 QuotationHVO 的主表主鍵,并具有相應的 get、set 方法,在數(shù)據(jù)庫表中同樣是子表含有主表的主鍵作為外鍵來建立關聯(lián)。QuotationVO 為包裝類組合 VO,該類繼承了 Abstrac

46、tBill,故能夠支持頁簽級 VO,能夠?qū)崿F(xiàn)多個子實體在不同的頁簽中顯示,還指明了 parentVO;QuotationVOMeta 繼承AbstractBillMeta,設置主實體與子實體的關聯(lián),需要注意的是如果建立了多個子實體,需要在 QuotationVOMeta 中手動的添加 addChildren(子實體 VO.class)。4.6.7 生成 sql結構目錄分析執(zhí)行“生成 sql并執(zhí)行”操作之后,會在相應的目錄中產(chǎn)生以下目錄結構其中 Dtype 文件夾下有三個 xml 文件,如上圖所示SQLSERVER 文件夾下有兩個文件UAP 培訓案例系列 30 UAP-主子型開發(fā)00001 文件

47、下的 TADATA_quotation_table.sql(以主子表為例,quotation 是元數(shù)據(jù)的多語模塊名),對應的是元數(shù)據(jù)中實體的建庫UAP 培訓案例系列 31 UAP-主子型開發(fā)create table example_first_h ( pk_salequotation CHAR(20) NOT NULL, pk_group VARCHAR(20) default '' NULL, pk_org_v VARCHAR(20) default '' NULL, pk_org VARCHAR(20) default '' NULL, vb

48、illcode VARCHAR(40) NULL,ctrantypeid VARCHAR(20) default '' NULL, vtrantypecode VARCHAR(50) NULL, dbilldate CHAR(19) NULL,dquotedate CHAR(19) NULL, denddate VARCHAR(19) NULL, fstatusflag INT default '-1' NOT NULL,pk_customer VARCHAR(20) default '' NULL, pk_channeltype VARCHAR

49、(20) default '' NULL, pk_currtype VARCHAR(20) default '' NULL, pk_balatype VARCHAR(20) default '' NULL, pk_dept_v VARCHAR(20) default '' NULL, pk_dept VARCHAR(20) default '' NULL, cemployeeid VARCHAR(20) NULL,pk_payterm VARCHAR(20) default '' NULL, cse

50、ndtypeid VARCHAR(20) default '' NULL, ndiscount DECIMAL(28,8) NULL,ntotalnum DECIMAL(28,8) NULL, ntotalmny DECIMAL(28,8) NULL, operator VARCHAR(20) default '' NULL, creator VARCHAR(20) default '' NULL, creationtime CHAR(19) NULL,modifier VARCHAR(20) default '' NULL, m

51、odifiedtime CHAR(19) NULL,approver VARCHAR(20) default '' NULL, taudittime CHAR(19) NULL,vnote VARCHAR(181) NULL, vdef1 VARCHAR(101) NULL, vdef2 VARCHAR(101) NULL, vdef3 VARCHAR(101) NULL, vdef4 VARCHAR(101) NULL, vdef5 VARCHAR(101) NULL, vdef6 VARCHAR(101) NULL, vdef7 VARCHAR(101) NULL, vde

52、f8 VARCHAR(101) NULL, vdef9 VARCHAR(101) NULL,UAP 培訓案例系列 32 UAP-主子型開發(fā)vdef10 VARCHAR(101) NULL, vdef11 VARCHAR(101) NULL, vdef12 VARCHAR(101) NULL, vdef13 VARCHAR(101) NULL, vdef14 VARCHAR(101) NULL, vdef15 VARCHAR(101) NULL, vdef16 VARCHAR(101) NULL, vdef17 VARCHAR(101) NULL, vdef18 VARCHAR(101) NULL, vdef19 VARCHAR(101) NULL, vdef20 VARCHAR(101) NULL,cbiztypeid VARCHAR(20) default '' NULL,CONSTRAINT PK_EXAMPLE_FIRST_H PRIMARY KEY (pk_salequotation), ts char(19) default convert(c

溫馨提示

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

評論

0/150

提交評論