環境企業表單許可權分配填報資料系統設計與實現
目 錄
摘要 Ⅰ
第一章 前言
1.1 專案的背景和意義
科技發展,新技術不僅顛覆了傳統產業,更改變了人們原有的生產生活方式。隨著中國環境問題的逐漸嚴峻,資源的日漸緊缺,節能環保正成為一個越來越重要的戰略性行業。作為國家整個資訊化的重要組成部分,環境資訊化是推進生態環境治理體系和治理能力現代化的內在要求和重要支撐。在2014年12月28日召開的全國環境資訊中心主任工作會議上,“整合、共享、暢通”成為與會代表談論最多的詞彙。
隨著經濟發展進入新常態,生態文明建設和環境保護也邁入新常態,這其中,環境資訊化無疑是重要的一環。環境保護部資訊中心還不斷深化電子政務建設與業務應用,提升環境資訊服務能力,加強政府網站建設與管理,推動資訊公開和政務互動。在資訊保安保障方面也有所突破,通過調查、檢查,初步摸清環保行業資訊保安現狀。資訊化工作離不開“一把手”的重視,近兩年各地紛紛成立資訊化領導小組,統領環境資訊化工作。在北京,由市環保局局長擔任資訊化工作領導小組組長,資訊化工作辦公室設在資訊中心,實現了全域性環境資訊化建設規劃制定、專案立項、系統開發、應用推廣、運維保障等工作歸口管理。
環境資訊化是一項全域性性、長期性的工作,在推進環境資訊化的建設過程中,必須站在環境保護業務全域性的高度統一領導、統籌規劃,必須採取戰略管理的思想、方法和途徑,才能保持資訊化建設創新發展、均衡發展和可持續發展。
1.2 研究開發現狀分析
中國的環境保護資訊化工作起步於上世紀80年代中期,20多年來,環保資訊化與環保事業一起發展。現在移動互聯、物聯網、雲端計算等新技術的快速發展為環保資訊化應用提供了良好的技術契機,同時各級環保主管部門對環保資訊化工作重要性的認識逐步提高,逐年增加建設資金投入,建設程序明顯加快。
環境資訊化的開展日益成為環境建設的重要組成部分,隨著認識水平的不斷提高以及計算機技術的日新月異,環境資訊化建設的難點已經顯現,領導和管理人員在在認識上應當予以重視和深化。[1]
中國環保資訊化市場,在現階段是一個政策推動型的市場,有著鮮明的“政策市”特色。在未來隨著環保管理的細化,必將啟動一個源自企業環保資訊化需求的“企業市”。2014年初,中央網路安全和資訊化領導小組成立,將網路安全和資訊化提到了前所未有的高度。這意味著我國網路安全與資訊化管理體制機制正在發生深刻的變化,這個新框架不僅預示我國新的資訊化戰略和網路強國戰略被提上議事日程,而且也預示資訊科技和網路技術的競爭將有新的突破。
1.3 專案的目標和範圍
該專案以環境企業資訊化為中心,設計的目標使用者是圍繞著環境企業在資料填報過程中的職責分為已下三類:企業使用者、地方稽核員、系統管理員。
企業使用者在實際應用有會根據其生產或處理的物品,分為石油化工廠、電鍍廠、印染廠、水泥廠、鋼鐵廠、陶瓷廠、汙水處理廠、規範化畜禽養殖場及未劃分出的記為其他類別。上述分類將為系統的差異化表單處理提供了應用場景,在對使用者分配所屬型別時,也是確定其訪問除了基表(基本資訊表、生產概括表、廢水排放表、廢氣排放表等)以外的有針對性的專表的許可權。
本文的資料填報稽核系統以資料填報功能為主,許可權分配功能和表單分配功能為輔。
資料填報功能:
資料填報功能的範圍包括企業使用者在閱覽資料填報模組、輸入資料、儲存資料和資料上傳事件。
資料填報功能目標是企業使用者使用登入名和密碼成功登入系統後,其在資料填報模組下可見的表單,其中包括基表(基本資訊表、生產概括表、廢水排放表、廢氣排放表等)和企業使用者建立的角色分配的專表,完成資料填報並可以儲存上傳到系統成功。
許可權分配功能:
許可權分配功能的範圍包括系統管理員新增使用者過程中選擇的使用者型別的事件。
許可權分配功能的目標是系統的三類使用者在登入系統時,其可見的和可操作的表單受到限制,以保護系統的安全性。
表單分配功能:
表單分配功能的範圍包括系統管理員新增使用者和新增企業名錄的過程中可多選的使用者角色的事件。
表單分配功能的目的是企業使用者可以在資料填報增加其相關的專表,可以極大的避免了系統表單的冗餘。
1.4 論文結構簡介
此論文包括前言、技術與原理、需求建模、架構設計、模組設計、部署與應用、結論、致謝、參考文獻等。其中技術與原理包括需求設計階段需要的UML圖的設計和製作以及以Spring Framework為核心容器,Spring MVC為模型檢視控制器,MyBatis為資料訪問層, Apache Shiro為許可權授權層,Ehcahe對常用資料進行快取,Activit為工作流引擎,BootStrap實現表現層的選型方案技術。需求建模時採用面向物件的方法,分別對總體需求以及三大場景(填報、稽核、管理)的需求進行建模與分析。在架構設計的部分,詳細介紹了伺服器端的架構,描述了部分業務用例的實現,並用ER圖展示了資料庫的設計。模組設計部分介紹了類的使用。部署與應用部分除了部署圖外,還詳細介紹了典型頁面的輸入與輸出。最後是結論、致謝以及本文的參考文獻。
第二章 技術與原理
2.1需求設計階段
2.1.1 UML圖的設計與製作
統一建模語言(Unified Modeling Language)是一種通用的視覺化面向物件建模語言,它提供了多種圖元。[3]為軟體開發的所有階段提供模型化和視覺化支援,包括由需求分析到規格,到構造和配置。UML為編寫系統藍本提供了一個標準化方法,還包括諸如業務過程和系統功能這類的抽象概念。[4]
統一建模語言(UML)是一種用來對真實世界物體進行建模的標準標記,這個建模的過程是開發面向物件設計方法的第一步。UML是在Booch、OMT、OOSE等面向物件的方法及其它許多方法與資料的基礎上發展起來的。
UML表示法集中了不同的圖形表示方法,剔除了其中容易引起的混淆、冗餘或者很少使用的符號,同時添加了一些新的符號。其中的概念來自於面向物件技術領域中眾多專家的思想。UML從考慮系統的不同角度出發,定義了用例圖、類圖、物件圖、狀態圖、活動圖、序列圖、協作圖、構件圖、部署圖等9種圖。這些圖從不同的側面對系統進行描述。系統模型將這些不同的側面綜合成一致的整體,便於系統的分析和構造。儘管UML和其它開發工具還會設計出許多派生的檢視,但上述這些圖和其它輔助性的文件是軟體開發人員所見的最基本的構造。其中:
UML用例圖與OOSE中的用例圖類似。
UML的類圖綜合了OMT、Booch等面向物件方法中的類圖。
UML狀態圖是對David Harel所提出狀態圖的改進。
UML活動圖的基本語義和狀態圖大致相同,它類似於許多方法(包括面向物件技術之前的一些方法)中的工作流圖。
UML的協作圖是通過對Booch方法的物件圖、Fusion方法的物件互動圖以及其它一些方法中的相關圖表改造而成的。
UML的構建圖和部署圖是在Booch方法中的模組和程序圖(處理關係圖、處理器圖)的基礎上發展起來的。
UML的開發者們是在設計一種語言(儘管只是一種圖形化語言),因此必須在簡明(所有元素一律用方框和文字表示)和繁瑣(為每個元素設計單獨的符號)之間權衡。儘管如此,UML中還是增添了衍型和擴充套件機制等一些新的元素,因為這些元素在其它建模語言的實踐中已經被證明是非常有用的。
Astah Professional 功能強大,支援 UML1.4中所有圖和主要的圖形,元模(Meta Model)及屬性,全面滿足您建模所需,還集成了思維導圖,工程合併,協作開發等十餘項特色功能,以及許多方便使用者的貼心實用的功能。
2.2 編碼測試階段
2.2.1 Spring Framework
Spring Framework是一個開源的Java/Java EE全功能棧(full-stack)的應用程式框架,以Apache許可證形式釋出,也有.NET平臺上的移植版本。該框架基於 Expert One-on-One Java EE Design and Development(ISBN 0-7645-4385-7)一書中的程式碼,最初由 Rod Johnson 和 Juergen Hoeller等開發。Spring Framework 提供了一個簡易的開發方式,這種開發方式,將避免那些可能致使底層程式碼變得繁雜混亂的大量的屬性檔案和幫助類。
Spring是由Rod Johnson 建立的一種開源框架,該框架以IoC(Inversion of Control)和AOP(Aspect-Oriented Programming)為基礎。[5]通過基本的JavaBean完成以前只能有EJB完成的工作,同時Spring框架不僅集成了對Hibemate和其他O/R mapping資料訪問的解決方案。[6]
IoC(Inversion of Control)控制反轉,物件建立責任的反轉,在spring中BeanFacotory是IoC容器的核心介面,負責例項化,定位,配置應用程式中的物件及建立這些物件間的依賴。XmlBeanFacotory實現BeanFactory介面,通過獲取xml配置檔案資料,組成應用物件及物件間的依賴關係。
AOP主要實現的目的是針對業務處理過程中的切面進行提取,它所面對的是處理過程中的某個步驟或階段,以獲得邏輯過程中各部分之間低耦合性的隔離效果。
2.2.2 Spring MVC
Spring MVC是一種基於Java的實現了Web MVC設計模式的請求驅動型別的輕量級Web框架,即使用了MVC架構模式的思想,將web層進行職責解耦,基於請求驅動指的就是使用請求-響應模型,框架的目的就是幫助簡化開發。
Spring Web MVC也是服務到工作者模式的實現,但進行可優化。前端控制器是DispatcherServlet;應用控制器其實拆為處理器對映器(Handler Mapping)進行處理器管理和檢視解析器(View Resolver)進行檢視管理;頁面控制器/動作/處理器為Controller介面(僅包含ModelAndView handleRequest(request, response) 方法)的實現(也可以是任何的POJO類);支援本地化(Locale)解析、主題(Theme)解析及檔案上傳等;提供了非常靈活的資料驗證、格式化和資料繫結機制;提供了強大的約定大於配置(慣例優先原則)的契約式程式設計支援。Spring框架是圍繞DispatcherServlet來設計的,DispatcherServlet負責轉發請求給相應的應用程式。[7]
2.2.3 MyBatis
MyBatis 本是apache的一個開源專案iBatis,是一個基於Java的持久層框架。iBATIS提供的持久層框架包括SQL Maps和Data Access Objects(DAO)。
MyBatis是一個支援普通SQL查詢,儲存過程和高階對映的優秀持久層框架。MyBatis消除了幾乎所有的JDBC程式碼和引數的手工設定以及對結果集的檢索封裝。MyBatis可以使用簡單的XML或註解用於配置和原始對映,將介面和Java的POJO(Plain Old Java Objects,普通的Java物件)對映成資料庫中的記錄。
把Mybatis的功能架構分為三層:
(1)API介面層:提供給外部使用的介面API,開發人員通過這些API介面更加方便的對資料庫進行操縱。[8]介面層一接收到呼叫請求就會呼叫資料處理層來完成具體的資料處理。
(2)資料處理層:負責具體的SQL查詢、SQL解析和執行,實現資料庫記錄和Java實體進行對映。[8]它主要的目的是根據呼叫的請求完成一次資料庫操作。
(3)基礎層:負責配置檔案載入,資料庫連線管理,事務管理和快取處理,這些作為資料處理層的支撐。[8]這些都是共用的東西,將他們抽取出來作為最基礎的元件。為上層的資料處理層提供最基礎的支撐。
MyBatis的需要充分利用了Java的現有知識和權力的最簡單的方法和SQL還提供了強大的功能,使資料永續性實現簡單。 Java永續性與MyBatis的3是一個實用的,實踐指南,為您提供了一系列明確的一步一步的練習,這將有助於你瞭解如何MyBatis的工作原理以及如何使用它為您的實際應用需求。[9]
2.2.4 Apache Shiro
Apache Shiro是Java的一個安全框架。對比Spring Security,它簡單,可能沒有Spring Security做的功能強大。Apache Shiro 與Spring Security相比,使用比較簡潔易懂的認證換授權方式,能夠快速地嵌入到資訊系統中,減少了開發的難度,降低了開發成本。[10]
2.2.5 Ehcahe
Ehcache是一種廣泛使用的開源Java分散式快取。主要面向通用快取,Java EE和輕量級容器。它具有記憶體和磁碟儲存,快取載入器,快取擴充套件,快取異常處理程式,一個gzip快取servlet過濾器,支援REST和SOAP api等特點。
2.2.6 Activit
Activiti的是一個輕量級的工作流和業務流程管理(BPM)平臺定位於商務人士,開發人員和系統管理員。其核心是一個Java的超高速和穩定的BPMN2的流程引擎。它是開源的,在Apache許可證下發布。 Activiti的執行在任何Java應用程式,一個伺服器上,在群集上或在雲中。它與Spring完美結合,顯得十分輕巧,基於簡單的概念。
2.2.7 BootStrap
Bootstrap,來自 Twitter,是目前很受歡迎的前端框架。Bootstrap 是基於 HTML、CSS、JAVASCRIPT 的,它簡潔靈活,使得 Web 開發更加快捷。它由Twitter的設計師Mark Otto和Jacob Thornton合作開發,是一個CSS/HTML框架。Bootstrap提供了優雅的HTML和CSS規範,它即是由動態CSS語言Less寫成。
第三章 環境企業表單許可權分配填報資料系統的需求分析
1
2
3
3.1 系統需求概述
設計與實現環境企業表單許可權分配填報資料系統,是希望通過開發對環境企業的資訊化資料錄入與管理的各個功能模組,形成一套實用的企業資訊化資料統計工具,來滿足日益複雜的資訊管理平臺,達到提升工作效率的目的。
系統包括三個主要的業務場景,分別是新增使用者、填報資料、稽核資料。通過主要的三個業務場景,來給系統新增眾多的企業並未其分配企業使用者,其企業使用者可以通過其登入名和密碼登入系統來檢視企業的基表和專表並填報資料,其企業使用者可以儲存資料並上傳資料通知稽核員。系統的稽核員可以登入系統檢視待辦事務,可以稽核資料是否返回進行修改。三個業務場景把環境企業資訊化的業務流程集中到系統中,方便了系統中不同分工的使用者可以清晰的找到其需要的工作事務,極大的方便了資訊管理中的工作,提升了辦事效率。
從系統管理員需求的角度出發,環境企業表單許可權分配填報資料系統主要的功能模組包含6項,分別是個人資訊管理、使用者管理、資料填報、資料稽核管理、資料儲存以及企業任務分配管理。對應的系統用例圖如圖1所示。
圖 1系統用例圖(系統管理員)
從企業使用者的角度出發,環境企業表單許可權分配填報資料系統則有2項主要的功能模組,分別是填報資料和上傳資料,其填報資料包含填報基表資料和填報專表資料以及完成後的儲存資料。對應的系統用例圖如圖2所示。
圖 2 系統用例圖(企業使用者)
從地方稽核員出發,環境企業表單許可權分配填報資料系統則有4項主要的功能模組,分別是檢視待辦事務、設定企業填報任務、資料回退和統計填報進度統計,其統計填報進度包含按行政區域統計和按行業類別統計。對應的系統用例圖如圖3-3所示。
圖 3 系統用例圖(地方稽核員)
3.2 系統管理員需求分析
本節將對環境企業表單許可權分配填報資料系統中,系統管理員視角的主要功能模組進行需求分析,並對相應的核心用例及業務流程進行描述。
3
3.1
3.2
3.1.1 新增企業使用者管理場景
本系統的企業使用者的基本資訊包含姓名、登入名、郵箱、行動電話所屬地級市、所屬行政區、職位、部門微訊號。為了確保每個企業至少有一個企業使用者與之對應,需要在建立好的企業名錄的企業下,新增企業使用者。
其中,新增和修改使用者資訊的用例描述如表格 1所示。
表格 1 新增企業使用者的用例描述表
用例名稱 |
新增企業使用者 |
參與者 |
系統管理員 |
簡單描述 |
系統管理員新增新的新增企業使用者 |
前置條件 |
1.系統管理員已進入“環保大檢查一企一檔”頁面 |
基本事件流 |
1.系統管理員點選“資料稽核”按鈕,進入“企業名錄管理”頁面; 2.頁面顯示企業名稱查詢和企業名稱列表,企業名稱列表其中包括汙染源編碼、企業型別、地市和區縣; 3.在“企業名稱”文字框輸入關鍵字,點選“查詢”按鈕; 4.點選查詢出的企業名稱,進入“企業基本資訊”頁面; 5.點選“新增企業使用者”按鈕,進入新增使用者頁面,其中包括: (1)“登入名”文字框; (2)“姓名”文字框; (3)“行動電話”文字框; (4)“郵箱”文字框; (5)“市”地市選項欄; (6)“區”區縣選項欄; (7)“職位”文字框; (8)“部門”文字框; 6.系統管理員在其中錄入資訊和選擇選項。 7.系統管理員點選“儲存”按鈕,新企業使用者新增完成,系統進行操作成功提示; 8.系統自動返回“企業基本資訊”頁面,用例結束。 |
其他事件流 |
系統管理員在“新增企業使用者”頁面中點選“取消”和“關閉”按鈕,則不新增任何使用者,並且系統將自動返回“企業基本資訊”頁面 |
異常事件流 |
系統管理員提交的資料存在問題,系統進行相應提示,並停留在“使用者新增”頁面,等待系統管理員重新填寫並儲存 |
後置條件 |
新企業使用者新增到系統中 |
引發異常事件流的條件有以下幾項:
(1)使用者登入名已存在;
(2)使用者登入名沒有填寫。
3.3 企業使用者需求分析
本節將對環境企業表單許可權分配填報資料系統中,企業使用者視角的主要功能模組進行需求分析,並對相應的核心用例及業務流程進行描述。
3
3.1
3.2
3.3.1 資料填報場景
本系統的企業使用者的基表包含封面、企業基本資訊、履行環保制度情況、企業生產概況、廢水排放情況、廢氣排放情況、固體廢物處理情況、治理設施執行情況、環境應急管理九個表單,每張表單分別要求填報與表單相關的資訊。企業的專表由系統管理員新增使用者的時候根據其使用者的使用者角色的分類進行分配專表。例如使用者角色為印染廠的使用者,系統為其分配一張“印染行業專表”專表;使用者角色為石油化工廠的使用者,系統為其分配一張“涉VOCs(石化)專表”專表;使用者角色為火電廠的使用者,系統為其分配一張“火電行業專表”專表。
企業使用者在每張表單填報資料時,可以儲存資料,方便其分步完成所有表單的填報工作。在填報資料時,頁面對需要解釋的文字框進行註釋提示使用者。
使用者在完成其基表內所有的表單的填報工作和專表的填報工作後,點選資料上傳可以完成其資料填報任務。
其中,企業使用者填報資料的用例描述如表格 2所示。
表格 2 企業使用者填報資料的用例描述表
用例名稱 |
企業使用者填報資料 |
參與者 |
企業使用者 |
簡單描述 |
企業使用者根據其分配的填報任務完成填報工作 |
前置條件 |
1.企業使用者已進入“環保大檢查一企一檔”頁面 |
基本事件流 |
1.企業使用者點選“資料填報”按鈕,進入“企業資料填報”頁面; 2.頁面顯示資料填報基表列表,其中包括封面、企業基本資訊、履行環保制度情況、企業生產概況、廢水排放情況、廢氣排放情況、固體廢物處理情況、治理設施執行情況、環境應急管理九個表單; 3.點選“封面”按鈕,進入“環保大檢查‘一企一檔’表及填報說明”頁面,其中包括: (1)“重點源單位名稱(蓋章)”文字框; |
續表格 2
基本事件流 |
(2)“重點源企業編碼”文字框; (3)“法人代表人”文字框; (4)“填表人”文字框; (5)“申報時段”選項框; (6)“申報時間”選項框; 4.企業使用者在其中錄入資訊和選擇選項。 5.企業使用者點選“儲存”按鈕,封面資訊儲存完成,系統進行操作成功提示; 6.點選“企業基本資訊”按鈕,進入“企業基本資訊”頁面,其中包括詳細地址、地理位置、聯絡方式、流域去向文字框。根據每個文字框的不同註釋填報,重複上述第4個和第5個事件流; 7.企業使用者在完成基表九格表單資料填報和其分配的專表的資料填報儲存後,左側有個“企業資料上報”按鈕; 9.系統管理員點選“上傳”按鈕,資料填報完成,系統進行操作成功提示; 8.系統自動返回“資料填報”頁面,用例結束。 |
其他事件流 |
系統管理員在“填報資料”任一頁面中點選“取消”按鈕,則不記錄錄入的資料,並且系統將自動返回頁面未錄入資料的情況。 |
異常事件流 |
企業使用者的資料存在問題,系統進行相應提示,並停留在填報頁面,等待企業使用者重新填寫並儲存 |
後置條件 |
企業使用者完成填報資料,上傳後在其稽核員的稽核列表可見“已提交”。 |
引發異常事件流的條件有以下幾項:
(1)企業使用者錄入的資料不符合註釋資訊;
(2)企業使用者有文字框沒有錄入資料。
(3)有表單的沒有儲存。
3.4 地方稽核員需求分析
本節將對環境企業表單許可權分配填報資料系統中,地方稽核員視角的主要功能模組進行需求分析,並對相應的核心用例及業務流程進行描述。
3
3.1
3.2
3.4.1 資料回退場景
本系統的地方稽核員在歷史資料查詢中可以瀏覽所以企業使用者的資料填報任務的完成程度,對已完成資料上傳提交的使用者資料進行稽核。對不符合標準的填報進行資料回退,並反饋其回退原因。
地方稽核員對填寫的表單檢視,對不符合了填報註釋但是不符合業務邏輯的資料進行要求重新填報。
其中,地方稽核員資料回退的用例描述如表格 3所示。
表格 3 地方稽核員資料回退的用例描述表
用例名稱 |
地方稽核員資料回退 |
參與者 |
地方稽核員 |
簡單描述 |
地方稽核員對不和服業務邏輯的資料回退 |
前置條件 |
1地方稽核員已進入“環保大檢查一企一檔”頁面 |
基本事件流 |
1.地方稽核員點選“資料稽核”按鈕,進入“企業資料稽核”頁面; 2.地方稽核員點選“歷史資料查詢”按鈕,在點選“稽核回退”按鈕,進入“稽核回退”頁面,頁面包括企業名稱查詢和稽核資料列表,稽核資料列表其中包括企業名稱、企業型別、任務名稱、下達時間、截止時間和狀態。 3.在“企業名稱”文字框輸入要檢視的企業名稱,點選“查詢”按鈕; 4.點選企業名稱檢視提交的表單詳情; 5.關閉表單詳情,在這條的左側的選項框勾選; 6.點選“回退”按鈕,系統彈出“稽核操作”頁面,頁面包括以下內容: (1)稽核狀態; (2)稽核意見; (3)稽核人電話; 7.地方稽核員填寫稽核操作頁面內容,點選“儲存”按鈕,資料回退完成,系統進行操作成功提示; 8.系統自動返回“稽核回退”頁面,用例結束。 |
其他事件流 |
系統管理員在“稽核操作”頁面中點選“取消”按鈕,則不回退提交的資料,並且系統將自動返回“稽核回退”頁面。 |
異常事件流 |
企業使用者的資料沒有提交,系統進行相應提示,並停留在“稽核回退”頁面。 |
後置條件 |
企業使用者在待辦事務可見回退意見。 |
引發異常事件流的條件有以下幾項:
(1)企業使用者的資料沒有提交。
3.5 領域建模
圖 4 系統概念類圖
第四章 環境企業表單許可權分配填報資料系統架構設計
4
4.1 設計系統架構
環境企業表單許可權分配填報資料系統採用B/S架構,即瀏覽器/伺服器架構。系統的各模組則採用Web應用專案中常用的MVC模式進行構建。
4
5
5.1
4.1.1 B/S架構設計
B/S結構(Browser/Server,瀏覽器/伺服器模式),是WEB興起後的一種網路結構模式,WEB瀏覽器是客戶端最主要的應用軟體。這種模式統一了客戶端,將系統功能實現的核心部分集中到伺服器上,簡化了系統的開發、維護和使用。客戶機上只要安裝一個瀏覽器,伺服器安裝SQL Server、Oracle、MYSQL等資料庫。瀏覽器通過Web Server 同資料庫進行資料互動。本系統同樣採用了優秀的B/S框架,設計的系統的架構設計如圖5所示。
圖 5 “環境大檢查一企一檔”包圖
B/S最大的優點就是可以在任何地方進行操作而不用安裝任何專門的軟體,只要有一臺能上網的電腦就能使用,客戶端零維護。系統的擴充套件非常容易,只要能上網,再由系統管理員分配一個使用者名稱和密碼,就可以使用了。②維護和升級方式簡單。B/S 結構的軟體只需要管理伺服器就行了。[11]
4.1.2 基於MVC模式的架構設計
MVC全名是Model View Controller,是模型(model)-檢視(view)-控制器(controller)的縮寫,一種軟體設計典範,用一種業務邏輯、資料、介面顯示分離的方法組織程式碼,將業務邏輯聚集到一個部件裡面,在改進和個性化定製介面及使用者互動的同時,不需要重新編寫業務邏輯。
本系統採用MVC架構設計,把模型層分為業務層和持久層,總共四層。分層結構很好地滿足了系統的可維護性、安全性和穩定性,如圖6所示。
圖 6 “環境大檢查一企一檔”包圖
在MVC模式中,模型是核心,是系統的資料模型,同時也對系統資料抽象,通過對資料處理模型系統,不關心的具體形式資料儲存,而封裝在該層系統的業務規則和業務流程。檢視是系統為使用者提供互動介面。檢視是負責受理使用者的請求並作簡單處理時,業務處理的處理到模型層,而模型層的處理結果被顯示給使用者。
4.2 用例的實現
本節將分別對系統管理員視角以及企業使用者視角的部分功能模組中的典型用例的實現進行描述。
5.2
4.2.1系統管理員用例的實現
在系統管理員新增企業使用者的用例中,通過Spring Servlet來處理頁面的請求,使用者傳送請求——>DispatcherServle,再HandlerMapping將會把請求對映為HandlerExecutionChain物件,DispatcherServlet——>HandlerAdapter,HandlerAdapter將會把處理器包裝為介面卡,從而支援多種型別的處理器,即介面卡設計模式的應用,從而很容易支援很多型別的處理器;HandlerAdapter——>處理器功能處理方法的呼叫,HandlerAdapter將會根據適配的結果呼叫真正的處理器的功能處理方法,完成功能處理;在業務處理相關的方法中,讀取企業名錄的現有的使用者,獲取userid(),在登入名不重複的情況可以把新的使用者更新到企業名錄下addUserinfoDao.update(addUserinfo)。View會根據傳進來的Model模型資料進行渲染,返回控制權給DispatcherServlet,由DispatcherServlet返回響應給使用者,到此一個流程結束。
用例的時序圖如圖7所示。
圖 7 系統管理員新增企業使用者用例時序圖
4.2.2 企業使用者用例的實現
用例的時序圖如圖8所示。
圖 8 企業使用者填報資料用例時序圖
4.2.3 地方稽核員用例的實現
用例的時序圖如圖9所示。
圖 9 地方稽核員資料回退用例時序圖
4.3 資料庫設計
本節將分別對系統的資料庫的關聯表單的設計進行說明,資料庫內各表之間的關聯關係有ER圖展示,系統的內具體建表由表格展示。
系統的ER圖如圖10所示。
圖 10 系統資料庫ER圖
根據上述ER圖,設計資料表的清單如下所示:
企業使用者的模型根據實體關係構建,包含的鍵值如表格4所示。
表格 4 企業使用者資料表cpd_userinfo
主鍵/外來鍵 |
欄位 |
型別 |
欄位說明 |
id |
varchar(36) NOT NULL |
使用者編碼 |
|
eid |
varchar(36) NULL |
企業編碼 |
|
主鍵 |
uid |
varchar(100) NULL |
使用者登入名 |
name |
varchar(50) NULL |
姓名 |
|
passwd |
varchar(100) NULL |
密碼 |
|
mobile |
varchar(100) NULL |
行動電話 |
|
|
varchar(100) NULL |
電子郵箱 |
|
weixin |
varchar(45) NULL |
微訊號 |
續表格 4
keyid |
varchar(30) NULL |
數字證書編碼 |
logo |
varchar(300) NULL |
頭像 |
roletype |
varchar(36) NULL |
角色型別 |
regionid |
varchar(12) NULL |
行政區劃 |
district |
varchar(50) NULL |
區 |
city |
varchar(50) NULL |
市 |
level |
varchar(50) NULL |
級別 |
usertype |
int(11) NULL |
使用者型別(1:環保使用者, 2:企業使用者) |
title |
varchar(100) NULL |
職位 |
department |
varchar(300) NULL |
部門 |
ounit |
varchar(300) NULL |
單位 |
sortorder |
varchar(45) NULL |
排序 |
epicid |
varchar(60) NULL |
環保編碼 |
status |
varchar(36) NULL |
狀態 |
ldapsync |
varchar(36) NULL |
LDAP同步 |
enabled |
varchar(36) NULL |
有效 |
usrid |
varchar(36) NULL |
使用者 |
utime |
datetime NULL |
更新時間 |
系統使用者的模型根據實體關係構建,包含的鍵值如表格5所示。
表格 5 系統使用者資料表sys_user
主鍵/外來鍵 |
欄位 |
型別 |
欄位說明 |
主鍵 |
id |
varchar(64) NOT NULL |
編號 |
company_id |
varchar(64) NOT NULL |
歸屬公司 |
|
office_id |
varchar(64) NOT NULL |
歸屬部門 |
|
login_name |
varchar(100) NOT NULL |
登入名 |
|
password |
varchar(100) NOT NULL |
密碼 |
|
no |
varchar(100) NULL |
工號 |
|
name |
varchar(100) NOT NULL |
姓名 |
|
|
varchar(200) NULL |
郵箱 |
|
phone |
varchar(200) NULL |
電話 |
|
mobile |
varchar(200) NULL |
手機 |
|
user_type |
char(1) NULL |
使用者型別 |
|
photo |
varchar(1000) NULL |
使用者頭像 |
|
login_ip |
varchar(100) NULL |
最後登陸IP |
|
login_date |
datetime NULL |
最後登陸時間 |
|
login_flag |
varchar(64) NULL |
是否可登入 |
|
create_by |
varchar(64) NOT NULL |
建立者 |
續表格 5
create_date |
datetime NOT NULL |
建立時間 |
update_by |
varchar(64) NOT NULL |
更新者 |
update_date |
datetime NOT NULL |
更新時間 |
remarks |
varchar(255) NULL |
備註資訊 |
del_flag |
char(1) NOT NULL |
刪除標記 |
企業基本資訊的模型根據實體關係構建,包含的鍵值如表格6所示。
表格 6 企業基本資訊資料表cpd_company_baseinfo
主鍵/外來鍵 |
欄位 |
型別 |
欄位說明 |
id |
int(12) NOT NULL |
||
主鍵 |
CompanyID |
varchar(50) NULL |
企業ID |
CompanyName |
varchar(255) NULL |
企業名稱 |
|
OrganizingCode |
varchar(255) NULL |
組織機構程式碼 |
|
ICBLRNumber |
varchar(50) NULL |
工商營業執照註冊號 |
|
Province |
varchar(12) NULL |
省(自治區、直轄市) |
|
Area |
varchar(12) NULL |
地區(市、州、盟) |
|
County |
varchar(12) NULL |
縣(區、市、旗) |
|
OuntrySide |
varchar(12) NULL |
鄉(鎮) |
|
Street |
varchar(12) NULL |
街(村)、門牌號 |
|
IndustryType |
varchar(8) NULL |
所屬行業,行業型別 |
|
ScaleCode |
int(11) NULL |
企業規模(1 大型,2 中型,3 小型,4 微型) |
|
WasteWaterOutNO |
varchar(100) NULL |
廢水排放口數量 |
|
WasteWaterOutFw |
varchar(100) NULL |
廢水各排放口流量(升/秒) |
|
exhaustGasOutNO |
varchar(100) NULL |
廢氣排放口數量 |
|
WasteWaterOutHt |
varchar(100) NULL |
廢氣各排放口高度(米) |
|
CreateDate |
datetime NULL |
建立時間 |
|
TaskId |
int(11) NULL |
任務ID |
待辦事務任務的模型根據實體關係構建,包含的鍵值如表格4所示。
表格 7 待辦事務任務資料表cpd_task_flow
主鍵/外來鍵 |
Field |
Type |
Comment |
id |
int(12)NOTNULL |
||
taskid |
int(8) NULL |
任務id |
|
taskname |
varchar(100) NULL |
企業填報提醒名稱 |
|
companyid |
varchar(50) NULL |
企業id |
|
industrycate |
varchar(255) NULL |
行業類別 |
|
taskbegindate |
datetime NULL |
下達時間 |
|
taskenddate |
datetime NULL |
填報截止時間 |
續表格 7
issuedstate |
varchar(255) NULL |
調查任務下發狀態 0:未下達 1:已下達 |
reportingstatus |
varchar(255) NULL |
企業填報狀態 0:未提交 1:稽核中 2:稽核通過 3:區縣稽核退回 4:地市稽核退回 5:省級稽核退回 |
districtaudit |
varchar(255) NULL |
區級稽核狀態 0:待稽核 1:稽核通過 2:回退 |
municipalaudit |
varchar(255) NULL |
市級稽核狀態 0:待稽核 1:稽核通過 2:回退 |
provincialaudit |
varchar(255) NULL |
省級稽核狀態 0:待稽核 1:稽核通過 2:回退 |
createdate |
datetime NULL |
調查任務建立時間 |
checktabelid |
varchar(32) NULL |
檢查表id |
userid |
varchar(64) NULL |
下達使用者id |
第五章 環境企業表單許可權分配填報資料系統的模組設計
5
本節將選取環境企業表單許可權分配填報資料系統中系統管理員的主要功能模組,對實現過程進行描述,並展示相應的使用者介面。
6
6.1
5.1.1 企業使用者的新增
類AddBaseinfoService是用於新增使用者的整合類,其中包括了與企業使用者新增相關的例項方法。
表格 8 系統管理員模組目錄中的AddBaseinfoService類的方法說明
方法 |
用途 |
引數 |
findList(addBaseinfo) |
按關鍵詞查詢企業 |
企業名錄 |
save(addBaseinfo) |
儲存新增的企業使用者 |
企業名錄 |
update(addBaseinfo) |
使用者新增到對應的企業名錄,更新對應企業的使用者資訊 |
企業名錄 |
其中,save(addBaseinfo)方法的核心部分演算法流程描述如圖11所示。
圖 11 save(addBaseinfo)方法核心部分演算法流程圖
“新增企業使用者”介面如圖12所示。系統管理員可通過該介面對企業名錄新增使用者,則可以進入“企業基本資訊”介面檢視和修改企業使用者,如圖13所示。
圖 12 “新增企業使用者”介面
圖 13 “檢視企業名錄資訊下的使用者”介面
5.2 系統功能模組的實現
功能許可權控制應用在以下場景:訪問功能授權,檢視許可權,稽核許可權。
5.2.1 給方法新增許可權標誌
@RequiresPermissions("sys:submodule:user:view")
@RequiresUser
5.2.2 選單中設定許可權標誌。
5.2.3 判斷許可權:
SecurityUtils.getSubject().isPermitted("sys:user:edit");
5.2.4 檢視中控制按鈕(shiro.tld):
<shiro:hasPermission name="sys:user:edit">
<input id="btnSubmit" class="btn btn-primary" type="submit" value="保 存"/>
</shiro:hasPermission>
<!-- 任何一個符合條件的許可權 -->
<shiro:hasAnyPermissions name="sys:user:view, sys:user:edit,">
<input id="btnSubmit" class="btn btn-primary" type="submit" value="返 回"/>
</shiro: hasAnyPermissions>
5.3 企業使用者填報功能模組的實現
本節將選取環境企業表單許可權分配填報資料系統中企業洪湖的主要功能模組,對實現過程進行描述,並展示相應的使用者介面。
7
7.1
5.3.1 企業使用者的填報資料
類FirmBasicinfoService是用於新增使用者填報資料的整合類,其中包括了與企業使用者填報資料相關的例項方法。
表格 9 企業使用者模組中的FirmBasicinfoService類的方法說明
方法 |
用途 |
引數 |
saveFirmBasicinfo(list, firmBasicinfo) |
儲存企業資訊的更新資訊 |
需要更新基本資訊,企業基本資訊 |
updateFirmBasicinfo(updateList, firmBasicinfo) |
更新到企業資訊的列表 |
更新基本資訊列表,企業基本資訊 |
getFirmBasicinfoChildList(companyid) |
獲取子表 |
企業ID |
“企業使用者填報資料”介面如圖14所示。企業使用者可通過該介面對企業的待辦的填報資料進行填寫和儲存,如圖15所示。
圖 14 “填報資料儲存”介面
圖 15 “檢視企業名錄資訊下的使用者”介面
第六章 部署與應用
6.1 系統的部署
環境企業表單許可權分配填報資料系統的架構設計的確定已經極大的方便的系統的部署和應用。系統的部署圖如圖16所示。
圖 16 系統部署圖
系統部署的具體步驟如下:
1.執行Maven目錄下的settings.bat檔案,用來設定maven倉庫路徑,並按提示操作(設定PATH系統變數、配置Eclipse)。
2.配置MySQL資料庫,設定資料來源:src/ main/ resources/ jeesite.properties
3.配置Server(Tomcat)作為釋出的web伺服器。
4.系統內安裝瀏覽器,要求是現代瀏覽器,本系統對IE6和IE8下,頁面顯示受影響。
5.訪問工程:http://localhost:8080/ScpsPlatForm_A/a?login 使用者名稱:admin 密碼:admin。此使用者名稱和密碼為系統管理使用者。
6.2 檔案結構
本節將對系統中的主要資料夾進行說明以介紹系統的程式碼結構。
6.2.1原始碼目錄
在src/ main/ java/ com/ suncompass/ systems 目錄中,主要編寫有關係統業務層和控制層的程式碼。其中common/ 目錄中編碼有關Spring物件類和Bean實體類定義和實現,MyBatis的資料持久層在persistence/ 目錄下定義。modules/ 目錄下有針對系統的實體類的定義與實現,在interceptor/ 目錄下有資料訪問層的相關類。其中詳細的目錄配置如表格10所示。
表格 10 原始碼目錄
src.main.java.com.suncompass.systems |
系統業務層和控制層 |
├ common |
公共模組存放目錄 |
│├ beanvalidator |
實體Bean驗證相關類 |
│├ mapper |
各種Object到Xml、Object到Json的對映轉換類 |
│├ persistence |
持久層相關類 |
│├ security |
安全相關類 |
│├ service |
業務層相關類 |
│├ servlet |
公共servlet相關類 |
│├ utils |
各種操作小工具類 |
│└ web |
模型控制器層相關類 |
└ modules |
JeeSite內建功能模組存放目錄 |
├ act |
Activiti工作流引擎目錄 |
├ cms |
內容管理模組目錄 |
├ gen |
Web版本程式碼生成器目錄 |
├ sys |
系統核心模組存放目錄 |
│├dao |
系統資料訪問層相關類 |
│├entity |
系統實體相關類 |
│├ interceptor |
系統模組攔截器相關類 |
│├ service |
系統業務處相關類 |
│├ web |
系統模型控制器層相關類 |
│├ utils |
系統模組的工具類 |
└ cpd |
企業使用者核心模組存放目錄 |
├dao |
資料訪問層相關類 |
├entity |
實體相關類 |
├ service |
系統業務處相關類 |
└ web |
系統模型控制器層相關類 |
6.2.2 資料資源目錄
在src/ main/ resource目錄中,主要編寫有關資料來源的系統配置和日誌配置,針對不同的資料庫來源有簡單的配置和快取配置,其中針對Spring的資料訪問要加入相關檔案。其中詳細的目錄配置如表格11所示。
表格 11 資料資源目錄
src.main.resource |
|
├act |
Activiti工作流引擎相關檔案(部署檔案、bpmn) |
├cache |
Ehcache快取配置存放目錄 |
├mappings |
Mybatis Sql對映檔案存放目錄 |
├jeesite.properties |
系統配置屬性檔案 |
├spring-*.xml |
Spring相關檔案 |
└log4j.properties |
Log4j日誌配置屬性檔案 |
6.2.3 釋出目錄
在src/ main/ webapp/ 目錄下存放網頁渲染的指令碼是檢視檔案,在WEB-INF目錄下存放請求對映的檢視佈局和素材檔案。
表格 12 Web伺服器釋出目錄
src.main.webapp |
|
├static |
靜態檔案存放目錄(JS、CSS、前端外掛類庫等) |
├└ compressor.bat |
JavaScrpt和CSS檔案壓縮指令碼 |
├ userfiles |
使用者上傳檔案目錄 |
└ WEB-INF |
WEB應用安全目錄,通過對映訪問相關檔案。 |
├├ tags |
Tags標籤存放目錄 |
├├ views |
檢視檔案目錄 |
│├ error |
系統異常對映相關頁面 |
│├ include |
檢視相關包含檔案 |
│├ layouts |
檢視佈局相關檔案 |
│└ modules |
內建核心功能模組檢視相關檔案 |
│ ├ act |
Activiti模組檢視相關檔案 |
│ ├ cms |
內容管理模組檢視相關檔案 |
│ ├ gen |
程式碼生成模組檢視相關檔案 |
│ └ sys |
系統管理模組檢視相關檔案 |
├ ckfinder.xml |
CKfinder配置檔案 |
├ decorators.xml |
Decorator配置檔案 |
└ web.xml |
Web配置檔案 |
6.3 系統執行結果
6.3.1 系統管理員的介面
系統管理員在系統的許可權是很全的,可以管理系統使用者和企業使用者,可以對系統設定,可以測試填報資料以及稽核資料。其登入系統的頁面如圖17所示。
圖 17 系統管理員頁面
6.3.2 企業使用者的介面
企業使用者在登入系統可見待辦事務模組和資料填報模組,根據任務完成資料填報和上傳工作。其登入系統的頁面如圖18所示。
圖 18 企業使用者頁面
6.3.3 地方稽核員的介面
地方稽核員在系統中可以待辦事務和資料稽核