【正文】
用戶界面與模型方法調(diào)用組合起來(lái),發(fā)送給模型的數(shù)據(jù)信息,都是由用戶行為觸發(fā)的。最后,MVC的同樣的構(gòu)件不能被同一個(gè)界面重復(fù)使用,這是由于由MVC模型返回的數(shù)據(jù)并沒(méi)有被轉(zhuǎn)變?yōu)榻y(tǒng)一的格式。(3)可擴(kuò)展性。(2)模塊化。2. MVC模式優(yōu)點(diǎn)(1)通用性強(qiáng)。如果用戶通過(guò)某個(gè)視圖的控制器改變了模型的數(shù)據(jù),那么其它依賴于這些數(shù)據(jù)的視圖都將反映出相應(yīng)的變化。如果控制器的行為依賴于模型的狀態(tài),則控制器應(yīng)該在變化傳播機(jī)制中進(jìn)行注冊(cè),并提供一個(gè)更新的操作。視圖與控制器之間保持著一一對(duì)應(yīng)的關(guān)系,每個(gè)視圖創(chuàng)建一個(gè)相應(yīng)的控制器。其中包含了應(yīng)用問(wèn)題的核心數(shù)據(jù)、邏輯關(guān)系和計(jì)算功能,其封裝了所需的數(shù)據(jù),并且提供了完成問(wèn)題處理的操作過(guò)程;視圖(View):視圖是應(yīng)用程序中與用戶界面相關(guān)的部分,即是用戶看到的并可與之交互的界面,其將表示模型的數(shù)據(jù)、邏輯關(guān)系及其狀態(tài)的信息及其特定形式展示給用戶;控制器(Controller):控制器根據(jù)用戶的輸入,控制用戶界面數(shù)據(jù)顯示和更新模型對(duì)象狀態(tài)。MVC把交互系統(tǒng)的組成分解成模型、視圖、控制器三種部件 [28]。 系統(tǒng)設(shè)計(jì)模式本文設(shè)計(jì)的辦公自動(dòng)化系統(tǒng)總體采用 MVC(ModelViewContro1)模式,其中部分模塊采用了創(chuàng)建工廠模式(Creator Factory)和單件模式(Singleton)等。使用辦公自動(dòng)化系統(tǒng)后,要能夠保證各個(gè)部門(mén)的相關(guān)人員都可以正常的在計(jì)算機(jī)上進(jìn)行日常工作,然后通過(guò)網(wǎng)絡(luò)完成信息的傳遞,從而提高工作的效率,確保信息準(zhǔn)確及時(shí)的交流。整個(gè)辦公自動(dòng)化系統(tǒng)使用 B/S 的模式,采用三層架構(gòu),使得系統(tǒng)的組成部分有良好的性能和可擴(kuò)充性。第三章 基于 J2EE 的辦公自動(dòng)化系統(tǒng)需求分析33開(kāi)始進(jìn)入系統(tǒng)管理員 ?結(jié)束用戶登錄管理否是用戶注冊(cè)管理密碼修改管理圖 318 系統(tǒng)管理流程圖 本章小結(jié)本章主要討論了基于 J2EE 辦公自動(dòng)化系統(tǒng)的需求,首先對(duì)系統(tǒng)的功能和性能等需求進(jìn)行了分析,然后設(shè)計(jì)出每個(gè)功能所對(duì)應(yīng)的用例圖,并對(duì)重要功能的流程進(jìn)行了說(shuō)明,為進(jìn)一步的開(kāi)發(fā)工作奠定了基礎(chǔ)。系統(tǒng)管理用例圖如圖 317 所示。設(shè)備類(lèi)別管理借用預(yù)約設(shè)備錄入系 統(tǒng)各科內(nèi)勤系統(tǒng)管理員設(shè)備借用設(shè)備歸還各科內(nèi)勤普通用戶辦公秘書(shū)部門(mén)領(lǐng)導(dǎo)圖 315 設(shè)備管理用例設(shè)備管理的流程如圖 316 所示。開(kāi)始進(jìn)入系統(tǒng)內(nèi)勤人員 ?添加員工錄入員工基本信息添加結(jié)束是否314 人事管理流程圖課程設(shè)計(jì) 設(shè)備管理用例每個(gè)單位都會(huì)有一些公共的資源,比如書(shū)籍、車(chē)輛和打印機(jī)等,設(shè)備管理要能夠提供對(duì)單位的資源進(jìn)行預(yù)約、使用和歸還等操作,還要可以檢測(cè)到約定使用中的沖突,避免重復(fù)預(yù)約。人事管理用例圖如圖 313 所示。填寫(xiě)與會(huì)人員會(huì)議重要級(jí)別會(huì)議室填寫(xiě)主題結(jié)束會(huì)議室312 會(huì)議管理流程圖第三章 基于 J2EE 的辦公自動(dòng)化系統(tǒng)需求分析29 人事管理用例人事管理負(fù)責(zé)對(duì)單位的部門(mén)和員工等進(jìn)行管理。課程設(shè)計(jì)會(huì)議管理用例如圖 311 所示。? 會(huì)議內(nèi)容紀(jì)要:參加會(huì)議的人員要記錄會(huì)議的主題、參加人同、會(huì)議的級(jí)別、會(huì)議開(kāi)始時(shí)間、結(jié)束時(shí)間和會(huì)議的主要內(nèi)容等。被指定的會(huì)議主持人員,要對(duì)會(huì)議進(jìn)行紀(jì)要和存檔,還要對(duì)會(huì)議室的資源進(jìn)行管理。會(huì)議通知單的內(nèi)容要包含會(huì)議召開(kāi)的日期、地點(diǎn)、主題、會(huì)議類(lèi)型、主持人和參加人員等。選擇論壇發(fā)表品論進(jìn)入論壇系 統(tǒng)辦公秘書(shū)各科內(nèi)勤系統(tǒng)管理員部門(mén)領(lǐng)導(dǎo)普通用戶板塊類(lèi)型維護(hù)板塊維護(hù)添加 / 刪除新聞查看新聞查看通知通告添加 / 刪除通知通告第三章 基于 J2EE 的辦公自動(dòng)化系統(tǒng)需求分析27圖 39 信息交流用例圖員工論壇訪問(wèn)的流程圖如圖 310 所示,這里只介紹員工論壇子模塊的流程圖,通知通告子模塊和企業(yè)新聞子模塊流程和員工論壇子模塊相似。此外為了減少以前發(fā)布通知通告口頭通知的弊端,需要設(shè)置一個(gè)發(fā)布通知通告的專(zhuān)欄,可以方便員工及時(shí)查看最新的通知通告。工作人員之間要進(jìn)行信息的交流,需要一個(gè)統(tǒng)一的平臺(tái)。還要對(duì)日程安排中的沖突進(jìn)行檢測(cè),允許辦公人員對(duì)自己的日程表進(jìn)行修改等。使用者可以直接讀取其中的信息,也可以管理自己的通訊錄,包括添加新的聯(lián)系人信息、編輯現(xiàn)有人員的的信息、刪除信息和對(duì)通訊錄進(jìn)行分組整理等操作。會(huì)議安排可以對(duì)會(huì)議的時(shí)間、舉行地點(diǎn)和會(huì)議的列表等信息進(jìn)行處理。再通過(guò)電子信箱的提示通知相關(guān)人員進(jìn)行閱讀,進(jìn)行下一步的工作。內(nèi)部電子郵件使不同辦公人員之間進(jìn)行通信,可以和網(wǎng)絡(luò)內(nèi)的人員進(jìn)行信息交換。個(gè)人辦公內(nèi)部電子郵件個(gè)人考勤工作計(jì)劃日程管理e x t e n d se x t e n d se x t e n d se x t e n d s通訊錄個(gè)人資料記事本e x t e n d se x t e n d se x t e n d s會(huì)議安排e x t e n d s圖 38 個(gè)人辦公用例圖內(nèi)部電子郵件通過(guò)電子郵件可以提供高效便捷的信息交流,使辦公人員可以自由地進(jìn)行通訊。查詢時(shí)可以按照公文的流程、申請(qǐng)時(shí)間、申請(qǐng)人所在的部門(mén)以及文件的內(nèi)容等關(guān)鍵字進(jìn)行,其用例圖如圖 36 所示。發(fā)文管理的用例圖如圖34所示。第三章 基于 J2EE 的辦公自動(dòng)化系統(tǒng)需求分析21辦公秘書(shū)接收文件登記文件審批文件部門(mén)領(lǐng)導(dǎo)保存文件系 統(tǒng)圖32 收文管理用例圖接收公文的流程圖如圖33所示。系統(tǒng)總用例圖如圖31所示。系統(tǒng)角色本系統(tǒng)具有五種角色:①辦公室文秘:主要負(fù)責(zé)收文登記、發(fā)文登記、發(fā)文復(fù)核、發(fā)文用印、印發(fā)等業(yè)務(wù),執(zhí)行本部門(mén)的日常辦公業(yè)務(wù)和公共業(yè)務(wù);②企業(yè)員工:主要負(fù)責(zé)個(gè)人辦公和登錄電子論壇,并且可以查看公共信息等;課程設(shè)計(jì)③各科內(nèi)勤:負(fù)責(zé)人事、考勤、設(shè)備管理、發(fā)文起草、上傳、修改或更新本科室相關(guān)內(nèi)容;④部門(mén)領(lǐng)導(dǎo):主要負(fù)責(zé)公文的審批和會(huì)議的發(fā)布;⑤系統(tǒng)管理員:執(zhí)行日常辦公業(yè)務(wù),管理所有普通用戶和操作員,并能查看在線操作員及訪問(wèn)情況。JSP 服務(wù)器:Tomcat。數(shù)據(jù)庫(kù):SQL Server 2022。內(nèi)存:256MB 以上。瀏覽器出錯(cuò):用戶應(yīng)當(dāng)重新安裝瀏覽器,若問(wèn)題仍不能解決時(shí)則需重新安裝系統(tǒng)。 故障處理要求后臺(tái)數(shù)據(jù)庫(kù)處理:由于系統(tǒng)需要處理的數(shù)據(jù)量很大,中央數(shù)據(jù)處理系統(tǒng)有可能會(huì)因?yàn)樨?fù)荷過(guò)重而崩潰。性能分析數(shù)據(jù)的傳送時(shí)間:數(shù)據(jù)傳送要求在 以內(nèi)完成;? 數(shù)據(jù)準(zhǔn)確:必須既要保證數(shù)據(jù)在輸入輸出過(guò)程的真實(shí)性和準(zhǔn)確性,又要保證數(shù)在存儲(chǔ)過(guò)程中數(shù)據(jù)的真實(shí)和準(zhǔn)確性; ? 時(shí)間特性:用戶所有的操作在網(wǎng)絡(luò)和系統(tǒng)正常運(yùn)行的前提下,都可以在所被允許的范圍內(nèi)完成;? 系統(tǒng)可靠性:保證系統(tǒng)數(shù)據(jù)的可靠性和安全性,在系統(tǒng)出現(xiàn)故障時(shí),應(yīng)有相應(yīng)的措施可以自動(dòng)恢復(fù)到最近一次的正確狀態(tài),當(dāng)主鏈路失效時(shí),系統(tǒng)仍能正常運(yùn)行;? 負(fù)荷率:該系統(tǒng)所有用戶所使用計(jì)算機(jī)的 CPU 的負(fù)荷率在正常狀態(tài)下任意負(fù)荷率在正常狀態(tài)下任意 5 分鐘內(nèi)都小于 20%,在任意 10 秒內(nèi)都小于30%。? 人事管理:主要包括員工的管理,部門(mén)的管理,員工的錄入。? 會(huì)議管理:主要包括會(huì)議內(nèi)容的發(fā)布,會(huì)議列表、會(huì)議室的管理。? 個(gè)人辦公:主要處理個(gè)人事務(wù),包括個(gè)人考勤、工作計(jì)劃、日程管理、通訊錄、內(nèi)部郵件、投訴意見(jiàn)、個(gè)人資料、記事本、電子日歷和會(huì)議安排等幾部分。對(duì)于處在簽發(fā)階段的公文,采用催辦的形式通知簽發(fā)人。所以,本系統(tǒng)可以通過(guò)下面幾個(gè)方面來(lái)進(jìn)行分析:? 日常業(yè)務(wù): 主要包括收文、發(fā)文、公文催辦和資料管理四個(gè)小模塊。基于以上原因,基于 J2EE 架構(gòu)辦公自動(dòng)化系統(tǒng),包括了企業(yè)中幾乎所有的辦公業(yè)務(wù),比當(dāng)前市場(chǎng)的辦公系統(tǒng)涉及的業(yè)務(wù)都要全面,主要分為:公文、工具、出差、會(huì)議、工作、郵件、檔案、值班、新聞、通知等等。系統(tǒng)功能當(dāng)前市場(chǎng)上使用的 OA 系統(tǒng)功能雖然很多,但是能夠得到使用的功能卻是少之又少,由于企業(yè)需要處理更多的事務(wù),但在現(xiàn)有的 OA 中卻難以實(shí)現(xiàn)。即使這樣,由于計(jì)算機(jī)網(wǎng)絡(luò)的弊端,還是不能夠?qū)崿F(xiàn)資源共享和集成,難以實(shí)現(xiàn)各部門(mén)之間的高效率協(xié)作,效率低下。各部門(mén)內(nèi)部事務(wù)處理的辦公自動(dòng)化系統(tǒng)都是相互獨(dú)立的,相互之間沒(méi)有統(tǒng)一的標(biāo)準(zhǔn),不能夠集成為一個(gè)整體系統(tǒng)。但由于技術(shù)和人員的限制,部門(mén)之間的辦公自動(dòng)化系統(tǒng)很難進(jìn)行信息的交流,不同部門(mén)都有自己的系統(tǒng),但難以綜合利用這些信息。通過(guò)這些內(nèi)容的總結(jié),對(duì)J2EE 有了更深刻的認(rèn)識(shí),為應(yīng)用其進(jìn)行系統(tǒng)開(kāi)發(fā)奠定了基礎(chǔ)。? EJB事務(wù)處理要求:指明容器應(yīng)該如何處理相關(guān)的事務(wù);? 安全性要求:指明容器采取的安全策略。部署描述文件和Enterprise Bean類(lèi)一樣,也是EJB 組件中必不可少的內(nèi)容之一。? Assemblydescriptor,即資源描述符:主要用來(lái)描述商業(yè)函數(shù)和它的事物屬性。這個(gè)文件描述了一些與容器無(wú)關(guān)的EJB 組建信息,但是對(duì)于不同的組件容器還可能要求提供一些與容器相關(guān)的部署描述文件。部署描述符元素包含關(guān)于構(gòu)件的不直接包含于代碼中的行為信息,其目的是告訴部署者如何部署一個(gè)應(yīng)用,而不是告訴服務(wù)器在運(yùn)行時(shí)如何管理構(gòu)件 [25]。 部署描述文件部署描述符是一個(gè)基于XML的文本文件,它描述了如何裝配和部署這些單元到指定的環(huán)境中。這三個(gè)接口中聲明的方法包括三個(gè)部分,即Remote接口聲明方法的實(shí)現(xiàn)、Home接口聲明方法的實(shí)現(xiàn)和容器回調(diào)函數(shù)的實(shí)現(xiàn),其中回調(diào)函數(shù)是由容器在需要時(shí)主動(dòng)進(jìn)課程設(shè)計(jì)行調(diào)用的EJB方法。Enterprise Bean類(lèi)是EJB的主要組成部分,它說(shuō)明了如何實(shí)現(xiàn)Home和Remote 接口或Local接口中聲明的方法。 Enterprise Bean 類(lèi)Enterprise Bean類(lèi)是一組組件,可以運(yùn)行在服務(wù)器端,也可以部署在分布式的多層環(huán)境中。在開(kāi)發(fā)EJB時(shí)可以只定義Remote接口,也可只定義Local接口,或?qū)⒍叨歼M(jìn)行定義。若一個(gè)EJB設(shè)計(jì)為遠(yuǎn)程對(duì)象,則在定義遠(yuǎn)程Home的同時(shí),也要定義它的Remote 接口;而EJB 如果設(shè)計(jì)為本地對(duì)象,則應(yīng)定義本地Home和 Local接口。因此 EJB 開(kāi)發(fā)人員在定義 Home 接口時(shí)的責(zé)任就是將所有用于生成 EJB 對(duì)象的 create 方法和 finder 方法寫(xiě)入到接口文件中。例如,參數(shù)和返回對(duì)象可能會(huì)都不相同。而本地 Home 接口沒(méi)有擴(kuò)展 接口,是普通本地接口,所以本地Home 接口的實(shí)現(xiàn)類(lèi)是本地對(duì)象,不能進(jìn)行遠(yuǎn)程訪問(wèn)。 Home 接口遠(yuǎn)程 Home 接口是由 接口擴(kuò)展而來(lái)的,任何實(shí)現(xiàn)了 接口的對(duì)象都是遠(yuǎn)程對(duì)象,可以通過(guò) PMI 機(jī)制進(jìn)行遠(yuǎn)程訪問(wèn)。EJB有多個(gè)部分組成,典型的遠(yuǎn)程EJB有如下幾個(gè)部分組成的:Home 接口、Remote接口、 Enterprise bean類(lèi)和部署描述文件這四部分組成。通過(guò)EJB,用戶不需要了解關(guān)于構(gòu)建組件所需要的中間件的細(xì)節(jié),而讓組件可以透明地、潛在地獲得中間件服務(wù)。這對(duì)于那些應(yīng)用高端服務(wù)器系統(tǒng)并且運(yùn)行著幾十萬(wàn)條代碼應(yīng)用系統(tǒng)的企業(yè)來(lái)說(shuō)是非常重要的。②增加了與其他系統(tǒng)相兼容的靈活性。EJB主要有三大優(yōu)點(diǎn) [23]:①可以跨平臺(tái)、跨廠商使用。? MessageDriver bean:即消息驅(qū)動(dòng)bean ,它采用檢索消息來(lái)執(zhí)行java 消息服務(wù),實(shí)現(xiàn)了異步通信。當(dāng)客戶端程序完成后,會(huì)話bean 和相關(guān)數(shù)據(jù)就會(huì)消失。業(yè)務(wù)層組件課程設(shè)計(jì)業(yè)務(wù)層組件主要是EJB組件,EJB是企業(yè)級(jí)的JavaBean,用來(lái)實(shí)現(xiàn)業(yè)務(wù)邏輯。JSP的特點(diǎn)主要有包括應(yīng)用程序內(nèi)容與頁(yè)面顯示分離、一次編寫(xiě)到處運(yùn)行、強(qiáng)調(diào)可重用組件和采用標(biāo)記簡(jiǎn)化頁(yè)面的開(kāi)發(fā)。和基于Java的Web應(yīng)用程序。? JSP組件JSP(Java Server Pages)是一種Web開(kāi)發(fā)語(yǔ)言,它能快速地創(chuàng)建和顯示W(wǎng)eb頁(yè)面的動(dòng)態(tài)內(nèi)容。它既可以與運(yùn)行在客戶端的Applet程序進(jìn)行交互,也可以直接與客戶端的HTML網(wǎng)頁(yè)交互。此外,一個(gè)Servlet能并發(fā)處理多個(gè)請(qǐng)求,而且它們可以使用在諸如線性會(huì)議這樣的同步請(qǐng)求支持系統(tǒng) [20]。? Servlet組件Servlet是Java 的服務(wù)器小程序,可以實(shí)現(xiàn)網(wǎng)絡(luò)上遠(yuǎn)程動(dòng)態(tài)加載,它被集成到了服務(wù)器中,是一個(gè)與協(xié)議無(wú)關(guān)的、跨平臺(tái)的服務(wù)方構(gòu)件 [19]。客戶端組件客戶層組件可以是應(yīng)用程序客戶端組件、Applets或者靜態(tài) HTML等,也可以是基于傳統(tǒng)客戶機(jī)方式的,如客戶端專(zhuān)用的客戶程序或軟件。不同的組件通過(guò)相關(guān)的類(lèi)和文件組成J2EE應(yīng)用程序,并與其他組件進(jìn)行交互。其中JDBC ,JNDI,JSP,JMS,Servlets,EJB是常用技術(shù),而EJB則是J2EE 體系結(jié)構(gòu)的核心部分。系統(tǒng)在運(yùn)行的過(guò)程中需要查詢某一信息時(shí),直接從EIS層讀取數(shù)據(jù)。通常情況下,這一層就是一個(gè)關(guān)系數(shù)據(jù)庫(kù),也可能是企業(yè)原有的一個(gè)信息系統(tǒng) [18]。數(shù)據(jù)層數(shù)據(jù)層也叫做EIS(Enterprise Information System Tier)即企業(yè)信息系統(tǒng)層,它運(yùn)行在EIS服務(wù)器上。當(dāng)EJB開(kāi)發(fā)完成后,可以將其部署在EJB 容器中,以完成設(shè)定的事務(wù)功能。它是 J2EE體系結(jié)構(gòu)的核心部分,所有與應(yīng)用系統(tǒng)程序相關(guān)的業(yè)務(wù)邏輯都要在這一層實(shí)現(xiàn)。JSP 目前的發(fā)展趨勢(shì)正在走向結(jié)構(gòu)化,也就是將它所包含的請(qǐng)求處理包裝在標(biāo)記文件或 Servlet 類(lèi)中,而在 JSP 中只描述頁(yè)面是如何顯示的。客戶端的瀏覽器會(huì)根據(jù)發(fā)送回來(lái)的 HTM 文件,將結(jié)果顯示在瀏覽器窗口中 [17]。Web層Web 層運(yùn)行在服務(wù)器上,