亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于敏捷開發(fā)的企業(yè)管理系統(tǒng)模板設(shè)計與應用

        2020-07-24 02:11:37徐建國萬千山
        軟件導刊 2020年6期
        關(guān)鍵詞:信息管理系統(tǒng)

        徐建國 萬千山

        摘要:為節(jié)約管理系統(tǒng)開發(fā)成本、縮短系統(tǒng)開發(fā)時間,基于J2EE進行企業(yè)管理模板開發(fā)。模板前后端分離開發(fā),后端以Spring Boot為核心架構(gòu),開啟二級緩存;前端采用Vue.js、Element-UI模板引擎框架,使用橢圓曲線加密(ECC)保證數(shù)據(jù)傳輸安全,并采用Rcdis為二級緩存,MySQL為持久化數(shù)據(jù)庫,使系統(tǒng)對數(shù)據(jù)的訪問變得高效且靈活,通過Git和Jenkins實現(xiàn)項目的持續(xù)集成與部署。實際開發(fā)測試結(jié)果表明,該模板可直接使用,普遍縮短了開發(fā)時間(20-30天),并有效節(jié)約了開發(fā)成本。模板具備可維護性與可擴展性,使用敏捷開發(fā)方式讓開發(fā)者與甲方能夠及時溝通,從而對開發(fā)作出及時調(diào)整,因此可廣泛應用于實際系統(tǒng)開發(fā)中。

        關(guān)鍵詞:敏捷開發(fā);J2EE;信息管理系統(tǒng);SpringBoot;Jenkins

        DOI:10.11907/rjdk.201130 開放科學(資源服務)標識碼(OSID):

        中圖分類號:TP319文獻標識碼:A 文章編號:1672-7800(2020)006-0171-05

        0 引言

        隨著5C時代的到來,信息交互越來越方便,各類管理軟件在中小型企業(yè)中的應用也越來越普遍。由于中小型企業(yè)提供的開發(fā)資金有限,為使系統(tǒng)快速投入使用,節(jié)約開發(fā)時間與成本,一般采用敏捷開發(fā)(ASD)形式進行項目開發(fā)。但一方面ASD中的質(zhì)量需求(QRs)通常容易定義不清,并且由于人們大多關(guān)注于快速交付功能,導致該問題難以得到有效解決;另一方面很多中小型企業(yè)管理不規(guī)范,在需求描述上本身就不甚明確,反復更改需求的情況時有發(fā)生,因此有時不得不被迫忽略QRs。有研究表明,忽略QRs會極大地增加軟件開發(fā)與維護成本。如文獻報告稱,若在開發(fā)早期階段忽略了與質(zhì)量相關(guān)問題,導致系統(tǒng)質(zhì)量下降,則需要重新開發(fā)整個系統(tǒng)。雖然研究者們已提出一些解決方案,但對于小型開發(fā)團隊而言,這些解決方案花費的成本都是巨大的。

        當前中小型企業(yè)管理系統(tǒng)通用性較強,通過工具搭建一個穩(wěn)定的敏捷開發(fā)環(huán)境,以及擁有一個適用于中小型企業(yè)軟件開發(fā)的模板,可極大地節(jié)省開發(fā)時間,對開發(fā)者(小型開發(fā)團隊)及使用者(中小型企業(yè))都有很高的價值。模板使用Spring Boot作為開發(fā)框架,相比當前主流的SSME框架,無需繁瑣的xml配置。目前通常使用SpringBoot+thymeleaf進行開發(fā),但thymeleaf不利于前后端分離。本文模板前端使用Vue框架與Element-UI桌面端組件庫,使用Axios以RESTful(Representational StateTransfer,將請求參數(shù)變成請求路徑)風格發(fā)起異步請求完成數(shù)據(jù)交互,并返還json數(shù)據(jù);通過Git、Jenkins以及遠程tomcat服務器實現(xiàn)持續(xù)集成、持續(xù)部署與持續(xù)交互;設(shè)置Redis為MySQL的二級緩存,以提高查詢效率。

        1 需求分析

        基于敏捷開發(fā)的信息管理系統(tǒng)有以下共同點:

        (1)持續(xù)集成與持續(xù)部署。實現(xiàn)持續(xù)集成與持續(xù)部署是敏捷開發(fā)的基本要求,可讓項目快速進入測試階段,完成測試后可快速交付給客戶投入使用。

        (2)數(shù)據(jù)安全與權(quán)限管理。數(shù)據(jù)安全可在公共方法類中實現(xiàn),而權(quán)限管理則可通過設(shè)計角色與權(quán)限為多對多關(guān)系的管理模塊完成。

        (3)基礎(chǔ)編碼模塊。不同企業(yè)具有不同業(yè)務流程,但大多數(shù)企業(yè)都會涉及各類編碼和BOM,因此設(shè)計一個完整的方案將基礎(chǔ)編碼模塊化,有利于減少開發(fā)時間。

        (4)消息推送與實時通信。大多數(shù)信息管理系統(tǒng)都需實現(xiàn)消息推送或?qū)崟r通信功能,Ajax輪詢雖然能解決該問題,但代碼量龐大且不便于復用,因此WebSocket已逐漸成為實現(xiàn)消息推送或?qū)崟r通信的主流方法。

        2 環(huán)境搭建與架構(gòu)設(shè)計

        2.1 持續(xù)集成、持續(xù)部署及持續(xù)交付

        搭建的模板實現(xiàn)了項目的持續(xù)集成、持續(xù)交付及持續(xù)部署。

        持續(xù)集成通過Git實現(xiàn),開發(fā)者根據(jù)功能模塊創(chuàng)建不同分支,并在分支上展開工作,每次更新都提交到相應分支,并將開發(fā)的內(nèi)容合并到master分支(主分支)上。若提交上線的分支中出現(xiàn)bug,需要緊急修復,為了不影響正在進行的后續(xù)開發(fā)工作,可找到已上線的版本分支,在該分支上再新建一個分支B,在B上修復bug后,將其分別合并到線上分支與正在進行后續(xù)開發(fā)的分支上,從而實現(xiàn)對尚在持續(xù)開發(fā)過程中線上版本bug的修復。

        利用服務器中的ienkins實現(xiàn)持續(xù)部署,當每次代碼倉庫中的master分支發(fā)生變化時,都會由webhook通知jenkins將更新的代碼下載到服務器上。對于服務器端而言,webhook相當于一個觸發(fā)器。

        部署設(shè)計上不整合前后端,將前端部署到Nginx代理服務器上,用戶訪問代理服務器,前端向后端發(fā)送的請求通過Nginx的反向代理傳輸?shù)胶蠖?。采用Nginx反向代理設(shè)計方式,為后續(xù)可能存在的分布式部署提供了便利。

        2.2 分層設(shè)計

        后端分層設(shè)計參照阿里巴巴Java開發(fā)分層思想,根據(jù)系統(tǒng)自身情況進行一定調(diào)整,如圖1所示。

        具體分層如下:

        (1)開放接口層:即Controller層,負責響應Post/Get/Put/Delete等請求,并返還數(shù)據(jù)。系統(tǒng)模板采用前后端分離開發(fā)方式,在Controller層,除進行網(wǎng)關(guān)安全控制與流量控制外,對外只暴露接口,具體的業(yè)務邏輯轉(zhuǎn)發(fā)至Service層進行處理。

        (2)業(yè)務邏輯層:即Service層,接收Controller層轉(zhuǎn)發(fā)的具體業(yè)務邏輯并進行處理。

        (3)通用處理層:即Manager層,將Service層中可復用的部分下放到該層,如緩存與加密方案、中間件通用處理,以及多個DAO層的組合復用等。

        (4)數(shù)據(jù)持久層:即DAO(Data Access Objects)層,對底層的MySQL、Oracle等進行數(shù)據(jù)交互。在本系統(tǒng)模板中,主要是對Redis與MySQL進行交互。

        2.3 Redis二級緩存

        配置文件中開啟二級緩存,自定義類實現(xiàn)Mybatis的Cache接口。將所有實體類進行序列化,然后在Mapper中添加自定義cache功能。此后,Redis將SQL+條件+Hash等作為key值,并將查詢結(jié)果作為value。當請求中的所有參數(shù)都與key值中對應項符合時,便會使用Redis中的二級緩存。

        3 通用方法與系統(tǒng)安全

        3.1 統(tǒng)一返還類與公共方法類

        統(tǒng)一返還類與公共方法類(通用處理)放置在通用業(yè)務處理層中。在進行前后端分離開發(fā)時,統(tǒng)一返還類必不可少。在統(tǒng)一返還類ResultBean中,data、code和msg分別返還數(shù)據(jù)、狀態(tài)碼和消息,并根據(jù)開發(fā)過程中的常見問題定義如無權(quán)限、登錄錯誤、操作成功、數(shù)據(jù)庫異常和一些已知錯誤等的狀態(tài)碼等。

        在公共方法類中封裝的方法通常有時間戳獲取、算法加密、字符串生成、文件上傳下載方法等。此外,mybatis在執(zhí)行插入、刪除與修改功能時,默認返還操作記錄的條數(shù)。因此,本文在公共方法類中添加如下代碼,以減少大量重復代碼。

        3.2 權(quán)限管理與數(shù)據(jù)安全

        權(quán)限管理與數(shù)據(jù)安全調(diào)用Apache Shiro中的方法完成。大多數(shù)管理系統(tǒng)的權(quán)限模塊相似,以實現(xiàn)用戶與角色多對多、角色與權(quán)限多對多為設(shè)計準則。表結(jié)構(gòu)設(shè)計如圖2所示。

        設(shè)計中User僅有id和password兩個非空字段,后期可根據(jù)需求,利用外鍵關(guān)聯(lián)Staff/Customer等表靈活地對不同用戶實施權(quán)限管理。

        在數(shù)據(jù)安全設(shè)計方面,對普通登錄進行驗證,以保證信息安全,并采用橢圓曲線加密算法對數(shù)據(jù)進行加密處理。當前端向后端提交數(shù)據(jù)時,前端發(fā)送的數(shù)據(jù)通過公鑰進行加密,以json字符串形式發(fā)送到后端接口,并在后端用私鑰進行解密。

        對于一些涉密數(shù)據(jù),由于Web端代碼可視,本文設(shè)計如圖3所示方案,以保證數(shù)據(jù)的安全性。

        首先,前后端約定好一組密鑰對,其中前端保存該密鑰對的公鑰部分(pb0),后端保存該密鑰對的私鑰部分(pv0)。它們是由橢圓曲線加密算法生成的一組密鑰對,用于加密傳輸密鑰和請求等信息。同時在后端設(shè)置一個極短的有效時間t0,用來保證由前端生成的用于加密后端發(fā)送的數(shù)據(jù)隨機密鑰對有有效期約束。

        Stepl:在前端生成隨機的密鑰對(密鑰對包含一個公鑰(pbt)和一個私鑰(pvt)),同時截取時間戳t,將時間戳一密鑰對成對地存人到前端緩存中(考慮到密鑰長度,存人localStorage,而非Cookie)。

        Step2:對身份信息、時間戳t及前端生成的公鑰(pbt),用約定的公鑰(pb0)進行加密。

        Step3:發(fā)送請求,請求中包含已加密的上述信息。

        Step4:后端通過約定的私鑰(pv0)進行解密,驗證身份信息,校驗時間是否超過有效期。若未過有效期且身份信息合法,則響應前端請求,并使用由前端傳來的公鑰(pbt)對將要發(fā)送到前端的數(shù)據(jù)進行加密,同時將z隨數(shù)據(jù)一起發(fā)送到前端。

        Step5:前端獲取數(shù)據(jù)后,利用時間戳,在localStorage中查詢與該時間戳對應的私鑰(pvt),對數(shù)據(jù)進行解密,同時刪除localStorage中與之對應的時間戳一密鑰對。

        3.3 WebSocket實現(xiàn)推送或?qū)崟r通信

        通過瀏覽器發(fā)出WebSocket連線請求,服務器回應,完成握手。只需一次握手,瀏覽器即與服務器形成快速通道,兩者便可進行數(shù)據(jù)傳送,該通訊為“雙全工”模式。打開連接后端代碼如下:

        3.4 基礎(chǔ)編碼模塊

        將常見的如崗位、學歷、性別、專業(yè)、院校、員3-3-號格式、物料編碼格式等編碼統(tǒng)一錄入到一個表(basic_coding)中,在表中添加type字段以區(qū)分是哪種編碼。

        4 項目應用

        青島某保潔公司需要快速開發(fā)一個管理系統(tǒng),用于企業(yè)管理以及為員工派發(fā)工作任務。根據(jù)需求,將系統(tǒng)劃分為如下幾個模塊:

        (1)用戶(員工)管理模塊。除管理員工基本信息外,還包括崗位變動、職務變動、部門變動、請銷假記錄、工作記錄以及員工位置定位幾個子模塊。

        (2)任務模塊。主要實現(xiàn)任務信息發(fā)布、任務分解、任務分配、任務進展查詢4大功能。

        (3)車輛管理模塊。車輛登記與車輛使用狀態(tài)記錄。

        (4)物料管理模塊。對于保潔工具和物料統(tǒng)一進行管理,實現(xiàn)物料/工具出入庫記錄、物料消耗記錄、物料/工具供應管理、物料/工具庫存管理以及物料/工具損壞/維修記錄幾大功能。

        (5)權(quán)限管理模塊。要求能自由地為所有用戶角色分配權(quán)限。

        按照以上要求,使用模板在user表中添加外鍵staff_id與員工信息相關(guān)聯(lián)后,按需進行相關(guān)開發(fā)工作,開發(fā)過程比預計的3個月縮短了近1個月時間。

        員工管理模塊如圖4所示(注:圖中數(shù)據(jù)為測試數(shù)據(jù),不涉及真實信息)。

        5 結(jié)語

        本文結(jié)合常用的信息管理系統(tǒng),設(shè)計并搭建了一個適用于敏捷開發(fā)的管理系統(tǒng)開發(fā)模板,采用Redis作為MySQL的二級緩存,極大地提高了系統(tǒng)查詢效率。模板中的權(quán)限管理模塊獨立、功能完善,而且即插即用,能在系統(tǒng)中設(shè)定不同權(quán)限、角色,從而使不同人員方便、安全地共享信息,達到既能分散操作,又能集中管理的目的。同時,該模板可擴展性強,配合Flutter可完成移動端開發(fā)。經(jīng)過實際系統(tǒng)開發(fā)測試,結(jié)果表明,該模板能極大地節(jié)省開發(fā)時間,但仍存在許多不足。如持續(xù)集成完成后缺乏對測試人員的通知,需要測試人員隨時跟進版本進行測試;采用前后端分離和Nginx導致前端代碼需要先上傳后編譯(前端源碼上傳到服務器后,再于服務器上進行編譯生成相應的html、JaVaScript和各種靜態(tài)文件)等,期望在后續(xù)開發(fā)中有更好的方案解決以上問題。

        猜你喜歡
        信息管理系統(tǒng)
        三維可視化信息管理系統(tǒng)在選煤生產(chǎn)中的應用
        信息管理系統(tǒng)在工程項目管理的應用
        基于三維TGIS的高速公路綜合信息管理系統(tǒng)
        久久精品国产亚洲av高清三区| 国产亚洲精品国产福利在线观看| 亚洲一区二区情侣| 国产诱惑人的视频在线观看| 少妇被搞高潮在线免费观看| 最近更新中文字幕一区二区| 成人精品天堂一区二区三区| 熟女少妇在线视频播放| 亚洲va中文字幕无码| 久久精品国产一区二区蜜芽| 日韩精品资源在线观看免费| 无码人妻久久久一区二区三区| a级特黄的片子| 无码之国产精品网址蜜芽| 亚洲成av人片在久久性色av| 亚洲黄色天堂网站在线观看禁18| 亚洲精品乱码久久久久久中文字幕| 日韩a毛片免费观看| 国产亚洲视频在线观看播放| 亚洲综合视频一区二区| 欧美日韩精品久久久免费观看 | 黑人一区二区三区在线| 国产精品亚洲一区二区麻豆| 久久久亚洲精品无码| 亚洲视频一区| 国产成人亚洲综合小说区| 亚洲av高清不卡免费在线 | 精品久久综合日本久久综合网| 亚洲国产天堂久久综合| 国产婷婷丁香久久综合| 无码 免费 国产在线观看91| 亚洲中文字幕精品久久吃奶| 丰满少妇高潮惨叫久久久一| 四虎影视亚洲精品| 国产av一区仑乱久久精品| 精品无码久久久久久久久水蜜桃| 免费a级毛片出奶水| 成年女人片免费视频播放A| 日韩亚洲精选一区二区三区| 波多野结衣不打码视频| 国产av一区二区三区日韩|