APP下载

基于XML的数据流转换在民航离港系统中应用

2020-05-22阚劲军王晓东

计算机技术与发展 2020年5期
关键词:离港登机牌数据流

阚劲军,余 扬,王 欣,王晓东

(1.中国民航信息网络股份有限公司,北京 101318;2.中航信民航旅客服务智能化应用技术重点实验室,北京 101318)

0 引 言

国内的民航业正处在迅速发展之中,客运业务是民航业务的重要组成部分,每天全国的机场都会处理大批量的旅客出行。目前,机场使用的办理旅客登机的信息系统,即离港系统(departure control system,DCS)[1-2],处理流程包括旅客值机和登机两部分。在旅客值机时,打印该名旅客登机牌,如果有行李,还需要打印行李牌。这些纸牌都是旅客乘机的重要凭证。因此,打印工作在离港系统中尤为重要。

由于机场所采购的登机牌和行李牌打印机各不相同,而且不同机场对提取的旅客打印信息也要求各异,民航信息服务提供部门的离港主机数据流格式目前也有0号、1号、2号等数据流之分。为了适应各地机场的具体要求,在离港系统投产中往往需要修改应用程序以适应当地特定的打印要求,造成应用程序的版本不一致,不便于日常维护,也给系统投产造成很大被动。

目前各地机场打印问题都比较突出。由于市场上打印机型号众多,打印机软件版本不一致,各种打印机的反馈信息也不一致,离港系统在各地机场都是被动地适应当地打印机。由于数据流多种多样,打印机情况千差万别,没有一个统一标准,因此系统的投产实施在打印机测试上耗费精力过多。

为了彻底解决离港系统中打印登机牌和行李牌时受制于当地机场环境的被动局面,作者在离港系统开发和维护过程中,创造性提出了基于DTD数据类型定义[3]以及XML格式[3]描述,通过以XML标签格式配置登机牌数据流和行李牌数据流各子项的具体转换规则,使得离港前端应用程序可以灵活处理各地机场打印的不同情况,扭转了离港系统在投产中的被动局面。

1 XML及DTD文档应用介绍

XML(可扩展标记语言)是目前业界流行的数据表示形式,脱离于任何具体编程语言。正规格式的XML文档通常由三部分组成[3-4]:一个可选的序言(prolog);文档的主体(body)是XML文档的关键部分,由一至多个元素组成的层次树形式;可选的结尾(epilog)包括注释、处理指令等。元素是XML标记的基本组成部分,所有XML数据都要包容在元素之中。DTD规定了XML文档的文法结构,使XML解析器能够理解和解释该文档的内容,在DTD中包含可以在XML文档中出现的标签列表,规定标签的类型、属性。

XML主要的优点是易于建立和易于分析,既是平台无关的、又是厂商无关的,独立于编程语言,良好的可扩展性以及强大的工业支持。DTD[3]实际上可以看作一个或多个XML文件的模板,这些XML文件中的元素、元素的属性、元素的排列方式、顺序、元素能够包含的内容等,都必须符合DTD[5-6]中的定义。XML文件中的元素,即创建的标记,是根据应用的实际情况来创建的。

2 在离港系统打印功能中使用基于XML的数据流转换

离港主机中的旅客登机牌数据流是在值机接收旅客成功后,由DCS系统发给离港前端应用程序的、包含该旅客有关值机、登机信息的字符串,通常包括三部分:数据流头部、数据项、结尾标识。

2.1 数据流转换的功能定义

数据流转换提供一个具有极强兼容性的通道,它能够接受任何形式的原始数据流,并将其转换为当地打印机所能接受的输出形式。通过这个通道,将离港系统打印功能处理的数据流和打印机隔离开,真正送往打印的是转换后的定制数据流。这种设计,改变了以前数据流和打印机的网状关系,简化为图1所示的对应关系。

图1 数据流和打印机的对应关系

打印模块在各地机场投产实施过程中,提供方便灵活的配置管理方法,并可以支持不同的打印机、不同的打印格式。图1中可以支持的打印机设备厂商举例有IER,HDL,SATO,BOCA,Futitec等。

2.2 数据流转换的规则定义

(1)数据来源可以有多个,但是在某个机场针对某一种打印机只能有一种数据流发出。

(2)数据流转换规则可定义,根据不同的规则进行数据流转化,转化后的数据流发送给打印机。

数据流转换规则包含数据流头部定义、尾部定义、每个数据项的定义。

转换规则定义:

·数据流头部,字符串格式,例如:BTP0101 行李牌 BTP010102,02代表件数。

·数据流尾部,字符串格式,例如:$。

·数据流内容定义:每项以#开头;项目编号为固定的两位数字;顺序从小到大;各项目的长度需要限制;各项目中是否有空格,以及空格的具体位置;各项目中是否有特殊字符,如: ;日期项目的具体格式,如:年份以四位还是后两位来标示,月日的表现形式:如05Feb;条形码的定义格式;有无LOGO标示;中文项目是否支持。

(3)根据不同的打印机交互模式进行打印。支持延时、PROK打印模式,支持ETX STX打印,支持CUTE平台打印、支持多PEC打印。

(4)打印模块要可靠,模块的独立性要强,要高内聚、低耦合。

2.3 基于XML的数据流定义格式以及这种定义格式能够达到的数据流转化规则

(1)数据流配置的XML定义格式设计。

数据流文件样式(以登机牌数据流为例)(见图2)[7-8]:

图2 登机牌数据流转换XML配置文件示例

相应DTD文件(以登机牌数据流为例)如图3所示:

图3 数据流转换DTD数据类型定义文件示例

(2)能够达到的数据流转换规则。

基于上述设计的数据流格式,可以实现对数据流做如下转换:

·变换数据流头部,实现登机牌数据流(CP格式)转换成行李牌打印要求的格式(BTP格式)。

·对登机牌数据流可以实现由不同进纸口打印输出。

·对行李牌数据流可以实现多PEC打印支持。

·根据机场打印机对数据流尾部的具体要求,决定是否保留$符号。

·实现选择性删除主机发来的数据流项。即:凡是不在XML配置文件中的数据流项,都不做保留。

·实现对数据流项的转换要求。

·增加不在原始数据流中的数据流项目。

·无限制增加XML配置文件的处理策略,具有强大的扩展能力,从而更好地进行系统维护和扩展。

3 程序框架结构及模块的部分类设计和实现过程

3.1 框架设计

总体框架中,展示了数据流转换的整个流程。离港前端程序通过读取BPP和BTP的XML配置文件,获取当前的转换设置规则,然后根据离港系统下发的旅客登机牌数据流和行李牌数据流的具体内容,按照规则要求转换成目标数据流内容,并发送给BPP和BTP打印机进行打印输出。

总体框架见图4。

图4 总体框架

框架剖面图从另一个角度阐释了离港系统中旅客登机牌数据流和行李牌数据流转换的处理流程,通过XML解析控件[9]获取XML格式的数据流转换规则标签内容,并将离港主机或者备份系统产生的旅客登机牌数据流或者行李牌数据流作为输入项,按照获取的转换规则进行转换输出并最终打印成需要的数据流内容。

框架剖面图见图5。

图5 框架剖面图

3.2 部分类结构图

图6展示了数据流转换模块的部分类结构设计,其中IElement是接口类,Citem是接口的实现类,并调用数据流子项处理类Citemcont来实现具体的数据流项内容转换、截取等特定处理。

XML的元素节点映射成类结构图如图6所示[10-11]。

图6 XML元素节点映射成类结构图

图7展示了数据流转换类与数据流规则解析类之间的调用关联关系。

数据流转换的流程映射到类结构图如图7所示[12]。

图7 数据流转换的流程映射到类结构图

4 结束语

基于XML设计的数据流配置文件,使离港系统在不修改程序代码的前提下适应各地不同类型的打印机,定制生成需要格式的数据流[13-16],成功打印出登机牌和行李牌。

目前,基于XML设计的数据流转换功能已经实现,并在全国若干机场投产使用。根据现场反馈的信息,该功能模块极大地满足了当地机场的打印需求。

猜你喜欢

离港登机牌数据流
优先级驱动的泛化航电网络实时性能分析
汽车维修数据流基础(上)
汽车维修数据流基础(下)
机场里的小旅行
机场里的小『旅行』
数据流安全查询技术综述
旺角暴乱嫌犯被禁止离港
爸爸的登机牌
注意!别在朋友圈晒登机牌