1.准备工作

1.1 本机安装vs2019:(https://visualstudio.microsoft.com/zh-hans/)

1.2 本机安装win64的MariaDB 10.3.27版本数据库:(https://mariadb.com/downloads/)

1.3 本机下载MariaDB数据库的JDBC驱动MariaDB Connector/J 2.7.1版本:(https://mariadb.com/kb/en/mariadb-connector-j-271-release-notes/)

2.在Mirth中添加MariaDB数据库的JDBC驱动jar包

2.1 停止Mirth服务

2.2 把1.3下载的mariadb-java-client-2.7.1.jar包拷贝到F:\MirthConnect\server- lib\database目录,如图所示:

然后修改F:\MirthConnect\conf\dbdrivers.xml文件,添加一条Mariadb的JDBC驱动信息:

<driver class="org.mariadb.jdbc.Driver" name="MariaDB" template="jdbc:mariadb://host:port/dbname" selectLimit="SELECT * FROM ? LIMIT 1" alternativeClasses="com.mysql.jdbc.Driver" />

2.3 重启Mirth服务

3.在MariaDB数据库创建测试用数据库

双击桌面HeidiSQL应用图标执行:

-- 创建 mirthtestdb 数据库

CREATE DATABASE IF NOT EXISTS `mirthtestdb`;

USE `mirthtestdb`;

-- 创建 mirthtestdb.patient 表

CREATE TABLE IF NOT EXISTS `patient` (

`pid` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(50) DEFAULT NULL,

`sex` varchar(10) DEFAULT NULL,

`dob` varchar(12) DEFAULT NULL,

`addr` varchar(50) DEFAULT NULL,

`ssn` varchar(50) DEFAULT NULL,

`status` tinyint(4) DEFAULT 0,

PRIMARY KEY (`pid`)

) ENGINE=InnoDB AUTO_INCREMENT=107 DEFAULT CHARSET=utf8;

-- 插入 mirthtestdb.patient 表的测试用数据:

DELETE FROM `patient`;

INSERT INTO `patient` (`pid`, `name`, `sex`, `dob`, `addr`, `ssn`, `status`) VALUES

(103, 'Amarnath Zhao', 'M', '19910518', '臺灣', '886', -3),

(104, 'HariGanesh Qian', 'M', '19860712', 'UK', '44 ', -3),

(105, 'Andrew Sun', 'M', '20000225', '大陆', '86', -3),

(106, 'Stiffiny Li', 'F', '20200113', 'RU', '07', -3);

===================================

-- 创建 mirth_business_testdb 数据库

CREATE DATABASE IF NOT EXISTS `mirth_business_testdb`;

USE `mirth_business_testdb`;

-- 创建 mirth_business_testdb.b_patient 表

CREATE TABLE IF NOT EXISTS `b_patient` (

`pid` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(50) DEFAULT NULL,

`sex` varchar(10) DEFAULT NULL,

`dob` varchar(12) DEFAULT NULL,

`addr` varchar(50) DEFAULT NULL,

`ssn` varchar(50) DEFAULT NULL,

`status` tinyint(4) DEFAULT 0,

PRIMARY KEY (`pid`) USING BTREE

) ENGINE=InnoDB AUTO_INCREMENT=107 DEFAULT CHARSET=utf8;

=================================================================================

赋予root用户远程访问权限:

grant all on mirth_business_testdb.* to 'root'@'%' identified by '125353Ct';

FLUSH PRIVILEGES;

grant all on mirthtestdb.* to 'root'@'%' identified by '125353Ct';

FLUSH PRIVILEGES;

4.让我们通过完成一个接口任务的示例,开始Mirth的使用,并在此过程中培养起学习兴趣

4.1 示例描述:

同步两个数据库的表数据。首先我们通过定时刷库提取mirthtestdb数据库中patient表中字段 status的值为0的行;其次按照第三方webservice接口要求组织入参并发送到此webservice服务,由此webservice服务内部完成对mirth_business_testdb数据库中b_patient表的插入逻辑;最后根据webservice响应值更新mirthtestdb数据库中patient表字段 status的值为1,表明已经提取成功。

4.2 技术要点:

定时刷库提取用Mirth的Database Reader信道实现;第三方webservice接口在vs2019中用C#编程实现。

5.开始完成任务之旅

5.1 在确保Mirth服务已启动的前提下,以管理员模式启动F:\MirthConnect\AdministratorLauncher目录中的mirth administrator launcher程序launcher.exe,如图所示:

5.2 新建Group组Lesson Two:Mirth Connect Cultivate interest(db&soap);

中文释义,第二课:培养学习Mirth的兴趣(从Database Reader Web Service Sender 两种类型Channel讲起)

5.3在Lesson Two Group下New Channel新建信道,如图所示:

(图示:新建信道Channel)

(图示:信道摘要Summary)

(图示:设置信道输入参数格式和输出参数格式)

(图示:设置Source源通道信息)

update patient set status=-1 where pid=${patient_pid}

(图示:快速生成查询SQL语句)

(图示:Edit Transformer 编辑Source Channel源通道入参消息模板到出参消息模板的转换步骤)

(图示:Edit Souce Transformer 编辑转换步骤)

<?xml version="1.0" encoding="UTF-8"?>

<result>

<pid>value</pid>

<name>value</name>

<sex>value</sex>

<dob>value</dob>

<addr>value</addr>

<ssn>value</ssn>

<status>value</status>

</result>

(图示:Edit Destinations 目标通道步骤)

(图示:Edit Response 处理webservice响应信息)

(图示:Edit Response 处理webservice响应信息,连接数据库更新字段status值为1 )

var dbConn=DatabaseConnectionFactory.createDatabaseConnection('org.mariadb.jdbc.Driver', 'jdbc:mariadb://127.0.0.1:3306/mirthtestdb', 'root', '125353Ct');

var pid=msg.*::['Body'].*::['ReceiveMessageResponse'].*::['ReceiveMessageResult'].toString();

if(pid != '-1')

{

var icount=dbConn.executeUpdate("update patient set status=1 WHERE pid = "+pid);

if(icount!=1)

{

logger.error('pid:'+pid);

}

dbConn.close();

}

特别说明:如果在Source源信道信息中设置中没有设置Never选项,则以上javascript脚本更新status=1会马上变为-1。

这也就说明了Source源信道这个设置是在执行了目的信道的响应处理后又执行的。

第二課:Mirth培養興趣之旅 ——由定時刷庫接口編程講起的更多相关文章

  1. gym101522 [小熊骑士限定]La Salle-Pui Ching Programming Challenge 培正喇沙編程挑戰賽 2017

    西瓜队(划掉),Kuma Rider久违的第一场训练,四小时瞎打.jpg A.水题,排序 #include<cstdio> #include<iostream> #includ ...

  2. Codeforces Gym101522 D.Distribution of Days-算日期 (La Salle-Pui Ching Programming Challenge 培正喇沙編程挑戰賽 2017)

    D.Distribution of Days The Gregorian calendar is internationally the most widely used civil calendar ...

  3. Codeforces Gym101522 C.Cheering-字符串 (La Salle-Pui Ching Programming Challenge 培正喇沙編程挑戰賽 2017)

    C.Cheering To boost contestants' performances in the 20th La Salle - Pui Ching Programming Challenge ...

  4. Codeforces Gym101522 A. Ambiguous Dates (La Salle-Pui Ching Programming Challenge 培正喇沙編程挑戰賽 2017)

    A. Ambiguous Dates There are two popular formats for representing a date: day/month/year or month/da ...

  5. MSSS攝影大賽計劃書(第三版)

    比賽內容:對香港的城市風景以及自然風光的攝影 預期成果: 提升同學對香港的認識,鼓勵學生走出大學學園去瞭解香港,同時豐富會員的課餘活動,培養同學的興趣愛好 比賽時間:4月1-15日 最後作品提交時間: ...

  6. VLC祥解

    功能部份:   VLC媒體播放器的核心是libvlc ,它提供了界面,應用處理功能,如播放列表管理,音頻和視頻解碼和輸出,線程系統.所有libvlc源文件設在的/src目錄及其子目錄:   # con ...

  7. [SharePoint 2010] SharePoint 2010上多人同時編輯Office 2010文件

    Office 2010這個版本,提供了一個令人興奮的新功能,那就是它可以讓多人同時編輯一份Office 2010的文件. 這是一個很大的突破. 以往在與SharePoint搭配下的分享環境,檔案只能被 ...

  8. 邁向IT專家成功之路的三十則鐵律 鐵律十二:IT人養生之道-德行

    所謂的「養生」在中國古代裡所指的是針對內在精神層面修為的提升,到了近代中醫所謂的養生,則除了包含最根本的內在精神層面之外,還涵蓋了外在身體的養護.在現今各行各業的人士當中,嚴格來說都應該要有一套專屬的 ...

  9. 我要成为前端工程师!给 JavaScript 新手的建议与学习资源整理

    来源于:http://blog.miniasp.com/post/2016/02/02/JavaScript-novice-advice-and-learning-resources.aspx 今年有 ...

  10. GOOGLE搜索從入門到精通V4.0

    1,前言2,摘要3,如何使用本文4,Google簡介5,搜索入門6,初階搜索 6.1,搜索結果要求包含兩個及兩個以上關鍵字 6.2,搜索結果要求不包含某些特定資訊 6.3,搜索結果至少包含多個關鍵字中 ...

随机推荐

  1. iview 表单验证 爆红后,有某些组件现隐,爆红和必填会错位,解决方案 组件上加key

    iview 表单验证 爆红后,有某些组件现隐,爆红和必填会错位,解决方案 组件上加key

  2. 关于Sql server数据类型HierarchyID 数据类型用法和递归显示完整路径

    SQL Server 2008版本之后的新类型HierarchyID 不知道大家有没有了解, 该类型作为取代id, parentid的一种解决方案,让人非常惊喜. 官方给的案例浅显易懂,但是没有实现我 ...

  3. ADS1299芯片datasheet 重点解析

    一 START和DRDY的关系 start必须要至少提前拉高2个时钟,才会产生DRDY信号,这个非常关键,也是重心所在.很多遗漏的就不会有DRDY信号出来了. 二 START和DRDY的时序图 sta ...

  4. KTL 一个支持C++14编辑公式的K线技术工具平台

    K,K线,Candle蜡烛图. T,技术分析,工具平台 L,公式Language语言使用c++14,Lite小巧简易. 项目仓库:https://github.com/bbqz007/KTL 国内仓库 ...

  5. 关于编写GUI程序我自己的一些理解

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文发布于 2014-10-12 14:51:31 ...

  6. drf(序列化器)

    一 序列化器组件介绍(Serializer) 1 序列化器组件介绍 序列化组件,又称序列化器,是处理对象和字典的数据格式转换,json的序列化和反序列化,在Request和Response处理了. ' ...

  7. python高级技术(死锁、递归锁、信号量、Event事件、进程池、线程池、协程)

    一 死锁和递归锁(了解) 进程也有死锁与递归锁,使用方法类似 所谓死锁: 是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去. 此时称 ...

  8. C# 按指定宽高缩放图片

    /// <summary> /// 按指定宽高缩放图片 /// </summary> /// <param name="image">原图片&l ...

  9. QT实现参数批量配置

    QT实现批量配置 需求 一些参数需要批量化配置 之前搭建的FPGA的寄存器控制模型 使用AXI-lite搭建 直接操作上位机 这里需要一个可以快速配置所有参数的上位机 需要保存文件,可以保留上一次的参 ...

  10. debian12 linux 安装xfce4

    1.安装显示服务器 sudo apt install xorg 2.安装xfce sudo apt install xfce4 xfce4-goodies 3.安装显示管理器 sudo apt ins ...