第二章 什么是通道?
更新:HHH   时间:2023-1-7


本章主要介绍Mirth Connect开发框架,讲解运行的各个阶段,请大家仔细研读、理解,对后续章节帮助是很大的。开发者把前端与服务分开运行,服务框架集成了很多流行的服务及协议,从中我们也可以看出开发的大致原理。本章涉及到的知识点需要了解一些的,比如SOAP

第二章   什么是通道?

 

 

通道是 Mirth Connect  的重要组成部分,被看做是一对多的一种单向通道,其通道组件是解耦的,在两个应用或多个应用之间传输医疗数据。 Mirth Connect  能把长消息任务分割成小消息任务,其可靠性、灵活性、高性能得到保证。

 


2-1 Mirth Connect 抽象通道架构

通道架构组成:由源、通道、目标组成,其中通道包括过滤组件和转换组件。

创建一个通道需要满足如下特点:

         源连接器类型,用于读取数据。 (Source)

         目标连接器类型,用于发送数据。 (Destination)

         入站消息格式。 (inbound)

         出站消息格式。 (outbound)

         传输 ( 在入站和出站之间有个映射表 )

 

什么是连接器 (Connector)

连接器就是一个消息的端点,是 Mirth Connect 之间或与外部应用之间通讯的一种特殊协议。

支持的连接器列表 :

        TCP/MLLP

         数据库 (MySQL,PostgreSQL,ORACLE,SQLServer,ODBC)

         文件(本地文件系统和网络共享)

        PDF RTF 文档

        JMS

        HTTP( 免费版 HTTPS 协议不支持 )

        SMTP

        SOAP( HTTP)

收到数据的连接器被称为 Reader( 读取者 ), 例如 MLLP Reader ;发送数据的连接器被称为 Writer( 写入者 ) ,例如 Database Writer

 

过滤器 (filter)

现实世界中,许多应用之间互联,一个通道可能从许多源接收消息,然后这些消息根据消息的类型或条件,需要分门别类的处理。

有两种方法可以解决上述问题:过滤器或路由器。

路由器最关键的优势是根据唯一的位置决定消息到达目的地的条件。

过滤器是 Mirth Connect 处理消息的主要机制,根据消息的属性(段和元素)决定对消息的处理情况,过滤器从消息队列中检测消息的属性,而消息不会从消息队列中删除,如果本过滤器没有校验通过,原封不动的返回给消息队列,以便此消息用于其它的过滤器进行处理。

如果处理的消息类型很多,可以建立多个独立的到目标的通道,相互之间可以建立多个过滤器进行消息的处理。

 

转换器 (Transformer)

许多情况下,遗留系统、客户应用和第三方应用,彼此之间需要根据数据模型进行消息的发送,尤其有特殊格式要求的数据系统。当新的商业需求提出一个唯一标准的时候,我们就需要把其他系统数据格式转成新系统要求的数据标准,传统方法处理起来即复杂又困难,更难于维护。

那么,对这些不同格式要求的消息,怎么进行数据互联呢? Mirth Connect 提供了消息转换器来解决这类问题。通过 Transformer ,接收方得到了它理解的消息,变成自己的内部使用的数据格式。

Transformer 支持的转换器类型:

        Message Builder  把入站消息片段映射成出站消息片段。

        Mapper  把入站消息片段映射成 Mirth Connect  内部变量,这些变量在                以后会被用到。

        External Script  从名字上就能猜到,利用外部的 javascript 脚本进行消                     息的转换或映射数据。

        XSLT Step  就是个 XSL 转换工具

        JavaScript  External Script 一样,灵活使用。在本教程中有许多地方                   用到了 JavaScript Java 代码也被用到了。

 

通道脚本执行的阶段

通道还支持脚本特性,增强消息的处理逻辑,适用于管道本身及所有传递的消息。

这些脚本的名字及含义如下:

 Deploy  部署脚本, Mirth Connect Server 启动的时候或通道重新部署的时候

    启动这部分的脚本 .

 Attachment  附件脚本,以本地的格式处理消息并允许抽取一部分消息作为

    附件存储起来,或者是不可避免的要修改消息。

 Preprocessor  预处理脚本,脚本还允许在 Mirth connect 开始将其转换为内

    部格式 ( XML) 之前以本机格式处理每个消息。

 Filter & Transformer  过滤器和转换器,是我们处理入站和出站消息的主要

    地方。

 Response  应答脚本,从名字上看出,就是处理目标发送的应答信息。

 Postprocessor  后处理器脚本,消息成功发送后执行的脚本。

 Undeploy  反部署脚本, Mirth Connect Server 每次停止服务的时候调用,比

    如释放通道程序占用的内存。

 

脚本的执行顺序如下:

      1. Global Deploy script  全局部署

      2. Deploy  部署

      3. Attachment script  附件脚本

      4. Global Preprocessor script  全局预处理脚本

      5. Preprocessor script  预处理脚本

      6. Source connector Filters script  源连接器过滤器脚本

      7. Source connector Transformer script or mapping  源连接器转换器脚本或

      映射

      8. Destination 1 connector Filters script 目标 1 连接器过滤器脚本

      9. Destination 1 connector Transformer script or mapping  目标 1 连接器转

      换脚本或映射

      10. Destination N connector Filters script 目标 N 连接器过滤器脚本

      11. Destination N connector Transformer script or mapping  目标 N 连接器

       转换脚本或映射

      12. Response 1 Transformer script or mapping  应答 1 转换脚本或映射

      13. Response N Transformer script or mapping  应答 N 转换脚本或映射

      14. Postprocessor script  后处理器脚本

      15. Global Postprocessor script  全局后处理器脚本

      16. Undeploy  反部署

      17. Global Undeploy script  全局反部署脚本

 

Deploy Global Deploy 每次管道重新部署启动一次, Undeploy Global Undeploy 也是一样,其他的每次发送接收消息都要执行一遍。注意 Global Preprocessor Preprocessor 之前执行, Global Postprocessor Postprocessor 之后执行。

通道在序列里操作,首先被执行的是第一个通道的 Attachment ,而第一个通道 Postprocessor 是最后执行,让我们看看序列通道执行的情况如下图:

 


2-2  脚本执行序列

这个序列有三个通道串行执行,每到 Destination Connector 执行完毕就进入第二个通道,而应答的处理也是逐级递归。

 

接下来的内容我们就详细介绍这些情况。

 


返回web开发教程...