成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)公司,提供成都網(wǎng)站制作、成都做網(wǎng)站,網(wǎng)頁(yè)設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);可快速的進(jìn)行網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,是專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
通道是
Mirth Connect
的重要組成部分,被看做是一對(duì)多的一種單向通道,其通道組件是解耦的,在兩個(gè)應(yīng)用或多個(gè)應(yīng)用之間傳輸醫(yī)療數(shù)據(jù)。
Mirth Connect
能把長(zhǎng)消息任務(wù)分割成小消息任務(wù),其可靠性、靈活性、高性能得到保證。
圖 2-1 Mirth Connect 抽象通道架構(gòu)
通道架構(gòu)組成:由源、通道、目標(biāo)組成,其中通道包括過(guò)濾組件和轉(zhuǎn)換組件。
創(chuàng)建一個(gè)通道需要滿足如下特點(diǎn):
● 源連接器類(lèi)型,用于讀取數(shù)據(jù)。 (Source)
● 目標(biāo)連接器類(lèi)型,用于發(fā)送數(shù)據(jù)。 (Destination)
● 入站消息格式。 (inbound)
● 出站消息格式。 (outbound)
● 傳輸 ( 在入站和出站之間有個(gè)映射表 )
什么是連接器 (Connector)
連接器就是一個(gè)消息的端點(diǎn),是 Mirth Connect 之間或與外部應(yīng)用之間通訊的一種特殊協(xié)議。
支持的連接器列表 :
● TCP/MLLP
● 數(shù)據(jù)庫(kù) (MySQL,PostgreSQL,ORACLE,SQLServer,ODBC)
● 文件(本地文件系統(tǒng)和網(wǎng)絡(luò)共享)
● PDF RTF 文檔
● JMS
● HTTP( 免費(fèi)版 HTTPS 協(xié)議不支持 )
● SMTP
● SOAP( 超 HTTP)
收到數(shù)據(jù)的連接器被稱(chēng)為 Reader( 讀取者 ), 例如 MLLP Reader ;發(fā)送數(shù)據(jù)的連接器被稱(chēng)為 Writer( 寫(xiě)入者 ) ,例如 Database Writer 。
過(guò)濾器 (filter)
現(xiàn)實(shí)世界中,許多應(yīng)用之間互聯(lián),一個(gè)通道可能從許多源接收消息,然后這些消息根據(jù)消息的類(lèi)型或條件,需要分門(mén)別類(lèi)的處理。
有兩種方法可以解決上述問(wèn)題:過(guò)濾器或路由器。
路由器最關(guān)鍵的優(yōu)勢(shì)是根據(jù)唯一的位置決定消息到達(dá)目的地的條件。
過(guò)濾器是 Mirth Connect 處理消息的主要機(jī)制,根據(jù)消息的屬性(段和元素)決定對(duì)消息的處理情況,過(guò)濾器從消息隊(duì)列中檢測(cè)消息的屬性,而消息不會(huì)從消息隊(duì)列中刪除,如果本過(guò)濾器沒(méi)有校驗(yàn)通過(guò),原封不動(dòng)的返回給消息隊(duì)列,以便此消息用于其它的過(guò)濾器進(jìn)行處理。
如果處理的消息類(lèi)型很多,可以建立多個(gè)獨(dú)立的到目標(biāo)的通道,相互之間可以建立多個(gè)過(guò)濾器進(jìn)行消息的處理。
轉(zhuǎn)換器 (Transformer)
許多情況下,遺留系統(tǒng)、客戶(hù)應(yīng)用和第三方應(yīng)用,彼此之間需要根據(jù)數(shù)據(jù)模型進(jìn)行消息的發(fā)送,尤其有特殊格式要求的數(shù)據(jù)系統(tǒng)。當(dāng)新的商業(yè)需求提出一個(gè)唯一標(biāo)準(zhǔn)的時(shí)候,我們就需要把其他系統(tǒng)數(shù)據(jù)格式轉(zhuǎn)成新系統(tǒng)要求的數(shù)據(jù)標(biāo)準(zhǔn),傳統(tǒng)方法處理起來(lái)即復(fù)雜又困難,更難于維護(hù)。
那么,對(duì)這些不同格式要求的消息,怎么進(jìn)行數(shù)據(jù)互聯(lián)呢? Mirth Connect 提供了消息轉(zhuǎn)換器來(lái)解決這類(lèi)問(wèn)題。通過(guò) Transformer ,接收方得到了它理解的消息,變成自己的內(nèi)部使用的數(shù)據(jù)格式。
Transformer 支持的轉(zhuǎn)換器類(lèi)型:
● Message Builder 把入站消息片段映射成出站消息片段。
● Mapper 把入站消息片段映射成 Mirth Connect 內(nèi)部變量,這些變量在 以后會(huì)被用到。
● External Script 從名字上就能猜到,利用外部的 javascript 腳本進(jìn)行消 息的轉(zhuǎn)換或映射數(shù)據(jù)。
● XSLT Step 就是個(gè) XSL 轉(zhuǎn)換工具
● JavaScript 和 External Script 一樣,靈活使用。在本教程中有許多地方 用到了 JavaScript , Java 代碼也被用到了。
通道腳本執(zhí)行的階段
通道還支持腳本特性,增強(qiáng)消息的處理邏輯,適用于管道本身及所有傳遞的消息。
這些腳本的名字及含義如下:
● Deploy 部署腳本, Mirth Connect Server 啟動(dòng)的時(shí)候或通道重新部署的時(shí)候
啟動(dòng)這部分的腳本 .
● Attachment 附件腳本,以本地的格式處理消息并允許抽取一部分消息作為
附件存儲(chǔ)起來(lái),或者是不可避免的要修改消息。
● Preprocessor 預(yù)處理腳本,腳本還允許在 Mirth connect 開(kāi)始將其轉(zhuǎn)換為內(nèi)
部格式 ( 即 XML) 之前以本機(jī)格式處理每個(gè)消息。
● Filter & Transformer 過(guò)濾器和轉(zhuǎn)換器,是我們處理入站和出站消息的主要
地方。
● Response 應(yīng)答腳本,從名字上看出,就是處理目標(biāo)發(fā)送的應(yīng)答信息。
● Postprocessor 后處理器腳本,消息成功發(fā)送后執(zhí)行的腳本。
● Undeploy 反部署腳本, Mirth Connect Server 每次停止服務(wù)的時(shí)候調(diào)用,比
如釋放通道程序占用的內(nèi)存。
腳本的執(zhí)行順序如下:
1. Global Deploy script 全局部署
2. Deploy 部署
3. Attachment script 附件腳本
4. Global Preprocessor script 全局預(yù)處理腳本
5. Preprocessor script 預(yù)處理腳本
6. Source connector Filters script 源連接器過(guò)濾器腳本
7. Source connector Transformer script or mapping 源連接器轉(zhuǎn)換器腳本或
映射
8. Destination 1 connector Filters script 目標(biāo) 1 連接器過(guò)濾器腳本
9. Destination 1 connector Transformer script or mapping 目標(biāo) 1 連接器轉(zhuǎn)
換腳本或映射
10. Destination N connector Filters script 目標(biāo) N 連接器過(guò)濾器腳本
11. Destination N connector Transformer script or mapping 目標(biāo) N 連接器
轉(zhuǎn)換腳本或映射
12. Response 1 Transformer script or mapping 應(yīng)答 1 轉(zhuǎn)換腳本或映射
13. Response N Transformer script or mapping 應(yīng)答 N 轉(zhuǎn)換腳本或映射
14. Postprocessor script 后處理器腳本
15. Global Postprocessor script 全局后處理器腳本
16. Undeploy 反部署
17. Global Undeploy script 全局反部署腳本
Deploy 、 Global Deploy 每次管道重新部署啟動(dòng)一次, Undeploy 、 Global Undeploy 也是一樣,其他的每次發(fā)送接收消息都要執(zhí)行一遍。注意 Global Preprocessor 在 Preprocessor 之前執(zhí)行, Global Postprocessor 在 Postprocessor 之后執(zhí)行。
通道在序列里操作,首先被執(zhí)行的是第一個(gè)通道的
Attachment
,而第一個(gè)通道
Postprocessor
是最后執(zhí)行,讓我們看看序列通道執(zhí)行的情況如下圖:
圖 2-2 腳本執(zhí)行序列
這個(gè)序列有三個(gè)通道串行執(zhí)行,每到 Destination Connector 執(zhí)行完畢就進(jìn)入第二個(gè)通道,而應(yīng)答的處理也是逐級(jí)遞歸。
接下來(lái)的內(nèi)容我們就詳細(xì)介紹這些情況。