999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

模型驅動的預算管理系統設計與實現

2016-02-23 03:40:42郭寧遠徐建良
網絡安全與數據管理 2016年22期
關鍵詞:數據庫模型系統

郭寧遠,徐建良

(中國海洋大學 信息科學與工程學院,山東 青島 266100)

模型驅動的預算管理系統設計與實現

郭寧遠,徐建良

(中國海洋大學 信息科學與工程學院,山東 青島 266100)

針對財務預算的領域概念和復雜需求,將一種模型驅動的開發方式實踐于預算管理系統的設計與實現,使開發人員脫離復雜的數據庫設計,更加專注領域概念的消化、模型和數據傳輸對象的創建。給出了預算管理系統的整體說明和框架的總體結構設計,并以開發順序依次介紹了各層的設計與實現,最后結合系統快速上線的效果說明了這種模型驅動開發方式的可行性、便利性和快捷性。

預算管理; 信息系統;EntityFramework;ModelFirst; 數據傳輸對象; 多層架構;JSON;

0 引言

在面對某領域內的專業概念和復雜需求時,將新知識吸收轉化為軟件產品對于軟件開發人員來說是一項艱巨的任務。一方面在此過程中若軟件開發人員對領域專家的需求理解不透徹,將會導致工作重心的偏離、軟件交付期延長、需求頻繁變更等影響軟件開發和交付的嚴重后果。另一方面,軟件開發人員更偏向于使用技術來解決領域問題,比如沉溺于設計完美的數據庫來滿足需求,而這往往是事倍功半的方法。

基于模型的開發方式提高了代碼本身的溝通能力。模型是一種知識形式,它對知識進行有選擇的簡化和有目的的結構化[1]。使用適當的模型并將模型貫穿于整個開發過程,可以使軟件開發人員專注于需求相關的信息,簡化與領域專家的溝通,使知識表達更加準確,更加貼合需求。

EntityFramework是微軟研發的一種對象關系映射組件(ORM),它可以在關系型數據庫和對象之間產生自動映射[2]。在EntityFramework6.x版本中提供三種開發模式:CodeFirst、DatabaseFirst和ModelFirst[3]。本文將利用ModelFirst開發模式,以模型的構建為中心,通過模型驅動開發,數據庫由模型生成,開發人員只需將關注點放在領域模型和數據傳輸對象(DTO)的轉化上即可。

1 系統整體說明

1.1 系統基本流程

圖1 預算新建及審核流程

系統主要分為兩個業務流程,即預算業務流程和預算調整業務流程。

預算業務流程如圖1所示,起于專家對已經立項的項目添加預算,終于財務處管理員審核通過預算。

預算調整流程如圖2所示,貫穿于整個項目進行過程中,當本次預算出現改變等需要調整的情況時,專家提出調整請求,由科技處管理員審核。

圖2 預算調整新建及審核流程

1.2 系統模塊劃分

系統以項目預算業務流程為核心,以數據查詢、審核、分析為重心,包括基本信息維護、預算管理、預算調整管理、子課題管理、預算審核管理、調整審核管理、統計報表等功能。系統模塊如圖3所示。

圖3 模塊劃分圖

模塊功能簡要說明如下:

(1)基本信息維護:包括用戶、角色、權限、界面等用戶關聯信息管理,系統使用基于角色的訪問控制方法,可便捷簡單地處理用戶與權限之間關系;維護批復預算基本增、刪、改、查操作。

(2)預算管理:包括專家對負責項目預算信息的基本處理,如新建、修改、查看、保存、提交、報表導出等,以及該項目子課題的科目預算制定與子課題指派等功能。

(3)預算調整管理:預算調整是項目在執行過程中,專家對承擔的項目預算進行調整工作,包括調整的新建、修改、查看、保存、提交等工作,在調整過程中,可以添加新的子課題;專家亦可以查閱項目之前的每一次調整。

(4)子課題管理:專家可對子課題憑單號、賬本號進行編輯,也可查看參與的項目與子課題的預算分配情況。

(5)預算審核管理:財務處管理員對專家提交的項目預算進行審核。

(6)調整審核管理:科技處管理員對專家提交的預算調整進行審核。

(7)預算數據統計:提供子課題數據的導出功能,將系統中的數據根據財務處相關要求導出一定格式的DBF文件,供財務處統計、分析、導入等使用。

2 系統結構設計與各層次的實現

系統采用B/S架構,客戶端只需一個瀏覽器,就可以通過Web服務器與服務器端進行數據交互[4]。按照高效、易維護的原則將系統分為展示層、服務層、數據轉化層、業務邏輯層、領域模型層、DTO模型層六個層次,如圖4所示。

圖4 系統結構圖

系統打破傳統的以業務邏輯為中心的開發模式,轉為以領域模型和DTO模型為中心的開發模式,使前后端開發人員更專注處理用戶的需求,更快地理解、吸收領域知識,從而構建高質量、易維護的軟件產品。這種開發模式的順序為:

(1)開發人員與領域專家進行交流溝通,根據需求確定系統的領域模型結構,再根據領域模型構建前后臺傳輸的DTO模型。

(2)確定好領域模型和DTO模型,前端的開發只需關注與后端服務器交互的DTO模型,根據用戶對界面的要求和各個界面的DTO模型構建展示層中的各個界面。

(3)后端服務器端只需關注領域模型與DTO模型之間的轉化,根據需求的轉化規則完成業務邏輯層的編寫。

(4)根據前后臺約定的數據傳輸格式,完成數據轉化層編寫。

(5)編寫服務層WebService供前端展示層調用。

開發順序如圖5所示。

圖5 開發順序圖

2.1 領域模型層設計實現

領域模型層是系統的核心層,是連接整個系統的橋梁。在此層次中軟件開發人員利用EntityFramework的ModelFirst開發模式構建模型,模式的核心為EDM(EntityDataModel)技術,EDM提供圖形化的設計界面,將模型設計和代碼實現綁定,通過與領域專家的交流,利用頭腦風暴等活動將系統的領域概念和復雜需求等知識消化并提煉到模型當中,并通過不斷地修改和調整模型使之更滿足預算系統的需求,最終確定出整個系統的領域模型。

確定好領域模型后,開發人員只需保存模型,即可根據模型中屬性和實體間關聯等信息生成所有實體對象,并生成一個繼承于DbContext基類的數據庫上下文對象[5]。其中EntityFramework庫里面的DbContext基類為操控實體對象執行上下文環境, 提供所需的架構和映射元數據(Meatadata)、數據庫鏈接,同時還包括對象緩存、跟蹤狀態和關聯管理等功能[3]。

保存好模型并生成實體和數據庫上下文后,在模型中選擇“根據模型生成數據庫”,配置好連接字符串,即可從模型映射到相應的數據庫中,使開發人員擺脫使用復雜的數據庫管理工具進行數據庫設計和實現的工作。

以預算及其審核模塊為例,構建圖6所示模型。

圖6 預算及審核模型圖

2.2DTO模型層設計實現

領域模型層完成后,開發人員的下一個關注點應是數據的傳輸,也就是DTO模型的構建。

DTO(DataTransferObject)即數據傳輸對象,是一種用來在多層架構軟件系統中層間交換數據的對象。DTO的提出是為了在客戶端和服務器端交換大量的數據,而無需多個細粒度的調用,從而減少遠程調用的數目 ,避免相關的網絡負載[6]。

開發人員可根據領域模型和原型界面構建DTO模型。在預算管理系統框架中,業務邏輯層根據每個界面的數據需求從領域模型層中取出相應的數據并組合成與需求數據相對應的DTO對象,然后交由數據轉化層;或者由數據轉化層將服務層傳來的數據轉化成DTO對象,然后交由業務邏輯層進行處理。所以,DTO模型是前后臺數據傳輸的核心,確定好DTO模型后,向下關注業務邏輯層的編寫,向上關注數據轉化層、服務層、展示層的編寫,并且可以同時進行,大大節約了時間成本。

以預算審核列表的顯示為例,DTO模型的示例代碼如下:

publicclassBudgetAuditListDTO{

publicListbudgetAuditList{get;set; }

}

publicclassBudgetAuditVO{

publicintprojectid{get;set; }

publiclongtotalamounts{get;set; }

publiclongouteramounts{get;set; }

publicstringprjmanagername{get;set; }

publicstringprjstate{get;set; }

}

2.3 業務邏輯層設計實現

領域模型層和DTO模型層均構建完畢后,業務邏輯層的職責是領域模型和DTO模型之間的轉化。語言集成查詢(LanguageIntegratedQuery,LINQ)是一組語言特性和API,LINQtoEntities提供了查詢關系數據庫中的實體模型的方式[7]。在此層次中,系統使用LINQtoEntities技術,從領域模型實體中進行數據的增、刪、改、查。

以“我的子課題列表”的顯示為例,系統在接收到前臺的數據請求后,業務邏輯層使用LINQtoEntities技術將數據從數據庫中取出。示例代碼如下:

varquery=frommissin

database.MissionSet.OfType()

wheremiss.ManagerId==userId

selectnew{

MissionId=miss.Id,

ProjectId=miss.ProjectId,

MissionName=miss.MissionName

};

查詢結束后,將結果根據列表所對應的DTO模型進行DTO模型屬性的賦值和組合,示例代碼如下:

foreach(varqinqueryList){

MyMissionListVOmmlVO=newMyMissionListVO(){

missionid=q.MissionId,

projectid=q.ProjectId,

mssname=q.MissionName};

this.missionListDTO.Add(mmlVO);

}

經過上述步驟,業務邏輯層就完成了領域模型與DTO模型的轉化。

2.4 數據轉化層和服務層設計實現

預算管理系統中,前后臺數據是通過JSON(JavaScriptObjectNotation)格式來傳輸的。JSON是一種輕量級的數據傳輸格式,易于閱讀和編碼,可以在多種語言之間進行數據交換[8]。數據轉化層將業務邏輯層傳來的DTO對象序列化成JSON格式的數據,或者根據服務層傳來的JSON格式的數據反序列化成DTO對象。

預算管理系統的數據轉化層使用JSON.NET技術實現JSON的序列化和反序列化。使用JSON.NET技術可以自動進行JSON的序列化和反序列化,是.NET框架下一款功能強大且高效的開源序列化和反序列化工具[9]。

以子課題更新功能為例,先將服務層傳來的子課題信息反序列化為DTO對象,交由業務邏輯層保存后,將返回的子課題再序列化為JSON返回給服務層。示例代碼如下:

MissionDTOmissionDTO=

JsonConvert.DeserializeObject(json);

missionDTO=aarmb.SaveAndReturn(database);

json=

JsonConvert.SerializeObject(missionDTO,Formatting.Indented);

預算管理系統的服務層提供WebService供展示層調用,負責接收展示層發來的請求,并將數據傳給數據轉化層。

以子課題更新的WebService為例,服務層接收到前端的請求后,實例化數據轉化層的對象,將JSON等數據傳給數據轉化層。示例代碼如下:

publicclassAddAndReturnMissions:WebServiceBase{

[WebMethod]

publicvoidSaveAndReturn(stringmssParam){

AddAndReturnMissionsTransaarmT=

newAddAndReturnMissionsTrans();

aarmT.SaveAndReturn(Database,mssParam);}

}

2.5 展示層設計實現

預算管理系統的展示層采用ExtJS富客戶端框架。ExtJS是基于JavaScript語言開發的客戶端Ajax框架,優點是與后臺技術無關,而且瀏覽器兼容性較強[10]。

在確定完領域模型和DTO模型后,軟件的前臺開發人員利用ExtJS后臺技術無關的優點,并利用之前確定好的DTO模型和需求分析階段的原型界面即可編寫前端代碼。

預算管理系統利用ExtJS提供的視圖、表單、列表、表格等組件構建友好、美觀的用戶界面,并通過ExtJS提供的Ajax功能與后臺進行交互。以財務處管理員登錄后的界面為例,用戶登錄成功后,系統發起主界面的Ajax請求,取得相應數據并渲染到用戶界面。示例界面如圖7所示。

圖7 預算管理系統主界面

3 結論

模型驅動的開發方式適用于需求急迫、領域概念復雜、對軟件質量要求高的軟件研發。本文針對預算管理系統的復雜需求,展示了模型驅動開發方式的實踐,軟件開發人員使用模型作為一種語言,與領域專家交流并不斷改進模型,快速地明確需求,使領域知識精確地消化于模型中。在明確模型之后,以模型為橋梁,使系統框架中各個層次并行開發,大大節約了時間成本。并行的開發使開發人員專注于各層次的功能需求,提高了代碼的質量。通過模型,軟件開發人員還可以挖掘潛在需求進行深度開發,進一步改進軟件的性能。

目前預算系統已上線使用,其在短期內的上線使用和其穩定性證明了文中介紹的基于模型驅動的開發方式的可行性、便利性和快捷性。

[1]EVANSE.領域驅動設計[M].趙俐,盛海艷,劉霞,等,譯.北京:人民郵電出版社, 2010.

[2] 黃睿.基于Java技術的ORM工具接口的設計與實現[D]. 長春:吉林大學,2012.

[3] 沈霞菲, 王建中.基于.NETEntityFramework數據庫訪問機制的設計與應用[J].現代電子技術,2014(24):5-8.

[4] 谷惠敏.基于Web的高校檔案管理系統設計[J].現代電子技術,2015(21):139-141.

[5]LERMANJ,MILLERR.Programmingentityframework:DbContext[M].O’reillyMedia,2012.

[6] 朱彬, 陳志軍.DTO模式的研究及對其實現的改進[J].沈陽航空航天大學學報,2004,21(4):53-55.

[7] 郭睿志, 邊力, 譚龍丹,等.數據庫查詢中LINQtoEntities應用研究[J].軟件導刊,2014(1):122-124.

[8] 高靜, 段會川.JSON數據傳輸效率研究[J].計算機工程與設計,2011,32(7):2267-2270.

[9]ALLENJ.Json.NETclaimssignificantperformanceimprovementsoverother.NETSerializers[J].InfoQ,2010.

[10] 易俗, 殷慧文.基于ExtJS的富客戶端聯通分銷商管理系統設計[J].遼寧大學學報(自然科學版),2015,42(2):143-149.

Model-driven design and implementation of the budget management system

GuoNingyuan,XuJianliang

(CollegeofInformationScience&Engineering,OceanUniversityofChina,Qingdao266100,China)

Aimingatthedomainconceptsandcomplexrequirementsoffinancialbudget,thispaperputsamethodofmodel-drivendevelopmentpracticeinthedesignandimplementationofthebudgetmanagementsystem.Thismethodmakesdevelopersgetridofthecomplexdatabasedesign,andfocusontheabsorptionofdomainconcepts,modelsandthecreationofadatatransferobject.Thispaperpresentstheoveralldescriptionandframeworkofbudgetmanagementsystemstructure,andintroducesthedesignandimplementationofeachlayeraccordingtothedevelopmentorder.Finally,combiningwiththeapplicationeffectofsystemitshowsthefeasibility,convenienceandrapidityofusingthismethodofmodel-drivendevelopment.

budgetmanagement;informationsystem;EntityFramework;ModelFirst;DTO;multi-layerarchitecture;JSON

TP

ADOI: 10.19358/j.issn.1674- 7720.2016.22.003

郭寧遠,徐建良.模型驅動的預算管理系統設計與實現[J].微型機與應用,2016,35(22):11-14.

2016-05-25)

郭寧遠(1990-),男,碩士研究生,主要研究方向:軟件工程與智能信息系統。

徐建良(1969-),男,博士,教授,主要研究方向:計算復雜性理論、計算機軟件與理論。

猜你喜歡
數據庫模型系統
一半模型
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
數據庫
財經(2017年2期)2017-03-10 14:35:35
3D打印中的模型分割與打包
數據庫
財經(2016年15期)2016-06-03 07:38:02
主站蜘蛛池模板: 欧美国产在线精品17p| 日本欧美成人免费| 精品国产免费观看| 在线亚洲天堂| 国产精品一区在线麻豆| 久久国产成人精品国产成人亚洲| 日韩在线播放中文字幕| 国产成人av一区二区三区| 国产精品99久久久| 一区二区午夜| 色综合热无码热国产| 国产精品视屏| 午夜爽爽视频| 精品国产一区91在线| 国产噜噜在线视频观看| 国产视频久久久久| 色135综合网| 亚洲日韩精品无码专区| 精品无码国产一区二区三区AV| 一本视频精品中文字幕| 久久免费精品琪琪| 91福利国产成人精品导航| 伊人大杳蕉中文无码| 视频二区亚洲精品| 成人综合在线观看| 91精品国产91久久久久久三级| 男女性午夜福利网站| 国产亚洲精品精品精品| 久久免费视频6| 国产精品久久久精品三级| 日韩高清无码免费| 伊人查蕉在线观看国产精品| 亚洲成人精品| 亚洲欧美天堂网| 欧美第一页在线| 人人澡人人爽欧美一区| 欧美区一区二区三| 亚洲色大成网站www国产| 亚洲天堂免费观看| 久久99国产综合精品1| 天堂在线亚洲| 国产迷奸在线看| 久久久91人妻无码精品蜜桃HD| 婷婷综合色| 尤物成AV人片在线观看| 国产99久久亚洲综合精品西瓜tv| 九九这里只有精品视频| 草草影院国产第一页| 国产又色又刺激高潮免费看| 一本大道视频精品人妻 | 爆乳熟妇一区二区三区| 中文国产成人精品久久| 日韩不卡高清视频| 激情综合网址| 精品国产成人高清在线| 国产色偷丝袜婷婷无码麻豆制服| 波多野结衣亚洲一区| 国产喷水视频| 婷婷六月综合网| 国产午夜小视频| 久热中文字幕在线| 国产导航在线| 国产欧美精品一区二区 | 中文字幕在线播放不卡| 国产jizz| 五月婷婷综合色| 午夜不卡视频| 国产精品专区第1页| 国产又粗又猛又爽视频| 亚洲黄色成人| 最新无码专区超级碰碰碰| 国产精品自在在线午夜区app| 一区二区在线视频免费观看| 国产91线观看| 影音先锋丝袜制服| 国产在线小视频| 一区二区在线视频免费观看| 久久免费视频播放| 99视频有精品视频免费观看| 真实国产乱子伦视频| 日韩成人在线网站| 精品视频在线一区|