【文章內(nèi)容簡(jiǎn)介】
添加產(chǎn)品單刪除產(chǎn)品單產(chǎn)品單管理產(chǎn)品單查詢無操作權(quán)限圖 訂單管理模塊流程Chart Product Management Flow產(chǎn)品單管理模塊的流程。在該管理系統(tǒng)中,產(chǎn)品單的信息由系統(tǒng)管理員或銷售部人員來維護(hù)。圖 訂單管理模塊用例圖Chart Product Management Use Case Flow,包括以下2個(gè)角色的用例:(1) 制單人:列表顯示銷售單、添加銷售單、修改銷售單、刪除銷售單、查看銷售單;(2) 審核人:列表顯示銷售單、刪除銷售單、審核銷售單;(3) 從用例圖可以看出,制單人與審核人具有不同的權(quán)限。審核人的權(quán)限范圍在于審核銷售單的有效性。制單人的權(quán)限范圍在于盡可能多的為企業(yè)創(chuàng)造訂單。審核人與制單人的分隔,對(duì)企業(yè)運(yùn)營(yíng)是一種保障,這是從公司實(shí)際調(diào)研中,公司存在的一些問題中發(fā)現(xiàn)的,并向公司高管建議,在公司業(yè)務(wù)流程中,額外增加審核人,得到了公司高管的認(rèn)可。 銷售統(tǒng)計(jì)模塊銷售統(tǒng)計(jì)模塊的主要功能就是統(tǒng)計(jì)功能,此模塊的數(shù)據(jù)主要來源于合同中產(chǎn)品單的金額和數(shù)量。銷售統(tǒng)計(jì)模塊的流程。在該管理系統(tǒng)中,所有用戶都可以應(yīng)用產(chǎn)品單的統(tǒng)計(jì)信息。銷售統(tǒng)計(jì)模塊查看合同編號(hào)查看產(chǎn)品編號(hào)查看訂單數(shù)量查看已發(fā)貨數(shù)查看貨物單價(jià)圖 銷售統(tǒng)計(jì)模塊流程Chart Sell and Statistics Flow 日志服務(wù)管理模塊日志是任何一個(gè)管理系統(tǒng)都必備的重要功能。日志可以用于既可追蹤對(duì)象的修改狀態(tài)和明確事務(wù)責(zé)任,又可以為系統(tǒng)其他功能提供維護(hù)保障。通過對(duì)系統(tǒng)各種邏輯的分析,根據(jù)業(yè)務(wù)需求,系統(tǒng)將日志分為以下幾個(gè)方面:(1) 系統(tǒng)日志:記錄系統(tǒng)各種操作的信息數(shù)據(jù)。(比如:用戶登陸系統(tǒng)的時(shí)間)(2) 合同日志:記錄系統(tǒng)合同數(shù)據(jù)發(fā)生改變的信息。(比如:合同內(nèi)容發(fā)生變化)(3) 信息日志:記錄系統(tǒng)信息數(shù)據(jù)發(fā)生改變的信息。(比如:某管理員增加了一個(gè)新的公告……)(4) 產(chǎn)品單日志:記錄系統(tǒng)產(chǎn)品數(shù)據(jù)發(fā)生改變的信息。(比如:某個(gè)產(chǎn)品單已經(jīng)進(jìn)行了送貨處理……)系統(tǒng)通過抽象出一個(gè)Log日志接口,系統(tǒng)按照不同種類的日志,又區(qū)分不同的操作。日志組件將通過業(yè)務(wù)抽象封裝后,為其它業(yè)務(wù)邏輯模塊提供統(tǒng)一接口,用來降低系統(tǒng)開發(fā)中模塊日志功能的開發(fā)成本和維護(hù)成本。 技術(shù)方案在開發(fā)之前,應(yīng)當(dāng)對(duì)開發(fā)工具與開發(fā)平臺(tái)有所了解,逐個(gè)篩選,找出適合開發(fā)系統(tǒng)的平臺(tái)和語言。以下分節(jié)介紹本系統(tǒng)中使用到的技術(shù)。 NET是Microsoft公司在快速發(fā)展的軟件技術(shù)世界中維持領(lǐng)先的保證。,可用于在服務(wù)器上生成功能強(qiáng)大的Web應(yīng)用程序。 。ASP技術(shù)的出現(xiàn)使服務(wù)器端程序開發(fā)變得簡(jiǎn)單易行。、。[8] Web Service Web Service主要是為了使原來各孤立的站點(diǎn)之間的信息能夠相互通信、共享而提出的一種接口。從更深的層次上來看,Web Service是一種新的網(wǎng)絡(luò)應(yīng)用程序分支。是自描述、自包含、模塊化的應(yīng)用。Web Service就是基于網(wǎng)絡(luò)的分布式模塊化組件,它遵循一系列技術(shù)規(guī)范,使得Web Service能和兼容組件進(jìn)行互操作。它可以通過一系列相關(guān)技術(shù)在網(wǎng)絡(luò)中被描述、發(fā)布、查找和調(diào)用。 Web Service所使用的是Internet上統(tǒng)一、開放的標(biāo)準(zhǔn),如HTTP、XML、SOAP(簡(jiǎn)單對(duì)象訪問協(xié)議)、WSDL等,所以Web Service可以在任何支持這些標(biāo)準(zhǔn)的環(huán)境中使用。 [13] SQL Server 2008 SQL Server 2008所示一個(gè)巨大而復(fù)雜的數(shù)據(jù)庫管理系統(tǒng)。SQL Server 2008是完全支持Web的數(shù)據(jù)庫產(chǎn)品,提供了對(duì)可擴(kuò)展標(biāo)記語言(XML)的核心支持,以及在Internet上和防火墻外進(jìn)行查詢的能力[10]。并使得數(shù)據(jù)的管理與分析更加靈活,便于用戶更加容易適應(yīng)快速發(fā)展的新環(huán)境。SQL Server 2008數(shù)據(jù)庫提供了一套非常實(shí)用的管理工具,用于管理、設(shè)置、管理、檢索SQL Server2008中的數(shù)據(jù),并進(jìn)行數(shù)據(jù)庫備份維護(hù)和管理,保證了數(shù)據(jù)的安全性和一致性[9]。企業(yè)管理器作為SQL Server 2008中最重要的管理工具,具有操作簡(jiǎn)單明了的特點(diǎn),系統(tǒng)管理員和用戶可以很方便的使用SQL server2008在本地或遠(yuǎn)程管理系統(tǒng)服務(wù)。北京交通大學(xué)專業(yè)碩士學(xué)位論文 系統(tǒng)設(shè)計(jì)4 系統(tǒng)設(shè)計(jì)在軟件項(xiàng)目開發(fā)的需求分析階段,已經(jīng)搞清楚了軟件要做什么的問題,對(duì)于一個(gè)實(shí)際的開發(fā)項(xiàng)目,需要把這些需求通過需求說明書文檔描述出來,此即是目標(biāo)系統(tǒng)的邏輯模型。接下來的工作是要把軟件做什么的邏輯模型轉(zhuǎn)換為怎么做的物理模型,即著手去實(shí)現(xiàn)軟件的需求,并將設(shè)計(jì)的結(jié)果反映在設(shè)計(jì)說明書文檔中,此階段即為設(shè)計(jì)階段。該管理系統(tǒng)的系統(tǒng)設(shè)計(jì)中主要包括系統(tǒng)架構(gòu)設(shè)計(jì)、系統(tǒng)結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì)、系統(tǒng)功能實(shí)現(xiàn)。由于系統(tǒng)設(shè)計(jì)內(nèi)容較多、相對(duì)較復(fù)雜,因此以上內(nèi)容獨(dú)立出來,分節(jié)闡述。 系統(tǒng)架構(gòu)設(shè)計(jì)在第一章提到目前國(guó)內(nèi)的地區(qū)級(jí)客戶管理系統(tǒng)有的采用C/S結(jié)構(gòu),有的采用B/S結(jié)構(gòu)[4]。這兩種結(jié)構(gòu)各有缺點(diǎn)。其中,采用C/S結(jié)構(gòu)的系統(tǒng)對(duì)硬件和軟件的兼容性都有一定的要求,而且導(dǎo)致不同部門之間的信息資源不能相互通信。目前采用B/S結(jié)構(gòu)的系統(tǒng)缺點(diǎn)在于,雖然B/S結(jié)構(gòu)可以基本滿足業(yè)務(wù)要求,但隨著管理業(yè)務(wù)內(nèi)容的細(xì)化,簡(jiǎn)單的B/S結(jié)構(gòu)不利于業(yè)務(wù)邏輯的抽象,業(yè)務(wù)邏輯與低層數(shù)據(jù)之間的交互界線不清,代碼難與維護(hù)和更新。因此,本文為了避免B/S結(jié)構(gòu)和C/S結(jié)構(gòu)的缺點(diǎn),結(jié)合兩者優(yōu)點(diǎn),設(shè)計(jì)出基于多層結(jié)構(gòu)架構(gòu)的設(shè)計(jì)。其架構(gòu)分為:用戶界面層、用戶處理層、商業(yè)邏輯抽象層、數(shù)據(jù)訪問層等四層。此四層的架構(gòu)由具體層次到抽象層次。具體描述內(nèi)容如下: 數(shù)據(jù)訪問層對(duì)于平臺(tái)中的所有應(yīng)用,都存在著各種各樣的業(yè)務(wù)信息、配置數(shù)據(jù)、系統(tǒng)實(shí)時(shí)狀態(tài)等信息。數(shù)據(jù)訪問層對(duì)這些數(shù)據(jù)信息提供快速查詢的底層接口,并保證數(shù)據(jù)的可靠性、完整性。將該層抽象出來的好處在于:未來可以對(duì)該層進(jìn)行擴(kuò)展。比如:使用磁盤陣列技術(shù),實(shí)現(xiàn)以下優(yōu)點(diǎn):(1) 傳輸速率快;(2) 儲(chǔ)存容量可提升;(3) 提升I/O每秒的數(shù)量;(4) 增加數(shù)據(jù)安全性及穩(wěn)定性;(5) 大量數(shù)據(jù)快速及簡(jiǎn)易管理;(6) 增加可用運(yùn)時(shí)間,減少維護(hù);(7) 通過磁盤陣列,可以將不同服務(wù)器上傳的文件統(tǒng)一管理。圖 在數(shù)據(jù)訪問層服務(wù)器的擴(kuò)展Chart Extended Data Access Layer Server:各臺(tái)服務(wù)器共享磁盤陣列,這樣所有的數(shù)據(jù)都放到磁盤陣列之中。目前,此數(shù)據(jù)訪問層的主要功能是:負(fù)責(zé)數(shù)據(jù)庫的訪問,即實(shí)現(xiàn)對(duì)數(shù)據(jù)表的查詢、插入、更新、刪除等操作。將系統(tǒng)與數(shù)據(jù)庫直接獨(dú)立開,這樣系統(tǒng)可以實(shí)現(xiàn)不同數(shù)型的數(shù)據(jù)庫的動(dòng)態(tài)切換,而不用需要修改任何程序功能。有效保證了系統(tǒng)未來的可移植性。 商業(yè)邏輯抽象層商業(yè)邏輯抽象層作為數(shù)據(jù)訪問層與用戶處理層之間的橋梁。它是系統(tǒng)架構(gòu)中體現(xiàn)核心價(jià)植的部分。該層的關(guān)注點(diǎn)集中體現(xiàn)在業(yè)務(wù)規(guī)則的制定、業(yè)務(wù)流程的實(shí)現(xiàn)等與業(yè)務(wù)需求有關(guān)的系統(tǒng)設(shè)計(jì),對(duì)用戶處理層傳遞過來的信息進(jìn)行轉(zhuǎn)化。通過定義一個(gè)對(duì)接雙方需要的接口進(jìn)行交互,然后對(duì)接雙方不需要直接訪問同時(shí)也不需要知道對(duì)方的數(shù)據(jù)庫,直接從API接口結(jié)構(gòu)中獲取相關(guān)的數(shù)據(jù)信息從而實(shí)現(xiàn)數(shù)據(jù)的共享對(duì)接。該層的具體業(yè)務(wù)規(guī)則請(qǐng)參見系統(tǒng)結(jié)構(gòu)設(shè)計(jì)。 用戶處理層用戶處理層即應(yīng)用層,提供各種業(yè)務(wù)實(shí)體的操作。這樣做的好處是,當(dāng)業(yè)務(wù)實(shí)體發(fā)生改變或者是有新的業(yè)務(wù)時(shí),系統(tǒng)的基礎(chǔ)架構(gòu)都不需要做出任何調(diào)整,直接就可以使用原有的功能。比如說以后系統(tǒng)想要擴(kuò)展業(yè)務(wù),系統(tǒng)可以處理的就是一個(gè)業(yè)務(wù)實(shí)體,如果該業(yè)務(wù)的實(shí)現(xiàn)能滿足于服務(wù)接口層的接口,則平臺(tái)只需要對(duì)該層的邏輯進(jìn)行開發(fā)實(shí)現(xiàn),不用觸動(dòng)邏輯實(shí)現(xiàn)層。在本系統(tǒng)中,一些有效性驗(yàn)證的工作也是放在這一層的,以更好的保證程序運(yùn)行的健壯性。如不允許的文本框輸入空字符串,數(shù)據(jù)格式是否正確以及數(shù)據(jù)類型驗(yàn)證;通過以上的諸多判斷以決定是否將操作繼續(xù)向后傳遞,盡量保證程序的正常運(yùn)行。 用戶界面層用戶界面層就是最終對(duì)客戶的接口,平臺(tái)以網(wǎng)頁展示的方式提供各種業(yè)務(wù)供客戶使用。相當(dāng)于View(視圖),與用戶處理層、服務(wù)接口層、商業(yè)抽象邏輯層、商業(yè)邏輯實(shí)現(xiàn)層、數(shù)據(jù)訪問層組成Model / View / Controller(MVC)結(jié)構(gòu)。將該層分離出來的好處是,將展示與背后支持展示的業(yè)務(wù)處理分離開來,可以實(shí)現(xiàn)多種展示方式,并不影響到業(yè)務(wù)處理。該管理系統(tǒng)的技術(shù)架構(gòu)有以下特點(diǎn):(1) 層次清楚,多層的結(jié)構(gòu),每一層的作用都有明確的規(guī)定;各層次專注于自身功能的接口實(shí)現(xiàn),整個(gè)層次保持相對(duì)的穩(wěn)定。系統(tǒng)通過不改變接口,各個(gè)層次、各個(gè)組件進(jìn)行優(yōu)化的策略,能在不影響整個(gè)業(yè)務(wù)的前提下,不斷的完善和改進(jìn)。通過分解業(yè)務(wù)細(xì)節(jié),將不同的功能代碼分散開來,更利于系統(tǒng)的設(shè)計(jì)和開發(fā),同時(shí)為可能的變更提供了更小的單元。更利于“從頂至下”的設(shè)計(jì)理念,更利于抽象封裝。(2) 提高服務(wù)器效率使用分層架構(gòu)提高了緩存服務(wù)管理的效率。頁面訪問的時(shí)候,生成動(dòng)態(tài) Web 頁會(huì)耗用各種各樣的系統(tǒng)資源。當(dāng) Web 服務(wù)器收到頁面請(qǐng)求時(shí),它通常必須從存儲(chǔ)子系統(tǒng)中實(shí)時(shí)的檢索所請(qǐng)求的信息。(如數(shù)據(jù)庫連接、套接字或 文件描述符)等方式進(jìn)行,具體技術(shù)取決于當(dāng)時(shí)的系統(tǒng)要求。一般來說, Web 服務(wù)器會(huì)被大量用戶所訪問,因此會(huì)收到大量的通常需要處理的并發(fā)請(qǐng)求,所以對(duì)這些共享資源的爭(zhēng)奪可能會(huì)延遲頁面請(qǐng)求。使系統(tǒng)速度更快的最簡(jiǎn)單的方法是購買新的硬件。此方法的優(yōu)點(diǎn)是:不必更改程序。但是更多的問題是:硬件只能在未達(dá)到其物理限制之前才會(huì)對(duì)性能有所幫助。所以一般系統(tǒng)中,都會(huì)使用緩存管理技術(shù)來提高系統(tǒng)性能[8]。系統(tǒng)中存在兩種緩存對(duì)象:1) 頁面緩存:對(duì)于前臺(tái)的html頁面按不同的塊來區(qū)分,然后通過一個(gè)key對(duì)象,通過開源JCS技術(shù)存儲(chǔ)于內(nèi)存或磁盤空間。2) 對(duì)象緩存:將系統(tǒng)中經(jīng)常用到的對(duì)象保存于規(guī)定的內(nèi)存空間,通過配置的更新規(guī)則,同步更新數(shù)據(jù)庫內(nèi)容。圖 請(qǐng)求中的頁面對(duì)象不在緩存對(duì)象中Chart Page request object is not in the cache object圖 請(qǐng)求中的頁面對(duì)象存在于緩存對(duì)象中Chart Page request object in the cache object從上邊的調(diào)用圖可以很清晰的看到,對(duì)于并發(fā)訪問的頁面請(qǐng)求,通過頁面的緩存可以減少訪問響應(yīng)的時(shí)間,減少數(shù)據(jù)庫的連接,從而提高系統(tǒng)的整體性能和訪問速度。(3) 降低用戶處理層、邏輯抽象層與數(shù)據(jù)訪問層之間的耦合性,保證數(shù)據(jù)訪問的及時(shí)性,并通過安全策略保證公司信息的安全性。 架構(gòu)的實(shí)現(xiàn)整個(gè)系統(tǒng)的架構(gòu)具體分為一下幾個(gè)模塊:實(shí)體類模塊——一組實(shí)體類的集合,負(fù)責(zé)整個(gè)系統(tǒng)中數(shù)據(jù)的封裝及傳遞。數(shù)據(jù)訪問層類CDataUility——一數(shù)據(jù)訪問層代碼的集合,完成數(shù)據(jù)訪問層的具體功能,實(shí)現(xiàn)數(shù)據(jù)訪問層接口族。商業(yè)邏輯抽象層類CDataInterface——一組接口的集合,表示業(yè)務(wù)邏輯層的接口。用戶處理層類Operation—一組類的集合,完成業(yè)務(wù)邏輯層的具體功能,實(shí)現(xiàn)業(yè)務(wù)邏輯層接口族。用戶界面層CWebPage——程序及可視元素的集合,負(fù)責(zé)完成表示層的具體功能。IBLL模塊——類CDataInterface與Operation類具體底層的實(shí)現(xiàn)。IDAL模塊——表示具體的數(shù)據(jù)訪問的實(shí)現(xiàn)方式。IdataC模塊——最底層的代碼實(shí)現(xiàn)。輔助類模塊——完成全局輔助性功能。系統(tǒng)整體架構(gòu)的實(shí)現(xiàn)參見下圖: 系統(tǒng)架構(gòu)的實(shí)現(xiàn) Chart the System Architecture Realization由于系統(tǒng)代碼過大,本節(jié)僅對(duì)幾個(gè)重要的具體類進(jìn)行闡述。(1) AccessDALHelper類在實(shí)際系統(tǒng)開發(fā)中,很多數(shù)據(jù)訪問操作流程很相似,因此可以將一些可復(fù)用的代碼抽取出來,編寫成助手類,以此減少代碼量,提高代碼復(fù)用性。該類放在IdataC下,叫AccessDALHelper,主要負(fù)責(zé)Access數(shù)據(jù)庫的訪問。它包括三個(gè)方法:GetConnectionString:從配置文件中讀取配置項(xiàng),組合成連接字符串。ExecuteSQLNonQuery:執(zhí)行指定SQL語句,不返回任何值,一般用于Insert,Delete,Update命令。ExecuteSQLDataReader:執(zhí)行SQL語句返回查詢結(jié)果,一般用于Select命令。如圖所示:圖 AccessDALHelper類圖與SQLServerDALHelper類圖Chart AccessDALHelper Class Flow amp。 SQLServerDALHelper Class Flow(2) SQLServerDALHelper類該類放在IdataC下,叫SQLServerDALHelper,主要負(fù)責(zé)SQLServer數(shù)據(jù)庫的訪問。它包括四個(gè)方法:ExecuteProcedureNonQurey:執(zhí)行存儲(chǔ)過程,不返回任何值。ExecuteProcedureReader:執(zhí)行存儲(chǔ),并返回SqlDataReader。ExecuteSQLNonQuery:執(zhí)行指定SQL語句,不返回任何值,一般用于Insert,Delete,Update命令。ExecuteSQLDataReader: 執(zhí)行SQL命令,并返回SqlDataReaderSQLServerDALHelper類與上面提到的AccessDALHelper類同屬于IdataC類。未來可以擴(kuò)展IdataC類,使其支持更多的數(shù)據(jù)庫訪問,提高系統(tǒng)的可擴(kuò)展性。(3) AdminDAL類商業(yè)邏輯抽象層以管理員的數(shù)據(jù)訪問操作類為例。該類包括三種類型的操作,一種是修改型,如Insert;一種是返回單個(gè)實(shí)體類型,如GetByID;還有一種是返回實(shí)體類集合型,如GetAll。圖 IAdminBLL類圖與AdminDAL類圖Chart IAdminBLLClass F