柳吉庆,石 磊,张 军
(中国电子科技集团第38研究所,合肥 230088)
基于消息的系统异步集成框架设计与实现
柳吉庆,石 磊,张 军
(中国电子科技集团第38研究所,合肥 230088)
为实现异步方式下的应用信息系统集成,建立了一个基于消息的系统集成框架,设计了该框架下的信息结构和分类体系,阐述了基于消息实现异步集成的消息产生和消费过程,最后介绍了一个基于该框架实现的外购件器材信息同步应用实例。
系统集成;消息服务;集成规范;企业服务总线
随着信息技术和网络技术的飞速发展,企业信息系统的数量和规模都在不断增长,各个信息系统之间的数据同步和共享需求日益强烈,为实现企业内应用系统之间的互连互通,需实现企业应用之间的系统集成[1]。目前企业应用系统集成的数据信息交互主要可分为两种方式(图1):同步交互方式(Synchronous)以及异步交互方式(Asynchronous),二者具有不同的适用业务场景[2]。同步交互方式下,通常是一个请求(request)/应答(response)的过程,交互请求方在发出请求后会等待返回相应的结果(不管请求成功还是失败)后才会执行后续的业务操作,例如Web服务调用属于典型的同步交互方式。与同步交互方式不同的是,异步交互方式下的交互发起方只需要负责将相关信息发送至特定“消息容器”中,并不需要等待接收方接收或处理该消息,消息的发送方和消费方并不直接进行通信,每一个消息包含了处理它的业务逻辑所需要的数据以及数据状态。
针对应用系统集成方式,国内外众多学者从不同角度展开了相关的研究。Web服务是一种使用较为普遍的系统集成方式,相关学者就Web服务的语义表达、发现方法、权限控制等问题展开了大量的研究,但Web服务通常仅适用于同步交互方式。在消息集成的研究方面,目前对具体实现过程的完整表述还比较少。异步交互方式下应用系统之间是一种松散耦合关联,当涉及到多个应用系统之间的数据同步共享时,采用基于消息的异步交互方式更加合理,本文将主要就企业应用集成中基于消息的异步交互方式相关问题进行具体阐述。
图1 信息同步交互方式与异步方式
图2为基于消息的企业信息系统集成总体框架。首先为保证不同信息系统对消息都能够正确进行发送和解析,需要针对消息的分类、消息主体结构、消息身份标识等内容制定一系列统一的消息集成规范,各个应用系统都应该按照相关规范的约定产生或消费消息;消息服务器是消息的载体,提供了消息管理的一系列功能,包括消息的分发、分类、存储、监控、安全控制等,根据消息的使用用途可将消息分为队列(Queue)和主题(Topic)两大类,另外因为消息产生和使用的异步性,还需要考虑消息的持久化存储问题,可通过文件服务器或数据库服务器进行消息的物理存储。
图2 消息集成总体框架示意图
2.1消息的结构设计
消息一般由消息头(Message Header)、消息属性(Message Property)以及消息体(Message Body)三部分组成[4],如图3所示。
1)消息头
符合JMS消息规范的若干属性,例如消息优先级、消息分组信息、消息过期标示、消息产生日期等,通常为固有属性,和具体的业务无关。
2)消息属性
消息头所包含的属性字段往往不能满足实际的业务需求,如果需要除消息头字段以外的值,就可以使用消息属性,消息属性包含属性名和属性值两部分。
3)消息体
消息体是消息的核心部分,主要的业务数据信息包含在消息体内,一般来说,消息体的类型可以为文本、集合、流或对象等多种类型。
图3 消息结构示意图
本文设计了四个自定义消息属性,以满足消息产生和消费的匹配要求,如表1所示。
其中,Sender为消息的产生者标识,可以是为不同应用系统指定的唯一标识(例如对应域名或系统英文缩写简称);Level为消息的描述内容等级,可分为错误(ERROR)、信息(INFO)和警告(WARN)等;TypeName为消息的分类关键词,主要是为了方便消息使用方根据该属性进行消息过滤;Receiver为消息指定接收者,其取值规则与Sender类似,可以为单值、集合或空(广播类消息)。
消息体是消息的主体内容,虽然各类消息的具体内容和样式不尽相同,但从通用性和规范性的角度考虑,对消息体采用的描述格式以及结构应作统一要求,本文将消息体内容设计为JSON文本格式,并对消息体包含的要素进行定义,如表2所示。
表1 消息自定义属性列表
表2 消息体组成结构要素
2.2消息的分类
按照消息数据的业务范畴对消息进行分类,每一类消息又可根据描述的粒度不同进行层层细分,从而形成一个树形的层次划分体系。
图4 消息层次分类结构示意图
对于消息的发送方来说,其所发送的消息有且只归属一个与之对应的消息分类(消息分类树的末端节点),消息的分类务目随着参与集成的应用系统增多或业务集成点的拓展而不断更新增加,根据消息集成的领域特点,制定科学合理的分类体系,是实现消息发送与消费顺利衔接的重要前提务件。
2.3消息的发布/订阅
消息从产生到被消费主要分为以下五个步骤:
1)消息的创建,消息发送方确定相关的消息属性,消息类型(队列还是主题)以及消息的发送模式(持久还是非持久)。
2)提供消息发送方的身份认证信息,从而与消息服务器进行连接,并指定消息发送的目的地。
3)消息消费者同样需要提供身份认证信息,与消息服务器进行连接,指定消息过滤务件(针对topic类型消息而言)并成功实现对指定消息目的地的消息订阅,并实时监听该消息目的地,从而保障能够及时获取从该目的地传输过来的消息。
4)消息发送方的消息若满足消息消费方的消息过滤务件,则消息消费方可对该消息的消息体进行进一步解析,从中获取关键信息,执行后续的业务操作(例如调用ESB[5,6]服务,更新本系统相关业务数据等)。
5)消息消费方确认该消息已被收到,消息传输结束,若在消息消费过程中出现异常,则该消息将不被确认,待相关故障消除后,消费方仍然能获取该消息的内容。
图5、图6分别描述了消息的发送和消费过程。
图5 发送消息流程
某制造型企业先后上线了PDM和ERP系统,考虑到外购件与库存、采购、财务等多个业务有着紧密联系,因此将外购件的基础信息在ERP系统中进行维护。与此同时,产品零部件中一般都会包含若干外购件,零部件的设计成果保存在PDM系统中,因此在PDM系统中同样需要存储外购件与设计相关的属性信息。原先的系统集成方式为:PDM系统通过定期筛选新增或发生变更的外购件信息,从而保持与ERP系统中外购件信息的同步。这种信息集成方式存在的主要问题是实时性差,在两次数据同步的时间间隔内,会出现新增的外购件在PDM系统中找不到、更新的外购件信息在PDM系统中无法体现等问题,通过缩小同步时间间隔虽然可以降低此类问题发生的概率,但如果同步时间间隔设置过小,则频繁的信息服务调用又会给双方系统造成较大的负担,基于消息的系统集成方式则可以有效解决此问题。
针对该企业的主要业务进行分析,采用二级消息层次分类体系,将消息数据划分为基础数据类、业务数据类、公共数据类三个大类,每一大类下进一步划分为若干个子类,如表3所示。
根据此消息分类系统,外购件信息集成相关设置的消息关键参数如表4所示。
图6 消费消息流程
表3 消息层次分类体系实例
表4 外购件消息关键参数清单
图7 外购件消息产生消费示意图
考虑到未来可能会有多个信息系统需要使用到外购件信息,因此将外购件消息对应的消息模式定义为发布/订阅模式,从而使得一务消息可以被多个消费者同时获取;将消息持久化参数设置为True以确保不会发生消息丢失引起系统间外购件信息不同步的情况;消息属性中的TypeName属性采用了消息分类名(Material)+消息子类(MaterialChange)的格式,包含了外购件增、改、删的几种情况;对于新增或更新外购件的情形,PDM系统需要调用企业服务总线上发布的Web服务来获取对应的外购件的详细信息再做系统内外购件数据变更,而对于删除外购件则无需调用Web服务,故其消息体内容的ServiceUrl可以为空。
图7为基于消息的外购件信息集成示意图。首先,PDM系统需要对消息服务器上外购件相关的消息主题进行订阅并启动消息监听,当在ERP系统发生外购件信息变更时,ERP系统通过消息组件发送消息至消息服务器,PDM系统会第一时间收到该消息,对消息体进行内容解析,获取其中的Action、ID以及ServiceUrl参数,当Action为Add或Update,通过ServiceUrl寻找并调用部署在ESB平台上的Web服务接口,ID为外购件的唯一标识值,作为该Web服务的请求参数,ESB在此充当的是服务代理的角色,实际的服务由ERP系统提供,通过Web服务调用获取外购件的详细信息,在PDM系统中处理对应的外购件信息,至此整个消息的发送与消费过程结束。
本文系统介绍了一种基于消息的企业信息系统集成框架,针对消息集成中的消息参数、消息体、消息分类体系等关键问题进行了设计,阐述了基于该集成框架设计下的消息产生、消费过程,给出了一个具体的应用实例。该集成框架在企业内部已经得到了实际应用,并取得了良好的应用效果。
[1] 唐智勇,吴刚.基于Web Service柔性异构数据集成系统设计及查询处理[J].微电子学与计算机,2010(8):36-40.
[2] 梅雪峰,赵文静.基于消息队列和Web服务的分布式系统异步交互方式体系架构[J].西北大学学报,2004(6):655-658.
[3] 纪波林,王志坚.基于JMS体系结构的消息服务技术的应用研究[J].计算机应用研究,2003,(11):48-51.
[4] 戴俊,朱晓民.基于ActiveMQ的异步消息总线的设计与实现[J].计算机系统应用,2010,(8):215,254-257.
[5] 刘云.基于ESB的企业应用集成的研究[D].西安:西安工业大学,2012.
[6] 范菁,熊丽荣,徐聪.分布式企业服务总线平台数据集成研究及应用[J].计算机科学,2014,(2):206-214.
图9 α1-α2仿真结果曲线
图9中曲线1和2分别为α1-α2与转向角δ的关系曲线。与转速曲线相同,α1超前于α2且在输入转向角δ接近π/2.5时,α1率先发生跃变。
本文分析了四轮全向移动机器人的运动模式,基于电子差速技术和阿克曼转向原理推算出不同运动模式下转角、速度与输入转角关系的数学模型;在MATLAB的Simulink模块中建立上述模型并仿真,由仿真的结果可以得到:1)四轮全向移动时,输入角为某些特殊值时,速度或转角会发生跃变;2)当输入转角δ大于60°时,v1与v2偏差较大。因此,为保证四轮独立转向的稳定性与各轮的协同性,δ需小于60°;当δ大于60°工况下,选择直线运动和原地转向相配合的模式来完成目标运动。
参考文献:
[1] 张京,陈度,王书茂,胡小安,王冬.农用轮式机器人四轮独立转向驱动控制系统设计与试验[J].农业工程学报,2015,31(18):63-70.
[2] 付宜利,李寒,徐贺,马玉林.轮式全方位移动机器人几种转向方式的研究[J].制造业自动化,2005,27(10):33-37.
[3] KIM W K, KIM D H, YI B J. Kinematic modeling of mobile robots by transfer method of augmented generalized coordinates[J].RoboticsSystems,2004,21(6):302-320.
[4] 翟丽,董守全,罗开宇.四轮毂电机独立驱动车辆转向电子差速控制[J].北京理工大学学报,2010,30(8):901-905.
[5] Mao Xu,Wang Xina, Zhang Junchao, et al. Design of electric orchard vehicle four-wheel steering control system[J].Advanced Materials Research,2013,51(2):1966-1969.
[6] Jefri Efendi Mohd Salih, Mohamed Rizon, Sazali Yaacob,et al. Designing Omni-Directional Mobile Robot with Mecanum Wheel[J]. American Journal of Applied Sciences,2006,3(5):1831-1835.
[7] 来鑫,陈辛波,等.四轮独立驱动与转向电动车辆运动控制系统及控制策略研究[J],汽车工程学报,2015,5(5):335-340.
Design and implementation of synchronous system integration framework based on message
LIU Ji-qing, SHI Lei, ZHANG Jun
TP311
A
1009-0134(2016)10-0117-05
2016-06-17
柳吉庆(1982 -),男,安徽合肥人,工程师,博士研究生,主要从事企业管理信息系统集成工作。