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

下載本文檔

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

文檔簡介

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

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

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

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

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

6、ua里的 module 是平級的。pbd,uapeai 等,部署環(huán)境從 CVS 檢出代碼:擇從 CVS 服務(wù)器中簽出代碼,在后續(xù)的向?qū)ы撝袝?huì)收集相關(guān)信息。是否開發(fā)模塊信息:選擇是,會(huì)自表 md_module 中模塊信息;如果此處忘記勾選可以通過以下方式進(jìn)行手動(dòng)置的信息即可。,格式:只需要將涉及到的模塊信息換成設(shè)2.3 新增業(yè)務(wù)組件選擇新增業(yè)務(wù)組件:填寫名稱、顯示名稱再確定,此處我們以codetreedemo為例。該操作主要是為了剛建立的項(xiàng)目新建業(yè)務(wù)組件,其中名稱決定了生成的業(yè)務(wù)組件根目錄的名稱也是其UAP 培訓(xùn)案例系列 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);標(biāo)識。點(diǎn)擊 完成 即完成業(yè)務(wù)組件項(xiàng)目的建立。2.4 工程目錄向?qū)瓿蓵?huì)生成以下圖示的項(xiàng)目結(jié)構(gòu):src 目錄下自動(dòng)生成 public、client、private、resource和 test 目錄。以及 module.xml 文件。·public:客戶端與服務(wù)器都要依賴的代碼放到這個(gè)目錄中,比如服務(wù)接口和 VO 等。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

47、下的 TADATA_quotation_table.sql(以主子表為例,quotation 是元數(shù)據(jù)的多語模塊名),對應(yīng)的是元數(shù)據(jù)中實(shí)體的建庫UAP 培訓(xùn)案例系列 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 培訓(xùn)案例系列 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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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

提交評論