技术重点数据
- 核心技术栈
- 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,数分钟内即可在本机获得完整环境。