文章
· 五月 20, 2021 阅读大约需 7 分钟

互操作消息统一管理系列:MessageBank

一. 企业信息库简介

企业信息库(MessageBank)是一个可选的远程归档设施,可以从多个来自不同实例的互操作性Production中收集信息、事件日志项目和搜索表项。如下图所示:
image

这套环境由两种角色的实例构成:
企业信息库服务器,它本身也是一个Production,完全由Message Bank服务组成,接收来自任何数量的客户Production提交的消息、日志等。

客户端Operation(Message Bank Operation),将其添加到一个正在运行的Production中,并用企业信息库服务器的地址进行配置。如连接通畅,消息和日志即可自动转发到Message Bank并在其中存储。

为了使你能方便地看到信息库中的信息,InterSystems IRIS®提供了以下附加选项。

对于企业信息库实例,管理门户自动包括企业监控器页面,在那里你可以监控客户端Production的状态,浏览消息库,并对被监控客户的消息进行检索。

对于每个客户端实例,你在消息库实例中配置一个到企业监控器的链接。

如下所示:
image

二. 常见应用场景

消息归档

在使用IRIS互操作性时,对于生产环境,为保障其有充足的磁盘空间和即时查询的效率,通常会采用消息和日志过期策略。在生产环境中只保留近期(如一个月)的信息以备回溯,过期数据将定期被清除。因此,如果有长期保留消息(如在生产环境清除周期之外还需要更长时间的回溯)的需求,则可以通过Message Bank对消息和日志进行长期保存。

企业消息仓库

对于集成规模较大,集成业务较多的大型企业和集团(如大型医院、医联体、医共体),往往会采用多套互操作性实例支撑数据交换和集成业务。在这种环境下,可以通过Message Bank汇聚和存储整个企业环境下的所有互操作消息和日志,为业务集中监控、跨实例业务故障分析等工作创造条件。

消息和日志再利用

理想条件下,实施互操作性项目之后,消息和日志中就会包括大量的业务数据,典型的包括下达的医嘱、患者信息、医疗记录等。通过对Message Bank中的数据进行分析和挖掘,能够获得有价值的业务信息。

接下来我们会为大家介绍Message Bank的搭建过程。

三. 搭建Message Bank

创建Message Bank 命名空间

在生产所用的实例之外,我们需要使用一台独立的实例用于安装和配置Message Bank(实例安装过程和License激活过程从略,请查看安装文档或联系您的支持工程师)。
在该实例上,创建一个命名空间安装Message Bank,如下所示:
image

由于Message Bank本质上由Production实现,因此创建命名空间时要选上对互操作Producation的支持。

InterSystems为大家提供了可以套用的Production模版。因此,请按照以下步骤创建Production:

在刚才创建的命名空间MessageStore下创建类MessageBank.BankProduction,继承Ens.Enterprise.MsgBank.Production并将Ens.Enterprise.MsgBank.Production中的XData代码块拷贝到新建的类中,如下所示:
image

保存和编译该类,并在Interoperability菜单中加载该Production。
image

其中已部署了两个服务:
MsgBankService:该服务通过TCP连接从其他Production接收消息
注意该Service默认使用9192端口与其他客户端通信。
image

MonitorService:该服务收集其他实例的其他Production的运行状态

此时,这个Production已经具备了从其他实例的Production收集消息和事件信息的能力,可直接启动。当然,我们还需要配置与客户端的连接。

为客户端Production添加消息转发Operation

假设我们已经有一个可运行的的如下所示的Production
image

注意这个Production与Message Bank不在同一个实例上。
image

这个Production接收XML格式的报文并根据报文类型转发到不同的BO。

要将这个Production加入Message Bank,则需要对该客户端Production添加Business Operation Ens.Enterprise.MsgBankOperation。
image

对于该Operation,需要指定要连接的Message Bank的IP地址和端口。
image

同时,建议开启这个Operation的“启用存档”开关,保证在Message Bank临时故障时挂起消息,在故障恢复后还能捕捉到故障期间的消息和日志。
配置完成后启用该Operation。

在Message Bank中加入客户端信息

上述连接建立后,客户端和Message Bank间的连接已建立,还需要配置Message Bank和客户端Production之间的程序信息(相当于注册)才能正常工作。

添加客户端连接凭据

image

Message Bank需要通过Web请求访问客户端信息,因此,需要配置客户端凭据,即可通过管理门户访问客户端Production的用户名和密码(对访问权限的设计和配置,可参见我们之前的文章:IRIS中的权限管理)

在Message Bank上配置客户端信息

在Message Bank中的Interoperability菜单中找到“企业系统”项
image

在操作页面上通过“新建连接”
image

新建连接添加客户端信息。
image

注意其中的服务Web应用路径为该客户端实例上Production所在的命名空间的Web Application根路径,并引用之前填写的凭据。
如配置正确,可通过企业监视器查看连接状态
image

连接成功的状态如下:
image

在客户端上添加Message Bank连接信息(可选步骤)

如果需要在客户端上通过链接查看消息仓库的信息,则可以配置链接。
在客户端上,在被采集的Production所在的命名空间的Interoerability菜单中“消息仓库链接”配置
image

输入Message Bank所在的IP、端口和Production所在的命名空间,保存并“开始”即可跳转到Messsage Bank的企业监视器。
image

需要注意的是,该配置固定采用了/csp/[namespace]为Message Bank的Web Application路径,而在Message Bank实例上,这个Web Application默认的路径是/csp/healthshare/messagestorage。可通过在Message Bank上添加一个Web Application,拷贝/csp/healthshare/messagestorage的配置。
image

四. Message Bank的实施效果

测试消息

在客户端的Production中触发任意流程产生消息,如下所示:
image

此时通过Message Bank中的“消息仓库查看器”即可查询存储在消息仓库中的消息
image

如下:
image

可以注意到该消息已被同步到消息仓库。

需要注意,使用“消息仓库查看器”时,查询的是在Message Bank中存储的消息数据,使用在Message Bank上定义的Search Table或索引进行查询;如果通过“企业消息查看器”查询,则是链接到客户端的消息查看器查询,应用的是在客户端上定义的索引。

消息的存储

根据在源系统的消息类型的不同,传递到Message Bank后会以不同的形式保存消息。

虚拟文档

对于HL7 V2等标准消息或基于XML虚拟文档的消息,在Message Bank这一侧也同样以虚拟文档的形式保存。
image

特别注意其中的如下属性:
MessageBodyClassName:该类型为消息在Message Bank侧持久化的类型。
ClientBodyClassName:该类型为消息在客户端侧持久化的类型。
在本例中可以看到,客户端通过EnsLib.EDI.XML.Document类型传递的消息,在Message Bank中也是通过EnsLib.EDI.XML.Document保存。
MessageBodyId:消息在Message Bank中的物理主键
ClientBodyId:客户端侧持久化消息的物理主键
ClientSessionId:客户端会话Id

结构化消息

对于基于Ens.Request等持久化类型的消息,在Message Bank这一侧则默认使用字符流来保存。
例如,对于如下的客户端结构化消息传输
image

在Message Bank中的保存形式为:
image

可见:
MessageBodyClassName:消息在Message Bank中以%Stream.GlobalCharacter即字符流进行保存

因此,无论是保存为EnsLib.EDI.XML.Document或是%Stream.GlobalCharacter,在Message Bank中保存的消息本身都缺乏足够的结构化特征和索引以支持对消息体的检索,我们会在下一篇教程《互操作消息统一管理系列:SearchTable加速检索》中介绍如何通过构建Search Table来检索这些消息。

对于Message Bank相关的内容,可参见:
https://docs.intersystems.com/healthconnect20201/csp/docbook/DocBook.UI....
也欢迎与我们联系获得更详细的信息。

讨论 (0)1
登录或注册以继续