徐娜,夏燕
?
基于規則引擎的高校招生考試成績處理系統設計
徐娜,夏燕
摘 要:由于上海市各類高校招生考試政策不盡相同,成績處理系統一般采取硬編碼的形式滿足不同考試項目需要,靈活性較差。提出了一種基于規則引擎的成績處理系統模型,通過規則定義執行成績處理邏輯,提高了系統的適應性,快速滿足多種考試項目的需要。
關鍵詞:規則引擎;成績處理;高校招生
當前上海市高校招生考試分為秋季高考、成人高考、春季高考、三校生高考等四大類。四類考試的科目大相徑庭,成績處理邏輯也不盡相同。以上海高考為例,自1985年自主命題至2012年,考試科目設置先后經歷了“3+1”、“3+綜合+1”兩個階段[1],2012年取消了綜合能力考試重新回到“3+1”模式?,F行的上海高考方案中,考試科目有語文、數學、外語3門必考科目,另外加試政治、歷史、地理、物理、化學、生命科學中任一門課。根據《上海市深化高等學??荚囌猩C合改革實施方案》, 2017年起,高考成績由語文、數學、外語3門統一高考成績和學生自主選擇的普通高中學業水平等級性考試科目成績構成,作為高等學校錄取的基本依據[1]。
由于不同考試的成績處理業務邏輯不盡相同,同一類型考試每年政策也可能有所調整,這就要求成績處理系統能夠快速、靈活、準確地適應變化。如果將數據處理業務邏輯的代碼寫死在功能模塊中,那么系統升級會復雜且易出錯。為了節約時間,規避系統升級可能造成的風險,我們采用規則引擎將數據處理相關的業務規則從程序代碼中分離出來,將硬編碼的處理過程轉換為軟編碼的規則集,提高系統的適應性。
成績處理是指將考生考試科目的所有答題內容的評閱結果按照業務規則進行加和、折算,再與加分、違紀作弊等信息合成,并經過校驗后,最終得出考生的考試結果?;緲I務過程包括成績采集、成績合成、成績校驗。
成績處理系統的輸入為評卷讀卡系統交付的數據庫、已完成人工評閱的登分卡、考生信息庫、考場編排庫、缺考庫、條形碼庫、科目代碼庫、違紀作弊信息庫、加分庫、試卷結構以及其他成績處理所必須的信息。主要功能模塊如圖1所示:

圖1 成績處理系統功能模塊圖
數據流程如圖2所示:

圖2 成績處理系統數據流程圖
成績處理之前通過系統管理模塊對部分數據表、分數精度、等參數進行設置,并通過數據采集模塊導入科目代碼庫、違紀作弊庫、缺考庫、報名庫等基礎數據,以及網閱數據、聽力障礙和小語種等特殊成績數據。規則管理模塊負責使用規則描述成績處理的業務邏輯。成績合成與校驗模塊依據預先設定的參數、導入的數據,結合規則集合執行操作。
所有涉及考生信息的信息表均以報名號或準考證號作為唯一標識。以2015年上海市秋季高考為例,考試科目有語文、數學、外語、相關科目(政治、歷史、地理、物理、化學、生命科學任一門),其中報考單報高職??频目忌粎⒓酉嚓P科目的考試。部分信息表的主要字段及關系如圖3所示:

圖3 成績處理系統主要信息表結構圖
由圖3我們可以看出涉及考生成績的信息表有客觀題成績表、主觀題成績表和科目成績表,其中客觀題成績表、主觀題成績表中的數據由外界獲取,科目成績表與考生成績表是基于其他信息表生成的。科目成績表因為含有大題分可以用于成績復核,考生成績表用于最終對外發布及錄取。需要注意的時,按照教育部相關文件規定的信息標準,分數均取整,因此各科目總分字段均使用整數型。與其他考試不同的是,上海市秋季高考中的相關科目成績會進行調整,并且以調整后分數計入總分,所以考生成績表中定義了兩個相關科目的成績字段。
根據試卷結構和現有數據定義成績合成的規則,在客觀題成績導入、主觀題成績采集都完成以后,對所有成績信息按照規則進行加和、折算,初步得出各個考生各科目成績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>
通過以上規則調用,成績處理系統實現靈活調整。
隨著上海市高考改革的不斷深入,各類考試政策會在變化中不斷調整完善,相關信息系統必須充分考慮高考改革探索的發展方向,能根據政策的變化而做出相應的調整和擴展。本文所設計的成績處理系統,采用Drools規則引擎,實現業務規則與軟件代碼分離,只需改變XML規則就能滿足業務的變化,從而滿足了不同考試科目的需求,也滿足了招生考試政策變化的需求。
參考文獻
[1] 李瑞陽.上海高考改革的探索及趨勢.中國考試2008;2008(12):23-27
[2] 上海市人民政府關于印發《上海市深化高等學??荚囌猩C合改革實施方案》的通知.上海教育網.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)