基于规则引擎的高校招生考试成绩处理系统设计
2016-07-07徐娜夏燕
徐娜,夏燕
基于规则引擎的高校招生考试成绩处理系统设计
徐娜,夏燕
摘 要:由于上海市各类高校招生考试政策不尽相同,成绩处理系统一般采取硬编码的形式满足不同考试项目需要,灵活性较差。提出了一种基于规则引擎的成绩处理系统模型,通过规则定义执行成绩处理逻辑,提高了系统的适应性,快速满足多种考试项目的需要。
关键词:规则引擎;成绩处理;高校招生
0 引言
当前上海市高校招生考试分为秋季高考、成人高考、春季高考、三校生高考等四大类。四类考试的科目大相径庭,成绩处理逻辑也不尽相同。以上海高考为例,自1985年自主命题至2012年,考试科目设置先后经历了“3+1”、“3+综合+1”两个阶段[1],2012年取消了综合能力考试重新回到“3+1”模式。现行的上海高考方案中,考试科目有语文、数学、外语3门必考科目,另外加试政治、历史、地理、物理、化学、生命科学中任一门课。根据《上海市深化高等学校考试招生综合改革实施方案》, 2017年起,高考成绩由语文、数学、外语3门统一高考成绩和学生自主选择的普通高中学业水平等级性考试科目成绩构成,作为高等学校录取的基本依据[1]。
由于不同考试的成绩处理业务逻辑不尽相同,同一类型考试每年政策也可能有所调整,这就要求成绩处理系统能够快速、灵活、准确地适应变化。如果将数据处理业务逻辑的代码写死在功能模块中,那么系统升级会复杂且易出错。为了节约时间,规避系统升级可能造成的风险,我们采用规则引擎将数据处理相关的业务规则从程序代码中分离出来,将硬编码的处理过程转换为软编码的规则集,提高系统的适应性。
1 功能模块设计
成绩处理是指将考生考试科目的所有答题内容的评阅结果按照业务规则进行加和、折算,再与加分、违纪作弊等信息合成,并经过校验后,最终得出考生的考试结果。基本业务过程包括成绩采集、成绩合成、成绩校验。
成绩处理系统的输入为评卷读卡系统交付的数据库、已完成人工评阅的登分卡、考生信息库、考场编排库、缺考库、条形码库、科目代码库、违纪作弊信息库、加分库、试卷结构以及其他成绩处理所必须的信息。主要功能模块如图1所示:
图1 成绩处理系统功能模块图
数据流程如图2所示:
图2 成绩处理系统数据流程图
成绩处理之前通过系统管理模块对部分数据表、分数精度、等参数进行设置,并通过数据采集模块导入科目代码库、违纪作弊库、缺考库、报名库等基础数据,以及网阅数据、听力障碍和小语种等特殊成绩数据。规则管理模块负责使用规则描述成绩处理的业务逻辑。成绩合成与校验模块依据预先设定的参数、导入的数据,结合规则集合执行操作。
所有涉及考生信息的信息表均以报名号或准考证号作为唯一标识。以2015年上海市秋季高考为例,考试科目有语文、数学、外语、相关科目(政治、历史、地理、物理、化学、生命科学任一门),其中报考单报高职专科的考生不参加相关科目的考试。部分信息表的主要字段及关系如图3所示:
图3 成绩处理系统主要信息表结构图
由图3我们可以看出涉及考生成绩的信息表有客观题成绩表、主观题成绩表和科目成绩表,其中客观题成绩表、主观题成绩表中的数据由外界获取,科目成绩表与考生成绩表是基于其他信息表生成的。科目成绩表因为含有大题分可以用于成绩复核,考生成绩表用于最终对外发布及录取。需要注意的时,按照教育部相关文件规定的信息标准,分数均取整,因此各科目总分字段均使用整数型。与其他考试不同的是,上海市秋季高考中的相关科目成绩会进行调整,并且以调整后分数计入总分,所以考生成绩表中定义了两个相关科目的成绩字段。
2 规则引擎设计
根据试卷结构和现有数据定义成绩合成的规则,在客观题成绩导入、主观题成绩采集都完成以后,对所有成绩信息按照规则进行加和、折算,初步得出各个考生各科目成绩kmcjk,然后对特殊类型考生、科目的成绩进行处理,进而得出考生的考试结果即考生成绩kscjk。需要强调的是,在此过程中每个阶段性的数据包括主客观成绩、科目成绩kmcjk和考生成绩kscjk,都必须校验无误才能进入下一阶段。
Jboss公司旗下一款开源的规则引擎Drools。Drools利用Java和XML技术,使用面向对象的Rete算法(Rete-OO),实现规则引擎的功能[3]。在本系统中,由负责成绩处理的信息技术人员利用Drool编写规则。允许用户根据需求自定义数据表结构、自定义分数计算规则等。
以违规考生为例,成绩计算时如果是违纪考生则取消违纪科目成绩,如果是作弊考生则取消所有科目成绩。使用规则文件描述如下:
<rule-set name="W jzbkscj" >
<java:import>Kmcjk</java:import>
<java:import>W jzbk</java:import>
<!--违纪作弊规则1,违纪考生取消该科目成绩>
<rule name="w jkscancel">
<parameter identifier="W jzblist">
<class> W jzblist</class>
</parameter>
<ja
va:condition>W jzbk.getWglb("bmh")="-2"</java:condition>
<ja
va:consequence>Kmcjk.updKmzf(W jzbk.getWglb("bmh"),W jz bk.getKmdm("bmh"),"-2");</java:consequence>
</rule>
<!--违纪作弊规则2,作弊考生取消所有科目成绩>
<rule name="zbkscancel">
<parameter identifier="W jzblist">
<class> W jzblist</class>
</parameter>
<ja
va:condition>W jzbk.getWglb("bmh")="-3"</java:condition>
<ja
va:consequence>Kmcjk.updKmzf(W jzbk.getWglb("bmh"),"","-3");</java:consequence>
</rule>
</rule-set>
通过以上规则调用,成绩处理系统实现灵活调整。
3 总结
随着上海市高考改革的不断深入,各类考试政策会在变化中不断调整完善,相关信息系统必须充分考虑高考改革探索的发展方向,能根据政策的变化而做出相应的调整和扩展。本文所设计的成绩处理系统,采用Drools规则引擎,实现业务规则与软件代码分离,只需改变XML规则就能满足业务的变化,从而满足了不同考试科目的需求,也满足了招生考试政策变化的需求。
参考文献
[1] 李瑞阳.上海高考改革的探索及趋势.中国考试2008;2008(12):23-27
[2] 上海市人民政府关于印发《上海市深化高等学校考试招生综合改革实施方案》的通知.上海教育网.2014-09-19
[3] Peter L. Drools Usage Manual[Z]. 2004-01-05. http://drools.org/drools-manual- 2.0-beta-12 a.pdf.
Design of Result Processing System of College Entrance Exam ination Based on Rule Engineer
Xu Na1, Xia Yan2
(1.Shanghai Municipal Educational Examinations Authority, Shanghai 200433, China;2.Shanghai Education Evaluation Institute, Shanghai 200031, China)
Abstract:Normally, the result processing systems satisfy the needs of examinations by hardcode, because of the differences of various kinds of examinations in Shanghai. However, hardcode leads to inflexibility. This paper presents a rules engine based result processing system. It uses rules to describe result processing logic, which enhances the flexibility of the system and satisfies the needs of various kinds of exam inations.
Key words:Rules Engine; Result Processing; College Entrance Examination
中图分类号:TP311
文献标志码:A
文章编号:1007-757X(2016)05-0044-02
作者简介:徐 娜(1982-),女,汉族,上海市教育考试院,硕士,研究方向:普通高校招生录取信息工作,上海,200235 夏 燕(1981-),女,汉族,上海市教育评估院,硕士,研究方向:高校学科评价工作,上海,200031
收稿日期:(2016.02.18)