




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、應(yīng)用框架開發(fā)指南應(yīng)用框架開發(fā)指南(V5.0 版)修訂歷史版本號1.02.03.0修訂日期修訂者張紅斌宋志海、霍煦 宋志海、霍煦、張旭修訂類型新建新增及補(bǔ)充新增及補(bǔ)充說明2005-9-28第1頁,總32頁應(yīng)用框架開發(fā)指南目錄應(yīng)用框架概述4應(yīng)用框架設(shè)計模型結(jié)構(gòu).通用設(shè)計模式及功能說明....1.6.取數(shù)虛模式5操作狀態(tài)提示模式5操作模式6快速模式6表頭排序模式7界面狀態(tài)管理72.2.業(yè)務(wù)對象層........
2、11.通用設(shè)計方法11業(yè)務(wù)數(shù)據(jù)狀態(tài)管理11類體系13所有業(yè)務(wù)對象超類 CoreBase13普通業(yè)務(wù)對象超類 ObjectBase14基礎(chǔ)資料超類 DataBase15層次數(shù)據(jù)超類 TreeBase16單據(jù)超類 CoreBillBase(單據(jù)頭)17單據(jù)超類 CoreBillEntryBase(單據(jù)體)19財務(wù)類單據(jù)超類 BillBase(單據(jù)頭)19財務(wù)類單據(jù)超類 BillEntryBase(單據(jù)體)192.3.UI 層........3.2.3.
3、8.通用設(shè)計方法20數(shù)據(jù)綁定20UI 元素的使能. 21UILoadListener21序時簿類 UI21類體系21通用基類 CoreUI22普通序時簿類 ListUI22帶通用的序時簿類 CommonQueryListUI24單據(jù)序時簿類 UI25層次數(shù)據(jù)序時簿類 UI25帶擁有者的層次數(shù)據(jù)序時簿類 UI27帶分類的層次數(shù)據(jù)序時簿 UI27帶擁有者和分類的層次數(shù)據(jù)序時簿 UI28編輯類 UI28類體系28普通編輯類 UI28單據(jù)編輯類 UI303.應(yīng)用框架典型范例32第2頁,總32頁應(yīng)用框架開發(fā)指南3.1. 32總結(jié)錯誤!未定義書簽。
4、附錄 A錯誤!未定義書簽。.應(yīng)用框架 FQA錯誤!未定義書簽。第3頁,總32頁應(yīng)用框架開發(fā)指南 1. 應(yīng)用框架概述應(yīng)用框架初始目標(biāo)即是實(shí)現(xiàn)基本數(shù)據(jù)結(jié)構(gòu)及通用界面交互的處理。減輕業(yè)務(wù)系統(tǒng)通用界面的開發(fā)工作量, 提高工作效率。目前的應(yīng)用框架分為兩層,一部分是 uiM主要是對于 UI 層的抽象, 是與 EAS 進(jìn)行緊密集成的 eas_framework 部分。本文檔主要描述 eas_framework 的設(shè)計實(shí)現(xiàn)部分。于 EAS 開發(fā)系統(tǒng);另一部分第4頁,總32頁應(yīng)用框架開發(fā)指南 2. 應(yīng)用框架設(shè)計模型結(jié)構(gòu)2.1. 通用設(shè)計模式及功能說明2.1.1. 取數(shù)虛模式對于列表方式數(shù)據(jù),應(yīng)用框
5、架統(tǒng)一使用虛模式進(jìn)行取數(shù)。1.意圖:在數(shù)據(jù)量較大的情況下,進(jìn)行分批取數(shù),減少網(wǎng)絡(luò)流量,加快響應(yīng)速度。2.:在信息系統(tǒng)中,數(shù)據(jù)是最常用的操作,但如果結(jié)果數(shù)據(jù)量很大情況下,一方面會增加網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量,另一方面是一個耗時的過程,客戶會出現(xiàn)一個可能較長時間的等待。這兩方面都會降低軟件的可用性。為解決這個問題,我們使用虛模式。如果列表中定義了主鍵,則先取前 100 條數(shù)據(jù),然后在獲取所有的數(shù)據(jù) ID 值。如果沒有定義主鍵,則使用 top 100 等方式來獲取。后3.適用性:在數(shù)據(jù)量較大情況下非常有效。式不推薦使用。如果是海量數(shù)據(jù),如結(jié)果很大,比如 100000 條以上,所有的 ID 獲取也是一個不小的
6、數(shù)據(jù)量與耗時過程,這時需要進(jìn)行特殊處理。4. 應(yīng)用: ListUI 中使用。5. 缺點(diǎn)及注意事項(xiàng):因?yàn)榇笥?100 條數(shù)據(jù)時,會啟動一個線程來取數(shù)。在大并況下會出現(xiàn) N*2 的數(shù)據(jù)請求量。2.1.2. 操作狀態(tài)提示模式對于操作提示,應(yīng)用框架統(tǒng)一了提示方式。如果界面中有狀態(tài)條,則在狀態(tài)條中提示;如果沒有狀態(tài)條, 則為對應(yīng)框方式處理。1.意圖:在狀態(tài)條中進(jìn)行統(tǒng)一信息提示。2.:在企業(yè)信息管理系統(tǒng)中,用戶與系統(tǒng)的交互非常多。在用戶操作過程中,一些的提示、完成操作,不的操作,我們傳統(tǒng)的做法是給用戶一個框提示,顯示這些信息。但這樣一來,我們會增加用戶的無意義的操作,中斷用戶的連續(xù)操作,對用戶非常不友好。
7、為了解決這類問題,對于一些系統(tǒng)的提示,采用狀態(tài)條進(jìn)行統(tǒng)一的提示,減少用戶的一些無意義的操作。用戶僅在狀態(tài)欄就可以獲取系統(tǒng)信息。3.適用性:對用戶的一些常用而且連續(xù)的操作界面,我們這種模式大大方便用戶的交互。第5頁,總32頁應(yīng)用框架開發(fā)指南對于無狀態(tài)欄或信息較多的情況4. 應(yīng)用: CoreUI,EditUI5. 缺點(diǎn)及注意事項(xiàng):為力。對于模式框,目前由于沒有顯示狀態(tài)欄,所以此模式不生效。2.1.3.操作模式對于長時間的耗時操作,應(yīng)用框架統(tǒng)一了處理機(jī)制,當(dāng)前界面鎖定,狀態(tài)欄進(jìn)度條提示。但用戶可切換到其他業(yè)務(wù)界面繼續(xù)操作。1.意圖:長時間操作進(jìn)行多線程處理,不影響其他任務(wù)。2.:在企業(yè)應(yīng)用管理系統(tǒng)中
8、,有一些長時間的操作功能,如過賬、結(jié)賬等功能。這時傳統(tǒng)的做待,直到操作完成。這樣用戶這段時間內(nèi)基本上對系統(tǒng)不可操作,大大降低了用戶的可用性。讓用戶等為了解決這個問題,框架采用了對某些功能使用多線程機(jī)制,對于耗時操作新起一個線程來運(yùn)行。這樣其他任務(wù)還可以繼續(xù)使用,增加了用戶體驗(yàn)。3.適用性:對于一些操作提供了方便。長時間操作的當(dāng)前操作頁簽會鎖定,直到系統(tǒng)完成后4. 應(yīng)用: CoreUI5. 缺點(diǎn)及注意事項(xiàng):。如果業(yè)務(wù)系統(tǒng)的狀態(tài)在鎖定之后控件完成一些狀態(tài)改變,當(dāng)別注意處理。操作完成后的狀態(tài)恢復(fù)不生效。需要特2.1.4. 快速模式對于列表方式數(shù)據(jù)1.意圖:,業(yè)務(wù)系統(tǒng)可定制字段,應(yīng)用框架根據(jù)定制字段在
9、列表中自動。對于大數(shù)據(jù)量情況下,快速到用戶期望操作的數(shù)據(jù)下。2.:對于大數(shù)據(jù)量的列表,框架已經(jīng)使用了虛模式,但用戶要在列表中找一條符合條件的數(shù)據(jù),就可能需要拉動滑動條來查看,這對于用戶來說是一件不愉快的事。為了解決這個問題,我們對常用的列使用了快速定模式,方便用戶來進(jìn)行查找操作。3.適用性:用戶可快速地在列表中找到符合條件的4. 應(yīng)用: ListUI5. 缺點(diǎn)及注意事項(xiàng):。由于此方式是基于表格查找方法,的情況上,把所有虛模式的數(shù)據(jù)取回來后發(fā)現(xiàn)沒有匹配項(xiàng),第6頁,總32頁應(yīng)用框架開發(fā)指南這時提示用戶沒有找到。這種情況下效率。2.1.5. 表頭排序模式對于列表瀏覽界面,可通過單擊表頭來實(shí)現(xiàn)使用表頭
10、字段進(jìn)行重新的全排序。1.意圖:對于列表數(shù)據(jù),用戶可自由地重新排序他希望的列。2.:對于大數(shù)據(jù)量的列表結(jié)果,通常我們做過濾時會讓用戶指定排序的列。但在結(jié)果以在結(jié)果集中進(jìn)行重新排序,而不是進(jìn)行重新過濾后指定排序字段。后,用戶也希望可為了解決這個問題,我們3.適用性:用戶對指定的表列頭進(jìn)行排序,而不需要重新在過濾中指定排序字段。用戶可對結(jié)果集進(jìn)行快速的重新排序。4. 應(yīng)用:ListUI 表頭排序。5. 缺點(diǎn)及注意事項(xiàng):如果表格中有列為 Query 中沒有的,會出錯。2.1.6. 界面狀態(tài)管理模式對于新增、查看、編輯狀態(tài)進(jìn)行了統(tǒng)一處理。1.意圖:2.:3.適用性:4.應(yīng)用:5.缺點(diǎn)及注意事項(xiàng):2.1
11、.7. 數(shù)據(jù)綁定模式1.意圖:2.:3.適用性:4.應(yīng)用:第7頁,總32頁應(yīng)用框架開發(fā)指南5.缺點(diǎn)及注意事項(xiàng):2.1.8. 表格設(shè)置模式1.意圖:2.:3.適用性:4.應(yīng)用:5.缺點(diǎn)及注意事項(xiàng):2.1.9. 通用校驗(yàn)框架模式1.意圖:2.:3.適用性:4.應(yīng)用:5.缺點(diǎn)及注意事項(xiàng):2.1.10.通用異??蚣苣J?.意圖:2.:3.適用性:4.應(yīng)用:第8頁,總32頁應(yīng)用框架開發(fā)指南5.缺點(diǎn)及注意事項(xiàng):2.1.11.樹型結(jié)構(gòu)的算法優(yōu)化模式1.意圖:2.:3.適用性:4.應(yīng)用:5.缺點(diǎn)及注意事項(xiàng):2.1.12.查看編輯界面的編輯與刪除模式1.意圖:2.:3.適用性:4.應(yīng)用:5.缺點(diǎn)及注意事項(xiàng):2.
12、1.13.打印設(shè)置用戶相關(guān)性支持模式1.意圖:2.:3.適用性:4.應(yīng)用:5.缺點(diǎn)及注意事項(xiàng):第9頁,總32頁應(yīng)用框架開發(fā)指南2.2. 典型 UI 交互及生命周期管理2.2.1. UI 創(chuàng)建的過程及處理說明及注意事項(xiàng):1.2.所有的 UI 創(chuàng)建都由 UIFactory 來完成;UIFactoryHelper 完成 UI 中的對象初始化工作;第10頁,總32頁應(yīng)用框架開發(fā)指南2.3. 業(yè)務(wù)對象層應(yīng)用框架在業(yè)務(wù)對象層建立了一些典型業(yè)務(wù)對象,可用做設(shè)計建立的業(yè)務(wù)對象的超類。這些用做超類的業(yè)務(wù)對象,既定義了對象屬性,也提供了業(yè)務(wù)方法。例如,層次數(shù)據(jù)的超類 TreeBase 在數(shù)據(jù)保存時會自動維護(hù) le
13、vel、isLeaf 和 longNumber 的正確性。2.3.1. 通用設(shè)計方法2.3.2. 業(yè)務(wù)數(shù)據(jù)狀態(tài)管理業(yè)務(wù)數(shù)據(jù)狀態(tài)屬于數(shù)據(jù)的附加描述屬性,表達(dá)業(yè)務(wù)數(shù)據(jù)經(jīng)過的處理過程,例如:是否已生效、是否已審核,并據(jù)此進(jìn)行相應(yīng)的邏輯。業(yè)務(wù)數(shù)據(jù)狀態(tài)根據(jù)業(yè)務(wù)數(shù)據(jù)的不同類型會有不同組合,例如:基礎(chǔ)資料中可能只有是否生效狀態(tài),而單據(jù)中會有是否已審核及是否已關(guān)閉等狀態(tài)。在應(yīng)用架構(gòu)中會抽象業(yè)務(wù)數(shù)據(jù)中存在的狀態(tài)種類,并在超類體系里對某些通用狀態(tài)的處理邏輯。狀態(tài)配置表下表列出了所有已知的數(shù)據(jù)狀態(tài)屬性,這些屬性將作為基礎(chǔ)的狀態(tài)屬性供定義具體的業(yè)務(wù)對象時選擇使用。第11頁,總32頁狀態(tài)名狀態(tài)描述狀態(tài)枚舉類型屬性名字段
14、名說明生效狀態(tài)0:暫存1:生效EffectedStatusEnumEffectedStatusFEffectedStatus暫存的業(yè)務(wù)數(shù)據(jù)不需要進(jìn)行數(shù)據(jù) 檢查,不參與統(tǒng)計報表和結(jié)賬結(jié)算處理作廢狀態(tài)0:普通1:作廢DeletedStatusEnumDeletedStatusFDeletedStatus作廢的業(yè)務(wù)數(shù)據(jù)不參與統(tǒng)計報表和結(jié)賬結(jié)算處理審核狀態(tài)0:未審核1:已審核CheckedStatusEnumCheckedStatusFCheckedStatus凍結(jié)狀態(tài)0:未凍結(jié)BlockedStatusEnumBlockedStatusFBlockedStatus凍結(jié)的業(yè)務(wù)對象參與新的業(yè)務(wù)活動, 但
15、已經(jīng)存在的業(yè)務(wù)活動不受影響。有的業(yè)務(wù)對象的凍結(jié)狀態(tài)可能會進(jìn)一步細(xì)分,如“客戶”的凍結(jié)可能會包含:Posting應(yīng)用框架開發(fā)指南說明:1、 屬性對應(yīng)的數(shù)據(jù)類型都是相應(yīng)的枚舉類型,類型為 Int。字段的數(shù)據(jù)類型也使用 Int。2、 在 com.kingdee.eas.framework 包中定義了枚舉類型供使用。使用方法所有基礎(chǔ)的狀態(tài)屬性被定義于配置表中,已集成于 BOS Studio 中。如果業(yè)務(wù)對象要使用某個狀態(tài)屬性,可方便地選取即可。單據(jù)狀態(tài)單據(jù)狀態(tài)往往是由多個基礎(chǔ)狀態(tài)屬性組合后對外的統(tǒng)一表現(xiàn)形式。以訂單處理為例,可能表現(xiàn)為六種狀態(tài):第12頁,總32頁1:已凍結(jié)block、Order blo
16、ck、Delivery block、Invoicing block下達(dá)狀態(tài)0:未下達(dá)1:已下達(dá)ReleasedStatusEnumReleasedStatusFReleasedStatus訂單類的單據(jù)一般會有下達(dá)狀態(tài)預(yù)算審批狀態(tài)0:未審批1:審批未通過 2:審批已通過BudgetAuditedStatu sEnumBudgetAuditedS tatusFBudgetAuditedS tatus交付狀態(tài)0:未交付1:部分交付2:全部交付DeliveredStatusEnu mDeliveredStatu sFDeliveredStatu sFI記賬狀態(tài)0:未記賬1:已記賬FIPostedSta
17、tusEnumFIPostedStatusFFIPostedStatusMA記賬狀態(tài)0:未記賬1:已記賬MAPostdStatusEnumMAPostdStatusFMAPostdStatus關(guān)閉(結(jié)清)狀態(tài)0:未關(guān)閉1:已關(guān)閉ClosedStatusEnumClosedStatusFClosedStatus應(yīng)用框架開發(fā)指南在內(nèi)部處理中,實(shí)際上選擇了三個基礎(chǔ)的狀態(tài)屬性來實(shí)現(xiàn)邏輯的規(guī)則是:邏輯:作廢狀態(tài)、完成狀態(tài)和關(guān)閉狀態(tài)。從編程的方便性考慮,推薦為單據(jù)狀態(tài)定義的枚舉,并為值對象增加一個 getBillStatus 方法。該方法通過計算基本屬性的取值而得到對應(yīng)的單據(jù)狀態(tài)。需要注意的是,設(shè)置單據(jù)狀
18、態(tài)的操作仍將操作基本狀態(tài)屬性,并且在設(shè)置某個狀態(tài)屬性時可能需要根據(jù)邏輯同時設(shè)置其它屬性。2.3.3. 類體系2.3.4. 所有業(yè)務(wù)對象超類 CoreBase職責(zé)所有 EAS 業(yè)務(wù)對象的超類,具有 ID 屬性,完成數(shù)據(jù)的基本維護(hù)功能。如,新增、修改、刪除、暫存等操作。第13頁,總32頁類體系內(nèi)容CoreBase所有業(yè)務(wù)對象的超類|- ObjectBase|- DataBase|- TreeBase|-CoreBillBase|- BillBase|- CoreBillEntryBase|-BillEntryBase普通業(yè)務(wù)對象的超類基礎(chǔ)資料類業(yè)務(wù)對象的超類層次數(shù)據(jù)類業(yè)務(wù)對象的超類單據(jù)業(yè)務(wù)對象的超
19、類,對應(yīng)單據(jù)頭部分財務(wù)類單據(jù)業(yè)務(wù)對象的超類,對應(yīng)財務(wù)單據(jù)頭部分單據(jù)業(yè)務(wù)對象的超類,對應(yīng)單據(jù)體部分財務(wù)類單據(jù)業(yè)務(wù)對象的超類,對應(yīng)財務(wù)單據(jù)體部分單據(jù)狀態(tài)狀態(tài)操作取消關(guān)閉計劃下達(dá)進(jìn)行中完成只要作廢狀態(tài)為 1單據(jù)不是取消狀態(tài)且關(guān)閉狀態(tài)為 1單據(jù)不是取消狀態(tài)也不是關(guān)閉狀態(tài), 且完成狀態(tài)為 0(未下達(dá))單據(jù)不是取消狀態(tài)也不是關(guān)閉狀態(tài), 且完成狀態(tài)為 1(下達(dá))單據(jù)不是取消狀態(tài)也不是關(guān)閉狀態(tài), 且完成狀態(tài)為 2(進(jìn)行中)單據(jù)不是取消狀態(tài)也不是關(guān)閉狀態(tài), 且完成狀態(tài)為 3(完成)若單據(jù)進(jìn)入取消狀態(tài),則只有恢復(fù)后才能進(jìn)行其它所有單據(jù)操作除與取消相關(guān)外的其它操作下達(dá)操作撤消操作關(guān)閉操作應(yīng)用框架開發(fā)指南屬性方法常見
20、問題1.問:如何的布署信息?答:應(yīng)用框架實(shí)體層是抽象類,沒有 EJB 布置信息,也就是說應(yīng)用框架不需要布署。2.問:CoreBase 為什么沒有 effectedStatus 屬性?答:并不是每個業(yè)務(wù)對象都有此屬性,我們這里進(jìn)行了屬性命名約束,如果要使業(yè)務(wù)對象生效,必須使用“effectedStatus”名稱。如果子類沒有此屬性,則我們基類中的 save 與 submit 作用一致。3.這些基類的方法,子類不可以再一次定義,否則就會覆蓋掉基類方法,失去了基類的作用。2.3.5. 普通業(yè)務(wù)對象超類 ObjectBase屬性第14頁,總32頁名稱描述數(shù)據(jù)類型對應(yīng)字段名稱描述addNew繼承基類,
21、添加時設(shè)置 creator , createTime, lastUpdateUser, lastUpdateTime,等固定屬性值。Update繼 承 基 類 , 添 加 時 設(shè) 置 lastUpdateUser, lastUpdateTime, company 等固定屬性值。Submit設(shè)置業(yè)務(wù)數(shù)據(jù)生效,并保存save設(shè)為暫存狀態(tài),并保存cancel作廢(邏輯刪除),并保存cancelCancel取消作廢狀態(tài),并保存checkStatusValid檢查業(yè)務(wù)數(shù)據(jù)是否是有效canUpdate檢查業(yè)務(wù)數(shù)據(jù)能否更新,邏輯條件是否滿足更新要求(補(bǔ)充)isReferenced檢查業(yè)務(wù)數(shù)據(jù)是否被,刪除操作
22、會調(diào)用此函數(shù)(補(bǔ)充)名稱描述數(shù)據(jù)類型對應(yīng)字段Id對象 IDBOSUUIDFID應(yīng)用框架開發(fā)指南方法常見問題1.問:Creator、CreateTime、LastUpdateUser、LastUpdateTime 作用及意義?答:所在普通業(yè)務(wù)對象的基本屬性,由基類來維護(hù),業(yè)務(wù)對象不能用作其他用途。2.3.6. 基礎(chǔ)資料超類 DataBase屬性第15頁,總32頁名稱描述數(shù)據(jù)類型Name名稱(多語言)StringNumber編碼Stringdescription描述(多語言)StringsimpleName簡稱String名稱描述CU單元連接屬性 連接到控制單元中FcontrolUnitIDCre
23、ator創(chuàng)建者連接屬性 連接到用戶FcreatorIDCreateTime創(chuàng)建時間TimestampFcreateTimeLastUpdateUser最后修改者連接屬性 連接到用戶FLastUpdateUserIDLastUpdateTime最后修改時間TimestampFLastUpdateTime應(yīng)用框架開發(fā)指南方法注:名稱與編碼檢查方法都是需要根據(jù)業(yè)務(wù)要求進(jìn)行調(diào)用的,應(yīng)用框架本身不調(diào)用。常見問題1. 問:為何繼承自 DataBase 的類沒有自動進(jìn)行名稱及編碼的檢查?答:沒辦法統(tǒng)一檢查機(jī)制,可能由于檢查的條件不一樣,如科目表使用全局的檢查,就可直接調(diào)用如上的方法來完成。2. 問:編碼規(guī)則
24、如何起作用?答:編碼規(guī)則在 DataBase 類起作用。從 DataBase 的類如果定義了編碼規(guī)則就會自動由基類來完成, 子類不需要關(guān)心。2.3.7. 層次數(shù)據(jù)超類 TreeBase屬性因?yàn)槌愔卸x的關(guān)系無法實(shí)例化,所以 TreeBase 并未定義 parent 關(guān)聯(lián)屬性。要求在子類中自行建立這個表示指向父節(jié)點(diǎn)的關(guān)聯(lián)屬性,并且約定屬性名一定是 parent。方法第16頁,總32頁名稱描述名稱描述數(shù)據(jù)類型對應(yīng)字段IsLeaf是否葉節(jié)點(diǎn)BooleanFIsLeafLevel所在級次IntegerFLevelLongNumbe r節(jié)點(diǎn)完整編號StringFLongNum ber名稱描述check
25、NameBlank名稱是否為空checkNameDup名稱是否重復(fù)checkNumberBlank編碼是否為空checkNumberDup編碼是否重復(fù)getBizOUCoreBaseInfo 的接口。應(yīng)用框架開發(fā)指南常見問題1. 問:isLeaf、level、longNumber 由基類處理嗎? 答:是的。子類不需要進(jìn)行干預(yù)。2. 問:檢查編碼重復(fù)的注意事項(xiàng)。答:原則:輸入項(xiàng)必須完整,生成項(xiàng)可以沒有,如 level,isLeaf,longnumber 等,傳遞給基類的值要求有 id,number,name,description。2.3.8. 單據(jù)超類 CoreBillBase(單據(jù)頭)屬性第
26、17頁,總32頁名稱描述數(shù)據(jù)類型對應(yīng)字段Number單據(jù)編號StringFNumberhandleTime經(jīng)辦時間TimeStampFHandleTimeHandler經(jīng)手人連接屬性連接到用戶FhandlerIDDescription備注(多語言)StringFdescriptionhasEffected是否曾經(jīng)生效BooleanFhasEffectedAuditor審核人連接屬性連接到用戶FcheckIDupdateLeafByLongNumber父節(jié)點(diǎn)編號更新時重設(shè)所有子節(jié)點(diǎn)編號checkParentDataExist檢查該編號下的父節(jié)點(diǎn)是否存在checkParentValid校驗(yàn)父節(jié)點(diǎn)的
27、狀態(tài)應(yīng)為有效,父節(jié)點(diǎn)是否被刪除。checkParentBeUsed校驗(yàn)父節(jié)點(diǎn)是否被其他數(shù)據(jù)使用。如果被使用則不能新建子節(jié)點(diǎn)。子類需要通過重載_isReference 來定義 邏輯getRoot獲取根節(jié)點(diǎn)getChildren返回兒子節(jié)點(diǎn)集合glChildren返回所有后代節(jié)點(diǎn)集合deleteWithChildren刪除自身及其所有后代節(jié)點(diǎn)moveTreeNode移動節(jié)點(diǎn)位置應(yīng)用框架開發(fā)指南方法可選的方法:1. protectedSystem getOwnedSys():定義單據(jù)所屬的系統(tǒng)。通常情況下一種單據(jù)所屬的系統(tǒng)是確定的,可以在單據(jù)對象的擴(kuò)展屬性予以定義。超類負(fù)責(zé)處理這種情況。對于一種類型
28、的單據(jù)被實(shí)例化到不同系統(tǒng)的情況,可以增加實(shí)體屬性,并重載這個方法。常見問題1. 問:單據(jù)生成憑證的處理?答:校驗(yàn)是否已經(jīng)生成過憑證,如果已經(jīng)生成過則拋異常。2. 問:單據(jù)關(guān)聯(lián)關(guān)系處理。答:處理所有的分錄關(guān)聯(lián)。分為暫存與提交兩類。第18頁,總32頁名稱描述checkOut結(jié)清(關(guān)閉)業(yè)務(wù)數(shù)據(jù)passAudit審核通過UnpassAudit設(shè)置為未審核狀態(tài)Freeze凍務(wù)數(shù)據(jù)Unfreeze解凍業(yè)務(wù)數(shù)據(jù)CheckStatusFreeze檢查業(yè)務(wù)數(shù)據(jù)是否被凍結(jié)CheckNumberDup檢查單據(jù)編號是否重復(fù)CheckNumberBlank檢查單據(jù)編號是否為空checkHandleTimeBlank檢
29、查經(jīng)辦時間是否為空checkHandlerBlank檢查經(jīng)辦人是否為空CheckLineExist檢查是否至少有一條分錄getOwnedSys獲取所屬系統(tǒng)。generateVoucher生成憑證deleteVoucher刪除憑證:若沒有生成過憑證,則返回 false。saveRelations暫存關(guān)聯(lián)關(guān)系submitRelations保存并遞交關(guān)聯(lián)關(guān)系sourceBillId原始單據(jù) IDStringFsourceBillIDsourceFunction來源功能StringFsourceFunction應(yīng)用框架開發(fā)指南2.3.9. 單據(jù)超類 CoreBillEntryBase(單據(jù)體)屬性常見
30、問題2.3.10.財務(wù)類單據(jù)超類 BillBase(單據(jù)頭)屬性2.3.11.財務(wù)類單據(jù)超類 BillEntryBase(單據(jù)體)屬性第19頁,總32頁名稱描述數(shù)據(jù)類型對應(yīng)字段名稱描述數(shù)據(jù)類型對應(yīng)字段Company公司連接屬性連接到公司FcompanyID名稱描述數(shù)據(jù)類型對應(yīng)字段Sequence單據(jù)分錄序列號(定義為序列屬性即使用seq)IntegerFSequence應(yīng)用框架開發(fā)指南2.4. UI 層UI 層提供數(shù)據(jù)的展現(xiàn)方式與客戶端邏輯。2.4.1. 通用設(shè)計方法2.4.2. 數(shù)據(jù)綁定數(shù)據(jù)綁定主要分為兩種類型:類界面的數(shù)據(jù)綁定和編輯類界面的數(shù)據(jù)綁定。對于類界面,數(shù)據(jù)綁定是一個從 Query
31、 對象到 KDTable 的單向過程。通常在設(shè)計期定義完綁定關(guān)系后,1.2.3.在代碼中再關(guān)注綁定問題。相關(guān)方法是:由 KDTable 的 setFormatXML 方法完成列的定義由 KDTable 的 putBindContents 傳遞綁定關(guān)系在 KDTalbe 的 doRequestRowSet中完成數(shù)據(jù)的獲取與顯示對于編輯類界面,由 loadFields 和 storeFields 方法定義了 Entity 對象與界面控件雙向的綁定關(guān)系。如果對象是聚合類型的數(shù)據(jù)(例如單據(jù))并選擇 KDTable 顯示單據(jù)體,則進(jìn)一步由 loadLineFields 和storeLineFields
32、定義了單據(jù)行與 KDTable 的綁定關(guān)系。如果在 BOS Studio 中定義綁定關(guān)系,那么這些方法會由 BOS 自動生成。注意:不管是完全不使用 BOS Studio 來定義綁定關(guān)系,還是只有部分控件使用 BOS Studio 定義了綁定關(guān)系,你都需要重載這些方法,并通過手工編碼來把所有綁定關(guān)系補(bǔ)充完整。這是因?yàn)槌愐蕾囉谶@些方法來管理綁定關(guān)系。第20頁,總32頁示例:假設(shè)幣別編輯界面沒有為 isoCode 在設(shè)計期定義綁定關(guān)系,那么需要補(bǔ)充定義:public void loadFields()super.loadFields();/ editData強(qiáng)類型txtIsoCode.setTe
33、xt(editData.getIsoCode();public void storeFields()super.storeFields(); editData.setIsoCode(txtIsoCode.getText();應(yīng)用框架開發(fā)指南2.4.3. UI 元素的使能對 UI 元素進(jìn)行使能有兩種方法:一是利用 setOprtState 方法,二是利用 checkActionStatus 方法。在 BOS 的 UI 設(shè)計器中,可以利用狀態(tài)編輯視圖定義各種狀態(tài)下控件的使能情況。BOS 會自動生成反映滿足這種定義的 setOprtState 方法。當(dāng)然,也可以不用 BOS 的定義能力而重載后完全自
34、行編碼,尤其是在需要定義邏輯時:例如控件的使能可能需要檢查當(dāng) OprtState 處于某種狀態(tài)時,某些數(shù)據(jù)是否同時符合要求。而 checkActionStatus 方在按鈕的響應(yīng)完畢后被調(diào)用,作為一種推薦的檢查控件使能的統(tǒng)一位置。checkActionStatus 的調(diào)用頻率比較高,故檢查邏輯最好比較簡單。注意:這種方式與 UI 的 OprtState 沒有關(guān)系,視為對 OprtState 機(jī)制的一種補(bǔ)充。2.4.4. UILoadListener應(yīng)用框架提供一種擴(kuò)展機(jī)制,在加載 UI 對象和注銷 UI 對象時加入自定義的處理邏輯。public interface IUILoadListene
35、r extends EventListenerpublic void load(UILoadEvent e); public void unload(UILoadEvent e);例如,想實(shí)現(xiàn)用戶功能,可以按如下步驟進(jìn)行:1. 在 BOS Studio 中定義UI 對象的擴(kuò)展屬性。此處定義功能編號和功能描述。2. 編寫 IUILoadListener 的實(shí)現(xiàn)類,在 load中UI 元數(shù)據(jù),獲取擴(kuò)展屬性中定義的信息,注冊用戶息。信息;在 unload中UI 元數(shù)據(jù),獲取擴(kuò)展屬性中定義的信息,注銷用戶信2.4.5. 序時簿類 UI序時簿是 EAS 規(guī)范地展現(xiàn)數(shù)據(jù)的方式,提供過濾的能力,可以進(jìn)行表格
36、數(shù)據(jù)的,使用 KDTable 來展現(xiàn)數(shù)據(jù)。處理,并可打開維護(hù)數(shù)據(jù)的編輯類界面。序時簿使用對象來執(zhí)行2.4.6. 類體系第21頁,總32頁類體系內(nèi)容CoreUI|- ListUI|- CoreBillListUI|- BillListUIEAS 的 UI 最高超類,繼承 BOS 定義的 CoreUIObject(從KDPanel 派生,這樣 UI 可以方便地嵌入到其它 UI 中)。 序時簿類 UI 的最高超類,有通用過濾功能,提供數(shù)據(jù)與顯示,關(guān)聯(lián)編輯界面的管理等。單據(jù)序時簿類UI 的超類。支持單據(jù)類的通用操作處理, 例如結(jié)清、凍結(jié)、審核等。處理狀態(tài)過濾與顯示。財務(wù)單據(jù)序時簿類 UI 的超類。暫時
37、沒有業(yè)務(wù)處理,以后添加。應(yīng)用框架開發(fā)指南2.4.7. 通用基類 CoreUI完成了通用職責(zé)處理,在此,進(jìn)行了權(quán)限、License、網(wǎng)絡(luò)的通用處理。2.4.8. 普通序時簿類 ListUI從 CoreUI 繼承下來。具有快速、通用過濾等基本功能。類方法介紹普通序時簿類 UI 從 com.kingdee.eas.framework.client.ListUI 繼承。通過 BOS Studio 完成UI 對象的創(chuàng)建、更改繼承 Query 對象的類型以及 KDTable 控件綁定等。必須重載的方法:1.protected abstract String getEditUIName():指示關(guān)聯(lián)的編輯
38、UI 對象名2.protected abstract IObjectBase getBizInterface():獲取列表對應(yīng)實(shí)體的業(yè)務(wù)接口,以便調(diào)用業(yè)務(wù)方法。要求實(shí)體必須從 ObjectBase 及其子類派生。3.protected String getLocateNames()返回可的列名數(shù)組。默認(rèn)實(shí)現(xiàn)。第22頁,總32頁示例:protected IObjectBase getBizInterface()return CurrencyFactory.getRemoteInstance();示例:protected String getEditUIName()return “com.king
39、dee.eas.basedata.assistant.client.CurrencyEditUI”;|- TreeListUI|- ComboTreeListUI|- TreeDetailListUI|- ComboTreeDetailListUI層次數(shù)據(jù)序時簿的 UI 超類。支持層次數(shù)據(jù)的展現(xiàn),提供KDTree 與 KDTable 的關(guān)聯(lián)處理,支持層次分類數(shù)據(jù)本身的編輯。帶擁有者的層次數(shù)據(jù)序時簿的 UI 超類。適用于層次數(shù)據(jù)本身還有分類的情形,例如物料按倉位分類。層次數(shù)據(jù)序時簿的 UI 超類。支持層次數(shù)據(jù)的展現(xiàn),提供KDTree 與 KDTable 的關(guān)聯(lián)處理,支持層次分類數(shù)據(jù)本身的編輯。帶
40、擁有者的層次數(shù)據(jù)序時簿的 UI 超類。適用于層次數(shù)據(jù)本身還有分類的情形,例如科目按科目表分類。應(yīng)用框架開發(fā)指南4.protected FilterInfo getDefaultFilterForQuery()可選的方法:1.protected void prepareUIContext(UIContext uiContext,java.awt.event.ActionEvent e):構(gòu)造傳遞給 EditUI 的 UIContext。利用這個方法,你可以加入需要的任何對象并傳遞給 EditUI。2.protected String getEditUIModal():產(chǎn)生編輯 UI 的方式,缺省
41、是 Dialog 方式??梢灾剌d這個方法,指定其它的模式。3.4.protected boolean initDefaultFilter():設(shè)置默認(rèn)過濾條件。該方法被 onLoad 調(diào)用。protected void refresh(ActionEvent e):界面刷新方法。通過傳遞的參數(shù) e 可以知道觸發(fā)源。在ListUI 的缺省實(shí)現(xiàn)中,refresh 是靠調(diào)用 execQuery 把數(shù)據(jù)重新獲取一遍來達(dá)到刷新的效果的。派生類可以依據(jù)實(shí)際情況來定義更合理的刷新策略。protected String getKeyFieldName():獲取 KDTable 中的主鍵列名稱,供編輯/刪除時獲
42、取主鍵用。默認(rèn)值為"id"。5.第23頁,總32頁示例:protected String getEditUIModal()return UIFactoryName.EDITWIN;示例:protected void prepareUIContext(UIContext uiContext, java.awt.event.ActionEvent e)/ 檢查是否按下新建按鈕if (e.getSource() = btnAddNew)uiContext.put(“myObject”, null);elseuiContext.pub(“myObject”, getMyObject
43、();/默認(rèn)進(jìn)行當(dāng)前 CU 的過濾。子類可重載。protected FilterInfo getDefaultFilterForQuery()FilterInfo filter = new FilterInfo(); filter.getFilterItems().add(newFilterItemInfo("CU",SysContext.getSysContext().getCurrentCU(),CompareType.EQUALS);return filter;/業(yè)務(wù)系統(tǒng)可重載實(shí)現(xiàn)下面方法,返回合適的字符串?dāng)?shù)組(表格列名),來達(dá)到的目的。protected Strin
44、g getLocateNames()String locateNames = new String2; locateNames0 = IFWEntityStruct.dataBase_Number; locateNames1 = IFWEntityStruct.dataBase_Name; return locateNames;應(yīng)用框架開發(fā)指南注意:BOS 自動生成 KDTable 的列時,使用的是 query 對象名.id 的形式,與超類中約定并不一致。要么在設(shè)計期將列名修改,要么在重載該方法返回正確的列名。常見問題1.問:序時簿界面打開時會自動并顯示所有的數(shù)據(jù),加入一個過濾條件應(yīng)該怎么做?
45、答:重載 initDefaultFilter 方法,為 mainQuery 對象(類型是 EntityViewInfo)增加過濾條件(filterItem)。也可彈出一個框(例如通用框),讓用戶指定過濾條件。2.問:我增加了一個按鈕,想在執(zhí)行完畢的時候刷新一下列表,該怎么做? 答:在 actionPerformed 方法最后一行加調(diào)用 exceQuery()的代碼即可。問:我增加了一個按鈕,想在執(zhí)行前先檢查列表是否有選中的行,該怎么做?答:在 actionPerformed 方法第一行加調(diào)用 checkSelected()的代碼即可。該方法在檢查到?jīng)]有選3.中的行時,會彈出框提示用戶,并且不再
46、繼續(xù)執(zhí)行 actionPerformed 方法中后面的代碼。4.問:如何得到選中行的主鍵值?答:使用 getSelectedKeyValue 方法即可2.4.9. 帶通用的序時簿類 CommonQueryListUI界面樣式。超類為 CommonQueryListUI,從 ListUI 繼承。在超類基礎(chǔ)上增加了對通用框的管理。類方法介紹帶通用的序時簿類 UI 從 com.kingdee.eas.framework.client.CommonQueryListUI 繼承??蛇x的方法:1. protected void prepareCommonQueryParam(CommonQueryPara
47、m param):在該方法中定義要傳遞給通用框的參數(shù)。超類的該方法已經(jīng)把對象放到了 param 中,通??刹槐卦僦剌d。如果有特別的需要,則按通用框的要求進(jìn)行設(shè)置。常見問題1. 問:打開帶通用的序時簿類 UI,缺省會彈出通用框,我怎么調(diào)整這個行為?第24頁,總32頁示例(用一個編寫的過濾頁面替換掉通用過濾頁面):protected void prepareCommonQueryParam(CommonQueryParam param)super.prepareCommonQueryParam(param); param.setShowFilter(false); / 不顯示通用過濾頁面param
48、.addPanel(new MyQueryPanel(); / 加入的過濾頁面應(yīng)用框架開發(fā)指南答:超類使用 getDefaultFilterInited()方法來判定 UI 是否已設(shè)置了缺省的 filter。當(dāng)沒有設(shè)置時,就會彈出通用框。你可以重載 initDefaultFilter 方法,設(shè)置缺省的 filter 并返回true(不設(shè)置 filter 也沒有關(guān)系,主要是返回 true 即可)。2.4.10.單據(jù)序時簿類 UI超類為 CoreBillListUI,從 ListUI 繼承。在超類基礎(chǔ)上增加了對單據(jù)通用操作的處理。2.4.11.層次數(shù)據(jù)序時簿類 UI超類為 TreeListUI,從
49、 ListUI 繼承。在超類基礎(chǔ)上,增加了一個 KDTree,以管理層次數(shù)據(jù)。除支持在KDTable 中展現(xiàn)數(shù)據(jù)的編輯外(該能力從 ListUI 繼承),還支持 Tree 本身的編輯(典型如地址簿分類的編輯)。類方法介紹層次數(shù)據(jù)序時簿類 UI 從 com.kingdee.eas.framework.client.TreeListUI 繼承。通過 BOS Studio 完成UI 對象的創(chuàng)建、更改繼承 Query 對象的類型以及處理控件綁定等。KDTree 上每個節(jié)點(diǎn)的類型為 KDTreeNode類型。必須重載的 abstract 方法:1. protected abstract String g
50、etQueryFieldName():點(diǎn)擊樹上節(jié)點(diǎn)時形成過濾條件時的字段,例如地址簿序時簿界面右邊的地址列表要依據(jù)左邊 Tree 上選中的地址分類而刷新,此處則返回 Address.class 即可。2. protected abstract ITreeBase getTreeInterface():獲取層次數(shù)據(jù)實(shí)體的業(yè)務(wù)接口,以便調(diào)用業(yè)務(wù)方法。要求實(shí)體必須從 TreeBase 及其子類派生。可選的方法:1. protected void buildTreeFilter():構(gòu)造子節(jié)點(diǎn)數(shù)據(jù)的過濾條件。在 TreeListUI 中默認(rèn)實(shí)現(xiàn)為在EntityViewInfo 中添加一個 getQue
51、ryFieldName()=treeNodeInfo 的過濾條件,即對象的某個屬性關(guān)聯(lián)到 Tree 節(jié)點(diǎn)所代表的對象。超類認(rèn)為這種條件是是最常見的情況,例如地址簿對象有一個屬性指向關(guān)聯(lián)的地址簿分組對象。該默認(rèn)實(shí)現(xiàn)依賴于 getQueryFieldName 純虛方法。如果你需要構(gòu)造的件不是這種形式,則需要重載本方法自行設(shè)定過濾條件。條第25頁,總32頁示例:protected void buildTreeFilter()KDTreeNode treeNode = (KDTreeNode)treeMain.getLastSelectedPathComponent(); AddressClassInfo info = (AddressClassInfo)treeNode.getUserObject();/ 清空并加入的過濾條件(通訊地址包含被選中地址簿分類的名稱=>僅示意而已) FilterIte
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 印染承包合同范例
- 會議營銷分成合同范例
- 各情況借款合同范本
- 廠房房租合同范例
- 關(guān)于施工合同范例
- 農(nóng)村修建樓房合同范例
- 產(chǎn)品鍍鋅加工合同范例
- 南通大學(xué)聘用合同范例
- 租房合同:租房定金協(xié)議
- 中英文賒銷合同范例
- 5G手機(jī)無線通訊濾波芯片產(chǎn)業(yè)化項(xiàng)目環(huán)境影響報告表
- 工會野炊活動方案
- 《對外援援助成套項(xiàng)目勘察設(shè)計取費(fèi)標(biāo)準(zhǔn)內(nèi)部暫行規(guī)定(稿)》
- 通用反應(yīng)單元工藝
- 空冷塔施工方案
- Inplan 操作手冊初稿
- AFM-原子力顯微鏡簡介
- 實(shí)用的尺寸公差等級一覽表
- 公司資產(chǎn)無償劃轉(zhuǎn)職工安置方案安置方案
- 最新報銷菜單(精編版)
- 安全生產(chǎn)標(biāo)準(zhǔn)化全套檔案
評論
0/150
提交評論