MES開發(fā)與應用 課件 模塊3 車間配送管理模塊_第1頁
MES開發(fā)與應用 課件 模塊3 車間配送管理模塊_第2頁
MES開發(fā)與應用 課件 模塊3 車間配送管理模塊_第3頁
MES開發(fā)與應用 課件 模塊3 車間配送管理模塊_第4頁
MES開發(fā)與應用 課件 模塊3 車間配送管理模塊_第5頁
已閱讀5頁,還剩326頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

3.1單表功能開發(fā)深圳市信息職業(yè)技術學院需求說明及效果01目

錄單表UML建模02單表功能開發(fā)實現步驟03數據庫表生成及菜單配置04效果展示及功能驗證05知識回顧業(yè)務端工程項目的搭建;網頁端工程項目的搭建;桌面端工程項目的搭建;項目工程目錄結構及規(guī)范;項目運行原理。學習目標通過本節(jié)學習可以:掌握單表功能的UML建模;掌握單表功能的開發(fā)實現,能獨立完成單表功能的開發(fā);掌握單表功能的菜單配置;掌握單表的數據庫表和字段是如何生成的;能夠根據需求對完成的功能進行測試;能夠修復測試過程中的BUG。01需求說明及效果單表功能開發(fā)需求說明需求說明單表的功能開發(fā),以讀者分類功能的開發(fā)為例。功能邏輯列屬性:類別號,類別名稱,可借書數量,可借書天數,修改人和修改時間操作命令:查詢、添加、復制添加、修改、刪除、保存、導出查詢條件:類別號和類別名稱編輯模式:行內編輯類別號非空非重復,且修改時只讀類別名稱非空類別號和類別名稱最大可輸入長度為40可借書數量最小值為1本,且不允許輸入小數和負數可借書天數最大值為180天,且不允許輸入小數和負數修改人和修改時間列寬設置為200;效果效果02單表UML的建模思考題單表UML建模使用的建模工具是?UML建模UML建模1、雙擊打開ModelFirst工具,右邊的項目總管的命名層級與項目工程一致,在中間設計部分“右鍵--新建--類”。UML建模2、根據需求說明,進行UML建模如下:UML建模UML建模3、建好的模型如下,完成后保存建模。UML建模UML建模4、建好的模型如下,完成后保存建模(注意要保存到一個有讀寫權限的文件夾下)。UML建模生成代碼5、選中“類”右鍵“生成代碼”。生成代碼生成代碼6、選中2018下面的模板(Entity.mft和WebViewConfig.mft),點擊“Generate”生成代碼。生成代碼03單表功能開發(fā)實現步驟思考題單表功能開發(fā)的查詢面板和查詢條件是如何進行開發(fā)實現的?拷貝生成文件到項目中1、在“生成文件列表”中,選擇ReaderCat這行數據,右鍵“打開所在文件夾”(如左圖),連同文件夾一起復制粘貼到對應的服務端工程中(如右圖)??截愇募椒斩斯こ炭截惿晌募巾椖恐?、點擊ReaderCat類,添加名稱空間的使用,生成不報錯。處理報錯和查詢面板配置拷貝生成文件到項目中3、在“生成文件列表”中,選擇ReaderCatViewConfig這行數據,右鍵“打開所在文件夾”(如左圖),連同文件夾一起復制粘貼到對應的客戶端工程中(如右圖)??截愇募絎eb端工程拷貝生成文件到項目中4、生成代碼不報錯,重寫查詢方法配置查詢條件。處理報錯和查詢條件配置類別號修改只讀設置5、類別號修改時只讀,描述和實現如下。修改只讀實現說明:后臺獲取或者設置實體的操作狀態(tài)都可以用PersistenceStatus進行操作,這個屬性在后臺會頻繁用到。隱藏創(chuàng)建人和創(chuàng)建時間6、列屬性配置:類別號,類別名稱,可借書數量,可借書天數,修改人和修改時間。列屬性配置說明:列表默認是將創(chuàng)建人、創(chuàng)建時間、修改人和修改時間顯示的,如果要隱藏需要手動設置設置修改人和修改時間列寬7、修改人和修改時間列寬設置為200。列寬設置界面驗證設置8、類別號非空非重復,類別名稱非空;類別號和類別名稱最大可輸入長度為40。界面驗證設置界面驗證設置9、可借書數量最小值為1本,且不允許輸入小數和負數;可借書天數最大值為180天,且不允許輸入小數和負數。界面驗證設置界面驗證設置設置完成后,需要在實體元數據中“更新”或者“選擇更新”,生成對應規(guī)則為啟用才會生效,這一步可以配置菜單后再一起操作。界面驗證設置注意:實體元數據生成的規(guī)則,即使代碼把相應規(guī)則刪掉了,這里的規(guī)則也不會自動刪除,界面的驗證還會生效,如果要移除需要手動進行刪除或者是在規(guī)則中禁用。知識擴展對生成的實體進行一個簡單的說明是為了后續(xù)如果不通過實體建模通過代碼實現,知道怎么去定義一個實體進行功能開發(fā)實現,或者是實體出現了問題,知道從哪些地方去排查。實體配置說明知識擴展ViewConfig界面配置說明。界面配置說明知識擴展列屬性配置。界面配置說明初始菜單配置11、在Web端工程(SIE.Web.LibMan)的LibModule中配置初始菜單。初始菜單配置04數據庫表生成及菜單配置思考題通過程序的升級數據庫功能,除了生成表還會生成?生成數據庫表1、運行項目,在“實體元數據”中升級數據庫表和序列,生成完成后會在數據庫中新建一張表和兩個序列如右圖。生成表更新元數據2、更新實體元數據:我們在ReaderCat實體中加了驗證,如果不進行更新操作,添加的驗證不會生效。更新規(guī)則配置菜單3、配置菜單。配置菜單05效果展示及功能驗證效果預覽點擊功能地圖中剛剛配置的菜單,效果如下。效果預覽效果預覽驗證通過的數據可以正常保存數據,驗證不通過會有對應的提示信息,這樣一個單表功能就開發(fā)完成了。效果預覽練習1、以下關于ModelFirst實體建模,類的屬性說法正確的是()A:同一個類的屬性可以重名;

B:類屬性的備注不添加,不會有任何影響;C:類的屬性名可以是Id;

D:類的屬性名不能為CreateBy。2、

SMOM開發(fā)界面視圖配置方法中,首先執(zhí)行的是哪個視圖配置方法()A:ConfigView; B:ConfigListView;C:ConfigDetailsView; D:ConfigQueryView。DA本章小結本章主要講解了工業(yè)管理軟件單表功能的開發(fā),包括:根據需求進行UML建模;根據UML選擇模型生成代碼;將生成的代碼拷貝到項目中根據業(yè)務需求修改完善代碼;配置初始菜單;運行項目生成數據庫表、更新元數據和配置菜單;根據業(yè)務需求對完成的功能進行測試和問題修復。單表功能在工業(yè)管理軟件開發(fā)中較基礎也較重要,學員必須掌握,為接下來的學習打下基礎。THANKYOU深圳市信息職業(yè)技術學院3.2帶關系單表功能開發(fā)深圳市信息職業(yè)技術學院需求說明及效果01目

錄帶關系單表UML建模02帶關系單表功能開發(fā)實現步驟03數據庫表生成及菜單配置04效果展示及功能驗證05知識回顧根據需求進行單表功能UML建模;單表功能的開發(fā)實現步驟;初始菜單配置;數據庫表和序列的生成;實體元數據的更新生成規(guī)則;配置菜單及功能驗證學習目標通過本節(jié)學習可以:掌握帶關系單表功能的UML建模;掌握帶關系單表功能的開發(fā)實現,能獨立完成帶關系單表功能的開發(fā);掌握帶關系單表功能的菜單配置;掌握帶關系單表的數據庫表和字段是如何生成的;能夠根據需求對完成的功能進行測試;能夠修復測試過程中的BUG。01需求說明及效果帶關系單表功能開發(fā)需求說明需求說明開發(fā)一個讀者管理功能,讀者管理的類別號關聯(lián)到讀者分類的類別號,具體業(yè)務描述如下:功能邏輯列屬性:讀者編號、姓名、類別號(下拉選擇實現,取的是讀者分類的類別號)、類別名稱(類別名稱根據選擇的類別號自動帶出,只讀)、單位、手機號、微信、已借書數量、創(chuàng)建人、創(chuàng)建時間、修改人和修改時間操作命令:查詢、添加、修改、刪除、復制新增、保存、導出查詢條件:讀者編號、姓名、類別號、修改時間(默認當前周)編輯模式:行內編輯讀者編號非空,姓名非空,類別號非空,單位非空讀者編號和姓名最大可輸入長度為20效果效果02帶關系單表的UML建模思考題數據庫外鍵關系在UML建模中是如何實現的?UML建模UML建模1、將業(yè)務需求轉化為UML建模,實現如下,類別號通過關聯(lián)關系實現,類別名稱不在模型中體現。UML建模UML建模2、類屬性的類型和驗證如下。UML建模3、“類別號”通過“關聯(lián)”關系去關聯(lián)了讀者分類的實體。UML建模UML建模4、建好模型后,保存UML模型,選擇讀者管理的類,右鍵-生成代碼。UML建模生成代碼5、選中2018下面的模板(Entity.mft和WebViewConfig.mft),點擊“Generate”生成代碼。生成代碼03帶關系單表功能開發(fā)實現步驟思考題類別號的下拉列表要正常顯示和操作,需要做哪些開發(fā)實現?拷貝生成文件到項目中1、在“生成文件列表”中,選擇ReaderMan這行數據,右鍵“打開所在文件夾”,連同文件夾一起復制粘貼到對應的服務端工程中。拷貝文件到服務端工程拷貝生成文件到項目中2、點擊ReaderMan類,添加名稱空間的使用,生成不報錯。處理報錯和查詢面板配置拷貝生成文件到項目中3、同樣的在“生成文件列表”中,選擇ReaderManViewConfig這行數據,右鍵“打開所在文件夾”,連同文件夾一起復制粘貼到對應的客戶端工程中??截愇募娇蛻舳斯こ炭截惿晌募巾椖恐?、添加名稱空間的使用,生成代碼不報錯,重寫查詢方法配置查詢條件。處理報錯和查詢條件配置下拉選擇配置5、實體引用屬性說明:通過類圖關聯(lián)關系生成的實體引用屬性不會生成label,需要在實體中手動添加Label。下拉選擇配置下拉選擇配置6、關聯(lián)關系會生成兩個屬性名,一個是id,一個是關聯(lián)的實體,說明如下。下拉選擇配置下拉選擇配置7、引用屬性界面配置說明:通過類圖生成的ViewConfig的引用屬性是用的實體屬性,會造成N+1的問題,需要調整為Id去處理。下拉選擇配置調整為:下拉選擇配置8、下拉表格列和數據顯示不出來,需要在關聯(lián)的實體對應的界面中去配置選擇視圖的列屬性;如類別號關聯(lián)的是讀者分類,則在讀者分類的界面去配置選擇視圖的屬性,如下。下拉選擇配置下拉選擇配置9、配置前后對比。下拉選擇配置下拉顯示配置10、下拉表格配置好后,發(fā)現選擇的數據在界面無法顯示,應該如何配置。下拉顯示配置下拉顯示配置11、通過在關聯(lián)實體上標記特性顯示成員DisplayMember進行配置。下拉顯示配置下拉查詢條件配置12、下拉彈出列表查詢條件的配置,默認是以顯示名稱作為模糊查詢條件,如果還要配置其他的查詢條件,可以在實體中配置QueryMembers。下拉查詢條件配置下拉聯(lián)動設置13、類別名稱因為是只讀顯示,這里我們使用視圖屬性實現,視圖屬性屬于界面操作屬性,不映射數據庫字段。下拉聯(lián)動設置注意:視圖屬性依賴于引用屬性,如果實體中沒有引用屬性,無法使用視圖屬性。下拉聯(lián)動設置14、聯(lián)動顯示在界面中配置,通過框架默認下拉編輯器UsePagingLookUpEditor的DicLinkField進行配置。下拉聯(lián)動設置注意:dic字典的value值,只能貪婪加載一層(也就是只支持“實體.引用屬性.屬性名”,不支持“實體.引用屬性.引用屬性.屬性名”)。下拉聯(lián)動設置15、選擇或者是切換“類別號”,“類別名稱”的內容會自動變更對應選擇“類別號”關聯(lián)的“類別名稱”。下拉聯(lián)動設置注意:1.如果界面的查詢方法重寫了,重寫的查詢方法一定要加貪婪加載,否則默認查詢帶出的類別名稱是空白的;2.該功能是使用的框架自帶的查詢,框架默認做了貪婪加載,不需要額外處理。初始菜單配置在Web端工程(SIE.Web.LibMan)的LibModule中配置初始菜單。初始菜單配置04數據庫表生成及菜單配置生成數據庫表1、運行項目,在“實體元數據”中升級數據庫表和序列,生成完成后會在數據庫中新建一張表和兩個序列如右圖。生成表更新元數據2、更新實體元數據:我們在ReaderMan實體中加了驗證,如果不進行更新操作,添加的驗證不會生效。更新規(guī)則配置菜單3、配置菜單。配置菜單05效果展示及功能驗證效果預覽點擊功能地圖中剛剛配置的菜單,效果如下。效果預覽效果預覽驗證通過的數據可以正常保存數據,驗證不通過會有對應的提示信息,這樣一個帶關系單表功能就開發(fā)完成了。效果預覽練習1、在實體類中任何情況下都可以使用視圖屬性()2、設置下拉列表選擇之后的顯示名稱是在實體上標記DisplayMember特性,該特性關系的屬性可以是引用實體或者是視圖屬性()3、本地代碼調試中,SMOM開發(fā)中配置的菜單顯示不出來,可能的原因()A:WebClient調試工程可能沒有添加對應菜單的工程引用;B:功能對應的客戶端工程選擇的目標框架不符合要求;C:功能對應的客戶端工程的初始化類有沒有添加模塊標記特性,如果添加了,可能添加的不對;D:沒有在菜單功能中進行模塊初始化操作;錯錯ABCD本章小結本章主要講解了工業(yè)管理軟件帶關系單表功能的開發(fā),包括:根據需求進行UML建模;根據UML選擇模型生成代碼;帶關系單表功能的開發(fā)步驟;配置初始菜單;運行項目生成數據庫表、更新元數據和配置菜單;根據業(yè)務需求對完成的功能進行測試和問題修復;能夠理解和區(qū)分單表和帶關系單表開發(fā)的異同點。帶關系單表功能開發(fā)需要在單表的基礎上進行學習,這部分的內容在工業(yè)管理軟件開發(fā)中較基礎也較重要,學員必須掌握。THANKYOU深圳市信息職業(yè)技術學院3.3主從表功能開發(fā)深圳市信息職業(yè)技術學院需求說明及效果01目

錄主從表UML建模02主從表功能開發(fā)實現步驟03數據庫表生成及菜單配置04效果展示及功能驗證05知識回顧根據需求進行帶關系單表功能UML建模;帶關系單表功能的開發(fā)實現步驟;下拉選擇列表、顯示名稱、查詢條件的開發(fā)配置;初始菜單配置;數據庫表和序列的生成;實體元數據的更新生成規(guī)則;配置菜單及功能驗證學習目標通過本節(jié)學習可以:掌握主從表功能的UML建模;掌握主從表功能的開發(fā)實現,能獨立完成主從表功能的開發(fā);掌握主從表功能的菜單配置;掌握主從表的數據庫表和字段是如何生成的;能夠根據需求對完成的功能進行測試;能夠修復測試過程中的BUG;通過主從表的開發(fā)能夠延伸出多個從、主從孫結構的開發(fā)實現;01需求說明及效果帶關系單表功能開發(fā)需求說明需求說明以圖書分類功能的開發(fā)為例,功能描述如下:功能邏輯主列表屬性:分類編碼、分類名稱、圖書狀態(tài)(枚舉,包括在館和不在館)、備注、創(chuàng)建人、創(chuàng)建時間、修改人和修改時間主列表操作命令:查詢、添加、修改、刪除、導出查詢條件:分類編碼、分類名稱、圖書狀態(tài)明細列表屬性:小類編碼、小類名稱、備注、創(chuàng)建人、創(chuàng)建時間、修改人和修改時間明細列表操作命令:添加、修改、刪除、復制添加、保存和導出主和明細布局4:6顯示主編輯模式:表單編輯;明細編輯模式:行內編輯主表添加修改命令兩列顯示,備注占三行兩列分類編碼和分類名稱非空,分類編碼和分類名稱非重復,分類編碼最大輸入長度為15,類別名稱最大輸入長度為50明細添加修改驗證小類編碼和小類名稱非空,分類編碼最大輸入長度為15,類別名稱最大輸入長度為50效果效果02主從表的UML建模思考題主從結構的關系在UML建模中是如何實現的?UML建模UML建模1、圖書大類的建模:建模只建業(yè)務相關屬性,注意業(yè)務屬性不要跟框架的屬性沖突。UML建模UML建模1、圖書狀態(tài)的枚舉類。UML建模UML建模3、圖書小類的建模:建模只建業(yè)務相關屬性,注意業(yè)務屬性不要跟框架的屬性沖突。UML建模UML建模4、圖書大類和圖書小類的關系。UML建模5、組合關系說明。UML建模注意:框架的關聯(lián)關系、枚舉、組合關系,一定是通過關系進行處理(默認關系的名稱為空白,會根據類名去生成,如果要更改關系的名稱,注意不要跟類中添加的屬性名稱沖突),不要在類中去建模屬性。生成代碼6、建好模型后,保存UML模型,選擇圖書分類的類,右鍵-生成代碼。生成代碼生成代碼7、選中2018下面的模板Entity.mft,點擊“Generate”生成代碼。生成代碼生成代碼8、選擇圖書分類的類,右鍵-生成代碼。生成代碼生成代碼9、選中2018下面的模板WebViewConfig.mft,點擊“Generate”生成代碼。生成代碼03主從表功能開發(fā)實現步驟思考題子屬性在ViewConfig是如何配置實現的?拷貝生成文件到項目中1、在“生成文件列表”中,將Entity.mft模型生成的文件連同文件夾一起復制粘貼到對應的服務端工程中??截愇募椒斩斯こ烫幚韴箦e和配置查詢面板2、添加名稱空間的使用,生成不報錯,并將圖書大類的[CriteriaQuery]取消注釋。處理報錯和查詢面板配置拷貝生成文件到項目中3、同樣的在“生成文件列表”中,將WebViewConfig.mft模型生成的文件連同文件夾一起復制粘貼到對應的客戶端工程中??截愇募娇蛻舳斯こ烫幚韴箦e4、通過ModelFirst生成的主界面的子屬性是異常的,生成的代碼如下。處理報錯子屬性修改如下:查詢條件配置5、在主實體對應的界面配置查詢條件,子實體不配置(主實體配置了查詢面板,子實體不要配置)。查詢條件配置界面配置修改6、主列表設置父子顯示比例、啟用表單編輯模式、移除復制新增按鈕

。界面配置修改界面配置修改7、主界面添加修改界面配置。界面配置修改初始菜單配置在Web端工程的初始化類中配置初始菜單。初始菜單配置04數據庫表生成及菜單配置生成數據庫表1、運行項目,在“實體元數據”中升級數據庫表和序列,生成表和序列如右圖。生成表更新元數據2、更新實體元數據:我們在圖書大類和圖書小類實體中加了驗證,如果不進行更新操作,添加的驗證不會生效。更新規(guī)則配置菜單3、配置菜單:先更新功能模塊,更新完成后配置菜單配置菜單05效果展示及功能驗證效果預覽點擊功能地圖中剛剛配置的菜單,效果如下。效果預覽效果預覽添加修改命令界面效果。效果預覽思考題主從結構開發(fā),編輯界面打不開,出現js報錯??偨Y1、實體建模的命名要規(guī)范,文件的層級與項目工程的層級保持一致,避免出現不規(guī)范引發(fā)的異常;2、實體建模組合關系生成出來的是單向的,需要手動將箭頭去掉;3、如果使用代碼段建組合關系,子和組的引用關系要指向父;4、實體屬性標記的驗證規(guī)則需要進行實體元數據的更新才會生效;5、創(chuàng)建的屬性不要跟框架的屬性沖突;6、通過SQL語句創(chuàng)建的表,除了創(chuàng)建表還得創(chuàng)建表對應的序列,否則操作數據會出現異常;7、子實體不要進行菜單配置,配置菜單只配置根實體;總結練習1、主從表功能開發(fā),使用標準查詢配置界面的查詢條件是在哪里配置?()A:主實體對應的ViewConfig的ConfigQueryView方法中配置;B:子實體對應的ViewConfig的ConfigQueryView方法中配置;C:主實體上標記特性[CriteriaQuery];D:子實體上標記特性[CriteriaQuery]。2、主從表配置菜單需要把主實體和子實體都配置菜單。()A錯本章小結本章主要講解了工業(yè)管理軟件主從表功能的開發(fā),包括:根據需求進行UML建模;根據UML選擇模型生成代碼;主從表的開發(fā)實現步驟;配置初始菜單;運行項目生成數據庫表、更新元數據和配置菜單;根據業(yè)務需求對完成的功能進行測試和問題修復;能夠對功能進行擴展,完成一主多從、主從孫關系的功能開發(fā)實現。主從表功能開發(fā)的內容在工業(yè)管理軟件開發(fā)中較基礎也較重要,學員必須掌握。THANKYOU深圳市信息職業(yè)技術學院3.4平臺通用配置深圳市信息職業(yè)技術學院——驗證規(guī)則配置實現目

錄驗證規(guī)則開發(fā)實現示例01框架驗證規(guī)則實現邏輯介紹02框架驗證規(guī)則實現03經驗總結04知識回顧根據需求進行主從表功能UML建模;主從表功能的開發(fā)實現步驟;初始菜單配置;運行項目生成數據庫表、序列、更新元數據和配置菜單;能夠獨立進行主從表功能的問題修復;能夠對功能進行擴展,完成一主多從、主從孫關系的功能開發(fā)實現學習目標通過本節(jié)學習可以:掌握框架驗證規(guī)則包括哪幾種實現方式,不同的實現方式有什么差異?掌握不同驗證規(guī)則的開發(fā)實現步驟;能夠修復驗證規(guī)則開發(fā)過程中的bug。01驗證規(guī)則開發(fā)實現示例思考題通過前面課程的學習,我們知道框架驗證可以在哪里進行配置實現?可以在實體屬性中標記規(guī)則特性,然后進行實體元數據的更新。業(yè)務描述業(yè)務描述讀者分類增加驗證:

讀者分類被讀者管理引用后,不允許刪除讀者管理增加驗證:1、讀者編號、姓名聯(lián)合驗證唯一2、手機號驗證輸入格式3、已借書數量不能大于讀者分類中維護的可借書數量開發(fā)實現-讀者分類被讀者管理引用后不允許刪除實現邏輯:可以用框架的規(guī)則去實現,引用后不允許刪除使用框架的引用規(guī)則,需要自己在服務端建一個規(guī)則類,以Rule進行結尾,繼承NoReferencedRule進行實現,如下圖實現:開發(fā)實現開發(fā)實現-讀者管理中讀者編號、姓名聯(lián)合驗證唯一實現邏輯:該驗證的實現可以使用非重復驗證來實現,這里以規(guī)則類的方式開發(fā)實現:開發(fā)實現開發(fā)實現-讀者管理中手機號輸入格式驗證實現邏輯:該驗證的實現可以使用實體規(guī)則進行驗證,也是需要建一個規(guī)則類進行實現:開發(fā)實現開發(fā)實現-已借書數量不能大于讀者分類中維護的可借書數量實現邏輯:該驗證的實現也可以通過實體規(guī)則進行驗證。開發(fā)實現注意:以上所有的規(guī)則實現都要進行實體元數據的更新才會生效,修改了對應的規(guī)則需要重新進行實體元數據的更新。思考題前面示例驗證規(guī)則的實現中,繼承的父類包括哪些?02框架驗證規(guī)則實現邏輯介紹框架驗證規(guī)則實現邏輯介紹通過前面單表、主從表的開發(fā)和剛剛的驗證規(guī)則示例中可以看出,我們的規(guī)則可以在實體屬性中標記特性進行實現,也可以在服務端定義規(guī)則類進行實現,之間有什么差異呢?從實現可以看出,在實體中標記的特性只能是對該屬性的簡單驗證;對于復雜驗證或者是屬性之間的聯(lián)合驗證無法在實體中標記特性,就需要引入規(guī)則類進行實現。兩者的相同點就是:實現完成后都需要進行實體元數據的更新才會生效??蚣茯炞C規(guī)則實現邏輯框架驗證規(guī)則實現邏輯介紹框架驗證規(guī)則邏輯的實現:框架針對單個屬性的簡單驗證是在實體屬性中標記特性進行實現的(這些也可以在驗證方法中進行實現),框架在生成表格或者表單的時候,將屬性的這些特性和屬性對應Ext控件一起生成返回到前端,然后前端解析將可以轉換為Ext控件的驗證規(guī)則轉換為控件規(guī)則,在操作控件時,在對應控件中有紅色框框顯示(這種是做了前后端雙重驗證);不能轉換的,保存數據時給出具體的異常提示(只做了后臺驗證)。對于復雜的驗證,如規(guī)則類中實現的規(guī)則,是無法解析為對應控件的驗證,則是在后臺進行數據的驗證處理,即通過RF.Save()保存數據前,去調用實體對應的驗證,驗證不通過給出具體的異常提示(走的后臺驗證)。框架驗證規(guī)則實現邏輯03框架驗證規(guī)則的實現思考題框架驗證規(guī)則的實現方式包括幾種?分別是?框架驗證規(guī)則實現方式框架通用的驗證方式,框架提供了三種實現方式,分別為運行時規(guī)則、標準規(guī)則和預編譯規(guī)則。1、運行時規(guī)則:1)通過在實體元數據模塊進行運行時配置的規(guī)則,如字段長度、非空等驗證。如果是部署的服務,添加或者修改了配置規(guī)則,需要重啟服務。2)在實體屬性中標記特性,只能標記非空,非重復,最大長度,最小長度,最大值和最小值,標記的特性是針對單個屬性的驗證,標記完成后需要對實體元數據進行更新操作,驗證才會生效。說明:該種方式實現的規(guī)則如果在實體元數據規(guī)則類中把對應規(guī)則禁用了,即使在代碼中標記了對應的規(guī)則,也不會生效;規(guī)則刪除后,實體元數據的規(guī)則不能自動刪除,需要手動把對應的規(guī)則刪除或者是禁用。驗證規(guī)則的實現方式框架驗證規(guī)則實現方式2、標準規(guī)則:在實體配置中重寫AddValidations()方法實現規(guī)則驗證,編寫代碼運行項目后立即生效,不可配置。3、預編譯規(guī)則:通過C#代碼的方式實現驗證規(guī)則,然后在實體元數據功能進行更新并配置啟用。包含的規(guī)則父類:實體規(guī)則(繼承EntityRule<T>)、非重復規(guī)則(繼承NotDuplicateRule<T>)、刪除被引用規(guī)則(繼承NoReferencedRule<T>)說明:預編譯規(guī)則也需要在實體元數據中進行更新才會生效,如果規(guī)則的類名修改了,原來類名生成的規(guī)則不會自動刪除,會根據新的類名重新生成一條規(guī)則。驗證規(guī)則的實現方式運行時規(guī)則實現1、在“實體元數據(數據字典)”菜單的“實體規(guī)則”頁簽中,維護規(guī)則,做基礎的驗證。運行時規(guī)則實現說明:在項目開發(fā)階段不建議在該界面直接維護規(guī)則。運行時規(guī)則實現2、在實體屬性中配置驗證規(guī)則,包含的驗證:

非空驗證:[Required]

非重復驗證:[NotDuplicate]

最大長度驗證:[MaxLength(40)]

最小長度驗證:[MinLength(2)]

最大值驗證:[MaxValue(9999)]

最小值驗證:[MinValue(1)]

示例:運行時規(guī)則驗證示例,如讀者分類中類別號的驗證:運行時規(guī)則實現運行時規(guī)則實現注意事項:1、驗證要生效,必須進行實體元數據的更新,且規(guī)則狀態(tài)是啟用狀態(tài)才會生效;2、實體屬性配置的規(guī)則刪除,元數據生成的規(guī)則不會自動刪除,需要手動刪除或者禁用,否則規(guī)則還會生效;3、引用屬性的非空驗證是通過屬性的類型進行驗證的,不要在引用屬性中標記非空特性[Required],否則非空驗證的提示會提示兩次。運行時規(guī)則實現標準規(guī)則實現標準規(guī)則是在實體配置中重寫添加驗證方法AddValidations進行實現:標準規(guī)則實現1、標準規(guī)則中可以實現運行時規(guī)則和預編譯規(guī)則中實現的所有規(guī)則(雖然可以實現,但是被引用刪除規(guī)則建議還是使用預編譯中刪除被引用的規(guī)則實現,減少開發(fā)的代碼量);2、標準規(guī)則與運行時和預編譯規(guī)則的差異:標準規(guī)則不可配置,運行時和預編譯規(guī)則可配置。標準規(guī)則實現標準規(guī)則中可以實現的驗證:1、非空驗證;rules.AddRule(屬性名,newRequiredRule());2、非重復驗證,單個和多個屬性的非重復驗證;

單個屬性非重復驗證:rules.AddRule(屬性名,newNotDuplicateRule());

多個屬性非重復驗證

rules.AddRule(newNotDuplicateRule()

{Properties=

{

屬性名1,

屬性名2

},MessageBuilder=(e)=>

{return“驗證不通過的提示信息".L10N();

}

});標準規(guī)則實現標準規(guī)則實現3、長度驗證,包括最小和最大長度的設置;

rules.AddRule(屬性名,newStringLengthRangeRule(){Min=2,Max=40});4、最大最小值驗證;rules.AddRule(屬性名,newNumberRangeRule(){Min=1,Max=100});5、正則表達式驗證;

rules.AddRule(屬性名,newRegexMatchRule(){Regex=newRegex(@"^((\d{3}-\d{8}|\d{4}-\d{7,8})|(0?(13|14|15|17|18|19)[0-9]{9}))$"),MessageBuilder=(o)=>{ return"電話號碼不正確";}});標準規(guī)則實現標準規(guī)則實現6、實體驗證

rules.AddRule(newHandlerRule(){Handler=(o,e)=>{

//這里可以進行查數據庫進行操作,當前實體的數據不能滿足驗證判斷要求時可查數據庫判斷varreader=o.CastTo<實體類>();if(判斷的條件)

e.BrokenDescription=“具體的驗證提示信息".L10nFormat(reader.Name);}});標準規(guī)則實現標準規(guī)則實現示例讀者管理中通過標準規(guī)則驗證實現如下驗證:讀者編號非空,姓名非空,單位非空讀者編號,姓名聯(lián)合驗證唯一讀者編號和姓名最大可輸入長度為20手機號需要驗證格式已借書數量不能大于可借書數量標準規(guī)則實現示例預編譯規(guī)則實現預編譯規(guī)則也是需要對實體元數據進行更新,編寫的規(guī)則才會生效;1、非重復規(guī)則:繼承NotDuplicateRule<T>,在構造函數中實現非重復邏輯預編譯規(guī)則實現[System.ComponentModel.DisplayName(“規(guī)則名稱信息")][System.ComponentModel.Description(“規(guī)則描述信息")]

public

class

XXXRule:NotDuplicateRule<T>

{

public

XXXRule()

{Scope=EntityStatusScopes.Update|EntityStatusScopes.Add;Properties.Add(屬性1);Properties.Add(屬性2);MessageBuilder=(e)=>

{

vart=easT;//e為對應的實體

return

“驗證不通過的提示信息[{0}]”.L10nFormat(t.A);//{0}為參數設置

};

}

}規(guī)則作用域,用Scope進行設置,默認為Add和Update。非重復驗證的屬性,只能設置數據庫存在的字段屬性,且不能是復雜屬性提示信息,可不設置,非重復框架有默認的提示。預編譯規(guī)則實現2、被引用不允許刪除:繼承NoReferencedRule<T>,在構造函數中實現被引用不能刪除的邏輯。預編譯規(guī)則實現[System.ComponentModel.DisplayName(“規(guī)則名稱信息")][System.ComponentModel.Description(“規(guī)則描述信息")]

public

class

XXXRule:NoReferencedRule<T>

{

public

XXXRule()

{Scope=EntityStatusScopes.Delete;Properties.Add(被引用的屬性名);MessageBuilder=(e,c)=>

{

varcat=easT;

return

“被引用刪除的提示信息{0}”.L10nFormat(c);

};

}

}規(guī)則作用域,用Scope進行設置,默認為刪除,通常不用設置。只能是引用Id屬性,通過其他實體.引用Id屬性名加載出來。驗證不通過的提示信息,引用不允許刪除框架有默認提示信息,如果想修改框架的提示信息可通過此屬性添加,其中e為實體,c為被引用的次數。預編譯規(guī)則實現3、實體規(guī)則:繼承EntityRule<T>,在這個規(guī)則中可以實現所有規(guī)則。預編譯規(guī)則實現[System.ComponentModel.DisplayName("規(guī)則名稱信息")][System.ComponentModel.Description("規(guī)則描述信息")]

public

class

XXXRule:EntityRule<T>

{

public

XXXRule()//構造函數

{Scope=EntityStatusScopes.Add|EntityStatusScopes.Update;//規(guī)則作用域默認為新增和修改,如果是只在添加操作生效,可以對該屬性進行規(guī)則設置ConnectToDataSource=false;

}

protected

override

voidValidate(IEntityentity,RuleArgse)//驗證方法

{ //這里可以調用控制器方法對數據庫進行操作

vart=entityasT;//entity為當前驗證的實體

if(驗證的條件)e.BrokenDescription=“驗證不通過的提示信息{0}".L10nFormat(t.A);

}

}是否連接數據倉庫,默認為false,如果在驗證方法中有對數據庫進行操作,該屬性要設置為true。思考題標準規(guī)則的實體驗證和預編譯規(guī)則的標準規(guī)則,都能實現所有的驗證,有什么區(qū)別?04經驗總結經驗總結標準驗證AddValidations和預編譯驗證(在服務端編寫驗證規(guī)則類)是兩種不一樣的實現方式,同一邏輯用兩種方式驗證的效果是一樣的,只是其中一種是代碼所見即所得,一種是可配置;在項目上對應的驗證邏輯,根據實際需要選擇其中一種方式實現即可;非重復驗證盡量使用框架非重復的子類進行驗證,不要在實體規(guī)則中進行驗證,原因是寫的邏輯比較多,還有可能寫漏,用框架的非重復驗證會簡單很多,也避免一些不必要的bug出現;被引用不允許刪除盡量使用框架的,原因與非重復驗證一致;String類型的長度驗證,框架默認配置的長度是20,如果有些字段需要設置為其他的長度限制,需要自己手動設置,如果框架string類型的長度限制都需要調整,可以在配置文件中配置DefaultFieldMaximumLength。框架的這些驗證都是在調用RF.Save()保存數據庫前進行校驗的,使用DB操作數據庫驗證不會生效。經驗總結思考題在部署好的服務中,為什么增加或者修改實體元數據對應功能的規(guī)則不生效?使用db或者sql語句執(zhí)行數據庫保存操作,驗證規(guī)則未生效?修改實體元數據的規(guī)則要重啟服務后才能生效。框架的實體規(guī)則是要在通過實體倉庫保存數據前才會執(zhí)行,通過db和sql直接操作數據庫不會執(zhí)行。練習1、框架驗證規(guī)則是什么時候執(zhí)行的()A:數據添加時; B:數據修改時;C:數據保存前; D:數據刪除時。2、被引用不允許刪除規(guī)則的作用域是新增和修改。()3、標準規(guī)則需要進行實體元數據的初始化才會生效。()C錯錯本章小結本章主要講解了工業(yè)管理軟件驗證規(guī)則的實現,包括:框架驗證規(guī)則的實現邏輯;運行時驗證規(guī)則的開發(fā)實現步驟與配置;標準規(guī)則的開發(fā)實現;預編譯規(guī)則的開發(fā)實現;框架驗證規(guī)則是在什么情況下執(zhí)行的。驗證規(guī)則在整個工業(yè)管理軟件開發(fā)中比較重要,學員要能夠根據不同的業(yè)務需求選擇合適的驗證規(guī)則去實現對應的業(yè)務驗證邏輯,并且遇到問題能夠定位和修復。THANKYOU深圳市信息職業(yè)技術學院3.4平臺通用配置深圳市信息職業(yè)技術學院——提交事件目

錄提交事件課題導入01提交前事件02提交后事件03經驗總結04知識回顧框架驗證規(guī)則的實現邏輯;運行時驗證規(guī)則的開發(fā)實現步驟與配置;標準規(guī)則的開發(fā)實現步驟;預編譯規(guī)則的開發(fā)實現步驟;驗證規(guī)則使用的注意事項;學習目標通過本節(jié)學習可以:掌握提交前事件的開發(fā)實現步驟;掌握提交后事件的開發(fā)實現步驟;掌握使用提交事件應該注意哪些問題;了解框架提交事件的應用場景。01提交事件課題導入課題導入在做功能開發(fā)時,對于一些功能或者是框架通用的邏輯,我們常規(guī)的開發(fā)思路是寫一個通用的方法,需要用到這個方法時去調用該方法,這種方式是需要開發(fā)人員自己寫代碼去調用;提交事件是針對上述這種通用邏輯引入的,將功能的一些通用邏輯寫到提交事件的方法中,由框架統(tǒng)一去執(zhí)行,不需要自己額外去調用。提交事件介紹提交事件介紹提交事件:分為提交前和提交后事件。提交前事件:針對某個實體,保存之前的通用邏輯處理,可以使用提交前事件處理;程序在調用RF.Save()保存實體數據之前框架會自動去調用提交前事件的方法執(zhí)行對應的邏輯。提交后事件:針對某個實體,保存之后的通用邏輯處理,可以使用提交后事件處理;程序在調用RF.Save()保存實體數據之后框架會自動去調用提交后事件的方法執(zhí)行對應的邏輯。02提交前事件提交前事件開發(fā)示例實現步驟業(yè)務描述:讀者管理功能數據保存前,如果讀者管理的操作為新增時,將讀者管理關聯(lián)的讀者分類的更新時間設置為當前操作時間。該業(yè)務實現使用提交前事件來處理,實現步驟如下:1、在服務端新建一個類,以Submitting結尾,繼承OnSubmitting,關聯(lián)實體為讀者管理的實體類提交前事件開發(fā)步驟提交前事件開發(fā)示例實現步驟2、鼠標點擊報錯的地方,實現抽象類。提交前事件開發(fā)步驟提交前事件開發(fā)示例實現步驟3、給提交前事件類增加名稱DisplayName和描述Description信息。提交前事件開發(fā)步驟提交前事件開發(fā)示例實現步驟4、實現業(yè)務邏輯:讀者管理的操作為新增時,將讀者管理關聯(lián)的讀者分類的更新時間設置為當前操作時間。提交前事件開發(fā)步驟提交前事件開發(fā)示例實現步驟5、運行項目,進行實體元數據的更新,會在讀者管理的提交前事件的子頁簽生成一筆對應的數據,如下:提交前事件開發(fā)步驟提交前事件開發(fā)示例實現步驟6、可以在Invoke方法中設置斷點,在讀者管理中插入一筆數據點擊保存,在讀者分類中查看效果,可以看到修改時間更新了。提交前事件開發(fā)步驟思考題提交前事件的命名規(guī)范?該類是添加在服務端工程還是客戶端工程?提交前事件繼承的父類是?03提交后事件提交后事件開發(fā)示例實現步驟業(yè)務描述:讀者管理功能數據保存后,如果讀者管理的操作狀態(tài)為修改時,且管理的讀者分類為學生時,更新對應讀者分類的可借書天數,可借書天數在原來的基礎上加1,當可借書天數>=90時,不執(zhí)行更新操作;該業(yè)務實現使用提交前事件來處理,實現步驟如下:1、在服務端新建一個類,以Submitted結尾,繼承OnSubmitted,關聯(lián)實體為讀者管理的實體類提交后事件開發(fā)步驟提交后事件開發(fā)示例實現步驟2、鼠標點擊報錯的地方,實現Invoke抽象類。提交后事件開發(fā)步驟提交后事件開發(fā)示例實現步驟3、給類增加名稱DisplayName和描述Description信息提交后事件開發(fā)步驟提交后事件開發(fā)示例實現步驟4、實現業(yè)務邏輯。提交后事件開發(fā)步驟提交后事件開發(fā)示例實現步驟5、運行項目,進行實體元數據的更新,會在讀者管理的提交后事件的子頁簽生成一筆對應的數據,如下:提交后事件開發(fā)步驟提交后事件開發(fā)示例實現步驟6、可以在Invoke方法中設置斷點,在讀者管理中修改一筆讀者分類為學生的數據,在讀者分類中查看效果。提交后事件開發(fā)步驟思考題提交后事件與提交前事件的區(qū)別?04經驗總結經驗總結1、提交前、提交后事件使用要生效,必須進行實體元數據更新,狀態(tài)為可用;2、每次修改了提交前或者提交后事件,也必須進行實體元數據的更新;3、提交事件后臺代碼刪除,在實體元數據對應提交事件子列表的數據不會刪除,需要手動去提交事件子頁簽將對應數據禁用,或者是在后臺數據庫將數據刪除。

提交事件的表為:MDA_ENTITY_SUBMIT_EVENT,通過DISCRIMINATOR區(qū)分為提交前后事件;DISCRIMINATOR=‘A’,為提交前事件;DISCRIMINATOR=‘B’,為提交后事件;經驗總結經驗總結4、提交事件后臺的類名修改了,修改之前通過“更新”生成的提交事件對應的數據程序不會刪除,會重新再生成一筆數據;也就是提交事件在“更新”之后修改了類名,需要把修改類名之前的數據禁用或者從數據庫中刪除。5、提交事件只有通過RF.Save()進行實體保存時才會執(zhí)行,如果是通過DB操作的數據,或者是其他批量保存,不會執(zhí)行對應的提交邏輯。6、編寫提交事件要避免出現死循環(huán),當Invoke方法中有通過RF.Save保存提交事件關聯(lián)的實體就會出現死循環(huán)。經驗總結思考題使用DB或者sql語句保存數據,提交事件為什么沒執(zhí)行進去?提交事件只有使用RF.Save()保存數據才會執(zhí)行。練習1、框架驗證規(guī)則是什么時候執(zhí)行的()A:數據添加時; B:數據修改時;C:數據保存前; D:數據刪除時。2、被引用不允許刪除規(guī)則的作用域是新增和修改。()3、標準規(guī)則需要進行實體元數據的初始化才會生效。()C錯錯本章小結本章主要講解了工業(yè)管理軟件的提交事件,包括:提交事件的使用場景;提交前事件的開發(fā)實現步驟;提交后事件的開發(fā)實現步驟;提交事件的經驗總結。學員要了解提交事件的使用場景,選擇更切合業(yè)務場景的方式進行提交事件的開發(fā)實現,過程中遇到問題,能夠進行調試定位問題并修復。THANKYOU深圳市信息職業(yè)技術學院3.4平臺通用配置深圳市信息職業(yè)技術學院——控制器與界面分組介紹目

錄控制器實現介紹01框架分組介紹及自定義分組的實現方式02自定義分組的實現示例03自定義分組的注意事項04知識回顧提交事件的使用場景介紹;提交前事件的開發(fā)實現步驟;提交后事件的開發(fā)實現步驟;提交事件的經驗總結;學習目標通過本節(jié)學習可以:掌握控制器的使用;掌握自定義分組的開發(fā)實現;掌握自定義分組可能引發(fā)的異常并能對其進行修復;了解框架分組的實現邏輯。01控制器實現介紹控制器類介紹控制器類介紹控制器:主要用于處理業(yè)務的后端數據庫操作的邏輯實現,通常一個實體對應一個控制器,如實體名為Item,則控制器的名稱為ItemController,對Item進行增刪改查方法的實現在ItemController中進行實現??刂破髅?guī)范:XXXController,即以Controller結尾??刂破黝悓崿F:

控制器類:必須建在服務端工程中

訪問修飾符:public

繼承:DomainController

方法:非私有方法必須是虛方法virtual,且功能邏輯相似的方法盡量放到一起,方法的編寫與C#基礎的方法編寫規(guī)范一致。控制器類方法的調用:RT.Service.Resolve<控制器類名>().方法名(方法參數);思考題本地代碼啟用代理調試,客戶端調用控制器的方法執(zhí)行不了報錯的原因?調用的控制器方法未標記為virtual。02框架分組介紹及自定義分組的實現方式框架分組介紹框架ViewConfig的默認分組包括:ListView、DetailsView、SelectionView、QueryView、ImportView??蚣苣J的分組原理:界面首先進入到ConfigView方法中,在該方法中通過對ViewGroup進行分組判斷,如果分組ViewGroup為ListView則進入到ConfigListView方法中,進行列表界面呈現的配置;如果分組ViewGroup為DetailsView則進入到ConfigDetailsView方法中,進行添加修改命令界面呈現配置;如果分組ViewGroup為SelectionView則進入到ConfigSelectionView方法中,進行下拉選擇列表的界面配置;如果分組ViewGroup為QueryView則進入到ConfigQueryView方法中,進行查詢條件的界面配置;如果分組ViewGroup為ImportView則進入到ConfigImportView方法中,進行下載Excel模板的列頭配置??蚣芊纸M介紹自定義分組的實現方式在很多場景下,使用框架默認的列表和表單分組方法是無法滿足項目需求的,比如框架從菜單進入頁面默認是列表界面,如果想點擊菜單就打開為表單;又比如我們希望在表單操作時,新增和修改的操作界面不一樣等等之類的需求,框架提供的默認分組是無法滿足這種個性化的需求,這個時候就需要引入自定義分組來解決這種需求。從前面的框架默認分組原理能夠看出,要使用自定義分組其實就是更改ViewGroup的值,不進入到框架的視圖配置方法中,自己定義視圖配置方法去實現項目需求??蚣茏远x分組的實現方式包括三種:主界面自定義分組的實現、子列表或者子表單自定義分組的實現、命令自定義分組的實現。自定義分組的實現方式思考題ConfigDetailsView方法默認什么情況下會執(zhí)行進來?設置編輯模式為表單編輯,點擊添加或者修改按鈕會執(zhí)行進來。03自定義分組的實現示例思考題點擊菜單,進入菜單主界面,展示為表單形式,應該如何實現?主界面自定義分組的使用

功能描述:在讀者分類中點擊菜單進入到界面功能,不進入配置列表視圖,而是進入到我們自定義的視圖配置方法中。實現步驟:1、在讀者分類中定義一個分組的常量(這里不直接用字符串是字符串出了問題難定位問題)主界面自定義分組的使用主界面自定義分組的使用

2、在配置菜單中使用分組,分組名為上面定義的常量名。主界面自定義分組的使用主界面自定義分組的使用

3、在讀者分類中自定義一個視圖配置方法。主界面自定義分組的使用主界面自定義分組的使用

4、在讀者分類的配置視圖ConfigView方法中添加分組的判斷,分組為我們自定義的分組名時,調用步驟3的方法。主界面自定義分組的使用主界面自定義分組的使用

5、效果。主界面自定義分組的使用思考題主從結構,主表為表單編輯,從表為行內編輯,主界面從表的展示與主表添加修改按鈕從表的展示不一致,如何實現?子列表自定義分組的使用步驟

功能描述:圖書分類添加修改命令中圖書小類使用自定義分組實現。需求描述子列表自定義分組的使用步驟

1、在讀書小類視圖配置中定義一個分組常量。子列表自定義分組的使用子列表自定義分組的使用步驟

2、在圖書大類的明細視圖ConfigDetailsView的圖書小類的子列表屬性中使用分組。子列表自定義分組的使用子列表自定義分組的使用步驟

3、在圖書小類中添加自定義視圖配置方法。子列表自定義分組的使用子列表自定義分組的使用步驟

4、在圖書小類的配置視圖ConfigView方法中添加分組的判斷,分組為我們自定義的分組名,調用步驟3的方法。子列表自定義分組的使用子列表自定義分組的使用步驟

5、效果。子列表自定義分組的使用說明:附加子列表和附加子表單的自定義分組的實現步驟與子列表自定義分組實現步驟一致。思考題表單編輯模式,添加和修改按鈕的界面配置不一致,應該如何實現?命令自定義分組的使用步驟

命令的自定義分組主要是指表單編輯模式下的自定義分組,列表編輯模式(行內編輯模式)的操作命令都是在表格內操作,沒有分組的設置。功能描述:這里以圖書分類的添加命令為例,點擊添加命令進入到自定義分組視圖配置的實現,如下圖描述。業(yè)務需求命令自定義分組的使用步驟

1、在讀書大類中添加自定義視圖配置方法。業(yè)務需求命令自定義分組的使用步驟

2、在讀書大類的ConfigView方法中調用自定義視圖配置方法。業(yè)務需求命令自定義分組的使用步驟

3、重寫添加命令(js文件需要嵌入到資源),更改框架默認的ViewGroup(與步驟2的分組名一致),這里只需要掌握命令分組的更改,添加命令的具體使用在添加命令中再詳細介紹。業(yè)務需求命令自定義分組的使用步驟

4、在讀書大類的ConfigListView方法中替換添加命令。業(yè)務需求命令自定義分組的使用步驟

5、效果。業(yè)務需求04自定義分組的注意事項自定義分組注意事項1、自定義分組的分組名盡量不要使用字符串,容易出錯;2、自定義分組一定要記得進行額外授權,否則普通權限會存在問題;

通過View.DeclareExtendViewGroup(分組名)進行授權。3、自定義視圖配置方法使用默認命令組合不生效(即View.UseDefaultCommands()失效),必須通過View.UseCommands(WebCommandNames.Add)一個個將命令加上;4、自定義視圖配置方法的屬性后面必須加show(),否則屬性顯示不出來,如下必須將show配置上

View.Property(p=>p.Code).Show();5、自定義視圖配置方法要使用using(View.OrderProperties())對列顯示順序進行排序,否則列顯示順序會亂。注意事項思考題自定義分組普通賬號界面權限異常的排查思路?1、檢查分配權限的用戶是否為普通賬號對應的庫存組織的管理員;2、有沒有在菜單中進行“更新功能模塊”或“更新選定模塊”;3、自定義的分組名有沒有使用View.DeclareExtendViewGroup()加到額外的視圖中。練習1、自定義分組的列要按順序顯示,需要在自定義視圖方法中使用()指定列顯示順序。2、自定義分組方法中,列要能正常顯示,需要在屬性列配置后面加()。3、自定義分組普通賬號權限正常,需要在界面配置ConfigView方法中配置()。4、自定義分組方法中可以使用View.UseDefaultCommands()配置界面命令。()View.OrderProperties()View.DeclareExtendViewGroup(自定義分組名);錯Show()本章小結本章主要講解了工業(yè)管理軟件的控制器與界面分組介紹,包括:控制器的使用;框架分組的實現邏輯;自定義分組的實現方式;自定義分組的開發(fā)實現示例;自定義分組開發(fā)過程中的注意事項??刂破骱头纸M的使用在工業(yè)管理軟件開發(fā)中比較重要,使用頻率較高,學員要掌握控制器方法的編寫和調用,以及自定義分組的開發(fā)實現,并了解什么情況下選擇使用自定義分組實現業(yè)務需求。THANKYOU深圳市信息職業(yè)技術學院3.4平臺通用配置深圳市信息職業(yè)技術學院——實體和界面配置Api實體屬性實體屬性特性實體特性實體配置實體介紹視圖介紹視圖配置視圖屬性配置知識擴展知識回顧控制器實現介紹;框架分組介紹;自定義分組的實現方式,三種入口的實現方式;自定義分組三種實現方式的實現示例;自定義分組的注意事項;學習目標通過本節(jié)學習可以:掌握實體包含的特性、實體屬性、屬性標簽;掌握實體的配置;掌握界面的方法及使用;掌握界面方法的屬性配置、命令配置、界面呈現配置;了解實體的組成;了解界面的組成。01實體介紹思考題平臺框架定義的實體通用屬性包括哪些?實體介紹實體介紹1、實體通常會映射數據庫,所有新建實體類要建在服務端工程;2、實體類必須包含在對應文件夾下;文件夾以“實體名+S”進行命名;3、實體一定要包含命名空間,且命名空間要規(guī)范,一般為“對應工程名+文件夾名”;4、實體一般定義為部分類,直接或間接繼承DataEntity;5、實體類繼承的父實體盡量不要包含子列表屬性,如果包含,子實體又沒有用new關鍵字覆蓋父實體屬性,BS生成界面會報錯;6、實體類中盡量只包含對應的屬性,盡量不要去寫與業(yè)務邏輯相關的代碼;實體介紹實體介紹7、實體屬性包含一般屬性、引用屬性、列表屬性、只讀屬性和視圖屬性;默認情況下一般屬性和引用屬性會映射生成數據庫表字段,其他的屬性不會。8、創(chuàng)建實體的屬性,我們只建業(yè)務相關的屬性,業(yè)務屬性不要和框架屬性命名沖突,框架定義的屬性包括:Id,CreateBy,CreateDate,InvOrgId,IsPhantom,SyncId,UpdateBy,UpdateDate;框架屬性對應數據庫表字段如下:9、實體類中的實體配置以“類名+Config”進行命名;02實體屬性一般屬性實體屬性:實體屬性是通過托管屬性進行注冊的,托管屬性通過P<T>.Register()方法進行注冊,T為所注冊的托管屬性的實體所有者(Owner)。一般屬性:普通類型的屬性#region

分類編碼Code///

<summary>///分類編碼///

</summary>[Label("分類編碼")]public

static

readonlyProperty<string>CodeProperty=P<BigBookCat>.Register(e=>e.Code);///

<summary>///分類編碼///

</summary>public

stringCode{get{returnGetProperty(CodeProperty);}set{SetProperty(CodeProperty,value);}}#endregion一般屬性一般屬性支持的屬性類型:stringbool、bool?int、int?,long,long?double、double?DateTime、DateTime?枚舉類型、Nullable<枚舉類型>Byte[]引用屬性引用屬性:引用類型的屬性,包括引用ID和引用實體兩個屬性,必須在同一實體中成對定義,屬性類型為double。引用屬性需指定引用類型ReferenceType,一般引用為Normal,子實體引用父實體為Parent。#region

讀者管理與讀者分類的關系ReaderCat[Label("類別號")]public

static

readonlyIRefIdPropertyReaderCatIdProperty=P<ReaderMan>.RegisterRefId(e=>e.ReaderCatId,ReferenceType.Normal);///

<summary>///讀者管理與讀者分類的關系Id///

</summary>public

doubleReaderCatId{get{return(double)GetRefId(ReaderCatIdProperty);}set{SetRefId(ReaderCatIdProperty,value);}}///

<summary>///讀者管理與讀者分類的關系///

</summary>public

static

readonlyRefEntityProperty<ReaderCat>ReaderCatProperty=P<ReaderMan>.RegisterRef(e=>e.ReaderCat,ReaderCatIdProperty);///

<summary>///讀者管理與讀者分類的關系///

</summary>publicReaderCatReaderCat{get{returnGetRefEntity(ReaderCatProperty);}set{SetRefEntity(ReaderCatProperty,value);}}#endregion引用屬性引用Id引用實體引用類型,一般外鍵為Normal列表屬性列表屬性:子列表的屬性,一對多關系中,父實體包含子實體的列表。#region

圖書大類與小類的關系SmallBookCatList///

<summary>///圖書大類與小類的關系///

</summary>public

static

readonlyListProperty<EntityList<SmallBookCat>>SmallBookCatListProperty=P<BigBookCat>.RegisterList(e=>e.SmallBookCatList);///

<summary>///圖書大類與小類的關系///

</summary>publicEntityList<SmallBookCat>SmallBookCatList{get{return

this.GetLazyList(SmallBookCatListProperty);}}#endregion列表屬性只讀屬性只讀屬性:只讀屬性用于表示實體中的一個只讀的數據。只讀屬性主要為界面展現層設計。#region

全名FullName///

<summary>///全名///

</summary>[Label("全名")]public

static

readonlyProperty<string>FullNameProperty=P<BigBookCat>.RegisterReadOnly(e=>e.FullName,e=>e.GetFullName(),CodeProperty,NameProperty);///

<summary>///全名///

</summary>public

stringFullName{ get{return

this.GetProperty(FullNameProperty);}}private

stringGetFullName(){ return

this.Code+"("+this.Name+")";}#endregion只讀屬性視圖屬性視圖屬性:視圖屬性是通過引用屬性懶加載的數據,主要為界面展現層設計。如果實體和繼承的父實體中沒有引用屬性,則不能使用視圖屬性。#region

類別名稱CatName

///

<summary>

///類別名稱

///

</summary>[Label("類別名稱")]

public

static

readonlyProperty<string>CatNameProperty=P<ReaderMan>.RegisterView(e=>e.CatName,p=>p.ReaderCat.CatName);

///

<summary>

///類別名稱

///

</summary>

public

stringCatName

{

get{return

this.GetProperty(CatNameProperty);}

}

#endregion視圖屬性通過引用實體.屬性名加載出來視圖屬性的內容思考題實體的一般屬性支持哪些類型?03實體屬性特性實體屬性特性屬性名稱標簽(Label):用于在實體屬性上聲明屬性的顯示名稱。必填標簽(Required):聲明實體屬性不能為空,字符串類型屬性會標記該特性。非重復標簽(NotDuplicate):聲明實體屬性不能重復。最大長度標簽(MaxLength):聲明實體屬性的最大長度,字符串類型的屬性會標記該特性。最小長度標簽(MinLength):聲明實體屬性的最小長度,字符串類型的屬性會標記該特性。最大值標簽(MaxValue):聲明實體屬性的最大值,數值類型的屬性會標記該特性。最小值標簽(MinValue):聲明實體屬性的最小值,數值類型的屬性會標記該特性。屬性默認值(DefaultValue):屬性默認值設置,作用域為當前實體。實體屬性特性04實體特性實體特性實體類型特性(RootEntity,ChildEntity,QueryEntity):用于在實體上聲明實體的類型。實體

溫馨提示

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

最新文檔

評論

0/150

提交評論