劉芳 徐昊 林錦州 郝樹新
摘 要:該文主要講述基于NHibernate的雙燃料汽車業(yè)務(wù)信息管理系統(tǒng)的設(shè)計(jì)。該設(shè)計(jì)采用四層架構(gòu),應(yīng)用UML建模語言進(jìn)行系統(tǒng)分析和設(shè)計(jì),在持久層采用NHibernate,用以實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)和業(yè)務(wù)邏輯的分離,以便提高系統(tǒng)的擴(kuò)展性和可移植性。詳細(xì)介紹了系統(tǒng)設(shè)計(jì)結(jié)構(gòu)、功能模塊劃分;分析了對(duì)象關(guān)系映射(ORM)組件——NHibernate的特性。該文所研究的NHibernate技術(shù)可以應(yīng)用在不同數(shù)據(jù)庫(kù)平臺(tái)下,靈活性高,提高了應(yīng)用系統(tǒng)的開發(fā)效率。
關(guān)鍵詞:信息管理系統(tǒng)設(shè)計(jì) NHibernate 持久化
Abstract:This article mainly describes the design of dual-fuel vehicle business information management system based on NHibernate.The design uses a four-tier architecture,and adopts UML modeling language for systemic analysis, encapsulates the NHibernate as data persistence layer, impoves system scalability and portability. The paper introduces in detail the design structure, and the divison of system function, analyzes the Object Relational Mapping(ORM) compont —— NHibernate. The NHibernate technology studied in this article can be applied to different database platforms with high flexibility improving the development efficiency of the application system.
Key words:information management system design, NHibernate, object persistence
1 引言
加速改革車用天然氣動(dòng)力改裝轉(zhuǎn)換工作對(duì)推進(jìn)節(jié)能減排、凈化空氣質(zhì)量及提升人民幸福指數(shù)有著重要的意義,這不僅能夠大大降低車輛運(yùn)營(yíng)上的成本,為企業(yè)降本增效,對(duì)社會(huì)的發(fā)展也將會(huì)產(chǎn)生巨大的推動(dòng)力。并且伴隨著國(guó)家對(duì)新能源汽車企業(yè)優(yōu)惠政策力度的加持,市場(chǎng)正在加速啟動(dòng)汽車油改汽的工作。
企業(yè)在實(shí)際工作開展中必須調(diào)整產(chǎn)品結(jié)構(gòu)來應(yīng)對(duì)發(fā)展的需要,新能源企業(yè)在實(shí)現(xiàn)燃油改汽的道路上任重道遠(yuǎn),已經(jīng)投入大量的成本進(jìn)行研發(fā)和推廣來貫徹落實(shí)國(guó)家的政策。
在企業(yè)油改汽的過程中數(shù)據(jù)的管理是至關(guān)重要的。企業(yè)需要一套輔助管理信息系統(tǒng)來統(tǒng)一對(duì)數(shù)據(jù)進(jìn)行記錄及管理,實(shí)際改造過程中也需要對(duì)過程數(shù)進(jìn)行存儲(chǔ)、分類及統(tǒng)計(jì),致力于對(duì)數(shù)據(jù)可追溯、可管理,來為各級(jí)生產(chǎn)管理人員解決生產(chǎn)經(jīng)營(yíng)上的信息管理工作。
綜上所述,該設(shè)計(jì)總體目標(biāo)是創(chuàng)建一套面向企業(yè)生產(chǎn)經(jīng)營(yíng)的管理信息系統(tǒng),對(duì)企業(yè)生產(chǎn)經(jīng)營(yíng)的全過程進(jìn)行管理,在滿足企業(yè)對(duì)數(shù)據(jù)管理的目標(biāo)和要求的同時(shí)來提高企業(yè)的經(jīng)濟(jì)效益。
2 系統(tǒng)總體設(shè)計(jì)
企業(yè)對(duì)交互型事務(wù)處理的期望集中在實(shí)時(shí)性、安全性?,F(xiàn)在市面上的應(yīng)用較為固定,面向用戶維度范圍也較窄,并且界面體驗(yàn)不好,用戶操作繁重。本系統(tǒng)將針對(duì)此都做了進(jìn)一步優(yōu)化和改進(jìn),主體采用獨(dú)立子系統(tǒng)的方案-Client/Server,利用不同使用權(quán)限設(shè)置記錄相應(yīng)的簽署文件和表單,這樣不僅提高數(shù)據(jù)查詢的實(shí)時(shí)性,也保障了數(shù)據(jù)的安全性。
該系統(tǒng)是一個(gè)應(yīng)用NHibernate作為數(shù)據(jù)持久層來封裝對(duì)數(shù)據(jù)庫(kù)操作的輔助系統(tǒng),采用SQL Server 2008數(shù)據(jù)庫(kù)且基于.NET框架實(shí)現(xiàn)的C/S系統(tǒng)。系統(tǒng)設(shè)計(jì)依據(jù)強(qiáng)內(nèi)聚、弱耦合的原則,以及劃分功能模塊要求設(shè)計(jì)簡(jiǎn)單、權(quán)限分配方便,便于用戶理解的原則[1]。系統(tǒng)總共分為四層,表示層是展現(xiàn)給用戶層面用來操作及管理的層面;業(yè)務(wù)邏輯層用NHibernate技術(shù)來實(shí)現(xiàn)業(yè)務(wù)邏輯處理;數(shù)據(jù)持久層采用封裝NHibernate進(jìn)行對(duì)象關(guān)系映射也是最核心的層面,實(shí)現(xiàn)對(duì)象持久化;數(shù)據(jù)存儲(chǔ)層即底層數(shù)據(jù)庫(kù),負(fù)責(zé)數(shù)據(jù)存儲(chǔ)和管理。
3 系統(tǒng)流程設(shè)計(jì)及功能劃分
3.1 流程設(shè)計(jì)
該系統(tǒng)流程如圖1所示。由于企業(yè)的生產(chǎn)是由合同訂單組織的,所以首先銷售人員錄入客戶及車輛信息,技術(shù)人員錄入前檢信息,完成后由銷售人員擬定改裝合同,審批通過后由技術(shù)人員派料,生產(chǎn)人員派工,錄入裝車流轉(zhuǎn)表、調(diào)試報(bào)告,車輛入庫(kù),開始改裝,完成后通知銷售部門發(fā)貨,車輛車庫(kù),銷售負(fù)責(zé)記錄客戶回訪信息。
3.2 系統(tǒng)功能模塊劃分
該系統(tǒng)設(shè)計(jì)為以下幾個(gè)功能模塊,如圖2所示。
銷售管理模塊,包括客戶信息管理以及合同信息管理,銷售人員通過此模塊來管理對(duì)應(yīng)客戶的數(shù)據(jù)信息,包括對(duì)數(shù)據(jù)的常見操作例如增、刪、改、查,客戶信息包括客戶的基本信息以及改裝過程中的車輛信息。合同信息管理針對(duì)合同信息的增、刪、改、查及相關(guān)審批狀態(tài)和統(tǒng)計(jì)信息的記錄。合同審批采用逐級(jí)審批流程,由銷售負(fù)責(zé)人、總經(jīng)理依次審批。
生產(chǎn)管理模塊,操作員可通過生產(chǎn)管理模塊查找待處理的訂單信息,根據(jù)情況制定訂單,并進(jìn)行派工選擇。工作組組長(zhǎng)可以查看待領(lǐng)派工單,填寫修改安裝檢驗(yàn)流轉(zhuǎn)表,記錄壞件,丟失件。檢驗(yàn)人員填寫、修改重卡調(diào)試報(bào)告。
庫(kù)存管理模塊,庫(kù)管人員錄入貨物信息,可根訂單信息收集貨物出庫(kù)信息,嚴(yán)格把控質(zhì)量情況,經(jīng)過審核確認(rèn)到下一節(jié)點(diǎn)即生成人員。并按照分來打印入庫(kù)和出庫(kù)信息單。記錄損壞件售后情況,查看損壞件申請(qǐng)記錄及處理情況,并記錄通過不同操作入庫(kù)的數(shù)據(jù),例如編輯、添加的數(shù)據(jù)來管理數(shù)據(jù)類別,也可通過導(dǎo)入或者導(dǎo)出excel的方式來記錄數(shù)據(jù)類別。
通過對(duì)存放物品的類別及限度做管理,對(duì)超過設(shè)置的限度對(duì)倉(cāng)庫(kù)保管員做預(yù)警提示,來做相應(yīng)的應(yīng)調(diào)整措施。還需對(duì)供貨商信息、供貨類型做統(tǒng)一管理,對(duì)歷史的報(bào)價(jià)記錄及合同執(zhí)行情況可追溯。
質(zhì)檢管理模塊,包括車輛檢驗(yàn)和維修管理。檢驗(yàn)人員將檢驗(yàn)結(jié)果錄入到客戶車輛信息中,管理操作檢驗(yàn)記錄表。
報(bào)表統(tǒng)計(jì)模塊,通過此模塊可以瀏覽和綜合掌握各部門的生產(chǎn)工作情況統(tǒng)計(jì)表和匯總信息表。主要包括客戶信息統(tǒng)計(jì)、入庫(kù)單,出庫(kù)單統(tǒng)計(jì)、庫(kù)存信息統(tǒng)計(jì)。
系統(tǒng)管理模塊,用戶通過此模塊完成雙燃料改裝生產(chǎn)信息管理系統(tǒng)用戶以及部門的管理,包括系統(tǒng)用戶的操作權(quán)限的設(shè)置、企業(yè)用戶及相關(guān)部門的信息操作等。當(dāng)用戶登陸時(shí),系統(tǒng)根據(jù)其菜單的使用權(quán)限,使其有權(quán)限的菜單可見,使用戶操作界面更加直觀。
4 數(shù)據(jù)庫(kù)設(shè)計(jì)
首先根據(jù)系統(tǒng)的數(shù)據(jù)流圖進(jìn)行數(shù)據(jù)分析,導(dǎo)出系統(tǒng)的數(shù)據(jù)庫(kù)結(jié)構(gòu),利用關(guān)系數(shù)據(jù)庫(kù)模型分析各表之間的對(duì)應(yīng)關(guān)系,設(shè)計(jì)數(shù)據(jù)表和定義數(shù)據(jù)表中的數(shù)據(jù)類型[2]。系統(tǒng)用到的數(shù)據(jù)表主要有客戶信息表、改裝合同信息表、車輛信息表、銷售合同記錄表、庫(kù)存貨物基本信息表、派工單信息表、調(diào)試信息表、維修信息表、入庫(kù)單、出庫(kù)單、采購(gòu)信息表等,利用SQL Server2005數(shù)據(jù)庫(kù)集中建立在同一個(gè)庫(kù)中。根據(jù)各模塊的需求設(shè)計(jì)各表的主鍵、外鍵、索引、觸發(fā)器、存儲(chǔ)過程等,便于不同模塊對(duì)共同數(shù)據(jù)表的統(tǒng)一引用,并保證數(shù)據(jù)的完整性。
5 關(guān)鍵技術(shù)
NHibernate技術(shù)是面向.NET環(huán)境的對(duì)象/關(guān)系數(shù)據(jù)庫(kù)映射工具,不僅管理.NET類到數(shù)據(jù)庫(kù)表的映射,還提供數(shù)據(jù)查詢和獲取數(shù)據(jù)的方法,可以大幅度減少開發(fā)時(shí)間和使用SQL和ADO.NET處理數(shù)據(jù)的時(shí)間[3]。NHibernate具有以下特性:
(1)擴(kuò)展性:以對(duì)象的方式管理業(yè)務(wù)邏輯類到關(guān)系型表的映射,支持對(duì)象之間的關(guān)聯(lián),例如繼承、關(guān)聯(lián)、聚合的關(guān)系,并通過XML文件完成相應(yīng)的數(shù)據(jù)映射。(2)可移植性:采用將業(yè)務(wù)邏輯層和數(shù)據(jù)層分離的持久化技術(shù),實(shí)現(xiàn)了數(shù)據(jù)庫(kù)平臺(tái)無關(guān)性,可以進(jìn)行隨時(shí)隨地移植。(3)支持對(duì)象查詢:提供了面向?qū)ο蟮牟樵冋Z言(HQL)和條件查詢,可以根據(jù)條件查詢復(fù)合對(duì)象以及對(duì)象集合[4]。(4)批量處理:能夠?qū)崿F(xiàn)三種批量處理,包括批量寫入、批量讀與多重查詢和批量集合加載三種。批量寫入是指批量的在系統(tǒng)里讀入數(shù)據(jù),并通過設(shè)定相關(guān)NHibernate的技術(shù)參數(shù)來做交互,只通過一次交互就能在系統(tǒng)讀入多條數(shù)據(jù)。這樣避免了每保存一條數(shù)據(jù)數(shù)據(jù)庫(kù)就被訪問一次。批量讀與多重查詢類似于批量寫原理,只是將寫的操作命令變成讀的操作命令。批量的集合加載是指系統(tǒng)在訪問數(shù)據(jù)庫(kù),在代碼中添加延遲加載時(shí)效,在執(zhí)行一次命令之后,把相關(guān)數(shù)據(jù)集合和與某個(gè)實(shí)體相關(guān)同時(shí)載入,提高系統(tǒng)的執(zhí)行效率。
6 總結(jié)
隨著軟件開發(fā)技術(shù)的不斷發(fā)展,數(shù)據(jù)持久化方法的逐步完善,會(huì)出現(xiàn)許多持久化規(guī)范,在未來的發(fā)展中,ORM技術(shù)將廣泛運(yùn)用于實(shí)際開發(fā)項(xiàng)目應(yīng)用中。系統(tǒng)將采用NHibernate實(shí)現(xiàn)對(duì)象-關(guān)系的映射,從對(duì)象檢索方式上節(jié)約了大量的內(nèi)存,尤其當(dāng)系統(tǒng)中進(jìn)行大量數(shù)據(jù)查詢時(shí)最為明顯[5]。同時(shí)也將引入對(duì)象關(guān)系映射技術(shù),開發(fā)時(shí)候可以采用成熟的面向?qū)ο蠹夹g(shù),通過編輯配置文件的方式去修改數(shù)據(jù)庫(kù),從而降低了程序維護(hù)和更新的成本,縮短了開發(fā)時(shí)間,提高了程序可靠性。該設(shè)計(jì)也實(shí)現(xiàn)了數(shù)據(jù)存儲(chǔ)和業(yè)務(wù)邏輯的分離,使得各層能夠獨(dú)立開發(fā)、跟蹤及優(yōu)化。但是,NHibernate也存在明顯的缺點(diǎn),需要編寫復(fù)雜的XML映射文件且容易出錯(cuò);需要學(xué)習(xí)HQL語言,增加學(xué)習(xí)成本;NHibernate體系結(jié)構(gòu)復(fù)雜,使用難度大;不支持存儲(chǔ)過程、不具備事務(wù)處理等數(shù)據(jù)庫(kù)高級(jí)功能[6]。這些都需要進(jìn)一步探討與研究。
參考文獻(xiàn):
[1]崔玉連,楊新鋒.數(shù)據(jù)庫(kù)開發(fā)框架NHibernate應(yīng)用研究[J].微型電腦用,2013,29(9):12-14.
[2]李強(qiáng),周曉慧.基于C/S體系結(jié)構(gòu)的電器生產(chǎn)企業(yè)管理信息系統(tǒng)[J].計(jì)算機(jī)工程與用,2001,10(10):127-129.
[3]趙廣利.基于NHibernate的數(shù)據(jù)持久化方案[J].計(jì)算機(jī)工程,2009,35(20):53-55.
[4]范郡.基于.NET環(huán)境的對(duì)象/關(guān)系映射技術(shù)研究與應(yīng)用[D].湖北:武漢理工大學(xué),2008.
[5]秦澤葉、高改梅.NHibernate在實(shí)驗(yàn)室信息管理系統(tǒng)中的應(yīng)用研究[J].科技之友,2010,40-42.
[6]徐長(zhǎng)盛,戴超,謝立.J2EE 數(shù)據(jù)持久化技術(shù)的研究[J].計(jì)算機(jī)應(yīng)用與軟件,2006,23(4):56-58.