发明内容
本发明所要解决的技术问题是,提供一种基于CORBA的综合监控系统数据定义和存取方法,其基于CORBA实现了用于轨道交通综合监控系统中多个子系统之间信息交换与互联互通的数据定义和存取方法,可以在更高和更宽的层面将各个子系统的信息进行收集和处理。
为解决上述技术问题,本发明采用的技术方案是:一种基于CORBA的综合监控系统数据定义和存取方法,应用于轨道交通综合监控系统中的信息交换与互联互通,其包括以下具体步骤:
1)针对综合监控系统中所要进行交互的数据,定义统一的数据类型;
2)利用上述统一的数据类型来定义一个统一的数据存取结构;
3)车站客户端通过侦测服务方法连接本车站值班服务器;
4)上述车站客户端向上述本车站值班服务器向发送数据请求,该请求为一级请求, 上述本车站值班数据服务器接收上述一级请求数据并分析该一级请求数据中的区域标识,如果仅为本车站内数据请求,直接返回请求结果至上述车站客户端,如果存在对其它区域的数据请求,生成相应的二级请求;
5)当存在上述二级请求时,上述车站值班服务器通过侦测服务方法连接其它区域值班数据服务器发送二级请求,其它区域值班服务器返回请求结果给上述本车站数据服务器,上述本车站值班服务器将请求结果组合后返回给上述车站客户端;
其中,所述步骤3)中的侦测服务方法为上述车站客户端上的一个侦测程序,其包括以下步骤:
1)该侦测服务方法周期性的判断车站值班服务器的负荷和状态,将上述车站值班服务器的状态和IP地址映射到上述车站客户端;
2)当有数据请求时,上述车站客户端从本地映射中取出负荷较低、状态正常的上述车站值班服务器作为目标值班服务器,并将其IP地址取出;
3)上述车站客户端将上述IP地址传入,根据CORBA标准创建ORB对象,以与上述车站值班服务器建立连接。
所述的基于CORBA的综合监控系统数据定义和存取方法的步骤1)中所定义的统一的数据类型包括:缺省类型、字符串类型、字符类型、短整型、整型、时间类型、单精度浮点数类型、关键字类型、二进制类型、文本类型和图像类型。
所述的基于CORBA的综合监控系统数据定义和存取方法的步骤2)中所定义的数据存取结构中包括:区域标识、所属专业、存取操作标志、数量标志、数据内容、执行结果和出错信息。
所述的基于CORBA的综合监控系统数据定义和存取方法的步骤2)中所述的数据存取结构中的存取操作标志可以表示的操作包括:查询、插入、删除和更新。
所述的基于CORBA的综合监控系统数据定义和存取方法的步骤2)中利用CORBA IDL中的sequence来支持多个所述数据存取结构定义。
所述的基于CORBA的综合监控系统数据定义和存取方法所涉及的综合监控系统中的所有结果值的类型都在上述数据类型范围内。
[0008] 本发明的优点是,本发明涉及一种综合监控系统数据定义和存取方法,其通过采用CORBA即公用对象请求代理体系结构,定义统一的数据类型和数据存取结构,屏蔽了数据结果的差异性,实现了多个区域数据的相互存取与访问,提高了数据访问安全性、完整性和可靠性;另外,其通过两级数据请求的方式,解决了通常只能访问本地数据而无法扩展的问题。
具体实施方式
为进一步揭示本发明的技术方案,兹结合附图详细说明本发明的实施方式:
在本发明中,披露了一种统一的数据类型定义,该统一的数据类型的定义如下(每项定义的排列顺序为类型名称、类型符号和类型序号):
缺省类型:C_DATATYPE_DEFAULT = 0;
字符串类型:C_DATATYPE_STRING = 1;
字符类型:C_DATATYPE_UCHAR = 2;
短整型:C_DATATYPE_SHORT = 3;
整型:C_DATATYPE_INT = 4;
时间类型:C_DATATYPE_DATETIME = 5;
单精度浮点数类型:C_DATATYPE_FLOAT = 6;
关键字类型:C_DATATYPE_KEYID = 7;
二进制类型:C_DATATYPE_BINARY = 8;
文本类型:C_DATATYPE_TEXT = 9;
图像类型:C_DATATYPE_IMAGE= 10。
对上述数据类型进行统一定义后,系统中所有返回的结果值就可以依照上述数据类型进行定义,以屏蔽数据的差异,保证一致性和完整性。
在本发明中,还披露了一种数据存取结构定义REQ_STRU,并利用CORBA IDL中的sequence来支持多个数据存取结构的定义,该多数据存取结构定义为sequence<REQ_STRU>。REQ_STRU数据存取结构中所包含各项及其含义分别为:domain_id为区域标识;app_no为所属专业,op_type为存取操作标志,可以为查询、插入、删除或更新;req_str为查询操作时的请求字符串;req_result为查询操作时的返回结果(即为上述执行结果);req_insert为插入操作时的请求数据;req_delete为删除操作时的请求数据;req_update为更新操作时的请求数据;record_num为请求数据的个数(即为上述数量标志);err_no为请求失败后返回的错误号(即为上述出错信息)。
进一步,在本发明中,还披露了一种车站客户端通过侦测服务方法连接车站值班服务器的方法(如图1所示)。该侦测服务方法是上述车站客户端上的一个侦测程序,目的是实时监控上述车站值班服务器负荷和状态,并将所述车站值班服务器IP地址和状态映射到上述车站客户端。该侦测服务方法的具体步骤为:
1) 上述侦测服务方法周期性的判断上述车站值班服务器负荷和状态,将上述车站值班服务器状态和IP地址映射到上述车站客户端。
2) 当上述车站客户端有数据请求时,上述车站客户端从本地映射中取出负荷较低、状态正常的上述车站值班服务器作为目标服务器,并将其IP地址取出。
3) 上述车站客户端将IP地址传入,利用该IP地址并根据CORBA标准创建ORB (Object Request Broker,对象请求代管者对象),以实现与所述目标服务器建立连接。
另外,在本发明中,披露了一种车站两级请求数据服务的方法。车站客户端向本车站值班服务器发送数据请求,该请求为一级请求。本车站值班服务器接收上述一级请求数据(该一级请求数据采用上述数据存取结构定义REQ_STRU来表示),并分析其中的区域标识。如果仅为本车站内数据请求,直接返回请求结果至上述车站客户端。如果存在对其它区域的数据请求,如对控制中心、车辆段、其它车站的数据请求,生成相应的二级请求。其具体步骤如下:
1) 车站客户端连接上本车站的值班服务器后,发送请求。请求结构包括区域标识、所属专业、存取操作标志(可为查询请求、插入请求数据、删除请求、更新请求)、请求数据的个数(即为上述数量标志)。
2) 上述本车站服务器接收到相应的数据后创建缓存,暂时存储接收到的上述一级请求,分析数据请求中区域标识。
3) 当上述区域标识中仅包含本车站数据请求时,若为查询请求,返回req_result即查询结果;若为插入、删除、更新操作请求,返回errno即检查成功与否即可。
4) 若上述区域标识中还包含对控制中心、车辆段、其它车站的数据请求时,上述车站值班服务器分解上述一级数据请求为多个缓冲区,根据sequence<REQ_STRU>生成二级请求结构。
5) 生成上述二级请求结构后,上述接收一级数据请求的车站值班服务器又担当了其它区域的客户端,通过上述侦测服务方法确定其它区域值班服务器。
6) 上述接收一级数据请求的车站值班服务器发送上述二级请求到其它区域值班服务器,若为查询请求,上述其它区域值班服务器返回req_result即查询结果至上述接收一级数据请求的车站值班服务器;若为插入、删除、更新操作请求时,返回errno即成功与否至上述接收一级数据请求的车站值班服务器。
7) 上述接收一级数据请求的车站值班服务器将接收到的从其它区域值班服务器返回的结果按照sequence<REQ_STRU>结构进行组合。
8) 上述接收一级数据请求的车站值班服务器将步骤7)中经组合后的上述sequence<REQ_STRU>结构返回至上述车站客户端。
以下结合图1、图2说明本发明的一个优选实施例:
下面为本发明的一个优选实施例,其揭示了采用本发明的方法实现一种基于CORBA的综合监控系统数据定义和存取方法的过程。该综合监控系统中所说的区域包括控制中心、备用中心、车站、车辆段等多个单独区域,每个区域至少包含一台服务器,一台客户端。图1为本发明基于CORBA的综合监控系统数据定义和存取方法的整体结构示意图, 101为发出请求的车站区域,其采用上述统一数据类型定义,屏蔽了异构操作系统平台之间的差异,利用CORBA标准保证了网络通信的健壮性。102是根据上述侦测服务方法,连接到其它区域的请求过程(即为上述车站两级请求数据服务的方法)。103是各个车站区域中处理数据请求,并返回请求结果的连接情况。这种结构满足了综合监控系统的数据一致性和通信的安全性,保证系统可以在多种操作系统平台上进行数据请求。
图2为基于CORBA的综合监控系统数据定义和存取方法的处理流程示意图,其中包括以下具体步骤:
步骤200:车站客户端根据数据访问请求来定义上述sequence<REQ_STRU>,调用setlength()设置序列的大小,同时对其进行赋值即设置其中的区域标识、所属专业、存取操作标志、数据内容和数量标志等内容。
步骤201:该步骤中上述车站客户端通过上述侦测服务方法连接本车站值班服务器,上述车站客户端的侦测服务方法周期性的判断上述本车站值班服务器负荷和状态,将上述本车站值班服务器的状态和IP地址映射到该车站客户端。
步骤202:该步骤中上述车站客户端取出负荷较低、状态正常的上述车站值班服务器的IP地址,按照CORBA标准创建ORB对象,以与上述车站值班服务器建立连接。
步骤203:该步骤中将sequence<REQ_STRU>数据由上述车站客户端发送给上述车站值班服务器。
步骤204:该步骤中上述车站值班数据服务器接收一级请求数据后,分析请求数据中的区域标识。
步骤205:该步骤中对步骤204中的区域标识进行判断即如果仅为本车站内数据请求则转入步骤206即上述车站值班数据服务器直接向上述车站客户端返回请求结果;如果存在对其它区域的数据请求,如对控制中心、车辆段、其它车站的数据请求,则转入步骤207。
步骤207:该步骤中上述接收一级数据请求的车站服务器又担当了其它区域的客户端并通过上述侦测服务方法确定其他区域的值班服务器IP地址,并按照CORBA标准与上述其他区域的值班服务器建立连接。
步骤208:建立连接后上述接收一级数据请求的车站服务器生成相应的二级请求并发送至上述其他区域的值班服务器。
步骤209:上述其它区域服务器将结果返回给上述接收一级数据请求的车站服务器。
步骤210:上述接收一级数据请求的车站服务器将接收到的返回结果按照上述sequence<REQ_STRU>请求的结构进行组合,并由上述接收一级数据请求的车站值班服务器将组合后的结果返回给上述车站客户端。
根据以上实施例可知,本发明实现了一种基于CORBA的综合监控系统数据定义和存取方法,采用统一数据类型定义,屏蔽了数据结果的差异性;通过存取数据结构的定义,能够完全描述多个区域数据请求和返回值;侦测服务方法可以使服务器能够平均负载;两级数据请求,可以访问到全线的数据。通过该方法使得数据访问安全得到了较大提高,保证了数据的可靠性和完整性,能解决通常只能访问本地数据而无法扩展的问题。
以上通过对所列实施方式的介绍,阐述了本发明的基本构思和基本原理。但本发明绝不限于上述所列实施方式,凡是基于本发明的技术方案所作的等同变化、改进及故意变劣等行为,均应属于本发明的保护范围。