杜轩轩,刘 云
(北京交通大学 通信与信息系统北京市重点实验室,北京 100044)
经过多年的建设,北京轨道交通信息化建设基本覆盖了各专业业务,形成了网络化运营的格局,但也存在不足,主要表现在以下3个方面:
(1)信息共享程度低
尽管各业务系统间存在着大量的信息交互,但由于缺乏统一、规范的信息交互机制,各信息系统之间无法实现数据资源的共享,导致业务信息难以实现高效的综合处理,各信息系统之间难以联系协调、共同发挥作用,使得数据处理、分析及报表管理分散,造成重复和缺失。
(2)各系统之间联动性差
轨道交通运输系统本身就是一个“车、机、工、电、辆”组成的联动机,各业务系统间存在着业务联动关系。例如,在火灾情况下,防灾报警信号会传到各系统,触发各系统的联动模式,FAS (防灾报警) 系统、ATC (信号与通信) 系统、BAS (环境与设备监控) 系统、AFC (自动售检票) 系统、PIS(乘客信息显示)系统等多个系统应协调工作。但现有的信息系统彼此孤立、异域异构、缺乏统一接口规范,它们之间的连通比较困难且成本较高,各系统操作员只能了解本专业所关心的系统状态,难以及时获知其它专业的状态。目前,为实现运营的协调统一管理,不得不加入人工干预,这极大降低了可靠性、实时响应性和运营效率。
(3)各子系统缺乏统一的标准
各业务信息系统都采用不同的软硬件平台,人机交互界面多种多样,信息交互接口也不统一。给系统间信息交互和共享带来极大困难,严重影响了信息的充分利用以及综合决策水平。
(4)缺少与外部相关系统的接口
城市轨道交通作为综合交通系统的一个重要组成部分,与道路公共交通、铁路、航空等存在着大量的数据交换需求,但现有的信息系统未考虑到对外接口需求,这对城市轨道交通系统的长远发展十分不利。
以上的问题与北京作为首都的地位和建设现代国际城市的要求是不匹配的,所以基于以上的考虑,很有必要建立一个北京城市轨道交通的数据交换平台,整合各个信息系统的数据资源,为北京城市轨道交通的发展提供有力的保障,从而推动整个北京的城市建设。
XML表示可扩展标记语言,是一种高度结构性的、具有自我数据描述功能以及可验证性的语言。XML有一套规则使用户可以自己定义标记和属性,这些标记和属性可以构成一些标准,用户可以按照这些标准来开发应用程序,因而具有很好的扩展性。
由于可以借助验证规则来规范一个XML文件的内容与结构,保证XML文档的有效性,同时XML是非专有的并易于阅读和编写,就使得它成为在不同的应用间交换数据的理想格式。更重要的是,现在的系统多半使用关系型数据库,如Oracle,SQLServer等,XML以上的特点以及其本身突出表现数据结构和语义的特点,使其自然地与数据库结合在一起。一旦将XML数据文件与数据库表关联起来,不但可以保留关系数据库表的结构信息,还可以利用XML文档的优势在网络及数据库间交换数据,并解决不同数据库系统及数据关系、语义定义等数据表达方面的差异,如对应关系中字段内容不同、字段命名不同、数据类型不同等。这将较好地解决企业应用系统间信息源集成的分布和异构等问题,使得数据交换的手段更为高效。
Xquery即XML Query,是W3C所制定的一套标准,用来从类XML文档中提取信息,类XML文档可以理解成一切符合XML数据模型和接口的实体,他们可能是文件或RDBMS。Xquery是查询XML的语言,类似于RDBMS的SQL,目前主流的RDBMS如Oracle, DB2, SQLServer都支持Xquery。本平台即利用Xquery在已注册的系统中查询用户所请求的数据。
JMS是消息队列服务(Java Message Service)的简称,用来在2个应用系统之间或是分布式系统之间发送消息。不同于传统的面向消息的中间件(MOM)。JMS定义了统一的API,所以它的实现与具体的厂商无关,更有利于产品移植。通常情况下,JMS包括3部分内容:2个JMS客户端和1个JMS服务器。
JMS客户端是使用JMSAPI发送和接受消息的应用程序,JMS服务器是任何实现JMS规范的应用程序或者应用程序的一部分。JMS客户端通过JMS服务器发送消息以进行通信。主要有2种通信方式:
(1)点对点模式(Point-to-Point)
消息生产客户端向一个特定的队列发送消息,然后消息消费客户端从该队列获取信息,如果消费客户端没有从该队列获取信息,该信息将一直保留在队列中,直至消费客户端取走信息或该信息过期,所以在该模式下,通信以消息被取走而结束,客户端和消费端不需要同时处于运行状态,只有一个消费者能获取信息。本平台使用的就是第一种模式。
(2)发布者/订阅者模型(Pub/Sub模式)
发布者向一个特定的消息主体发布消息,所有对该主题感兴趣的订阅者都可接收该消息,所以这种模式类似于匿名公告板,多个消费者可获得消息。发布者与订阅者存在时间差上的依赖性,发布者必须首先建立一个订阅,以便订阅者订阅,除非订阅者建立了持久的订阅,否则订阅者必须保持持续的活动状态以接受消息。
本系统可分为4个模块,接入模块,交换模块,基础服务管理模块,消息路由模块,如图1。
处理应用信息系统的接入,主要功能是实现系统和平台之间的数据读写。对于新建的系统比较简单,利用java语言跨平台的优势,只需要按照规定实现一个可实现数据读写功能的接口即可接入平台;对于已有系统,改写系统代码的代价比较大,解决的办法是采用接入新系统的方法搭建一个适配器,由适配器来代替已有系统与平台交互。
图1 北京轨道交通数据交换平台框架结构
基础服务管理模块包括系统注册模块,事务管理模块,日志管理模块。系统注册模块负责整个系统的安全和授权部分,每个系统必须在平台注册并且得到平台的同意响应后才能通过平台和其它系统进行数据交换;事务管理模块保证信息交互过程中的事务安全机制;日志管理模块通过控制台、文件和数据库3种方式记录平台信息交互的日志,以备日后查询分析。
交换模块是整个平台的核心部分,是异构数据交换的处理部分,以层次化的结构来组织。主要包括服务层、协议支持层和数据格式转换引擎。
(1)服务层完成信息系统的接入服务,提供平台自身的数据库服务,该数据库主要存放系统日志、消息队列相关持久化信息,保证交换平台运行过程中需要持久化的信息能够正常存储,与各个接入信息系统不发生关系。本层还可以部署其它服务,这个视系统的复杂性可进行后期扩展。
(2)数据协议层提供轨道交通信息交换平台上需要交换的各种数据协议支持服务。服务层完成系统的接入后,将各个信息系统发送的JMS消息传送到本层,本层通过解析消息的相关记录,可得到该消息交换的数据所采用协议。通过判定协议后,即调用对应数据协议的交换处理模块处理该信息交换任务。
(3)数据格式转换引擎的功能主要是为了实现不同数据格式的转换。转换是基于数据内容的,也就是保持了原有的数据内容不变,只是将其外在的表现形势做了转换。各种数据格式之间转换的中间格式为XML,即平台先将待转换格式转化为XML格式,然后再将XML格式转化为目的格式。
消息路由模块位于平台框架结构的最底层,负责处理各个系统的互达路由,保证系统信息正常到达指定系统。整个交换中使用的信息格式需要进一步研究符合要求的统一的数据交换规范。该层提供信息系统数据流的路由配置和实现。比如一个数据流由系统A发出(文本格式),经过系统B(XML格式),最终到达系统C(Html)。就可以在系统配置文件里添加一条路由,表示整条数据路径。平台路由模块启动时,就能加载这些配置好的路由信息,在系统运行时,只要有符合条件的数据流,系统就会按照配置的路由来传送数据到目的系统。
本平台的数据交换需要系统平台之间发送各种消息,这些消息的传递是通过中间件Jms规范的一种实现OpenJMS来完成的,目前主要发送的消息有:
(1)注册消息(Registration Request);
(2)注册相应消息(Registration Response);
(3)请求消息(Data Request);
(4)请求响应消息(Data Response)。
以上消息的消息体均为XML格式,并且满足各自的标准规范。
(1)注册流程
A系统要加入平台进行数据交换,必须先进行注册,获得平台的授权。A系统向平台的Registration Buffer队列发送注册请求(Registration Request),平台从RegistrationBuffer获得注册请求并进行解析,若经验证A系统合法,则向Registration Response Buffer队列发送成功的注册响应,包括A系统的注册有效,目前平台中已注册的系统列表。否则发送失败的注册请求响应,包含注册失败的原因。A系统从Registration Response Buffer获得注册请求响应,若注册成功,则可开始进行数据交换。
(2)数据交换流程
现在A系统需要西直门地铁站的涵洞数据,A系统将其请求封装在请求消息(Data Request)中,发送到平台的Request Buffer队列,平台从该队列获得请求消息并进行解析,然后在已注册的系统中进行查询,发现B和C系统含A系统所请求的数据。平台分别向B和C的接收队列(Receiver- BuffrFor X)转发A的数据请求,B和C从各自的接受队列获得数据请求后,查询各自系统,将查询到的数据封装在各自的请求响应消息中,发送到各自的发送队列(Sender BuffrForX)。平台从B和C的发送队列中获取数据,封装成数据请求响应,并转化为A系统的数据格式,发送到A系统的接受队列(Receiver Buffer ForA),A系统从该队列中获取请求的数据。
本平台数据交换的实现基于XML这一网络“通用语言”,充分利用了XML可拓展,易组织,自描述性的特点;利用Jms作为系统之间传递消息的中间件,由于Jms定义了统一的接口,所以它的具体实现与应用程序是没有关系的。所以使用该平台对应用系统的侵入性很小,系统只需按照规定实现一个可实现数据读写功能的接口就可以使用该交换平台。该平台目前正在开发中,不过前期的测试表明该平台能够很好的完成异构数据的交换功能,而且具备上述与应用系统之间的松耦合的特点。相信随着本平台的开发完成,一定能够克服现在北京轨道交通决策分析信息单一,各系统无法共享信息的问题,很好的服务北京市轨道交通的发展。
[1]张丽华. 基于XML的异构数据交换技术研究[J].苏州科技学院学报(工程技术版),2010,23(2):77-80.
[2]金 广. 校园异构数据集成平台研究[J]. 湖南科技学院学报,2009,30(12).
[3]时贵英,吕洪涛. 可扩展异构数据交换系统的研究及实现[J]. 长江大学学报(理工卷),2009(2):217-218.
[4]张晓玲,刘洪基. 分布式异构数据交换和共享系统的设计和实现[J]. 楚雄师范学院学学报,2009,24(6):1-5.
[5]魏晓东. 城市轨道交通自动化系统与技术[M]. 北京:电子工业出版社,2004.
[6]张振江,刘 云. 北京城轨交通信息交换平台的研究[J]. 交通运输系统工程与信息,2006,6(5):129-132.
[7]罗玉玲. J2EE应用开发详解[M]. 北京:电子工业出版社,2009.