劉冬爽 張文輝
摘要 移動(dòng)端虛擬實(shí)務(wù)培訓(xùn)系統(tǒng)課程的制作過(guò)程可以看成有限狀態(tài)自動(dòng)機(jī)的狀態(tài)轉(zhuǎn)移過(guò)程。利用有限狀態(tài)自動(dòng)機(jī)的思想,基于移動(dòng)端虛擬實(shí)驗(yàn)研究現(xiàn)狀,設(shè)計(jì)移動(dòng)端虛擬實(shí)務(wù)培訓(xùn)系統(tǒng)原型,優(yōu)化移動(dòng)端虛擬實(shí)務(wù)培訓(xùn)系統(tǒng)中課程實(shí)現(xiàn)的過(guò)程,提出一種快速生成和批量化生產(chǎn)培訓(xùn)課程的方法。
關(guān)鍵詞 虛擬實(shí)務(wù)培訓(xùn)系統(tǒng);有限狀態(tài)自動(dòng)機(jī);移動(dòng)端
中圖分類號(hào):TP391.9 文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1671-489X(2016)08-0022-04
1 引言
隨著市場(chǎng)競(jìng)爭(zhēng)的日益激烈,企業(yè)對(duì)人力資源的培訓(xùn)和重視程度也日益增長(zhǎng)。當(dāng)前對(duì)很多的工業(yè)企業(yè)而言,培訓(xùn)費(fèi)用占據(jù)了公司經(jīng)營(yíng)費(fèi)用很大的比例,特別是在培訓(xùn)維修的設(shè)備非常昂貴的情況下,因?yàn)榕嘤?xùn)學(xué)員操作不熟練造成設(shè)備損壞的情況時(shí)有發(fā)生,這些都增加了工業(yè)企業(yè)的培訓(xùn)代價(jià)和費(fèi)用,傳統(tǒng)培訓(xùn)模式的局限制約了企業(yè)所期望達(dá)到的培訓(xùn)質(zhì)量,不能滿足現(xiàn)代工業(yè)企業(yè)的需求。如今的虛擬仿真實(shí)驗(yàn)培訓(xùn)已經(jīng)能夠解決這種問題,但是課程的內(nèi)容不具可拓展性,現(xiàn)代技術(shù)的日新月異,設(shè)備更新速度不斷增長(zhǎng),當(dāng)企業(yè)計(jì)劃更新設(shè)備時(shí),就必須由技術(shù)人員將整個(gè)課程重新設(shè)計(jì)開發(fā)一次,這就造成培訓(xùn)費(fèi)用和成本的上升。而且隨著成人學(xué)習(xí)的特征越來(lái)越明顯,出現(xiàn)一種新的數(shù)字化學(xué)習(xí)手段——移動(dòng)學(xué)習(xí),其便捷性、時(shí)效性、移動(dòng)性的特點(diǎn)適合在企業(yè)培訓(xùn)中開展。
有限狀態(tài)自動(dòng)機(jī)(FSM,F(xiàn)inite State Machine)作為一種計(jì)算模型,目的在于研究有限的計(jì)算過(guò)程或運(yùn)行過(guò)程。有限狀態(tài)自動(dòng)機(jī)可以看作一個(gè)有限數(shù)量狀態(tài)的集合,其中每個(gè)狀態(tài)可以通過(guò)輸入操作來(lái)遷移到零個(gè)或多個(gè)其他狀態(tài),具體的遷移目標(biāo)狀態(tài)由輸入操作決定。本文研究這種計(jì)算模型如何應(yīng)用于移動(dòng)端虛擬實(shí)務(wù)培訓(xùn)系統(tǒng)中。
2 移動(dòng)端虛擬仿真實(shí)驗(yàn)的研究現(xiàn)狀
麻省理工學(xué)院的電子工程和計(jì)算機(jī)科學(xué)系是最早開始虛擬實(shí)驗(yàn)教學(xué)應(yīng)用的院系,早在1988年,該系的教授Jesús A.del Alamo就創(chuàng)立了微電子在線實(shí)驗(yàn)室(Micro-electronics Web Lab),用于電路設(shè)計(jì)和微電子學(xué)課程的實(shí)驗(yàn)教學(xué)。在2010年,實(shí)驗(yàn)室實(shí)現(xiàn)通過(guò)手機(jī)遠(yuǎn)程控制來(lái)進(jìn)行實(shí)驗(yàn)的功能。
北京亞泰盛世科技發(fā)展有限公司開發(fā)的Nobook虛擬實(shí)驗(yàn)室是專門針對(duì)初、高中教學(xué)實(shí)驗(yàn)環(huán)節(jié)量身定做研發(fā)的教學(xué)實(shí)驗(yàn)軟件,經(jīng)典實(shí)驗(yàn)板塊內(nèi)容和全國(guó)初、高中教學(xué)實(shí)驗(yàn)教材對(duì)接,采用高仿真技術(shù),利用動(dòng)態(tài)實(shí)驗(yàn)設(shè)備模型來(lái)完整再現(xiàn)實(shí)驗(yàn)操作流程。它除了可以在常規(guī)的PC端進(jìn)行安裝外,還可以在移動(dòng)端安裝,變身成為會(huì)移動(dòng)的實(shí)驗(yàn)室,能夠隨時(shí)隨地實(shí)驗(yàn),對(duì)于學(xué)習(xí)者來(lái)說(shuō)意義重大,有著傳統(tǒng)實(shí)驗(yàn)無(wú)法比擬的功能優(yōu)勢(shì)和內(nèi)容優(yōu)勢(shì)。
經(jīng)過(guò)研究發(fā)現(xiàn),現(xiàn)有的移動(dòng)端虛擬實(shí)驗(yàn),更多地是通過(guò)FLEX技術(shù)編寫,在apk包中內(nèi)嵌插件來(lái)實(shí)現(xiàn)的,可拓展性不強(qiáng)。而HTML5的興起,它可以進(jìn)行跨平臺(tái)的使用。本項(xiàng)目依托HTML5的優(yōu)勢(shì)來(lái)開發(fā),同時(shí)基于有限狀態(tài)自動(dòng)機(jī)思想,研究一種可以在移動(dòng)端快速生成和批量化生產(chǎn)培訓(xùn)課程的方法。
3 移動(dòng)端虛擬實(shí)務(wù)培訓(xùn)系統(tǒng)的設(shè)計(jì)
虛擬實(shí)務(wù)培訓(xùn)系統(tǒng)的設(shè)計(jì)理念
基于有限狀態(tài)自動(dòng)機(jī)理論,在制作一個(gè)設(shè)備的仿真操作實(shí)驗(yàn)時(shí),不去關(guān)注目標(biāo)設(shè)備內(nèi)在的結(jié)構(gòu)與運(yùn)行原理,只需要把該設(shè)備可操作的過(guò)程完整遍歷并記錄下來(lái),然后根據(jù)其外在表現(xiàn)形式的變化將整個(gè)實(shí)驗(yàn)過(guò)程分解為一個(gè)個(gè)的狀態(tài),單個(gè)的狀態(tài)在觸發(fā)某種形式的操作時(shí)發(fā)生狀態(tài)的轉(zhuǎn)移(即跳轉(zhuǎn)到下一個(gè)狀態(tài))。觸發(fā)某個(gè)狀態(tài)涉及該狀態(tài)的熱區(qū),各個(gè)狀態(tài)的熱區(qū)位置的確定是通過(guò)JS代碼獲取,同時(shí)把獲取到的熱區(qū)位置同圖片路徑一起存進(jìn)數(shù)據(jù)庫(kù),各個(gè)設(shè)備圖片的路徑和其對(duì)應(yīng)的熱區(qū)位置組成狀態(tài)熱區(qū)表;所有狀態(tài)與狀態(tài)間的跳轉(zhuǎn),以及跳轉(zhuǎn)觸發(fā)條件,組合成一個(gè)設(shè)備完整的操作過(guò)程,記錄整個(gè)狀態(tài)間跳轉(zhuǎn)關(guān)系的表就是該實(shí)驗(yàn)的狀態(tài)轉(zhuǎn)移表;記錄每個(gè)狀態(tài)詳細(xì)表現(xiàn)形式的表即為狀態(tài)表。有了狀態(tài)表、狀態(tài)熱區(qū)表、狀態(tài)轉(zhuǎn)移表,在企業(yè)更新設(shè)備需要對(duì)員工進(jìn)行培訓(xùn)的時(shí)候,不再需要技術(shù)人員重新完整地開發(fā)一門新的課程,只需培訓(xùn)教師提供各個(gè)狀態(tài)的表現(xiàn)形式以及各個(gè)狀態(tài)的觸發(fā)熱區(qū),把這些形式和熱區(qū)添加到數(shù)據(jù)庫(kù),就可以自動(dòng)生成一門新的課程。
虛擬實(shí)務(wù)培訓(xùn)系統(tǒng)的核心設(shè)計(jì)理念是放棄對(duì)設(shè)備內(nèi)部邏輯的研究,直接根據(jù)其外部狀態(tài)轉(zhuǎn)移來(lái)仿真對(duì)設(shè)備的操作。在這種狀態(tài)下,當(dāng)企業(yè)更新設(shè)備時(shí),只要知道它的狀態(tài)轉(zhuǎn)移邏輯關(guān)系,就可以較為快捷地生成新的課程。為了達(dá)到這樣一個(gè)目的,應(yīng)該開發(fā)出一套工具包,使任何一個(gè)對(duì)設(shè)備熟悉的人,可以不必了解本虛擬實(shí)務(wù)培訓(xùn)系統(tǒng)的結(jié)構(gòu)和特點(diǎn),而是根據(jù)工具包提供的模板和流程,分別輸入狀態(tài)轉(zhuǎn)移關(guān)系、各狀態(tài)的表現(xiàn)形式(照片、軟件截屏等)、各狀態(tài)的觸發(fā)熱區(qū)。當(dāng)該工具包得到一個(gè)新設(shè)備的這些屬性后,就在系統(tǒng)中自動(dòng)添加和修改數(shù)據(jù)庫(kù)的相關(guān)信息,從而在培訓(xùn)課程上新增加一個(gè)設(shè)備的培訓(xùn)內(nèi)容。該工具包應(yīng)該包括狀態(tài)表、狀態(tài)轉(zhuǎn)移表、狀態(tài)熱區(qū)表(用于抓取各個(gè)狀態(tài)的熱區(qū)位置)。
移動(dòng)端虛擬實(shí)務(wù)培訓(xùn)系統(tǒng)的原型設(shè)計(jì) Axure RP是為原型設(shè)計(jì)打造的一款專業(yè)軟件,作為專業(yè)的原型設(shè)計(jì)工具,它能快速、高效地創(chuàng)建原型。本系統(tǒng)的原型設(shè)計(jì)是基于虛擬實(shí)務(wù)培訓(xùn)系統(tǒng)的理念,以及在移動(dòng)端顯示的特點(diǎn),利用Axure工具進(jìn)行設(shè)計(jì)的,原型框架如圖1所示。
基于本培訓(xùn)系統(tǒng)的特點(diǎn),設(shè)置在手機(jī)端橫屏展示。左側(cè)為仿真操作區(qū),學(xué)習(xí)者通過(guò)對(duì)各個(gè)狀態(tài)熱區(qū)的點(diǎn)觸、拖拽、長(zhǎng)按等在移動(dòng)端進(jìn)行所需要的操作,能夠給用戶以真實(shí)的體驗(yàn)。右側(cè)為提示操作區(qū)。基于本系統(tǒng)是用于工企業(yè)的培訓(xùn),在移動(dòng)端進(jìn)行仿真操作的過(guò)程一般不需要教師的參與,在這里對(duì)每一步的操作給予提示,這樣能夠保證培訓(xùn)的順利進(jìn)行。同時(shí)在右側(cè)添加兩個(gè)按紐—硬件連接練習(xí)和軟件仿真操作。對(duì)于工企業(yè)等培訓(xùn)行業(yè)新的課程不僅涉及硬件的連接,同時(shí)會(huì)有軟件的操作,基于人機(jī)交互優(yōu)化和界面設(shè)計(jì)美觀的考慮,放置兩個(gè)按鈕來(lái)對(duì)學(xué)習(xí)內(nèi)容進(jìn)行切換。這樣既能保證學(xué)習(xí)者對(duì)自己不熟練的部分進(jìn)行反復(fù)的練習(xí),又能保證整個(gè)課程實(shí)現(xiàn)的優(yōu)化。
4 移動(dòng)端虛擬實(shí)務(wù)培訓(xùn)系統(tǒng)中課程實(shí)現(xiàn)的過(guò)程
移動(dòng)端虛擬實(shí)務(wù)培訓(xùn)系統(tǒng)中課程實(shí)現(xiàn)技術(shù)分析 本系統(tǒng)結(jié)構(gòu)按照層次化的思路設(shè)計(jì),將整個(gè)系統(tǒng)的架構(gòu)分為資源層、數(shù)據(jù)訪問層、業(yè)務(wù)層、表現(xiàn)層和客戶端,系統(tǒng)架構(gòu)如圖2所示,基于有限狀態(tài)自動(dòng)機(jī)的思想,實(shí)現(xiàn)課程的快速開發(fā)。
隨著移動(dòng)互聯(lián)網(wǎng)的愈演愈熱,出現(xiàn)一種新的數(shù)字化學(xué)習(xí)手段——移動(dòng)學(xué)習(xí),其便捷性、時(shí)效性、移動(dòng)性的特點(diǎn)適合在企業(yè)培訓(xùn)中開展。本系統(tǒng)客戶端定位于移動(dòng)端的開發(fā),符合時(shí)代的特色。移動(dòng)端虛擬實(shí)務(wù)系統(tǒng)作為PC端實(shí)驗(yàn)的補(bǔ)充和部分替代,不僅符合成人學(xué)習(xí)者的學(xué)習(xí)特征,同時(shí)有教學(xué)理論的支撐。
表現(xiàn)層用JSP+HTML5+CSS3+JS技術(shù),在頁(yè)面布局時(shí),HTML對(duì)元素進(jìn)行排版定義,CSS對(duì)展示的元素進(jìn)行樣式的定義,再通過(guò)JavaScript實(shí)現(xiàn)相應(yīng)的效果和交互。JSP技術(shù)是在傳統(tǒng)的HTML代碼中加入Java程序片段和JSP標(biāo)記,從而形成JSP文件,用來(lái)實(shí)現(xiàn)網(wǎng)頁(yè)中的動(dòng)態(tài)部分功能。隨著HTML5技術(shù)發(fā)展日趨成熟,利用HTML5技術(shù)進(jìn)行軟件開發(fā)已成為必然趨勢(shì)。同時(shí)HTML5開發(fā)周期短,開發(fā)成本低,跨平臺(tái)性強(qiáng),比如開發(fā)一款應(yīng)用,可以很輕易地將它移植到uc開放平臺(tái)、Facebook應(yīng)用平臺(tái),甚至可以通過(guò)封裝的技術(shù)發(fā)放到App Store上。業(yè)務(wù)層使用了Servlet(ServerApplet),是用Java編寫的服務(wù)器端程序。其主要功能在于交互式地瀏覽和修改數(shù)據(jù),生成動(dòng)態(tài)Web內(nèi)容。
數(shù)據(jù)訪問層JDBC(Java Data Base Connectivity,Java數(shù)據(jù)庫(kù)連接)是一種用于執(zhí)行SQL語(yǔ)句的Java API,可以為多種關(guān)系數(shù)據(jù)庫(kù)提供統(tǒng)一訪問,它由一組用Java語(yǔ)言編寫的類和接口組成。資源層MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL AB公司開發(fā),目前屬于Oracle旗下公司。MySQL是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),在Web應(yīng)用方面是最好的RDBMS(關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng))應(yīng)用軟件之一。
開發(fā)工具使用Eclipse+AppCan。移動(dòng)應(yīng)用開發(fā)平臺(tái)AppCan,采用HTML5標(biāo)準(zhǔn)作為開發(fā)語(yǔ)言,支持跨平臺(tái)移動(dòng)應(yīng)用開發(fā),提供移動(dòng)應(yīng)用管理與運(yùn)行控制云服務(wù),實(shí)現(xiàn)對(duì)移動(dòng)應(yīng)用全生命周期(Full Life Cycle)的支持和管理。本系統(tǒng)設(shè)計(jì)初衷是使用HTML5進(jìn)行移動(dòng)端的開發(fā),正好符合AppCan開發(fā)平臺(tái)的特點(diǎn),因此選擇AppCan開發(fā)平臺(tái)作為適應(yīng)移動(dòng)端的工具。
移動(dòng)端虛擬實(shí)務(wù)培訓(xùn)系統(tǒng)中課程實(shí)現(xiàn)的優(yōu)化 基于有限狀態(tài)自動(dòng)機(jī)思想,當(dāng)需要開發(fā)一門新的培訓(xùn)課程時(shí),首先需要把整個(gè)課程的過(guò)程分解為一個(gè)個(gè)的表現(xiàn)形式定義為狀態(tài),表現(xiàn)形式之間的轉(zhuǎn)移定義為跳轉(zhuǎn),表現(xiàn)形式之間的跳轉(zhuǎn)逐個(gè)填充進(jìn)狀態(tài)轉(zhuǎn)移表,再把記錄有該實(shí)驗(yàn)過(guò)程的所有狀態(tài)、各個(gè)狀態(tài)可以觸發(fā)的熱區(qū)(通過(guò)JS函數(shù)定位獲取的方法)和狀態(tài)轉(zhuǎn)移表存入數(shù)據(jù)庫(kù),然后對(duì)照狀態(tài)轉(zhuǎn)移表的跳轉(zhuǎn)關(guān)系,通過(guò)點(diǎn)觸、拖拽、長(zhǎng)按等交互操作來(lái)觸發(fā)狀態(tài)熱區(qū),實(shí)現(xiàn)各個(gè)狀態(tài)間的跳轉(zhuǎn)。通過(guò)上述過(guò)程,優(yōu)化了移動(dòng)端虛擬實(shí)務(wù)培訓(xùn)系統(tǒng)課程的實(shí)現(xiàn)過(guò)程。
5 有限狀態(tài)自動(dòng)機(jī)思想的應(yīng)用及快速生成課程的研究
快速生成一門課程,需要開發(fā)出一套工具包,已經(jīng)提到該工具包應(yīng)該包括狀態(tài)表、狀態(tài)轉(zhuǎn)移表、狀態(tài)熱區(qū)表(主要用于抓取各個(gè)狀態(tài)的熱區(qū)位置)。
狀態(tài)表 圖3所示狀態(tài)表中給出狀態(tài)編號(hào)(主鍵)、仿真操作區(qū)圖片編號(hào)、提示區(qū)內(nèi)容。狀態(tài)編號(hào)作為該狀態(tài)的唯一標(biāo)識(shí),其字段的設(shè)置均為描述該狀態(tài)而服務(wù);仿真操作區(qū)圖片編號(hào)表示該狀態(tài)下手機(jī)仿真操作區(qū)中需要顯示的視圖編號(hào);提示區(qū)內(nèi)容對(duì)不同顯示給予不同的提示效果。每個(gè)區(qū)的命名均符合規(guī)則,同時(shí)屏幕上的仿真操作區(qū)和提示區(qū)一一對(duì)應(yīng)起來(lái),相輔相成,較好地呈現(xiàn)課程。
狀態(tài)轉(zhuǎn)移表 圖4所示狀態(tài)轉(zhuǎn)移表中給出當(dāng)前狀態(tài)編號(hào)、下一狀態(tài)編號(hào)、觸發(fā)條件名稱、觸發(fā)條件編碼。狀態(tài)轉(zhuǎn)移表存儲(chǔ)狀態(tài)間的跳轉(zhuǎn)關(guān)系,存儲(chǔ)了當(dāng)前狀態(tài)在給出操作條件下可以跳轉(zhuǎn)到的下一個(gè)狀態(tài)的轉(zhuǎn)移關(guān)系。當(dāng)前狀態(tài)編號(hào)作為一次跳轉(zhuǎn)的出發(fā)狀態(tài),用狀態(tài)序號(hào)來(lái)標(biāo)識(shí);下一狀態(tài)是一次跳轉(zhuǎn)的結(jié)束狀態(tài),此處也用狀態(tài)序號(hào)來(lái)標(biāo)識(shí);觸發(fā)條件名稱,對(duì)狀態(tài)跳轉(zhuǎn)類型的轉(zhuǎn)移條件進(jìn)行描述,方便對(duì)不同跳轉(zhuǎn)進(jìn)行輔助顯示;觸發(fā)條件編碼,該字段定義觸發(fā)每一次跳轉(zhuǎn)的轉(zhuǎn)移條件的簡(jiǎn)單標(biāo)識(shí)。
各個(gè)狀態(tài)中熱區(qū)的處理 圖5所示狀態(tài)熱區(qū)表截圖給出圖片編號(hào)(主鍵)、圖片熱區(qū)位置、圖片路徑、圖片名稱。圖片編號(hào)對(duì)應(yīng)狀態(tài)表中仿真區(qū)圖片編號(hào),是各個(gè)狀態(tài)圖片的展示;各個(gè)狀態(tài)都有自己的觸發(fā)熱區(qū),就形成狀態(tài)熱區(qū)的位置,熱區(qū)位置是通過(guò)一段Js代碼來(lái)獲取的;圖片存于服務(wù)器,在數(shù)據(jù)庫(kù)中存放圖片的路徑,代碼中通過(guò)URL來(lái)讀取圖片,該表給出圖片的路徑;圖片名稱是對(duì)所存圖片給予命名,以便于區(qū)分。通過(guò)對(duì)代碼的理解能夠得出獲取熱區(qū)的原理:通過(guò)點(diǎn)觸拖動(dòng)計(jì)算出當(dāng)前熱區(qū),可移動(dòng)模塊的left、top、right,bottom對(duì)應(yīng)area的coords屬性集成上面的位置,來(lái)實(shí)現(xiàn)熱區(qū)的定位。
頁(yè)面引用“$('#imgMap').imageMaps();”調(diào)用“jquery.image-maps.js”這個(gè)插件,其中部分代碼如下:
vat coords=$(this).attr('coords');
coords=coords.split(',');
_position_conrainer.append('
Link'+index+'X