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

        ?

        基于AOP實(shí)現(xiàn)沖突動(dòng)態(tài)檢測(cè)的實(shí)驗(yàn)室預(yù)約系統(tǒng)設(shè)計(jì)

        2020-04-29 13:03:14李正衛(wèi)
        關(guān)鍵詞:沖突檢測(cè)調(diào)用視圖

        張 亮,李正衛(wèi),蔣 燁

        (1.浙江工業(yè)大學(xué) 管理學(xué)院, 杭州 310023; 2.浙江工業(yè)大學(xué) 經(jīng)濟(jì)學(xué)院, 杭州 310023)

        0 引言

        隨著高校經(jīng)管類各專業(yè)開設(shè)的實(shí)驗(yàn)課程越來(lái)越多,實(shí)驗(yàn)教學(xué)所占的比重逐漸增大,如何根據(jù)課程需要合理調(diào)配有限的實(shí)驗(yàn)室資源,成為當(dāng)前經(jīng)管類實(shí)驗(yàn)室管理工作亟需解決的重要問(wèn)題。傳統(tǒng)使用EXCEL電子表格記錄實(shí)驗(yàn)室預(yù)約信息的方式存在操作效率低、工作量大、出錯(cuò)率高等問(wèn)題,經(jīng)常造成課程時(shí)間沖突,上課人數(shù)與實(shí)驗(yàn)室機(jī)位數(shù)量不符,實(shí)驗(yàn)室軟硬件配置與教師授課需求不符,極大影響了教師與學(xué)生的課堂教學(xué)體驗(yàn)。而購(gòu)買廠商的相關(guān)軟件產(chǎn)品由于其價(jià)格昂貴,后期維護(hù)成本較高,同時(shí)又難以進(jìn)行個(gè)性化定制與功能擴(kuò)展,無(wú)法適應(yīng)各個(gè)高校在實(shí)驗(yàn)室管理工作方面的實(shí)際需求。

        通過(guò)總結(jié)工作經(jīng)驗(yàn),分析存在的問(wèn)題,提出利用軟件工程領(lǐng)域的前沿技術(shù)設(shè)計(jì)與開發(fā)具有較好的可擴(kuò)展性的新型經(jīng)管類實(shí)驗(yàn)室預(yù)約系統(tǒng),優(yōu)化實(shí)驗(yàn)教學(xué)管理模式,方便教師在線進(jìn)行實(shí)驗(yàn)室預(yù)約,同時(shí)允許師生對(duì)實(shí)驗(yàn)室硬件配置、軟件資源、數(shù)字資料、面向?qū)I(yè)與課程安排等信息進(jìn)行實(shí)時(shí)查詢。

        考慮到與教務(wù)處、人事處系統(tǒng)進(jìn)行對(duì)接,實(shí)現(xiàn)數(shù)據(jù)的同步與共享,以及后期的管理維護(hù)與功能擴(kuò)展等需要。采用MVC設(shè)計(jì)模式,將系統(tǒng)劃分為模型、視圖、控制器三層進(jìn)行分層開發(fā),實(shí)現(xiàn)數(shù)據(jù)與操作之間的解耦,提高程序代碼的復(fù)用性與可擴(kuò)展能力,滿足松散耦合的設(shè)計(jì)標(biāo)準(zhǔn)[1-2]。

        由于每學(xué)期的課程安排比較緊湊,教師與學(xué)生人數(shù)較多,經(jīng)常會(huì)出現(xiàn)課程時(shí)間安排沖突導(dǎo)致教學(xué)資源浪費(fèi)的情況發(fā)生[3-4]。為解決這個(gè)問(wèn)題,實(shí)現(xiàn)預(yù)約沖突的智能化檢測(cè)與處理[5-6],在MVC分層開發(fā)的基礎(chǔ)上引入面向切面(aspect-oriented programming,AOP)設(shè)計(jì)思想,將沖突檢測(cè)程序作為通用功能從主要的業(yè)務(wù)流程中抽離出來(lái)進(jìn)行模塊化封裝。在系統(tǒng)運(yùn)行期,根據(jù)實(shí)際需要,通過(guò)預(yù)編譯和動(dòng)態(tài)代理的方式,將沖突檢測(cè)程序自動(dòng)切入當(dāng)前執(zhí)行的業(yè)務(wù)處理過(guò)程中,對(duì)預(yù)約操作實(shí)行動(dòng)態(tài)攔截。這種設(shè)計(jì)方式能夠有效實(shí)現(xiàn)邏輯功能的分離與解耦,避免各模塊相互之間的影響與制約,從而進(jìn)一步降低程序耦合度,實(shí)現(xiàn)系統(tǒng)化、智能化管理。

        1 系統(tǒng)架構(gòu)設(shè)計(jì)及原理

        1.1 MVC設(shè)計(jì)模式

        MVC設(shè)計(jì)模式(Design pattern),即模型、視圖、控制器(Model、View、Controller),是將應(yīng)用程序的業(yè)務(wù)邏輯層、視圖顯示層進(jìn)行分層設(shè)計(jì),并通過(guò)控制器層進(jìn)行連接調(diào)度的一種開發(fā)模式,最早由Trygve Reenskaug提出,為施樂(lè)帕羅奧多研究中心(Xerox PARC)的Smalltalk面向?qū)ο缶幊陶Z(yǔ)言所采用的一種開發(fā)模式。其意義在于實(shí)現(xiàn)用戶界面與業(yè)務(wù)邏輯的分離,提高程序代碼的靈活性與復(fù)用率[7]。

        模型層(Model)表示業(yè)務(wù)數(shù)據(jù)與邏輯規(guī)則,用于實(shí)現(xiàn)數(shù)據(jù)操作與業(yè)務(wù)邏輯功能。模型層通過(guò)與數(shù)據(jù)庫(kù)進(jìn)行交互,實(shí)現(xiàn)數(shù)據(jù)的讀取及寫入等操作。其相對(duì)于數(shù)據(jù)來(lái)說(shuō)保持中立,即與數(shù)據(jù)格式及數(shù)據(jù)庫(kù)類型無(wú)關(guān),無(wú)論使用哪一種數(shù)據(jù)庫(kù),都返回相同格式的數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)與表現(xiàn)的解耦。

        視圖層(View)即用戶顯示界面,對(duì)Model返回的數(shù)據(jù)進(jìn)行格式化顯示輸出,也用于收集用戶輸入信息。視圖層通過(guò)瀏覽器(Web Browser)提供與用戶進(jìn)行互動(dòng)交流的界面,是系統(tǒng)業(yè)務(wù)邏輯與用戶之間溝通的橋梁。視圖層的組成元素包括:HTML、JavaScript、CSS、XML、Web Services等。

        控制器層(Controller)負(fù)責(zé)協(xié)調(diào)模型與視圖,即根據(jù)HTTP請(qǐng)求URL映射獲取當(dāng)前需調(diào)用的業(yè)務(wù)邏輯方法,操作完成后選擇相應(yīng)的視圖,通過(guò)渲染視圖對(duì)操作返回的數(shù)據(jù)進(jìn)行格式化,最后在客戶端瀏覽器中顯示輸出,完成用戶請(qǐng)求。

        1.2 AOP面向切面設(shè)計(jì)

        AOP面向切面設(shè)計(jì)模式,即Aspect-Oriented Programming,將通用功能從業(yè)務(wù)邏輯程序中分離出來(lái),對(duì)其進(jìn)行獨(dú)立編碼實(shí)現(xiàn);在系統(tǒng)運(yùn)行時(shí),將獨(dú)立程序動(dòng)態(tài)切入到當(dāng)前操作對(duì)象的方法執(zhí)行過(guò)程中,實(shí)現(xiàn)業(yè)務(wù)功能的單獨(dú)管理與動(dòng)態(tài)組合。

        AOP模式允許不同業(yè)務(wù)處理程序共享相同的行為,實(shí)現(xiàn)應(yīng)用程序各部分之間低耦合的分離效果,業(yè)務(wù)邏輯程序的改變不影響以AOP切面進(jìn)行封裝的通用功能,從而進(jìn)一步提高代碼的復(fù)用率,降低程序之間的耦合度。

        AOP模式涉及到的相關(guān)概念包括切面(Aspect)、連接點(diǎn)(JointPoint)、處理邏輯(Advice)和切點(diǎn)(Pointcut)。具體含義如下:

        1)切面(Aspect):是將業(yè)務(wù)程序中共同的、重復(fù)的部分進(jìn)行橫向切分并單獨(dú)實(shí)現(xiàn),實(shí)現(xiàn)cross-cutting功能。

        2)連接點(diǎn)(JointPoint):是切面嵌入業(yè)務(wù)流程的觸發(fā)點(diǎn),可以是在拋出異常時(shí),方法調(diào)用時(shí),或者修改某個(gè)變量時(shí)插入切面代碼,執(zhí)行新的行為。當(dāng)程序正常流程執(zhí)行到切面連接點(diǎn)時(shí),自動(dòng)調(diào)用相應(yīng)的處理邏輯(Advice)。

        3)處理邏輯(Advice):用于實(shí)現(xiàn)切面功能,在JointPoint處插入到業(yè)務(wù)處理流程中,并告知程序有新的行為將被執(zhí)行。

        4)切點(diǎn)(Pointcut):用于控制在JointPoint上被調(diào)用的Advice。

        經(jīng)管類實(shí)驗(yàn)室預(yù)約系統(tǒng)將預(yù)約沖突檢測(cè)程序以AOP面向切面的方式嵌入業(yè)務(wù)處理過(guò)程中。在執(zhí)行實(shí)驗(yàn)室預(yù)約操作前,系統(tǒng)通過(guò)依賴注入方式動(dòng)態(tài)切入并調(diào)用檢測(cè)程序,利用事務(wù)管理和異常處理機(jī)制,實(shí)現(xiàn)預(yù)約沖突的自動(dòng)檢測(cè),如圖1所示。

        圖1 AOP面向切面設(shè)計(jì)

        將沖突檢測(cè)功能從主程序中分離出來(lái),能夠在不修改業(yè)務(wù)流程的情況下,單獨(dú)對(duì)檢測(cè)程序進(jìn)行修改與補(bǔ)充。這樣,在開發(fā)過(guò)程中能夠?qū)崿F(xiàn)合理分工,各功能模塊職責(zé)明確,避免了相互之間的影響與制約,降低維護(hù)成本,提高開發(fā)效率。

        1.3 基于YII2 MVC架構(gòu)的AOP模式

        系統(tǒng)基于YII2 MVC架構(gòu)搭建,在MVC分層結(jié)構(gòu)的基礎(chǔ)上引入AOP面向切面設(shè)計(jì)理念,其具體實(shí)現(xiàn)方法是在控制器(Controller)與模型(Model)之間加入過(guò)濾器(Filter)驗(yàn)證功能,當(dāng)調(diào)用Action方法執(zhí)行預(yù)約操作時(shí),先觸發(fā)行為(Behavior),在行為程序中執(zhí)行過(guò)濾器驗(yàn)證,即檢測(cè)預(yù)約沖突,檢測(cè)通過(guò)則繼續(xù)執(zhí)行Action,完成預(yù)約操作;檢測(cè)未通過(guò)則停止執(zhí)行Action,將沖突信息返回給視圖?;赮II2 MVC架構(gòu)的AOP模式如圖2所示。

        圖2 基于YII2 MVC架構(gòu)的AOP模式

        行為(Behavior)是yiiaseBehavior類及其子類的實(shí)例化對(duì)象,表示方法執(zhí)行過(guò)程中自動(dòng)執(zhí)行的功能程序。使用行為前,需要先將其與組件進(jìn)行綁定,當(dāng)組件運(yùn)行時(shí),行為將其自身所包含的屬性與方法通過(guò)動(dòng)態(tài)注入的方式附加到組件上,使得在組件中運(yùn)行行為就像在執(zhí)行組件自己的方法一樣。行為通過(guò)與組件的綁定能夠?qū)τ|發(fā)事件(Event)做出響應(yīng),從而實(shí)現(xiàn)對(duì)組件運(yùn)行流程的動(dòng)態(tài)調(diào)整。

        過(guò)濾器(Filter)是在Action方法執(zhí)行前后運(yùn)行的程序,通過(guò)行為(Behavior)進(jìn)行調(diào)用,常用于配置控制器權(quán)限(即RBAC - Role-Based Access Control權(quán)限管理)、客戶端/頁(yè)面緩存、用戶認(rèn)證、內(nèi)容格式檢測(cè)、HTTP請(qǐng)求方式驗(yàn)證、跨域資源共享等操作。過(guò)濾器包括預(yù)切入過(guò)濾器(在Action方法執(zhí)行前運(yùn)行的程序)、后切入過(guò)濾器(在Action方法執(zhí)行后運(yùn)行的程序)。在行為中可以部署多個(gè)過(guò)濾器,并分別將其與不同的Action方法進(jìn)行綁定。過(guò)濾器的精心設(shè)計(jì)與合理利用能夠有效提升系統(tǒng)開發(fā)的靈活性,通過(guò)將多個(gè)功能封裝在不同的過(guò)濾器中,實(shí)現(xiàn)通用功能與主要業(yè)務(wù)流程之間的解耦,提高代碼復(fù)用率。

        架構(gòu)運(yùn)行流程如下:

        1)用戶通過(guò)瀏覽器發(fā)送請(qǐng)求,交由web/index.php入口程序處理,在入口程序中加載console.php應(yīng)用配置文件,根據(jù)配置信息創(chuàng)建Application實(shí)例。

        2)Application實(shí)例通過(guò)urlManager路由組件對(duì)請(qǐng)求URL進(jìn)行解析,根據(jù)解析結(jié)果定位目標(biāo)Controller類與Action方法,同時(shí)創(chuàng)建Controller實(shí)例,Controller實(shí)例調(diào)用runAction方法執(zhí)行Action。部分實(shí)現(xiàn)代碼如下:

        //創(chuàng)建Controller實(shí)例

        parts = this->createController(route);

        if (is_array(parts)) {

        list(controller, actionID) = parts;

        Yii::app->controller = controller;

        //執(zhí)行Action

        result=controller->runAction(actionID, params);

        ...

        }

        3)當(dāng)Controller實(shí)例調(diào)用runAction方法時(shí),會(huì)首先執(zhí)行beforeAction方法,根據(jù)beforeAction的返回值決定是否繼續(xù)執(zhí)行當(dāng)前的Action。

        4)在beforeAction內(nèi),通過(guò)調(diào)用ensureBehaviors方法將Behavior行為綁定到Controller實(shí)例上,這樣在執(zhí)行Action前,會(huì)先觸發(fā)Behavior行為,執(zhí)行在行為中部署的過(guò)濾器(Filter)。若某個(gè)過(guò)濾器返回false,則取消執(zhí)行Action。當(dāng)所有過(guò)濾器均驗(yàn)證通過(guò),則繼續(xù)執(zhí)行Action。ensureBehaviors方法實(shí)現(xiàn)代碼如下:

        public function ensureBehaviors() {

        if (this->_behaviors === null) {

        this->_behaviors = [];

        foreach (this->behaviors() as name => behavior) {

        //綁定Behavior行為

        this->attachBehaviorInternal(name, behavior);

        }

        }

        }

        5)過(guò)濾器驗(yàn)證通過(guò)后,執(zhí)行Action方法,在Action中加載模型(Model),通過(guò)DAO數(shù)據(jù)庫(kù)訪問(wèn)層對(duì)MySQL數(shù)據(jù)庫(kù)進(jìn)行CRUD操作,完成業(yè)務(wù)邏輯處理操作。

        6)Controller實(shí)例調(diào)用render方法渲染視圖(View),即將數(shù)據(jù)處理結(jié)果傳遞給視圖,結(jié)合Layout布局文件與Widget小部件構(gòu)成完整的頁(yè)面。調(diào)用render方法的代碼如下:

        return this->render('index', ['param' => '...']);

        7)在Response響應(yīng)對(duì)象中封裝視圖渲染結(jié)果,并以HTML格式返回給瀏覽器客戶端。

        2 系統(tǒng)運(yùn)行環(huán)境

        系統(tǒng)采用WAMP集成環(huán)境,實(shí)現(xiàn)APACHE、MySQL、PHP的高效整合,擺脫環(huán)境配置的煩惱,提高開發(fā)效率。WAMP集成PHPMYADMIN數(shù)據(jù)庫(kù)管理工具,允許管理者直接通過(guò)Web接口對(duì)MySQL數(shù)據(jù)庫(kù)進(jìn)行操作與管理,無(wú)需安裝其他客戶端軟件。開發(fā)工具選用EDITPLUS 5.0,EDITPLUS是一款輕量級(jí)且功能強(qiáng)大的文本編輯器,支持語(yǔ)法高亮、代碼折疊等功能,具有啟動(dòng)速度快、界面簡(jiǎn)潔等特點(diǎn),能夠提高程序代碼的編寫效率。

        為提升系統(tǒng)性能,提高運(yùn)行平臺(tái)與Windows Server操作系統(tǒng)的兼容性,采用IIS7.5作為系統(tǒng)運(yùn)行平臺(tái),通過(guò)FastCGI方式配置PHP,使得應(yīng)用系統(tǒng)在IIS平臺(tái)上進(jìn)行部署的同時(shí),又能夠通過(guò)WAMP進(jìn)行配置與管理。

        3 系統(tǒng)功能設(shè)計(jì)

        經(jīng)管類實(shí)驗(yàn)室預(yù)約系統(tǒng)的功能模塊如圖3所示,主要分為實(shí)驗(yàn)室管理模塊、時(shí)間管理模塊、課程管理模塊、教師管理模塊、實(shí)驗(yàn)室預(yù)約模塊、沖突檢測(cè)模塊與數(shù)據(jù)同步模塊[8]。

        圖3 系統(tǒng)功能設(shè)計(jì)

        1)實(shí)驗(yàn)室管理模塊,包括對(duì)實(shí)驗(yàn)室硬件配置、軟件資源、數(shù)字資源、機(jī)位數(shù)量與當(dāng)前使用情況等信息的查詢與管理,便于師生隨時(shí)隨地地了解實(shí)驗(yàn)室相關(guān)信息,有利于實(shí)驗(yàn)教學(xué)課程的順利進(jìn)行。MySQL數(shù)據(jù)庫(kù)中提取的數(shù)據(jù)信息通過(guò)Bootstrap前端技術(shù)進(jìn)行柵格式與響應(yīng)式的布局排版,以適應(yīng)手機(jī)、平板等移動(dòng)便攜設(shè)備。

        2)時(shí)間管理模塊,包括對(duì)學(xué)期信息、教學(xué)周信息、教學(xué)周日期、上課時(shí)間與上課節(jié)次等信息的查詢與管理。每學(xué)期包含16個(gè)教學(xué)周,每周包含5個(gè)教學(xué)工作日,每個(gè)工作日包含12個(gè)上課節(jié)次,上午1~5節(jié)課,下午6~9節(jié)課,晚上10~12節(jié)課。系統(tǒng)可根據(jù)學(xué)期教學(xué)周第一天的日期自動(dòng)計(jì)算并生成1~16周每一天的具體日期,極大方便了管理員進(jìn)行日常管理與維護(hù),避免了手動(dòng)輸入操作出錯(cuò)率高且效率低的問(wèn)題。

        3)課程管理模塊,包括對(duì)課程信息、任課教師、授課資料、上課地點(diǎn)、上課人數(shù)、學(xué)生信息與專業(yè)班級(jí)等信息的查詢與管理。

        4)教師管理模塊,包括對(duì)教師個(gè)人簡(jiǎn)介、所在系部、專業(yè)背景、教學(xué)成果以及學(xué)術(shù)成就的查詢與管理,允許教師使用個(gè)人賬號(hào)登錄系統(tǒng)編輯信息,便于學(xué)生對(duì)教師有更詳細(xì)的了解。

        5)實(shí)驗(yàn)室預(yù)約模塊,包括預(yù)約信息查詢、預(yù)約操作管理與沖突檢測(cè)功能。允許教師根據(jù)教學(xué)計(jì)劃制定的實(shí)踐教學(xué)環(huán)節(jié)與課程實(shí)際需要,結(jié)合實(shí)驗(yàn)室現(xiàn)有的軟硬件設(shè)備條件,通過(guò)系統(tǒng)提供的在線預(yù)約平臺(tái)進(jìn)行實(shí)驗(yàn)室預(yù)約操作。

        6)數(shù)據(jù)同步模塊,實(shí)現(xiàn)課程、班級(jí)信息的定期同步更新。MySQL數(shù)據(jù)庫(kù)服務(wù)器負(fù)責(zé)與教務(wù)處等相關(guān)部門進(jìn)行數(shù)據(jù)對(duì)接,利用MySQL存儲(chǔ)過(guò)程定期監(jiān)測(cè)教務(wù)處數(shù)據(jù)的變動(dòng)情況,并根據(jù)數(shù)據(jù)變化同步更新數(shù)據(jù)信息。

        3.1 實(shí)驗(yàn)室預(yù)約模塊

        實(shí)驗(yàn)室預(yù)約模塊是經(jīng)管類實(shí)驗(yàn)室預(yù)約系統(tǒng)的核心。教師登錄系統(tǒng),通過(guò)預(yù)約表單填寫預(yù)約信息,表單元素包括機(jī)房選擇框、教學(xué)周選擇框、時(shí)間選擇框、節(jié)次選擇框、課程輸入框、學(xué)生人數(shù)輸入框等。為方便教師進(jìn)行預(yù)約操作,表單設(shè)計(jì)要盡可能做到界面簡(jiǎn)潔、功能清晰,同時(shí)能夠適應(yīng)手機(jī)界面顯示。采用Bootstrap技術(shù)對(duì)HTML表單元素進(jìn)行重新排版與布局,以適應(yīng)教師的使用需求。實(shí)驗(yàn)室預(yù)約模塊主界面如圖4所示。

        圖4 實(shí)驗(yàn)室預(yù)約模塊主界面

        教師根據(jù)課程實(shí)際需要,選擇機(jī)房、教學(xué)周、上課時(shí)間與上課節(jié)次,輸入課程名稱、學(xué)生人數(shù)與專業(yè)班級(jí),點(diǎn)擊“預(yù)約”按鈕,啟動(dòng)預(yù)約處理流程。預(yù)約信息通過(guò)互聯(lián)網(wǎng)傳輸至服務(wù)器,在服務(wù)器內(nèi)處理預(yù)約請(qǐng)求。

        在服務(wù)器內(nèi)執(zhí)行的預(yù)約操作處理流程如下:

        1)調(diào)用model->validate()方法,通過(guò)Rules驗(yàn)證器對(duì)預(yù)約信息各個(gè)字段的輸入值進(jìn)行合法性驗(yàn)證。

        2)驗(yàn)證通過(guò)后,運(yùn)行beginTransaction()開啟事務(wù)(Transaction)。

        3)在事務(wù)處理的操作序列中,執(zhí)行預(yù)約操作Action。

        4)預(yù)約操作Action執(zhí)行時(shí),會(huì)首先觸發(fā)與其綁定的Behavior行為,對(duì)Action執(zhí)行過(guò)程實(shí)施動(dòng)態(tài)攔截。行為程序以AOP切面形式自動(dòng)嵌入Action執(zhí)行過(guò)程中,并運(yùn)行部署在行為中的沖突檢測(cè)過(guò)濾器(Filter),進(jìn)行預(yù)約沖突檢測(cè)。

        5)預(yù)約有沖突,則終止當(dāng)前Action的執(zhí)行,拋出異常(Exception),并執(zhí)行事務(wù)回滾(rollback),取消先前執(zhí)行的所有預(yù)約操作。同時(shí)捕獲異常,顯示沖突提示信息。

        6)預(yù)約無(wú)沖突,則繼續(xù)執(zhí)行預(yù)約操作Action。

        7)當(dāng)一次預(yù)約請(qǐng)求過(guò)程中的多個(gè)預(yù)約操作Action都執(zhí)行完成(未出現(xiàn)預(yù)約沖突),則調(diào)用transaction->commit()提交事務(wù),將預(yù)約信息存入MySQL數(shù)據(jù)庫(kù),同時(shí)更新數(shù)據(jù)緩存。

        預(yù)約操作處理流程如圖5所示。

        圖5 預(yù)約操作處理流程

        3.2 基于AOP實(shí)現(xiàn)沖突動(dòng)態(tài)檢測(cè)

        在實(shí)驗(yàn)室預(yù)約管理工作中,經(jīng)常會(huì)出現(xiàn)預(yù)約時(shí)間沖突,即同一實(shí)驗(yàn)室在某一時(shí)間段已存在預(yù)約,無(wú)法再次進(jìn)行預(yù)約的情況。因此采用相應(yīng)的沖突檢測(cè)機(jī)制,自動(dòng)識(shí)別預(yù)約沖突,并在客戶端顯示提示信息,便于教師合理安排上課時(shí)間。常用的沖突檢測(cè)方式包括客戶端檢測(cè)方式與服務(wù)端檢測(cè)方式。

        1)客戶端檢測(cè)方式:需要預(yù)先從數(shù)據(jù)庫(kù)中獲取已存在的實(shí)驗(yàn)室預(yù)約記錄,然后在客戶端瀏覽器中利用jQuery與當(dāng)前預(yù)約信息進(jìn)行比較,檢測(cè)預(yù)約沖突。這種方式需要預(yù)先從服務(wù)器中獲取大量的數(shù)據(jù),對(duì)網(wǎng)絡(luò)帶寬有較高的要求,容易造成客戶端運(yùn)行卡頓,頁(yè)面響應(yīng)速度慢等問(wèn)題。

        2)服務(wù)端檢測(cè)方式:預(yù)約請(qǐng)求通過(guò)網(wǎng)絡(luò)傳遞給相應(yīng)的Action方法,在Action方法內(nèi)獲取數(shù)據(jù)庫(kù)數(shù)據(jù),執(zhí)行預(yù)約沖突檢測(cè),如存在沖突,則返回提示信息。數(shù)據(jù)讀取和檢測(cè)處理操作都在服務(wù)器端進(jìn)行,大大減少了網(wǎng)絡(luò)的數(shù)據(jù)傳輸量,同時(shí)由于服務(wù)器端的數(shù)據(jù)處理與運(yùn)算能力遠(yuǎn)遠(yuǎn)超過(guò)客戶端,因此在服務(wù)器端進(jìn)行檢測(cè)處理操作,效率更高,速度更快。

        系統(tǒng)采用服務(wù)端檢測(cè)方式,基于AOP面向切面編程技術(shù),在運(yùn)行時(shí)動(dòng)態(tài)加載檢測(cè)程序[9]。

        設(shè)置命名空間namespace appcomponents,導(dǎo)入yiiaseActionFilter基礎(chǔ)類,通過(guò)繼承ActionFilter創(chuàng)建過(guò)濾器(Filter)。ActionFilter類包含beforeAction與afterAction方法,分別表示在Action執(zhí)行前與執(zhí)行后調(diào)用的代碼塊。重寫Filter的beforeAction方法,并在beforeAction方法內(nèi)執(zhí)行沖突檢測(cè)程序。關(guān)鍵代碼如下:

        class CheckFilter extends ActionFilter {

        public function beforeAction(action) {

        s_data = Yii::app->request->post();

        //檢測(cè)預(yù)約沖突

        cr = checkConflict(s_data);

        if(cr){ //檢測(cè)無(wú)沖突

        return parent::beforeAction(action);

        }else{ //檢測(cè)有沖突

        this->redirect([‘room/dealconflict’,’cr’=>cr]);

        return false;

        }

        }

        }

        在控制器中配置行為,然后在行為中部署過(guò)濾器,通過(guò)class屬性指定當(dāng)前配置的過(guò)濾器類名,再通過(guò)only屬性將過(guò)濾器與相應(yīng)的Action方法進(jìn)行綁定。當(dāng)執(zhí)行預(yù)約操作時(shí),觸發(fā)行為,通過(guò)行為加載并調(diào)用過(guò)濾器,執(zhí)行預(yù)約沖突檢測(cè)程序。部署過(guò)濾器的關(guān)鍵代碼如下:

        public function behaviors() {

        return [

        [ //過(guò)濾器配置

        'class'=>'appcomponentsCheckFilter',

        'only'=>['reserve'],

        ],

        ];

        }

        預(yù)約沖突檢測(cè)程序的運(yùn)行時(shí)動(dòng)態(tài)加載過(guò)程如下:

        1)服務(wù)端在收到教師提交的實(shí)驗(yàn)室預(yù)約請(qǐng)求后,創(chuàng)建控制器實(shí)例,調(diào)用runAction方法。

        2)在runAction內(nèi),先調(diào)用createAction方法創(chuàng)建執(zhí)行實(shí)驗(yàn)室預(yù)約操作的Action動(dòng)作實(shí)例,然后執(zhí)行this->beforeAction(action),此處的this表示控制器實(shí)例,運(yùn)行控制器的beforeAction方法。

        3)在控制器的beforeAction方法內(nèi),觸發(fā)trigger函數(shù),通過(guò)ensureBehaviors綁定行為(Behavior),即將沖突檢測(cè)程序與執(zhí)行預(yù)約操作的reserveAction動(dòng)作進(jìn)行綁定,實(shí)現(xiàn)AOP動(dòng)態(tài)切入[10]。

        4)調(diào)用ActionFilter基類中的beforeFilter方法,在beforeFilter中執(zhí)行其子類CheckFilter(自定義過(guò)濾器,部署在行為中,用于執(zhí)行預(yù)約沖突檢測(cè))的beforeAction方法,此處的beforeAction與上述通過(guò)控制器調(diào)用的不同,通過(guò)控制器調(diào)用的beforeAction方法用于綁定行為,而通過(guò)過(guò)濾器調(diào)用的beforeAction方法用于執(zhí)行實(shí)驗(yàn)室預(yù)約沖突檢測(cè)操作。

        5)在CheckFilter過(guò)濾器的beforeAction方法中,調(diào)用checkConflict執(zhí)行預(yù)約沖突檢測(cè)操作,如圖6所示。

        圖6 沖突檢測(cè)程序的運(yùn)行時(shí)動(dòng)態(tài)加載過(guò)程

        4 實(shí)驗(yàn)結(jié)果與分析

        系統(tǒng)提供信息查詢與線上預(yù)約等功能,允許師生在線查詢實(shí)驗(yàn)室預(yù)約信息、課程信息、課程面向?qū)I(yè)、學(xué)生人數(shù)。系統(tǒng)界面采用Bootstrap實(shí)現(xiàn),通過(guò)“教學(xué)實(shí)驗(yàn)室”列表,查看實(shí)驗(yàn)室各個(gè)機(jī)房的課程預(yù)約信息;通過(guò)“教學(xué)周”列表查看每周的課程安排;通過(guò)“學(xué)期”列表,查看各個(gè)學(xué)期課程預(yù)約歷史記錄。在課表頁(yè)面點(diǎn)擊課程名稱,彈出Modal詳情頁(yè),顯示該課程的詳細(xì)介紹,包括:實(shí)驗(yàn)大綱、實(shí)驗(yàn)卡片、實(shí)驗(yàn)授課計(jì)劃、實(shí)驗(yàn)指導(dǎo)數(shù)等相關(guān)資料。實(shí)驗(yàn)室預(yù)約信息查詢界面圖7所示。

        圖7 實(shí)驗(yàn)室預(yù)約信息查詢界面

        目前,經(jīng)管類實(shí)驗(yàn)室預(yù)約系統(tǒng)已經(jīng)在浙江工業(yè)大學(xué)管理學(xué)院與經(jīng)濟(jì)學(xué)院進(jìn)行了部署與應(yīng)用,為師生查詢實(shí)驗(yàn)室信息、教學(xué)資源、課程信息與課程安排,教師預(yù)約實(shí)驗(yàn)室提供了便捷的線上服務(wù)平臺(tái)。系統(tǒng)面向?qū)I(yè)包括國(guó)際經(jīng)濟(jì)與貿(mào)易、市場(chǎng)營(yíng)銷、旅游管理、工商管理、財(cái)務(wù)管理、信息管理與信息系統(tǒng)、金融學(xué)、工程管理等8個(gè)本科專業(yè);研究生、MBA及各類工程碩士;建筑工程學(xué)院、藥學(xué)院的一體化雙專業(yè)以及全校的經(jīng)濟(jì)管理類二專業(yè)和選修課。涉及的實(shí)踐教學(xué)包括44門實(shí)驗(yàn)課程、172個(gè)實(shí)驗(yàn)項(xiàng)目、21門課程設(shè)計(jì)。通過(guò)信息化手段的使用,將管理學(xué)院與經(jīng)濟(jì)學(xué)院的6個(gè)學(xué)科和8個(gè)本科專業(yè)的實(shí)驗(yàn)教學(xué)納入到統(tǒng)一的實(shí)驗(yàn)課程預(yù)約管理綜合平臺(tái)中,實(shí)行“大平臺(tái),統(tǒng)一管理”。

        5 結(jié)語(yǔ)

        基于當(dāng)前實(shí)驗(yàn)教學(xué)管理工作存在的問(wèn)題,分析使用成品軟件在功能擴(kuò)展與二次開發(fā)方面的短板,整合現(xiàn)有實(shí)驗(yàn)教學(xué)資源,基于MVC設(shè)計(jì)模式開發(fā)經(jīng)管類實(shí)驗(yàn)室預(yù)約系統(tǒng),系統(tǒng)采用AOP面向切面編程技術(shù)實(shí)現(xiàn)預(yù)約沖突的動(dòng)態(tài)檢測(cè),有效避免出現(xiàn)排課沖突、重復(fù)排課等教學(xué)事故。在滿足功能需求的同時(shí),優(yōu)化系統(tǒng)架構(gòu)設(shè)計(jì),降低各模塊之間的耦合度,提高靈活性,便于功能擴(kuò)展與個(gè)性化定制。同時(shí)與本科論文管理系統(tǒng)、教師數(shù)據(jù)中心等其他應(yīng)用進(jìn)行無(wú)縫對(duì)接,只需登陸一個(gè)賬戶便可同時(shí)使用多項(xiàng)應(yīng)用,方便教師開展工作。系統(tǒng)架構(gòu)設(shè)計(jì)靈活,只需更改相應(yīng)模塊里的功能代碼即可應(yīng)用于其他行業(yè)領(lǐng)域,在系統(tǒng)架構(gòu)優(yōu)化方面有一定的參考意義。

        猜你喜歡
        沖突檢測(cè)調(diào)用視圖
        BIM技術(shù)在建筑裝飾工程項(xiàng)目管理中的應(yīng)用研究
        北方建筑(2024年2期)2024-05-25 00:00:00
        核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
        LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
        5.3 視圖與投影
        視圖
        獨(dú)立學(xué)院補(bǔ)考安排沖突檢測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
        計(jì)算機(jī)應(yīng)用安全策略本體研究
        計(jì)劃協(xié)同工作中的沖突檢測(cè)與消除算法研究
        Y—20重型運(yùn)輸機(jī)多視圖
        SA2型76毫米車載高炮多視圖
        久久免费观看国产精品| 97人妻人人揉人人躁九色| 久久伊人少妇熟女大香线蕉| 久无码久无码av无码| 欧美日韩免费一区中文字幕| 国产丝袜在线福利观看| 97精品人妻一区二区三区蜜桃 | 免费少妇a级毛片人成网| 欧美成人久久久免费播放| 国产三级在线观看性色av| 国产一区二区三区视频地址| 丰满少妇高潮惨叫久久久一| 久久婷婷色综合一区二区| 麻豆国产VA免费精品高清在线| 国产中文字幕亚洲精品| 亚欧中文字幕久久精品无码| 日韩精品中文字幕无码专区| 亚洲天堂av社区久久| 免费在线观看av不卡网站| 大肉大捧一进一出好爽视频| 夜夜综合网| 日韩美女人妻一区二区三区| 一区二区三区美女免费视频| 夜先锋av资源网站| 亚洲国产香蕉视频欧美| 国产自拍三级黄片视频| 亚洲日韩在线中文字幕综合| 日本一区午夜艳熟免费| 亚洲日本精品一区久久精品| 人妻制服丝袜中文字幕| 中文字幕乱码熟女人妻水蜜桃| 亚洲av日韩av综合aⅴxxx| 少妇高潮精品正在线播放| 中文字幕人妻在线中字| 在线播放国产一区二区三区| 亚洲中文字幕不卡无码| 日本在线一区二区三区视频观看 | 久久狼人国产综合精品| 麻豆md0077饥渴少妇| 熟妇与小伙子matur老熟妇e| 午夜精品一区二区久久做老熟女 |