关于前端:把PBP前端对接钉钉集成玩透的考试系统

42次阅读

共计 2977 个字符,预计需要花费 8 分钟才能阅读完成。

文 / 刘俊良 周亮 年佳斌
编辑 / 杜逸敏

一、我的项目背景

客户须要开发一套企业外部的考试零碎,用于企业外部规章制度的学习及考核。零碎的次要性能包含:

  1. 每个员工都能够进行每日答题与专项答题。
  2. 依据答题后果,归类不同的题库以供员工查问学习。
  3. 交卷后零碎主动实现判卷并积分。
  4. 与钉钉深度集成,包含实现考试零碎与明道云单点登录;每日主动推送考试待办工作,实现答题后标记实现待办;每月主动推送积分榜。
  5. 个性化配置,题库、答题数量、每日答题次数、题目计分规定等反对随时调整。
    这是一套典型的兼具高复杂度与灵活性要求的零碎,很难找到规范的商业软件来齐全满足需要,定制开发又远超我的项目老本预期,而明道云完满地胜任了这项工作。上面,咱们一起来看一下如何用明道云来实现这套考试零碎。

    二、成绩预览

    如图可见,用户只须要在挪动端或者 PC 端进入零碎,即可实现相应的操作,接下来本文将全面拆解这套零碎的开发过程。

    三、开发拆解

    开发架构
    思考到用户页面交互的灵活性,本零碎采纳「原生前端开发 + 后端零代码」来实现。
    原生前端 :考试答题的交互页面,向后端调用题库数据与答题申请。
    明道云后端 :作为后盾接管前端申请,实现考试后果验证、试卷生成、推送钉钉音讯。
    零代码后端开发
    1. 可视化配置数据库
    通过剖析,此零碎次要蕴含用户、根底题库、答题题库、试卷、试卷题目、制度、专项等业务对象。咱们应用工作表,疾速实现这些业务实体的数据建模和规定编排。

2. 通过弱小的工作流引擎实现后端性能开发
Webhook 实现承受前端申请并实现答题业务流
用户在前端提交答题后,前端会向明道云提供的 Webhook 地址推送相干数据。明道云工作流会主动批改答卷,减少积分,将已答题指标记归档,并给对应用户新增一套新的试卷。

3. 应用业务封装能力强化零碎后盾解决能力
本零碎封装了 13 个 PBP 工作流,9 个工作表事件工作流,5 个工夫工作流,2 个人员事件工作流来实现后端系统数据与流程的自动化解决。

零碎将须要高频率实现的性能进行了业务封装,次要包含题库生成、试卷生成、组织架构同步等性能。

除此以外,咱们还配置了多条工作流来保障业务的连续性,次要包含:

  • 新增专项或试卷后,主动新增对应考试题目
  • 当零碎有新员工退出时,为其主动生成须要考试试卷
  • 当根底题库产生变更时,零碎同步更改根底题库散发进来的所有题库。

4. 应用集成核心实现深度的系统集成工作
因为客户要求与钉钉深度集成,须要买通钉钉的组织架构与音讯待办接口。所以,咱们将钉钉须要用到的能力通过 API 集成的形式封装到集成核心,一共封装了 12 个 API。再联合自动化工作流,实现钉钉组织架构信息的主动同步以及音讯待办的集成。
注:尽管明道云自身曾经实现了与钉钉的买通,包含明道云的审批、填写和音讯告诉。不过思考到零碎须要获取钉钉用户的 Union ID,而且考试业务并不是传统的审批、填写期待办,须要独自调用钉钉的 Open API 来实现个性化待办业务创立,咱们才进行深度集成工作。

钉钉的功能设计要求管理员先创立审批实例,再创立审批待办,最初再调用音讯告诉接口,能力实现给用户推送音讯待办的性能。而明道云通过 PBP,将这三个接口调用封装成一个工作流,简洁高效调用。

实现以上 PBP 的配置后,咱们再应用一个简略的定时工作流来调用它,就能实现每天给用户推送考试工作待办的性能。

通过以上自动化流程配置,用户体验变得十分晦涩:每天早上 8:30,用户会在钉钉上收到考试工作代办的告诉,点击告诉,会跳转至考试零碎页面进行答题,实现答题后,零碎会接管到相干数据并题目进行解决同时将今日的钉钉待办工作打消。
前端开发
1. 个性化前端定制
因为本零碎用户操作次要在前端,对于前端页面个性化水平要求很高,因而咱们抉择定制化前端开发来实现页面开发。
就考试零碎而言,前端开发的复杂度并不高,我的项目团队也在不到一周的工夫内实现了开发。不过值得揭示的是,这个前端开发并没有波及到任何数据库开发,无论是缓存数据库还是数据存储都是通过明道云来实现。并且,当初市面上也有不少零代码进行前端开发的软件,因而这项工作自身也没有太大的难度。
2. 通过 API 实现数据和信息交互
以后端页面实现开发后,咱们须要实现前后端的买通,次要是通过 API 来实现。本零碎的数据对象并不多,因而前端集成的工作也是很快就实现了,次要包含以下集成:
通过利用主动生成的 API 接口调用题库以及试卷数据
零碎后盾会主动生成相干的 API 接口,前端通过调用接口即可拿到相干的数据。

向后端提供的 Webhook 地址,推送考试试卷
明道云后端筹备了两个 Webhook 地址,一个是接管考试后果数据,另一个是接管考试过程数据。
用户每实现一道题目作答,前端便会推送答题数据到明道云后盾;实现考试交卷后也会推送相干数据到明道云后盾,后盾接管到数据后通过自动化工作流来进行相干解决,保障整个流程残缺通顺。
重点难题
本零碎也是我的项目团队第一次尝试原生前端与明道云后端联合的开发模式,在过程中也遇到几个重点难题,能够供相干我的项目开发时参考。

1. 三套零碎的账号体系买通
本我的项目波及三个零碎:钉钉、原生前端与明道云。部署模式是将原生前端以钉钉微利用的形式部署,实现原生前端与钉钉的免登录。用户不须要登录明道云,然而用户相干的考试数据都能够存储在明道云上。这是怎么实现的呢?

因为用户拜访前端时,前端能够获取到用户的钉钉 ID,因而咱们在明道云上保护了一张表,建设用户的钉钉 ID 与明道云的 UserID 的映射。当用户拜访前端页面,前端页面便申请明道云 API 拿到用户的 UserID。再通过 UserID,就能够精确获取到以后的题库以及试卷数据。

2. 实现无延时的答题体验
在明道云后盾会事后给用户生成两套试卷,一套激活,一套未激活。用户点击答题时前端会间接调用 API 获取激活的试卷,用户实现答题后,前端会推送 Webhook 申请,明道云后盾会立即将这套激活试卷标记为已实现,并将那套未激活试卷标记为激活,同时会在后盾执行生成一套未激活试卷的工作流。

通过上述计划,明道云零碎会在前端申请 Webhook 的同时,给用户生成好新的试卷,并执行工作流在几秒钟后生成好新的缓存的试卷。对于用户而言,他能够流程地在答完一套试卷后立即开始下一套答题,体验无延时。

3. 防止用户的舞弊操作
这个问题是零碎设计之初的破绽。因为前端没有思考缓存,因而用户在答题过程中只有不点击提交试卷,中途退出后再进入页面,就得重做一遍。有局部用户利用这个破绽提交很多套满分答卷。

为了解决这个问题,咱们退出了缓存性能:用户每在前端实现一道题目的答复,前端就会推送相干数据到明道云,明道云就会把该题目标记为已答并缓存答案。用户在过程中退出再从新进入页面时,零碎会从明道云拿到答题的缓存数据,并将曾经答复过的题目标记好答案,并不容许用户再次作答。

通过这样的缓存设计,咱们防止了用户答题过程中的破绽,整个零碎得以顺利上线。

四、我的项目延展

小结一下,本零碎次要是通过明道云的工作表疾速实现可视化数据建模和数据存储,并通过工作流和业务封装能力实现大量后端 CRUD 性能的实现,最初依附本身欠缺的开放性设计实现零碎对接。

以本文所介绍的案例来看,大量的零碎开发都能够依照这个模式来实现,通过零代码平台实现后端开发,并实现系统集成。如果有需要的话,咱们再搭配一个个性化前端即可。基于此,零代码开发能在更多畛域和场景有所建树。

正文完
 0