当前位置: 首页 > Web前端 > HTML

一款集PBP、前端对接、钉钉于一体的考试系统

时间:2023-03-28 18:21:20 HTML

文/刘俊良主编周良年家斌/杜益民一、项目背景客户需要开发一套内部考试系统,用于内部规章制度的学习的企业和评估。系统的主要功能包括:每个员工可以回答日常问题和特殊问题。根据答题结果,分类不同的题库,供员工查询学习。交卷后,系统自动完成判断和打分。与钉钉深度集成,包括实现测试系统与明道云的单点登录;每日自动推送测试待办任务,回答问题后标记待办任务完成;每月自动推送记分牌。个性化配置、题库、答题数、每日答题数、题目评分规则随时调整。这是一个典型的系统,具有很高的复杂性和灵活性要求。很难找到完全满足要求的标准商业软件,定制开发远超项目成本预期。明道云完全可以胜任这份工作。下面我们就来看看如何使用明道云来实现这个测试系统。2、结果预览如图所示,用户只需在移动端或PC端进入系统即可完成相应的操作。接下来,本文将全面拆解本系统的开发过程。3.开发与拆解开发架构考虑到用户页面交互的灵活性,本系统采用“原生前端开发+后端零代码”实现。原生前端:答题交互页面,调用后台获取题库数据和答题请求。明道云后端:作为后端,接收前端请求,完成考试结果校验,试卷生成,钉钉消息推送。零代码后台开发1.可视化配置数据库经过分析,本系统主要包括用户、基础题库、答案题库、试卷、试卷题目、系统、专项等业务对象。我们使用工作表来快速完成这些业务实体的数据建模和规则编排。2、通过强大的工作流引擎Webhook实现后台功能开发,接受前端请求,完成答题业务流程用户在前端提交答题后,前端会将相关数据推送到明道提供的Webhook地址云。明道云工作流会自动批改答题卡、加分、标记存档答题,并为相应的用户添加新的一套试卷。3、利用业务封装能力,加强系统的后台处理能力。本系统封装了13个PBP工作流、9个工单事件工作流、5个时间工作流、2个人事事件工作流,完成了后台系统数据和流程的整合。自动化处理。系统封装了需要经常实现的功能,主要包括题库生成、试卷生成、组织架构同步等功能。此外,我们还配置了多个工作流来保证业务的连续性,主要包括:添加特殊项目或试卷后,自动添加相应的试题当新员工加入系统时,自动为其生成所需的试卷当基础题库发生变化时,系统同步更改基础题库下发的所有题库。4、利用集成中心完成深度的系统集成工作。由于客户需要与钉钉深度融合,因此需要打通钉钉的组织架构和消息待办界面。因此,我们通过API集成,将钉钉需要的能力封装到集成中心,一共封装了12个API。结合自动化工作流,实现了钉钉组织结构信息的自动同步和消息待办事项的整合。注:虽然明道云本身已经实现了与钉钉的对接,包括明道云的审批、填写和消息通知。但考虑到系统需要获取钉钉用户的UnionID,且审核业务不是传统的审批填写等待流程,我们需要单独调用钉钉的OpenAPI实现个性化待办业务的创建,所以我们携带开展深入融合工作。钉钉的功能设计需要管理员先创建审批实例,然后创建审批待办事项,最后调用消息通知接口实现向用户推送待办消息的功能。明道云通过PBP将这三个接口调用封装成一个工作流,简洁高效。完成上面的PBP配置后,我们可以使用一个简单的定时工作流来调用它,就可以实现将每天要做的考试任务推送给用户的功能。通过以上自动化流程配置,用户体验变得非常流畅:每天早上8点30分,用户会在钉钉上收到处理测试任务的通知,点击通知,会跳转到测试系统页面进行回答问题。完成答题后,系统会接收相关数据并处理问题,同时清空今日钉钉待办任务。前端开发1.个性化前端定制因为本系统的用户操作主要在前端,前端页面的个性化程度很高,所以我们选择定制化的前端开发来完成页面开发。就考试系统而言,前端开发的复杂度并不高,项目组不到一周就完成了开发。不过值得提醒的是,本次前端开发不涉及任何数据库开发,缓存数据库和数据存储都是通过明道云实现的。而且市面上有很多零代码的前端开发软件,所以工作本身并没有太大的难度。2、通过API完成数据和信息的交互前端页面开发完成后,我们需要实现前端与前端的连接,主要是通过API。本系统数据对象不多,所以前端集成工作很快完成,主要包括以下集成:通过应用自动生成的API接口调用题库,试卷数据系统后台会自动生成相关的API接口。可以通过调用接口获取相关数据。提供给后台推送试卷的Webhook地址明道云后台准备了两个Webhook地址,一个用于接收考试成绩数据,一个用于接收考试过程数据。用户每答完一道题,前端会将答题数据推送到明道云后台;完成考试并上交试卷后,也会将相关数据推送到明道云后台。通畅。关键问题该系统也是项目组首次尝试将原生前端与明道云后端相结合的开发模式,过程中遇到了几个关键问题,可以作为相关项目开发的参考。1、三个系统的账户系统打通。本项目涉及三个系统:钉钉、原生前端和明道云。部署方式是将原生前端部署为钉钉微应用,实现原生前端与钉钉免登录。用户无需登录明道云,但可以将用户相关的测试数据存储在明道云上。这怎么可能?由于前端在用户访问前端时可以获取用户的钉钉ID,因此我们在明道云上维护一张表,建立用户钉钉ID与明道云UserID的映射关系。当用户访问前端页面时,前端页面请求明道云API获取用户的UserID。然后通过UserID可以准确获取当前的题库和试卷数据。2.实现无延迟接听体验。明道云后台会提前为用户生成两套试卷,一套激活,一套不激活。当用户点击回答问题时,前端会直接调用API获取激活试卷。用户完成答题后,前端会推送一个Webhook请求,明道云后台会立即将这组激活的试卷标记为已完成,将未激活的试卷标记为激活,生成的工作流程一组不活跃的试卷会同时在后台执行。通过上述方案,明道云系统会在前端请求Webhook的同时为用户生成新试卷,并在几秒内执行生成新缓存试卷的工作流。对于用户来说,可以在顺利答完一组试卷后立即开始做下一组题,没有任何延迟。3、避免用户作弊操作这个问题是系统设计之初的漏洞。由于前端没有考虑缓存,只要用户在答题过程中没有点击提交试卷,中途退出再进入页面,就得重做一遍。一些用户利用这个漏洞提交了多套满分答题卡。为了解决这个问题,我们增加了一个缓存功能:用户在前端每完成一个问题的回答,前端就会将相关数据推送到明道云,明道云会将问题标记为已回答并缓存回答。过程中用户退出并重新进入页面时,系统会从明道云中获取答案的缓存数据,将已经回答过的问题标记为答案,不允许用户再次回答。通过这样的缓存设计,我们避免了用户答题过程中的漏洞,整个系统顺利上线。4.项目扩展总结一下,本系统主要通过明道云工作表快速完成可视化数据建模和数据入库,并通过工作流和业务封装能力完成后台大量增删改查功能的实现,最后依托于自身完美的开放性设计实现系统对接。从本文介绍的案例来看,大量的系统开发都可以按照该模型进行,并通过零代码平台完成后端开发,实现系统集成。如果有必要,我们可以为它搭配个性化的前端。基于此,零代码开发可以在更多领域和场景中有所建树。