陳 彥
(永州職業(yè)技術(shù)學(xué)院, 湖南 永州 425100)
泛在學(xué)習(xí) (U-Learning) 即無時(shí)無刻地溝通、 無處不在的學(xué)習(xí), 是一種支持學(xué)習(xí)者在任意時(shí)間 (Any Time)、 任意地點(diǎn) (Any Place), 以任意方式 (Any Way) 和任意設(shè)備 (Any Device)進(jìn)行的學(xué)習(xí)。 本文所指 “協(xié)作式泛在學(xué)習(xí)”, 強(qiáng)調(diào)其協(xié)作性, 即通過無時(shí)無刻地溝通, 跨越時(shí)空限制形成虛擬學(xué)習(xí)共同體, 使得學(xué)習(xí)者之間的協(xié)作知識建構(gòu)成學(xué)習(xí)的主要形式。 協(xié)作式泛在學(xué)習(xí)環(huán)境是一個(gè)擁有泛在學(xué)習(xí)資源、 提供泛在學(xué)習(xí)和交流工具、 支持泛在的協(xié)作學(xué)習(xí)活動(dòng)的學(xué)習(xí)環(huán)境。
Moodle (Modular Object-Oriented Dynamic Learning Environment 模塊化面向?qū)ο蟮膭?dòng)態(tài)學(xué)習(xí)環(huán)境) 作為一種基于建構(gòu)主義學(xué)習(xí)理論的在線教學(xué)平臺, 不僅在技術(shù)層面支持構(gòu)建網(wǎng)絡(luò)學(xué)習(xí)共同體, 而且也注重從社會性交互維度來推動(dòng)網(wǎng)絡(luò)學(xué)習(xí)共同體, 以實(shí)現(xiàn)協(xié)作式學(xué)習(xí)[1]。 然而并不能達(dá)到協(xié)作式泛在學(xué)習(xí)環(huán)境的要求, 原因有二: 一是Moodle 系統(tǒng)對移動(dòng)應(yīng)用支持弱, 二是Moodle系統(tǒng)本身對用戶的黏合度低。 為此, 我們基于Moodle 系統(tǒng)和微信進(jìn)行二次開發(fā), 以Moodle 作為學(xué)習(xí)資源平臺及電腦客戶端, 以微信作為課程移動(dòng)客戶端, 構(gòu)建一個(gè)協(xié)作式泛在學(xué)習(xí)系統(tǒng), 借助于Moodle 平臺的學(xué)習(xí)資源管理優(yōu)勢與微信平臺的社交化優(yōu)勢, 增強(qiáng)系統(tǒng)對學(xué)習(xí)者的黏合度,以提高學(xué)習(xí)者的學(xué)習(xí)興趣和參與度, 并將系統(tǒng)應(yīng)用于教學(xué)實(shí)踐, 評價(jià)學(xué)習(xí)成果, 提出有效的泛在學(xué)習(xí)模式。 通過推廣應(yīng)用, 最終促進(jìn)泛在、 移動(dòng)、 個(gè)性化學(xué)習(xí)方式的形成。
本系統(tǒng)主要是開發(fā)一個(gè) “泛在學(xué)習(xí)” 微信公眾平臺 (以下簡稱泛在學(xué)習(xí)平臺), 在其中集成Moodle 在線學(xué)習(xí)功能, 打造協(xié)作式泛在學(xué)習(xí)環(huán)境。
Moodle 本身的功能完備, 支持系統(tǒng)管理員、課程管理員、 教師、 學(xué)生等幾種主要角色。 在Moodle 的Web 端, 系統(tǒng)管理員可以進(jìn)行網(wǎng)站管理、 課程與教學(xué)資源管理; 教師可以進(jìn)行教學(xué)設(shè)計(jì)和教學(xué)管理; 學(xué)生可以進(jìn)行在線學(xué)習(xí)、 評價(jià)和交流。 而 “泛在學(xué)習(xí)平臺” 專注構(gòu)建協(xié)作式泛在學(xué)習(xí)環(huán)境, 并不涉及Moodle 網(wǎng)站管理、 課程管理、 資源管理和用戶管理。 因此主要是針對學(xué)生角色進(jìn)行二次開發(fā), 主要包含以下功能: 一是我的微學(xué), 如學(xué)習(xí)賬號登錄、 微信賬號綁定、 學(xué)習(xí)者賬號信息顯示與編輯、 學(xué)習(xí)者活動(dòng)軌跡等; 二是學(xué)習(xí)資源管理, 如學(xué)習(xí)者所選課程及學(xué)習(xí)進(jìn)度、 課程成績報(bào)告、 課程列表查詢與選擇等; 三是學(xué)習(xí)活動(dòng)管理, 如學(xué)習(xí)活動(dòng)提醒、 作業(yè)、 測試、 專題討論、 論壇等。
根據(jù)微信公眾平臺的通信機(jī)制、 Moodle 服務(wù)器工作原理以及 “泛在學(xué)習(xí)平臺” 的功能需求, 可以設(shè)計(jì)系統(tǒng)總體架構(gòu)如圖2 所示:
圖2 系統(tǒng)總體架構(gòu)
(1) 應(yīng)用層: 包含 “Web 應(yīng)用端” 和 “微信應(yīng)用端” 兩個(gè)部分。 Web 應(yīng)用端訪問的是表示層的web 網(wǎng)站平臺。 微信應(yīng)用端通過微信公眾平臺來訪問Moodle 中的課程等各種資源。 微信向微信公眾平臺發(fā)出請求、 接收消息都由騰訊微信服務(wù)器轉(zhuǎn)發(fā), 必須符合微信公眾平臺的通信機(jī)制。在移動(dòng)互聯(lián)日益普及的今天, 微信已經(jīng)成為一種數(shù)字化生活方式, 不僅改變了人們溝通交流的方式, 甚至改變了商業(yè)模式、 工作模式, 自然也能成為最好的泛在學(xué)習(xí)環(huán)境, 我們將 “泛在學(xué)習(xí)”公眾平臺集成微信中, 讓學(xué)習(xí)者關(guān)注, 借此實(shí)現(xiàn)生活、 學(xué)習(xí)、 交流討論的自然切換。
(2) 表示層: 包含 “Moodle Web 網(wǎng)站平臺”和 “泛在學(xué)習(xí)平臺” 兩個(gè)部分。 其中 “Web 網(wǎng)站平臺” 是Moodle 的原生平臺, 主要的功能是為學(xué)習(xí)者提供在線學(xué)習(xí)環(huán)境, 同時(shí)還包括各種管理功能, 如網(wǎng)站管理、 課程資源的管理、 用戶角色管理、 學(xué)習(xí)活動(dòng)管理等。 為支持移動(dòng)應(yīng)用, 我們利用響應(yīng)式網(wǎng)站技術(shù)重構(gòu)Moodle Web 網(wǎng)站平臺, 使之自適應(yīng)支持PC、 平板和手機(jī)等各種終端設(shè)備。 “泛在學(xué)習(xí)平臺” 是基于微信公眾平臺的通信機(jī)制, 利用Moodle 提供的Web service 接口對Moodle 系統(tǒng)進(jìn)行二次開發(fā), 以實(shí)現(xiàn) “泛在學(xué)習(xí)平臺” 的功能需求。 它接受來自應(yīng)用層的請求, 這一請求發(fā)自微信客戶端, 經(jīng)騰訊服務(wù)器轉(zhuǎn)發(fā), 符合微信公眾平臺接口規(guī)范, 在微信網(wǎng)關(guān)中進(jìn)行處理和轉(zhuǎn)發(fā)。
(3) 業(yè)務(wù)邏輯層: 業(yè)務(wù)邏輯層是表示層和數(shù)據(jù)服務(wù)層之間的橋梁, 是系統(tǒng)架構(gòu)的核心部分,用來處理業(yè)務(wù)邏輯, 進(jìn)行數(shù)據(jù)傳輸。 本研究是基于微信和Moodle 的二次開發(fā), 并不重構(gòu)Moodle的業(yè)務(wù)邏輯。 但是要充分利用Moodle 系統(tǒng)提供的Web Service API 接口, 調(diào)用Moodle 的業(yè)務(wù)邏輯來實(shí)現(xiàn)微信 “泛在學(xué)習(xí)平臺” 的各項(xiàng)功能。 因此, 需要在Moodle 中啟用Web Service 功能。
Moodle 是 PHP 系統(tǒng), 我們采用 LAMP 服務(wù)架構(gòu) (Linux+Apache+MySQL+PHP 架構(gòu)) 部署Moodle 服務(wù)器。 針對Apache 服務(wù)器靜態(tài)頁面執(zhí)行效率較低下, 頁面緩存效率不高等不足, 特別引入 Nginx (engine x) 反向代理 web 服務(wù)器,來處理靜態(tài)的HTML 頁面, 進(jìn)行PHP 頁面緩存與轉(zhuǎn)發(fā)。 為接入微信公眾平臺, Moodle 服務(wù)器需支持外網(wǎng)web 訪問, 且僅支持80 端或443 端口 (分別對應(yīng) http 和 https。)。
微信公眾平臺提供編輯模式和開發(fā)模式兩種方式。 微信 “泛在學(xué)習(xí)平臺” 要接入 Moodle 服務(wù)器, 并進(jìn)行深度定制和開發(fā), 因此采用開發(fā)模式。 開發(fā)模式需要先進(jìn)行有效性驗(yàn)證, 驗(yàn)證過程如下: 在微信公眾平臺管理界面填寫服務(wù)器配置, 包括 URL、 Token、 EncodingAESKey 等參數(shù) (其中URL 即是圖1 所示 “微信消息處理器”的訪問地址)。 微信公眾平臺配置完成之后就會向URL 發(fā)送一個(gè)有效性驗(yàn)證請求, URL 服務(wù)器端需進(jìn)行驗(yàn)證并返回結(jié)果。 有效性驗(yàn)證請求包含如下參數(shù)。
圖1 泛在學(xué)習(xí)平臺功能模塊設(shè)計(jì)
表1 接入驗(yàn)證消息參數(shù)
續(xù)表
“微信消息處理器” 應(yīng)包含如下驗(yàn)證代碼。
驗(yàn)證無誤, 需原樣返回echostr 參數(shù)內(nèi)容,即完成微信公眾號的接入。
微信網(wǎng)關(guān) (圖1 所示) 負(fù)責(zé)微信端與服務(wù)器端的交互通信。
(1) 消息接收。 微信網(wǎng)關(guān)接收來自微信端的消息請求, 該消息實(shí)際上是由微信服務(wù)器以POST 請求方式轉(zhuǎn)發(fā)而來。 微信服務(wù)器基于一定的規(guī)則將消息封裝成XML 形式。 格式如下
上述代碼省略號部分, 由具體的消息類型決定, 消息類型分為普通消息和事件推送消息2 大類。 其中普通消息包括: 文本消息、 圖片消息、語音消息、 視頻消息、 地理位置消息、 鏈接消息6 種。 事件推送消息包括: 關(guān)注/取消關(guān)注事件、掃描帶參數(shù)二維碼事件、 上報(bào)地理位置事件、 自定義菜單事件、 點(diǎn)擊菜單拉取消息時(shí)的事件推送、 點(diǎn)擊菜單跳轉(zhuǎn)鏈接時(shí)的事件推送6 種。
(2) 消息有效性驗(yàn)證。 當(dāng)微信網(wǎng)關(guān)接收到消息時(shí), 首先需要驗(yàn)證消息的有效性, 通過驗(yàn)證消息中的 token、 timestamp、 nonce 三個(gè)參數(shù), 來確認(rèn)其來自微信公眾平臺服務(wù)器。 驗(yàn)證方法與上節(jié)微信公眾平臺開發(fā)接入驗(yàn)證相同。 微信網(wǎng)關(guān)完成消息有效性驗(yàn)證之后, 即可獲取XML 消息中的內(nèi)容, 對消息內(nèi)容處理, 并根據(jù)情況交給相應(yīng)的程序進(jìn)行處理。
(3) 消息回復(fù)。 服務(wù)器回復(fù)給用戶的消息,也要先提交給微信網(wǎng)關(guān)進(jìn)行處理。 微信公眾平臺支持的6 種回復(fù)消息: 文本消息、 回復(fù)圖片消息、 語音消息、 視頻消息、 音樂消息和圖文消息。 這6 種消息的XML 格式與上述請求消息類似。 微信網(wǎng)關(guān)需接格式要求, 對回復(fù)消息進(jìn)行XML 封閉, 完成之交再回復(fù)給微信用戶端。
微信Moodle 模塊主要實(shí)現(xiàn) “泛在學(xué)習(xí)平臺”的各項(xiàng)功能。 微信網(wǎng)關(guān)根據(jù)用戶請求調(diào)用微信Moodle 模塊中相應(yīng)的模塊進(jìn)行處理, 并將處理結(jié)果返回微信網(wǎng)關(guān)進(jìn)行XML 封裝, 再返回給微信客戶端。 微信Moodle 模塊實(shí)現(xiàn)的功能主要包括三個(gè)部分: 賬號信息功能, 如登錄、 微信綁定等; 學(xué)習(xí)資源管理, 如課程列表、 成績報(bào)告等;學(xué)習(xí)活動(dòng)管理, 如學(xué)習(xí)活動(dòng)提醒、 在線課堂、 作業(yè)等。 返回的消息部分以微信圖片信息返回、 部分以網(wǎng)頁形式返回。
(1) Moodle 網(wǎng)絡(luò)服務(wù) (Web Services)。 微信Moodle 模塊需通過Moodle 提供的網(wǎng)絡(luò)服務(wù)調(diào)用底層的業(yè)務(wù)處理邏輯進(jìn)行處理 (如圖2 所示)。在本系統(tǒng)中用到的Moodle 網(wǎng)絡(luò)服務(wù)有: 用戶API (core_user)、 權(quán)限 PAI (core_auth)、 日期API (core_calendar)、 課程 API (core_course)、課程完成進(jìn)度 API (core_completion)、 課程成績API (core_grades) 等。
(2) 微信用戶注冊、 綁定與登錄。 泛在學(xué)習(xí)平臺需要實(shí)現(xiàn)微信賬號和Moodle 賬號的關(guān)聯(lián)。為此首先要建一個(gè)賬號關(guān)聯(lián)數(shù)據(jù)表mdl_user_wx。其字段設(shè)為: id、 userid (Moodle 用戶賬號) 和openid (微信用戶), 并將 userid 設(shè)置為主鍵。 利用userid 跟Moodle 的用戶數(shù)據(jù)表mdl_user 建立連接。 在微信中進(jìn)行用戶注冊時(shí), 系統(tǒng)要自動(dòng)將微信 openid 與新注冊用戶 userid 寫入 mdl_user_wx 數(shù)據(jù)表。 Moodle 用戶第一次登錄泛在學(xué)習(xí)平臺時(shí), 系統(tǒng)引導(dǎo)用戶與微信綁定, 即將Moodle 賬號的 userid 與微信 openid, 寫入 mdl_user_wx數(shù)據(jù)表。 之后可以用微信賬號直接登錄泛在學(xué)習(xí)平臺。 代碼實(shí)現(xiàn)時(shí)需要用到Moodle 網(wǎng)絡(luò)服務(wù)的用戶 API (core_user) 和權(quán)限 PAI (core_auth)。其他模塊功能的實(shí)現(xiàn)在此不再贅述。
(3) 響應(yīng)式 Web 界面實(shí)現(xiàn)。 響應(yīng)式 Web 技術(shù)即是自適應(yīng)不同終端的網(wǎng)站開發(fā)技術(shù), 同樣的網(wǎng)頁內(nèi)容會以與終端屏幕相適應(yīng)的形式顯示出來。 在本系統(tǒng)中我們使用Bootstrap 框架實(shí)現(xiàn)響應(yīng)式Web 界面。 為微信中訪問網(wǎng)頁, 需通過公眾號的微信網(wǎng)頁授權(quán)機(jī)制, 來獲取用戶基本信息, 進(jìn)而實(shí)現(xiàn)業(yè)務(wù)邏輯。
基于Moodle 和微信開發(fā)協(xié)作式泛在學(xué)習(xí)環(huán)境, 不僅有效降低了技術(shù)難度, 縮短了開發(fā)周期, 而且兼容學(xué)校前期已建成Moodle 網(wǎng)絡(luò)課程平臺, 教師和學(xué)生均可平滑過渡到新系統(tǒng), 很好地解決跨平臺學(xué)習(xí)的一致性問題。 通過Moodle實(shí)現(xiàn)學(xué)習(xí)內(nèi)容的泛在性、 利用微信實(shí)現(xiàn)學(xué)習(xí)活動(dòng)的泛在性, 在學(xué)習(xí)應(yīng)用實(shí)踐中, 可以看到新平臺的優(yōu)勢, 學(xué)習(xí)者不需要安裝新的應(yīng)用APP, 僅使用最熟悉微信就能進(jìn)行在線學(xué)習(xí), 提升的在線學(xué)習(xí)資源使用頻率, 提高了學(xué)習(xí)效率。 這種將在線學(xué)習(xí)自然融入學(xué)生微信生活之中, 利用微信的社交功能構(gòu)建跨越時(shí)空的學(xué)習(xí)共同體, 通過成員之間的交流、 協(xié)作與競爭以及解決問題的多視角共享, 激發(fā)學(xué)習(xí)興趣、 培養(yǎng)協(xié)作素質(zhì)、 發(fā)展解決真實(shí)問題的能力, 這無疑是一種數(shù)字化學(xué)習(xí)理念的創(chuàng)新。
遼寧省交通高等??茖W(xué)校學(xué)報(bào)2021年6期