发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种分布式、多层级应用系统标识信息的同步方法及系统,以解决现有技术中存在的手工添加系统标识信息工作量大、效率低、容易出错以及系统之间不存在层级关系,不利于查找和选择的问题。
为实现上述目的,本发明采用的技术方案为:
一种分布式、多层级应用系统标识信息的同步方法,包括以下步骤:
步骤1、新系统上线时,通过系统注册装置填写新系统的本地系统标识信息,并将新系统的本地系统标识信息保存在系统信息存储设备;
步骤2、通过消息发送装置将新系统的系统标识信息发送给根系统;所述根系统是指整个分布式系统中最早上线的、唯一的系统;
步骤3、根系统的消息接收装置接收新系统发送的消息,从消息中提取新系统的系统标识信息并将该系统标识信息保存在系统信息存储设备;
步骤4、根系统从系统信息存储设备中读取包含所有系统的系统标识信息列表,并将系统标识信息列表广播发送;
步骤5、所有非根系统接收根系统发送的广播消息,并从广播消息中提取系统标识信息列表,将该列表更新到本地系统信息存储设备中;
步骤6、获取系统信息存储设备中的树形结构的数据,展现在树形视图中。
进一步,如上所述的一种分布式、多层级应用系统标识信息的同步方法,步骤4中所述广播发送是消息中间件的发送机制。
进一步,如上所述的一种分布式、多层级应用系统标识信息的同步方法,所述的系统标识信息包括系统名称、系统ID、上级系统ID和消息中间件代号。
进一步,如上所述的一种分布式、多层级应用系统标识信息的同步方法,非根系统需要指定根系统的消息中间件代号,通过消息中间件将消息发送给根系统。
进一步,如上所述的一种分布式、多层级应用系统标识信息的同步方法,根系统不存在上级系统,将其上级系统ID设置为空。
进一步,如上所述的一种分布式、多层级应用系统标识信息的同步方法,若新系统以现有远程系统的系统ID作为本系统的上级系统ID,表示该现有远程系统为新系统的上级系统。
再进一步,如上所述的一种分布式、多层级应用系统标识信息的同步方法,通过在系统标识信息中设置系统标志来区别本地系统与远程系统。
更进一步,如上所述的一种分布式、多层级应用系统标识信息的同步方法,步骤5中,将系统标识信息列表更新到本地系统信息存储设备中时,首先将非本地系统从本地系统信息存储设备中全部删除,然后将系统标识信息列表中系统ID不同于本地系统的远程系统标识信息插入到本地系统信息存储设备中。
基于上述分布式、多层级应用系统标识信息的同步方法的一种分布式、多层级应用系统标识信息的同步系统,包括:
系统注册装置:用于输入系统的系统标识信息,并存入系统信息存储设备;
系统信息存储设备:用于保存本地系统的系统标识信息和远程系统的系统标识信息;
消息发送装置:用于将新系统的本地系统标识信息发送给根系统;和根系统将系统信息存储设备中保存的系统标识信息列表广播发送;
消息接收装置:根系统通过该装置接收新系统发送的系统标识信息,并将其保存在系统信息存储设备;非根系统通过该装置接收根系统发送的广播消息,并从广播消息中提取系统标识信息列表,将该列表更新到系统信息存储设备中;
系统列表展现装置:用于获取系统信息存储设备中的树形结构数据,将其展现在一个树形视图中。
进一步,如上所述的一种分布式、多层级应用系统标识信息的同步系统,所述的系统标识信息包括系统名称、系统ID、上级系统ID和消息中间件代号。
本发明的效果在于:本发明提供的一种分布式、多层级应用系统标识信息的同步方法及系统,通过将新系统的系统标识信息发送给根系统,然后由根系统统一生成系统标识信息列表并将该列表通过消息中间件的发送机制广播到所有非根系统进行更新,通过本发明所述的方法及系统,数据一致性好,同时可以大幅度减少手工添加系统标识信息的工作量,提高实施效率,减少错误,同时提供了树形分层的数据结构和展现视图,结构清晰,易于使用。
具体实施方式
本发明一种分布式、多层级应用系统标识信息的同步方法及系统,通过该方法及系统可以大幅度减少手工添加系统标识信息的工作量,提高分布式系统实施效率,减少错误,同时提供了树形分层的数据结构和展现视图,结构清晰,易于使用。
下面结合说明书附图与具体实施方式对本发明做进一步的详细说明。
图1示出了本发明新系统、根系统和现有远程系统进行信息交换的基本结构示意图,图中虚线表示新系统通过消息发送装置将新系统的标识信息发送给根系统;图中实线表示根系统将包含所有系统的系统标识信息列表广播发送,从而将新系统纳入整个分布式系统环境中,新系统成为分布式系统的一个组成部分。
图2示出了本发明一种分布式、多层级应用系统标识信息的同步系统的结构框图,该系统主要包括:
处理模块21,该处理模块包括:
系统注册装置211:用于输入新系统的标识信息,并存入系统信息存储设备;
系统发送装置212:用于将新系统的系统标识信息发送给根系统;和根系统将系统信息存储设备中保存的系统标识信息列表广播发送;
系统接收装置213:根系统通过该装置接收新系统发送的系统标识信息,并将其保存在系统信息存储设备;非根系统通过该装置接收根系统发送的广播消息,并从广播消息中提取系统标识信息列表,将该列表更新到系统信息存储设备中;
系统信息存储设备22:用于保存新系统的系统标识信息和现有远程系统的系统标识信息;
系统列表展现装置23:用于获取系统信息存储设备中的树形结构数据,将其展现在一个树形视图中,供应用系统浏览和操作。
本实施例中,系统标识信息至少要包括系统名称、系统ID、上级系统ID和消息中间件代号,实际应用中还可以根据需要增加其他信息…。
图3示出了基于上述分布式、多层级应用系统标识信息的同步系统的一种分布式、多层级应用系统标识信息的同步方法的流程图,由图中可以看出,该方法主要包括以下步骤:
步骤SI:新系统上线时,通过系统注册装置填写新系统的本地系统标识信息,并将新系统的系统标识信息保存在系统信息存储设备;
步骤S2:通过消息发送装置将新系统的系统标识信息发送给根系统;
在整个分布式系统中只能有一个根系统,并且根系统必须是最早上线的系统。
步骤S3:根系统的消息接收装置接收新系统发送的消息,从消息中提取新系统的系统标识信息并将该标识信息保存在系统信息存储设备;
步骤S4、根系统从系统信息存储设备中读取包含所有系统的系统标识信息列表,并将系统标识信息列表广播发送;
其中,系统标识信息列表中包含了新系统的系统标识信息和所有现有远程系统的系统标识信息。广播发送是消息中间件的一种发送机制,广播发送的消息能够被消息中间件相应频道的所有用户接收;消息中间件一般有三种传递模型:点对点模型(PTP)、发布-订阅模型(Pub/Sub)和广播模型。点对点模型用于消息发送者和消息接收者之间点到点的通信,点对点消息能够被指定的接收者接收,如果没有明确说明,为点对点消息;发布-订阅消息能够被相应频道的某个在线用户接受;广播发送的消息能够被消息中间件相应频道的所有用户接收。本发明只涉及广播消息和新系统向根系统发送系统标识信息的点对点消息。
采用消息中间件机制的系统中,不同的对象之间通过传递消息来激活对方的事件,完成相应的操作。发送者将消息发送给消息服务器,消息服务器将消息存放在若干队列中,再将消息转发给接收者。消息中间件能在不同平台之间通信,它常被用来屏蔽掉各种平台及协议之间的特性,实现应用程序之间的协同,其优点在于能够在客户和服务器之间提供同步和异步的连接,并且在任何时刻都可以将消息进行传送或者存储转发。
步骤S5、所有非根系统(包含新上线的系统)接收根系统发送的广播消息,并从广播消息中提取系统标识信息列表,将该系统标识信息列表更新到本地系统的系统信息存储设备中;
在将系统标识信息列表更新到本地系统信息存储设备中时,首先将非本地系统从本地系统信息存储设备中全部删除,然后将系统标识信息列表中系统代号(系统ID)不同于本地系统的远程系统标识信息插入到本地系统信息存储设备中。
步骤S6、获取系统信息存储设备中的树形结构的数据,展现在树形视图中。
其中,不论对于新系统、根系统、还是现有远程系统,系统标识信息至少要包括系统名称、系统ID、上级系统ID和消息中间件代号四个关键属性,如果系统不存在上级系统,所述上级系统ID设置为空;如果新系统以现有远程系统的系统ID作为本系统的上级系统ID,表示该现有远程系统为该新系统的上级系统。由于系统标识信息中不仅包括了系统ID,还包括了系统的上级系统ID,系统信息存储表中的系统信息通过步骤S6能够采用层级关系通过树形视图展现给用户。
本发明所述的方法通过在系统标识信息设置系统标志区别本地系统与现有远程系统,例如标志1表示本地系统,0表示远程系统。新系统将系统标识信息发送给根系统,或者根系统将系统标识信息列表广播发送给非根系统时,需要转换系统标识后再发送。
下面通过具体的实施例对本发明进行进一步详细的说明。
本发明实施例中以关系数据库的数据库表作为系统信息存储设备,表结构如下:
本发明中通过在系统标识信息中设置本地系统标志区别本地系统与现有远程系统,实施例中本地系统标志IsLocal为1表示本地系统,为0表示远程系统。
本发明实施例以医疗行业某分布式业务系统(电子病历接收系统)通过系统标识信息同步将分布在多个地域,物理上分布的系统整合为逻辑上集中的分布式系统的过程。
本实施例中,非根节点(张家港卫生局和张家港第一人民医院)收到苏州市卫生局广播发送的包含所有系统的系统标识信息列表,将所述系统标识信息列表更新到本地系统的系统信息存储表时,先将非本地系统(系统标志IsLocal为0的系统)从系统信息存储表全部删除,然后将系统标识信息列表中系统代号不同于本地系统的远程系统标识信息插入到系统信息存储表。
实施例1
图4示出了本发明实施例1和实施例2中分布式、多层级应用系统标识信息的同步方法的流程图。
首先部署根系统,本实施例中苏州市卫生局系统为最早上线的系统,为根系统,此时没有其它系统,苏州市卫生局系统进行系统标识信息管理的步骤如下:
步骤1、通过系统注册装置填写苏州市卫生局系统的标识信息,填写的系统标识信息如下:
系统ID |
上级系统ID |
系统名称 |
消息中间件代号 |
32050000 |
|
苏州市卫生局 |
user32050000 |
由于苏州市卫生局系统为根系统,所以没有上级系统,将其上级系统ID设置为空。
步骤2、将苏州市卫生局系统标识信息保存在系统信息存储表中,此时系统信息存储表的内容如下;
ID |
ParentID |
Name |
Usercode |
IsLocal |
32050000 |
|
苏州市卫生局 |
user32050000 |
1 |
由于苏州市卫生局系统是本实施例中第一个部署实施的根系统,不必发送系统标识信息,处理过程完成。
执行上述步骤后,系统列表展现装置展现效果如图5所示。
实施例2
实施例2是在实施例1的苏州市卫生局系统的基础上,在区县卫生局部署系统进行系统标识信息同步的步骤如下:
步骤1、通过系统注册装置填写本县(以县级市张家港卫生局为例)系统的标识信息,填写的系统标识信息如下:
系统ID |
上级系统ID |
系统名称 |
消息中间件账号 |
32058200 |
32050000 |
张家港市卫生局 |
user32058200 |
步骤2、将上述系统标识信息保存在张家港市卫生局系统的系统信息存储表中,此时张家港市卫生局系统信息存储表的内容如下;
ID |
ParentID |
Name |
Usercode |
IsLocal |
32058200 |
32050000 |
张家港市卫生局 |
user32058200 |
1 |
此处上级系统即ParentID为“32050000”,表示以苏州市卫生局系统代号作为张家港市卫生局的上级系统代号。
步骤3、张家港市卫生局系统将本地系统标识信息通过消息发送装置将上述标识信息发送到根系统,即苏州市卫生局系统;
在发送时,张家港市卫生局系统需要首先将本地系统标识信息的本地系统标志IsLocal转换成0,然后通过消息发送装置将上述标识信息发送到根系统。
步骤4与步骤5、苏州市卫生局系统接收到张家港市卫生局发送的消息后,从消息中提取张家港市卫生局的系统标识信息并将标识信息保存在系统信息存储表,此时苏州市卫生局系统信息存储表的内容如下:
ID |
ParentID |
Name |
Usercode |
IsLocal |
32050000 |
|
苏州市卫生局 |
user32050000 |
1 |
32058200 |
32050000 |
张家港市卫生局 |
user32058200 |
0 |
步骤6和步骤7、苏州市卫生局系统从系统信息存储设备中读取包含所有系统的系统标识信息列表,将系统标识信息列表中苏州市卫生局系统的本地系统标志IsLocal转换成0,然后将系统标识信息列表广播发送;
步骤8和步骤9、张家港市卫生局系统接收到苏州市卫生局发送的广播消息后,从广播消息中提取包含所有系统的系统标识信息列表,并将系统标识信息列表更新到系统信息存储表,此时张家港市卫生局系统信息存储表的内容如下;
ID |
ParentID |
Name |
Usercode |
IsLocal |
32058200 |
32050000 |
张家港市卫生局 |
user32058200 |
1 |
32050000 |
|
苏州市卫生局 |
user32050000 |
0 |
执行上述步骤后,各个系统的系统列表展现装置展现效果如图6所示。
在实施例2的基础上,在医院(此处以张家港第一人民医院为例)部署系统进行系统标识信息同步的步骤如下:
步骤1、通过系统注册装置填写张家港第一人民医院的标识信息,填写的系统标识信息设置如下:
系统ID |
上级系统ID |
系统名称 |
消息中间件账号 |
32058201 |
32058200 |
张家港第一人民医院 |
user32058201 |
步骤2、将系统标识信息保存在张家港第一人民医院的系统信息存储表中,此时张家港第一人民医院系统信息存储表的内容如下:
ID |
ParentID |
Name |
Usercode |
IsLocal |
32058201 |
32058200 |
张家港第一人民医院 |
user32058201 |
1 |
此处ParentID为“32058200”,表示以张家港市卫生局系统代号作为张家港第一人民医院的上级系统代号。
步骤3、张家港第一人民医院系统将本地系统标识信息的本地系统标志IsLocal转换成0,然后通过消息发送装置将上述标识信息发送到根系统,即苏州市卫生局系统;
步骤4和步骤5、苏州市卫生局系统接收到张家港第一人民医院发送的消息后,从消息中提取张家港第一人民医院的系统标识信息并将标识信息保存在系统信息存储表,此时苏州市卫生局系统信息存储表的内容如下:
ID |
ParentID |
Name |
Usercode |
IsLocal |
32050000 |
|
苏州市卫生局 |
user32050000 |
1 |
32058200 |
32050000 |
张家港市卫生局 |
user32058200 |
0 |
32058201 |
32058200 |
张家港第一人民医院 |
user32058201 |
0 |
步骤6和步骤7、苏州市卫生局系统从系统信息存储设备中读取包含所有系统的系统标识信息列表,将系统标识信息列表中苏州市卫生局系统的本地系统标志IsLocal转换成0,然后将系统标识信息列表广播发送;
步骤8和步骤9、非根系统接收根系统发送的广播消息,并从广播消息中提取系统标识信息列表,将该列表更新到本地系统信息存储设备中;
此时的非根系统为张家港市卫生局系统和张家港第一人民医院系统,张家港市卫生局系统接收到苏州市卫生局发送的广播消息后,从广播消息中提取包含所有系统的系统标识信息列表,并将系统标识信息列表更新到系统信息存储表,此时张家港市卫生局系统信息存储表的内容如下:
ID |
ParentID |
Name |
Usercode |
IsLocal |
32058200 |
32050000 |
张家港市卫生局 |
user32058200 |
1 |
32050000 |
|
苏州市卫生局 |
user32050000 |
0 |
32058201 |
32058200 |
张家港第一人民医院 |
user32058201 |
0 |
张家港第一人民医院系统接收到苏州市卫生局发送的广播消息后,从广播消息中提取包含所有系统的系统标识信息列表,并将系统标识信息列表更新到系统信息存储表,此时张家港第一人民医院系统信息存储表的内容如下:
ID |
ParentID |
Name |
Usercode |
IsLocal |
32058201 |
32058200 |
张家港第一人民医院 |
user32058201 |
1 |
32050000 |
|
苏州市卫生局 |
user32050000 |
0 |
32058200 |
32050000 |
张家港市卫生局 |
user32058200 |
0 |
执行上述步骤后,各个系统的系统列表展现装置展现效果如图7所示。
可以如上诉操作过程继续添加苏州市下属各区县卫生局、各区县卫生局管辖医院的系统,图8是添加了吴中区卫生局和吴中区人民医院的系统列表展现装置展现效果。
显然,本发明所述的一种分布式、多层级应用系统标识信息的同步方法与系统并不限于具体实施方式中所述的实施例,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其同等技术的范围之内,则本发明也意图包含这些改动和变型在内。