技術重點資料
- 核心技術棧
- Drupal 10.3+ 或 Drupal 11、PHP 8.4、MariaDB 11.4、nginx 配 PHP-FPM。開發用 DDEV 容器化,部署用 Docker。
- 上游專案
- Drupal LMS —— 一套貢獻予 Drupal 的 GPL 授權學習管理系統,最初由 Opigno 發行版分叉而來,並為 Drupal 10 重寫。
- 社群貢獻模組
- 十個模組,涵蓋課程、報名、評核、證書與報表,全部共用同一數據模型。
- 內容標準
- SCORM 1.2 及 2004、xAPI、H5P 與 YAML 課程套件,全部是一等公民而非外掛。
- 整合介面
- REST 與 GraphQL API、SAML 2.0 與 OIDC 單一登入,以及與常見 HRIS 及身分系統的整合接點。
- 本地化
- 介面完整支援英文、繁體中文(香港)與簡體中文(中國),並處理各地區的日期、數字格式與術語差異。
社群貢獻模組一覽
| 範疇 | 提供甚麼 |
|---|---|
| Course 課程 | 課程實體、架構、可見性與生命週期 |
| Enrolment 報名 | 報名類型、名額控制、候補名單與狀態 |
| Training assignment 培訓指派 | 按崗位、群組或架構向人員指派學習 |
| Activity 活動 | 課程內可用的學習活動類型 |
| Assessment 評核 | 題庫、測驗、計分與結果 |
| Certification 證書 | 證書、有效期與續期 |
| Live training 現場培訓 | 排期場次、場地、導師與出席 |
| Reporting 報表 | 參與、完成與需求的彙總檢視 |
| Training path 培訓路徑 | 有先後次序的學習路徑與先修條件 |
| Notification 通知 | 由工作流程事件觸發的訊息 |
沒有符合篩選條件的項目。
核心實體與其承載的內容
| 實體 | 用途 |
|---|---|
| Training 培訓 | 一個可用多種方式交付的學習單元 |
| Course 課程 | 容納培訓內容、活動與評核的容器 |
| Activity 活動 | 課程內一項具體的學習行動,屬於某一活動類型 |
| Activity type 活動類型 | 定義活動可以做甚麼 —— 插件架構在此發揮作用 |
| Learner 學員 | 系統中的一個人,擁有學習檔案 |
| Group 群組 | 一組學員,用於架構、對象設定與報表 |
沒有符合篩選條件的項目。
實體模型對買家為何重要
每人一份紀錄,而不是每個模組一份
由於所有模組共用同一批實體,線上課程的完成紀錄、考試的分數、現場課程的證書,全都落在同一份學習檔案上。這正是「跨交付模式做報表」不需要先做一個數據倉項目就能達成的原因 —— 也是開源方案在維護成本上往往比拼湊起來的單點方案便宜的那個具體原因。
活動類型是插件
一個活動能做甚麼,是由活動類型插件定義,而不是寫死在核心邏輯裡。新增一種學習活動,是照着有文件說明的介面寫一個插件,而不是改動核心。對於最終一定需要一點特別功能的機構來說,這是「配置工作」與「分叉版本」之間的差別。
標準在數據模型之內,不是轉換器
SCORM、xAPI 與 H5P 內容原生儲存。SCORM 套件匯入後就是一個學習活動;H5P 在瀏覽器內創作;xAPI 記錄直接掛在學員身上。沒有那個「匯入後變成專有黑箱」的有損步驟。
開源的成本在維護,不在授權
Drupal 11 使用以屬性實現的 PHP 物件導向 hooks,因此升級是跟着一套有文件說明的模式走。這不代表升級免費 —— 它代表升級是一件已知、可以排期的工序,而不是一個無底洞。
技術評估者常問的問題
Drupal LMS 與 Opigno 有甚麼分別?
兩者同源。Drupal LMS 最初是從 Opigno 發行版分叉而來,其後已為 Drupal 10 重寫,因此兩者已大幅分歧。Opigno 另外提供商業產品 Opigno Enterprise,那是與開源 Opigno Community 不同的另一個平台。我們建基於 Drupal LMS,差別在我們的比較文章中有更詳細說明。
升級如何處理?
Drupal 11 引入以屬性實現的 PHP 物件導向 hooks,Drupal LMS 的模組亦循同一模式。實際後果是:升級是更新相依套件並依循有文件說明的擴充模式,而不是要為變動的核心重寫自訂程式。我們把它排成有計劃的維護工序,而不是緊急事故。
可以在我們自己的基建上運行嗎?
可以。部署目標是標準的容器化技術棧:PHP-FPM、MariaDB 與 nginx。自建伺服器是受支援的部署配置,而考試交付更可在完全沒有公網連線的網絡上運行。
單一登入怎麼處理?
支援 SAML 2.0 與 OIDC。具體整合與平台授權分開界定,因為你的身分供應商與 LMS 組織架構之間的對應才是真正的工作所在 —— 而且兩者很少是一對一的。
有 API 讓我們自行擴充嗎?
有。REST 與 GraphQL 都有提供,實體模型亦有文件說明,因此自訂報表與整合可以建基於穩定的介面,而不是去刮取畫面層。
本地開發體驗如何?
參考技術棧採用 DDEV,一條指令即可取得容器化的 Drupal 環境,附瀏覽器可直接開啟的資料庫與檔案管理,另有 Drush 作管理指令、Selenium 作瀏覽器層測試。開發者毋須自行設定 PHP、MariaDB 與 nginx,數分鐘內即可在本機取得完整環境。