第二章 什么是通道?
通道是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执行完毕就进入第二个通道,而应答的处理也是逐级递归。
接下来的内容我们就详细介绍这些情况。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。