基于Mule的IEC61968信息交互总线的研究与应用
2016-03-02许稳堂闫红漫张弘
许稳堂 闫红漫 张弘
摘要:针对目前配电网领域信息交互、信息共享问题,提出了一个基于Mule的IEC61968信息交互总线的功能架构,深入分析了信息交互总线的主要功能模块,并实现了一个总线服务原型系统,最后通过对总线上发布模型数据场景的集成分析,解决了因数据模型不一致导致的信息交互问题。
关键词:IEC 61968;Mule;信息交互总线;模型验证
中图文分类号:TP311.52文献标识码:A文章编号:2095-2163(2016)01-
Abstract: According to the problem of information exchange and information sharing in the field of distribution network, this paper proposes a functional architecture of IEC61968 information exchange bus based on Mule, and deeply analyzes the main function modules of the information exchange bus, then implemented a prototype system of bus service. Finally, this paper solves the information exchange problem caused by inconsistent data model through an integrated analytical scenario of publishing model data on bus.
Key words: IEC 61968;Mule;information exchange bus;model validation
0引言
由于各电力企业在系统的设计及实现方面都相互独立,依据各自的平台和标准进行建设,而且信息交互的数据模型通常为各应用系统私有,导致各系统间的信息交互、信息共享非常困难,形成了很多“信息孤岛”。为了整合电力企业中的各电力系统,使企业中的所有电力设备能够互联互通,国际电工委员会制定了IEC61968标准,为电力企业内系统集成提供指导,以减少各应用软件提供商在集成过程中由于各系统模型不一致所产生的问题[1]。
传统的系统集成过程大多采用点对点的通信方式,这种通信方式存在接口数量多、系统扩充性差等缺点。面向服务架构SOA(Software Oriented Architecture)是一种以服务为中心的分布式软件集成方法,通过采用平台独立的方式定义服务间交互的接口,能够使软件平台松散耦合、动态可扩展。基于SOA思想构建的信息交互总线,采用松耦合的内容进行企业应用集成,解决了企业各系统间信息交互、信息共享问题。
1 IEC61968标准
IEC61968 标准,为配电管理系统(DMS)制定了统一的接口参考模型(IRM)和详细的消息格式规范,是实现配电网领域分布式应用系统集成的基础和参考。接口参考模型从整体功能上将DMS分为一些抽象的业务组件,而且定义了各组件的接口规范,注重于不同组件间的交互,但并不关心各组件具体如何实现。只要第三方厂商依据接口参考模型实现抽象组件规定的功能,由其提供的应用程序或系统就是符合IEC61968标准的应用程序组件。
IEC 61968-1定义了通用的消息格式,包含消息头(Header)、请求选项(Request)、应答选项(Reply)和消息体(Payload)[2]。消息头,记录了消息的属性,用于控制消息的传递,主要包括:主题(由动词Verb和名词Noun构成)、异步传输标志位、消息ID、关联ID等;请求选项用于描述具体的请求参数;应答选项表示请求成功、失败;消息体,使用XML Schema的any元素定义,可以存放任何格式良好的XML文档,通常是待传输的模型数据。IEC61968第3~10部分为每个信息交互需求特别定义了消息类型,一个消息类型是基于CIM的规范数据模型[3],可以从CIM模型的UML类图中导出消息类型的XML模式(XSD)文件,用于约束、校验消息体中的模型数据。
2基于Mule的IEC61968信息交互总线
信息交互总线是配电网信息集成的核心部分,遵循IEC61968标准,采用面向服务架构(SOA)的企业服务总线(ESB)技术,各应用系统通过信息交互总线实现数据共享和交互,是一个松散耦合集成框架。参与集成的各方应用并不直接交互,请求方只需与总线交互,总线收到消息后,通过消息路由过程确定服务提供方,并把该消息交付给服务提供方进行处理,这样实现了请求方和服务提供方的解耦,各方可以采用不同的技术进行实现[4]。如图1所示,就是本文提出的一个信息交互总线的功能架构,使用Mule ESB作为底层基础服务功能层,由其设计给出的连接器、消息转换、消息处理、消息路由等,为快速构建信息交互总线提供了基础组件功能。用户管理、适配器身份认证、服务注册中心、主题配置、消息状态管理,是信息交互总线必备的管理控制功能,其中除适配器身份认证模块外都应提供基于浏览器的配置页面,以方便运行时维护。基于主题的消息路由、信息交互模式、应用适配器,是信息交互总线与信息交互过程相关的核心功能模块,提供了消息在总线中准确流转、基于总线的异构应用信息交互、异构应用接入总线等功能。
2.1服务注册中心
服务注册中心作为服务元数据的集成点,建立了一个中心位置,将分散在企业中的服务元数据聚集在一起,提供了灵活的服务注册、查找等功能。服务注册中心实现方案通常有3种,对其可给出如下概述:
1)将服务元数据信息存储到静态的服务注册文件中,通常采用手工编辑的方式,在系统运行时不能修改;
2)将服务元数据信息存储到一个关系数据库中,利用数据库提供的数据一致性功能,在运行时能够进行动态配置,较为灵活方便;
3)基于UUID标准来设计呈现一个服务注册中心,该方法的实现较为复杂。本文采用方案2来构建信息交互总线的服务注册中心,如图2所示。在总线运行过程中,为了方便用户对服务信息的动态管理,服务注册中心采用B/S架构设计,用户可以通过浏览器对服务元数据信息进行集中配置管理,如注册服务信息、更新服务信息、查询服务信息和删除服务信息。信息交互总线的消息路由模块在解析出入站消息待转发的目标服务后,可以通过调用服务信息查询Web服务获取服务的详细信息,取出目标服务的端点地址,完成消息的转发。
2.2适配器身份认证
适配器身份认证,是应用适配器与总线服务间交互的重要过程,每个适配器都有用户名和密码,应用适配器只有通过总线的身份认证后才能与总线进行数据交互,阻止了非法用户的连接。适配器身份认证过程如图3所示。
由图3可知,适配器身份认证的具体实现过程可描述如下:
1)建立连接阶段。应用适配器向总线发送包含用户名和密码的建立连接请求消息,总线收到消息后从中取出用户名和密码验证应用适配器身份。密码验证通过后,总线为该适配器创建一个上下文对象并生成一个Token与之关联,之后把该Token放入响应消息中返回给应用适配器。
2)数据交互阶段。应用适配器把Token作为消息的一部分发送给总线,总线从消息中取出Token与认证信息库中的Token进行比对,验证通过后方可执行其它消息处理过程,总线根据身份验证结果向应用适配器返回是否投递成功的响应消息。
3)关闭连接阶段。总线从关闭连接请求消息中取出Token,销毁该Token和与之关联的上下文对象。如果应用适配器与总线建立连接后长时间处于空闲状态,总线可以自主销毁Token,并断开与应用适配器的连接。
2.3基于主题的消息路由
2.3.1 主题及主题配置
主题是IEC61968消息头中的名词和动词的组合,消息名词标识了消息体中存放的模型数据的类型,消息动词用于表示该消息的发送者希望服务执行的动作。名词和动词根据具体的业务场景和采用的信息交互模式而给出相应设定。如获取拓扑数据业务,该业务场景是典型的请求/应答信息交互模式,消息动词使用GET,由于从总线上获取的是拓扑数据,名词取Topology,该业务场景的主题命名为“TopologyGET”。
主题配置的一般流程可表述如下:
1)业务场景分析,拟定动名词主题,确定每个主题的信息交互模式;
2)登录主题配置页面,录入主题信息,并授权给相应的应用适配器服务。请求主题,通常只需配置一个服务提供者,若配置了多个,则其他的服务提供者作为备用服务。当第一个服务提供者运行压力较大或调用失败时,总线把请求消息转发给备用服务进行处理;响应主题,不需要在主题配置页面中进行配置,而是由总线运行时自己维护。总线接收到请求消息后创建一个关联到该请求者的响应主题。服务提供者发回实际响应后,总线根据该响应主题把响应消息转发给请求者;事件主题,配置一个或多个订阅者,经过授权的应用适配器服务都可以向该事件主题发布事件消息,总线必须把事件消息成功地交付给该事件主题的每一个订阅者。
2.3.2基于主题的消息路由
基于主题的消息路由,主要完成接入信息交互总线的各应用适配器间消息的准确传输,实现把应用适配器服务发送到总线的IEC61968消息按照主题路由布设到目标应用适配器服务的规划调度过程。可以把该过程抽象为一个三元组
1)Message,表示总线接收到的IECT61968消息,消息头中的名词和动词元素明确表征了该消息将要发生关联到总线上的哪个主题。
2)Repository表示总线的主题库,Repository={Topic1, Topic2, …},Topic表示一个主题。主题Topic可以抽象为一个四元组
其中,(1)~(3)语句实现了从总线接收到的消息中解析出主题名;(4)~(7)语句实现了在主题库中迭代解析出的主题名,匹配出消息主题名对应的主题路由规则,并从中获取目标适配器服务列表;(8)~(11)语句进一步实现了把消息转发给目标适配器服务列表中的每一个适配器服务。
2.5信息交互模式
信息交互模式,指集成到总线上的应用适配器间信息交互的方式,发布/订阅与请求/响应是两种基本交互模式。在信息交互模式设计中使用了队列,进入总线的消息先保存到总线的队列中,而不是直接路由到目标适配器服务进行处理,然后由总线的消息路由后台进程取出消息完成消息到目标适配器服务的转发。把消息的接收和消息的处理进行分离,能够减少请求负载峰值带来的过度资源消耗所导致的系统级错误,提高总线的并发处理能力。
2.5.1 发布/订阅
发布/订阅模式,是基于事件推送机制的消息发布方式,总线依据事件主题将事件消息分发给相应的订阅者,如图4所示。交互过程可描述为:
1)应用适配器A,为事件发布者,调用总线的事件发布接口向总线发布事件消息;
2)当总线收到消息后,首先对应用适配器A进行身份认证,再从事件消息中解析出主题名验证该主题在总线主题库中是否已经配置,然后通过主题授权库确认应用适配器A是否获得了该主题的授权。如果适配身份认证失败、事件发布到了一个不存在的主题、或应用适配器A没有获得主题的授权,那么总线将向应用适配器A返回一个包含详细错误信息的错误消息。如果验证通过,总线将转发事件消息到消息队列,转发完成之后向应用适配器A返回一个确认消息(事件消息已被总线成功接收),至此应用适配器A的事件发布过程结束;
3)总线中的消息路由后台进程,从队列中取出事件消息,并依次转发给该事件主题的每一个订阅者(应用适配器B、C),事件订阅者收到事件消息后各自进行事件处理。
2.5.2请求/响应
请求/响应模式,是总线上应用适配器间最常见的信息交互方式。发起请求的应用适配器A为服务请求者,提供服务处理的应用适配器B为服务提供者,服务请求者与服务提供者并不直接交互,而是只与总线进行信息交互。请求/响应信息交互模式分为同步和异步两种。具体地,给出各自分析如下。
同步请求/响应,如图5所示。服务请求者向总线发出请求消息后阻塞并等待响应,直到服务提供者处理完请求并通过总线把处理的结果原路返回给服务请求者为止。由于在请求过程中请求者被阻塞,同步请求/响应模式适用于服务处理时间较短的业务场景。由于IEC61968信息交互总线采用粗粒度业务信息,服务处理时间多会较长,如果让服务请求者一直等待则浪费系统资源而且有可能导致请求超时,因此同步请求/响应在配电网业务集成中并不常用。
异步请求/响应模式,如图6所示。请求过程和响应过程相互独立,请求过程结束后,总线路由请求消息到服务提供者,服务提供者处理完请求后启动响应过程。在响应过程中响应(请求的处理结果)通过回调的方式先返回给总线再返回给服务请求者,而不是按请求路线原路返回。异步请求/响应模式交互过程的实现描述可展开如下:
1)应用适配器A向总线发送请求消息;
2)总线依次进行适配身份认证、主题验证、适配器权限验证过程,若都顺利通过,则总线向服务请求者返回确认消息,表示总线已成功收到请求消息,否则返回包含详细错误信息的错误消息;
3)总线中的消息路由后台进程,从队列中取出请求消息,并路由到服务提供者(应用适配器B);
4)服务提供者处理完请求后,启动响应过程,服务提供者先调用总线的响应接口把响应消息返回给总线,而后总线再调用服务请求者的响应接口把响应消息返回给服务请求者。
3总线服务
总线服务,是信息交互总线的一个信息交互接口,在本文中是一个基于Mule构建的Web服务,调用了mule的基础组件和总线功能模块,向外界推送了可与应用适配器交互的请求、响应、发布、建立连接、关闭连接等现实服务细分的操作接口。
3.1总线服务接口描述
如图7所示,使用WSDL(Web Services Description Language)定义了总线服务的接口。共定义了5个操作,用于应用适配器向总线建立连接的GetConnection操作、断开与总线的连接的CloseConnection操作、向总线发布事件的Publish操作、向总线发送请求的Request操作、处理完请求后向总线传输异步响应的Response操作。
3.2 Mule应用架构
在Mule应用中,流(flow)是最为重要的方法元素,代表一个特定意义的工作单元。如图8可见,即是描述了一个常规的Mule应用架构。运行Mule应用时,系统在入站端点指定的端口上启动流服务,外部应用向入站端点上发送消息触发流服务进行消息处理,消息在流内经过一系列消息处理器的变换实施处理后,通过出站端点发给外部应用。在Mule中,消息处理器是一个已封装好的功能单元。消息处理器包括连接器(入站端点和出站端点)、业务逻辑组件、消息转换器、消息过滤器等。
3.3总线服务实现
AnypointStudio是基于Eclipse定制的Mule集成开发工具,提供了可视化的编程设计界面。如图9所示,则是总线服务的主流结构。主流服务通过HTTP连接器把总线服务绑定到主机的一个端口上,主流启动后在该端口上接收应用适配器服务发送的消息。当消息进入主流后,调用“DOM to XML”消息转换器把消息转换为XML格式,执行“Expression”组件抽取消息属性保存到流变量flowVars中,而后将执行“Choice”消息路由器根据流变量中的属性值匹配到相应的子流进行处理;处理完成后,则会将消息的处理结果返回给指定的应用适配器服务。
4应用
IEC61968标准甫一面世推出后,各电力企业和系统提供商就在依据自身对IEC61968标准的理解相继研发构建了信息交互总线和IEC61968应用程序组件。通常情况下,因其对标准在理解和执行上不可避免地存在一些差异,导致各厂商提供的IEC61968应用程序组件使用的数据模型并不会完全一致[5],即会使得配电管理领域的各类应用在信息交互总线上必将无法实现预期中的正常信息交互。针对该问题的主要解决办法则是在信息交互总线上集成模型校验服务[6],各应用组件在交互模型数据前,就要先请求模型校验服务校验模型数据的一致性,而后再依据校验结果执行后续操作。
如图10所示,其中给出了一个集成着模型校验服务的发布模型数据场景。配电应用A(模型数据源)通过应用适配器服务A接入总线,在应用适配器服务A中将会完成从配电应用A中获取模型数据、调用模型校验服务验证模型数据、向配电应用B、C(模型数据订阅者)发布模型数据等功能。交互过程可做完整描述如下:
1)启动发布模型数据过程,调用配电应用A的导出模型数据模块获得模型数据,转换标准CIM版本,然后向请求主题发布模型校验请求;
2)应用适配器服务D收到模型校验请求后,调用本地的模型校验服务,而后把校验报告通过响应主题返回给请求者适配器服务;
3)应用适配器服务A通过响应主题获取校验报告后,解析校验报告,判断校验是否通过:若校验通过,则向配置的事件主题发布模型数据事件;否则通过错误处理模块把校验报告发送给用户,由用户根据校验报告给出的错误提示修改模型数据。
5结束语
本文提出了一个基于Mule的IEC61968信息交互总线的功能架构,重点对服务注册中心、适配器身份认证、基于主题的消息路由和信息交互模式模块进行了分析和设计,同时又根据总线服务接口描述(WSDL)在Mule的集成开发工具AnypointStudio中实现了总线服务原型系统,最后在信息交互总线上对集成模型校验服务的发布模型数据场景进行了应用分析,解决了配电应用间由于数据模型不一致导致的信息交互问题,从而为今后其他业务场景应用集成提供了现实有益的技术基础。
参考文献:
[1] 谢涛,余鹏,熊翌竹等.基于IEC 61968的配网系统应用集成技术[J].电工技术,2014,(7):77-78.
[2] 李传健,陈炯聪,郑文杰,等.基于IEC61968标准的配电网管理系统信息集成消息设计与实现[C]//[3] 顾建炜,中国电机工程学会电力系统自动化专业委员会2012年学术交流会. 厦门:中国电机工程学会,2012:44-48.
[3]顾建炜,周志芳.基于IEC61968标准智能电网信息集成的应用研究[J].供用电, 2010, 27(5):19-22.
[4] 陈真理,俞东进,刘其群.一个基于Mule ESB的综合业务处理平台的设计和实现[J].计算机时代,2013(8):8-10.
[5] 严小文,吴小娟,张朝龙,等.基于IEC61968的营配一体化系统互操作研究[J].电气应用,2013(S2):408-412.
[6] 于洋,刘东,陆一鸣,等. 基于本体的IEC61968标准信息模型一致性校验[J].电力系统自动化,2012, 36(14):46-51.