基于规则引擎技术的铁路客运专线浮动票价系统研究

2011-09-11 04:55邢春晓
关键词:模式匹配票务浮动

张 勇,张 健,赵 洁,邢春晓

(1.清华大学信息技术研究院,北京 100084;2.北京大学信息科学技术学院,北京 100871;3.北京大学软件与微电子学院,北京 102600)

基于规则引擎技术的铁路客运专线浮动票价系统研究

张 勇1,张 健2,赵 洁3,邢春晓1

(1.清华大学信息技术研究院,北京 100084;2.北京大学信息科学技术学院,北京 100871;3.北京大学软件与微电子学院,北京 102600)

随着应用需求的快速增长,能够灵活、快速、高效地处理复杂业务逻辑已经成为中国铁路客运专线票务系统的迫切需求。研究如何将规则引擎技术应用到铁路客运专线票务系统中,利用规则引擎技术抽取铁路客运专线票务系统中的浮动票价计算策略,将其转化成标准的业务规则存储在规则库中,并集成到票价计算系统中,从而建立灵活地浮动票价计算系统。基于两种规则引擎工具开发了验证系统并进行性能测试和对比,分析两种系统优缺点,为铁路客运专线票务系统中浮动票价的实现提供参考。

规则引擎;业务规则;票务系统;浮动票价计算

无论是国内或是国际,市场规则的变化都是非常迅速的,从而要求现代企业的软件系统能够快速、灵活处理业务的频繁变化[1]。中国铁路客运专线的票务系统是复杂庞大的实时交易系统,覆盖面广,影响范围大,时刻受国家政策、市场需求变化的影响。传统的铁路票务系统的业务逻辑分散到了众多的应用程序中,当市场需求、国家政策有所改变,或者系统故障时,只能通过更改程序代码来变更和维护票务系统,从而耗费大量的人力和物力。本文针对铁路客运专线票务系统中的浮动票价,基于规则引擎技术,研究其相关技术和算法在铁路客运专线票务系统中的应用,构建原型试验系统,并通过测试和对比,为浮动票价的实现提供参考。

1 规则引擎技术

1.1 产生背景

规则引擎是推理引擎的一种,它起源于基于规则的专家系统。专家系统是人工智能技术的主要分支,是一种模仿人类思维方式基于知识或者其他认知形式进行推理的逻辑推演系统。基于规则的专家系统就是根据既定规则结合实际情况进行推理的专家系统,称为规则系统[2],规则引擎技术就是将业务决策从应用程序代码中分离出来,接受数据输入,解释业务规则,并根据规则做出业务决策[3]。规则引擎技术因其灵活性和易理解性被广泛使用[4]。

1.2 应用场景

为了创造更灵活的解决方案,越来越多的企业应用使用规则引擎技术。规则引擎中的业务规则可以用来描述价格优惠策略、税收方案等业务策略,还可以利用规则流定义工作流程,这样可以减少业务变化成本,缩短系统更新部署时间,同时,类自然语言描述的业务规则,可以很容易被业务管理人员理解和管理[1]。因此规则引擎适用于规则较多、变化速度快的系统中,它利用便于理解的自然语言来描述复杂的业务规则,并将这些规则存入特定的规则文件中,如果规则有所变化,业务人员只需要更改规则文件中的语句即可。一般的业务规则语句形式为if condition then action[5]。

在国际和国内,规则引擎作为处理复杂逻辑关系的一种先进技术方案,已经在电信、零售、保险、制造、运输、银行等行业获得广泛应用。

1.3 规则引擎原理

规则引擎是业务规则管理系统(Business Rule Management System)的核心工具,规则引擎包括:规则库、工作内存、推理引擎等模块,如图1所示。

图1 规则引擎结构图

推理引擎是规则引擎的核心部分,推理引擎包括3部分。

1)模式匹配器(pattern matcher):决定何时执行哪条规则。

2)议程(agenda):管理模式匹配器挑选出来的规则执行次序。

3)执行引擎(execution engine):负责执行规则。

模式匹配的速度决定了规则引擎执行的速度,Rete算法[6]是模式匹配器的算法,是在模式匹配中利用推理机的时间冗余性和规则结构的相似性,通过保存中间过程及模式共享来提高推理效率的一种模式匹配算法[2]。规则引擎的推理步骤如下:

1)将初始事实输入至工作内存。

2)使用模式匹配器将规则库中的规则和事实比较。

3)如果执行规则存在冲突,即同时激活了多个规则,将冲突的规则放入冲突集合。

4)解决冲突规则集,将激活的规则按顺序放入议程。

5)执行议程中的规则。

6)重复步骤2至5,直到执行完毕议程中的所有规则[7]。

2 系统设计

为了更深入地研究规则引擎技术,本文分别使用商业的ILog JRules和开源的Drools两种规则引擎管理工具开发了两种铁路客运专线浮动票价系统。下面分别介绍两种系统的设计方案。

2.1 基于ILog JRuls的客专浮动票价系统

ILog JRules是一个商业引擎,使用Rete算法实现规则匹配器的核心功能,为涉及业务规则管理和部署的每个用户提供全面的工作环境[8]。ILog JRules的支持的语言是类自然语言,易于理解。LOG JRules适合Java环境[9],方便管理者、业务分析人员和应用程序开发人员共同合作,实现业务规则的共享、组织、执行和管理。

2.1.1 系统结构

我们开发的基于ILlog JRules的系统原型是3层结构的体系架构,分别为:表现层、业务层和数据层。如图2所示。

图2 基于ILog JRules的系统架构图

表现层是使用JSP,JavaScript技术来实现的,展现给用户友好的界面,并且通过界面调用接口传递参数到业务层。

业务层中的业务接口接收表现层传递的请求,激活ILog JRules规则集,调用执行中的规则文件,进行业务处理;执行规则后的数据传递给抽象出来的实体对象,或者由业务规则直接存取数据到数据库中。

数据层就是系统使用的数据库,包括表、视图、存储过程等数据库对象。

2.1.2 设计规则库

设计规则库的步骤是:

1)建立规则包。每个规则包可能表示一项任务,例如在票价计算的规则包中,我们将基础票价计算定义一个规则包,而将附加票价的计算定义另外一个规则包。

2)定义规则流。规则流体现了规则处理的过程,规则流里面可以是规则包和子规则流。

3)写具体的规则文件、规则表、规则树。基于ILog JRules的客运专线浮动票价计算系统中的业务规则库包括6个规则包和一个规则流。每个规则包中包括一个或者多个规则文件,通过规则流判断规则包执行的优先级,规则执行时,通过规则条件判断执行路径,不同的条件分别执行不同的规则流分支。例如,车票折扣计算规则流的内容如下图3所示。

图3 ILog Jrule浮动票价计算规则流

图3中系统规则运行的流程是从圆圈表示的入口,然后判断发车的季节,根据季节的不同,执行不同的规则流的分支。例如:春运期间只享受旅客折扣,其它折扣不再计算,因为此分支没有别的规则包;如果是旺季,旅客会再享受产品折扣,因为旺季分支上有产品折扣的规则包。标准规则文件的代码如下:

如果

如下的所有条件都不成立:

-‘车票’的发车时间在“08:00”到“12:00”之间

-‘车票’的发车时间在“15:00”到“20:00”之间那么

给予‘车票’85%的“非高峰时间乘车”时间折扣。

2.2 基于Drools的客专浮动票价系统

Drools又称JBoss Rules,是目前使用最广泛一种开源的业务规则引擎工具,同时适用于开发人员和业务管理人员[10]。它采用了高效的模式匹配算法Rete-OO算法,该算法增加了可与面向对象语言无缝连接的节点类型,实现了事实集与规则集的快速匹配。Drools标准的规则文件是drl类型的,drl(Drools Rule Language)是简单且轻量级的规则语言,并且支持其他语言对其进行编译和执行[10]。

2.2.1 系统结构

本文设计的基于Drools的浮动票价计算系统的系统架构包括5层,分别是表现层、业务层、构建层、持久层、数据层,如图4所示。

图4 基于Drools的系统架构图

表现层使用JSP,JavaScript技术来实现,主要功能是展现给用户友好的界面并且传递参数到业务层。

业务层中,将经常变化的业务规则存储在Drools的规则库中,将系统中稳定的规则用Struts实现,从而提高效率。

构件层使用两个轻量级的框架Mule和Spring传递消息到持久层。

持久层使用DAO文件作为访问数据库数据的接口。

数据层使用开源的Mysql数据库,用于存储基础的票据信息。

2.2.2 设计规则库

基于Drools的票价计算的业务规则中包括5个规则文件。其中,Person Discount Rules.drl,Product Discount Rules。drl,Time Discount Rules.drl,Time Segment Discount Rules。drl4个规则文件中都是计算票价的各种规则,normal。drl文件是规则流的起点,如图5所示。

图5 基于Drools的浮动票价计算主流程图

基于Drools的规则存储结构中有4个流程图:PeakS.rf,Slack S.rf,Summer T.rf,Ticket Rule Flows.rf。在normal.drl文件中定义了规则流的起点是Ticket Rule Flows,即Ticket Rule Flows.rf是主规则流程图,其余的3个是Ticket Rule Flows.rf的子流程.基于Drools的规则文件代码如下所示。

其中,salience 100表示优先级是100,即最高优先级。

3 系统对比

为了比较基于两种规则引擎工具开发的订票系统的优缺点,我们利用LoadRunner工具,模拟大量用户并发访问系统,分别对两个系统做性能测试[11]。我们的实验环境是Intel双核2.26 GHz,内存2G,硬盘速度7200转/秒。测试结果如图6所示。

图6 系统性能测试对比图

图6中,位于上方的曲线是基于Drools的铁路浮动票价计价系统的性能测试图,下方的曲线是基于ILog JRules的浮动票价计算系统的性能测试图,横坐标是并发用户数,纵坐标是平均响应时间。从图6中,可以得出如下的分析结论:

1)在我们的测试环境下,基于ILog JRules的票价系统最多承受400人并发时,Tomcat服务器无法正常运行。基于Drools的票价系统最多承受360用户同时并发查票时,Tomcat服务器无法正常运行。说明ILog JRules和Drools本身能承受的并发压力高于400和360,系统压力测试的瓶颈在于Web服务器。如果想测试规则引擎工具本身的抗压性能,可以利用负载均衡等技术,先提高Web服务器的性能,再进行规则引擎工具的测试。

2)基于Drools的系统随着并发用户的增加,系统平均响应时间逐渐增加,这满足的性能测试的一般情况,基于ILog的票价系统,随着并发访问用户的增加,响应时间的大致趋势也是逐渐增加的,但是在200用户和350用户并发时,响应时间稍微跳转,时间变短,说明基于Drools开发的系统稍微稳定。

为了公平测试对比两个系统,两系统使用的Web服务器都是Tomcat,并且分配的内存和线程数一致。在图6上可以明显看出基于ILog JRules的票价系统响应时间比基于Drools的票价系统响应时间短,速度快。另外在使用过程中,我们也发现了ILog JRules提供了比较友好的用户界面,同时支持中文的规则文件,以及提供了实时的规则加载和回滚等功能。在这些方面,Drools做的就相对比较弱。

通过比较,我们认为在实际的系统中,可以结合这两者的优势来设计系统。对票价系统中的规则进行分级,将需要实时性要求高,更改非常频繁的那些规则,可以由ILog JRules来管理,以利用其良好的用户接口和更高的性能;其他的一些规则,则可以用Drools来进行管理,从而降低系统开发和运行维护的成本。

4 总结和下一步工作

本文主要阐述了基于规则引擎的铁路客运专线浮动票价原型系统的实现和测试,主要以规则引擎技术为核心,研究其在铁路票价服务中的作用和使用方法,并通过LoadRunner对基于两种工具开发的浮动票价系统原型进行性能了测试,比较两个系统的优缺点,给出实施的建议。

通过对基于规则引擎的铁路浮动票价系统的研究,我们对规则引擎和铁路订票的业务有了比较深入的理解。同时我们也认识到使用不同规则引擎工具开发的时候,存在的一些问题,下一步的工作将在已有的体系架构和原型系统的基础上,着重于性能的提高和规则引擎工具本身的优化,来支持大规模的互联网订票引擎的研究和开发并且找到适合票务规则的匹配算法,提高效率。

致谢:浮动票价需求分析是在易程公司工作人员的指导下完成的,在系统的开发过程中IBM公司提供了部分实验开发环境,在遇到技术问题时,也有相关人员解答,在此对这两个公司表示感谢。同时,感谢铁道部-清华大学科研计划“客运专线客户服务应用模式及关键技术的研究”的支持,和863目标导向项目“支持数据驱动型应用的跨域共享与服务支撑平台研发”的支持。

[1]Uwe Lammel.Business Rules make Business more flexible[A].Third Conference on Baltic Business and Socio-Economic Development[C].2007:1-10.

[2]陶晓俊.规则引擎在企业应用服务中的研究和实现[D].上海:华东师范大学,2007.

[3]刘际.规则引擎在业务逻辑层中的应用研究[D].大连:大连海事大学,2007.

[4]Davide Sottara,Paola Mello,Mark Proctor.Adding Uncertainty to a Rete-OO Inference Engine[A].RuleML,LNCS 5321[C].2008:104-118.

[5]Jose F,Mejia Bernal,Paolo Falcarin,et al.Dynamic Context-Aware Business Process:A Rule-Based Approach Supported by Pattern Identification[A].Proceedings of the 2010 ACM Symposium on Applied Computing[C].2010:470-474.

[6]Charles L,Forgy.Rete:a fast algorithm for the many pattern/many object pattern match problem[J].Artificial Intelligence,1982,19(1):17-37.

[7]刘金龙.Drools规则引擎模式匹配速率优化研究及实现[D].成都:西南交通大学,2007.

[8]IBMWebSphere ILOG JRules产品[EB/OL].(2010-05-15)[2010-08-20]http://www-01.ibm.com/software/cn/websphere/ilog/products/jrules/index.html.

[9]黄皞.业务规则管理系统ILog JRules规则引擎分析[D].郑州:解放军信息工程大学,2006.

[10]Raluca Z,Laurentiu V,Costin B.Semi-automatic Composition of Geospatial Web Services Using JBoss Rules[A].RuleML,LNCS 5321[C].2008:166-173.

[11]Liang S L,Paul F,Wan H,et al.OpenRuleBench:an analysis of the performance of rule engines[A].WWW[C].2009:601-610.

〔编辑 李海〕

Floating Price System for Railway Passenger Dedicated Lines based on Rule Engine

ZHANG Yong1,ZHANG Jian2,ZHAO Jie3,XING Chun-xiao1
(1.Research Institute of Information Technology,Tsinghua University,Beijing,100084;2.School of Electronics Engineering and Computer Science,Peking University,100871;3.School of Software and Microelctronics,Peking University,Beijing,102600;)

With the fast increase of application requirements,it is an urgent demand for the ticket system of China Railway Passenger Dedicated Lines(CRPDL)to cope with the complex business logics flexibly,rapidly and efficiently.This paper investigates how to apply the rule engine technology on CRPDL applications,that is,to use rule engine technology to extract the floating price calculation strategies from the applications,then transfer these strategies to standard business rules in the rule base,and integrate them to the ticket price calculation system,and finally build a flexible floating price calculation system.Based on two rule engines,we developed the prototype systems and compared the performances.The comparison between the two approaches is analyzed to provide suggestion to implement the CRPDL ticket system.

rule engine;business rule;railway ticket system;floating price calculation

TP399

A

1674-0874(2011)01-0025-05

2010-10-25

铁道部基金资助项目[J2008X009];科技部863目标导向资助项目[2009AA01Z143]

张勇(1973-),男,河南商丘人,博士,副研究员,研究方向:数据库。

猜你喜欢
模式匹配票务浮动
浅谈城市轨道交通车站票务运作风险管控
电连接器柔性浮动工装在机械寿命中的运用
地铁多元支付与票务安全融合发展研究
文旅部出台国内首个演出票务领域行业标准
基于模式匹配的计算机网络入侵防御系统
论资本账户有限开放与人民币汇率浮动管理
具有间隙约束的模式匹配的研究进展
一种用于剪板机送料的液压浮动夹钳
OIP-IOS运作与定价模式匹配的因素、机理、机制问题
带有浮动机构的曲轴孔镗刀应用研究