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. navigator.aardio 代码备份

    import win.ui; import console; import process; import string.regex; import libs.router; /*DSG{{*/ ma ...

  2. 基于TLSR8359的2.4G私有协议多发一收方案解析

    一 简析 1.简介 泰凌微的2.4G私有协议芯片在市场应用十分广泛. 2.特性 无线传输距离远 功耗低,接口丰富 自带mcu功能,可实现mcu+2.4G的私有功能 二 源码解析 1.原理图 框图如下所 ...

  3. Kotlin学习快速入门(10)—— 重载运算符使用

    原文:Kotlin学习快速入门(10)-- 重载运算符使用 - Stars-One的杂货小窝 Kotlin中提供了基础的运算符,但是只是针对基础的数据类型,如Int,Double等 如果我们想让两个对 ...

  4. day11-面向对象02

    面向对象02 7.继承 继承的本质是对某一批类的抽象,从而实现对现实世界更好地建模 extends的意思是"扩展".子类是父类的扩展. Java类中只有单继承,没有多继承!(一个儿 ...

  5. day01-数据库的安装和使用

    Java数据库的安装和使用 1.数据库的作用 一个问题:淘宝网.京东.微信抖音,都有各自的功能,那么我们退出系统的时候,为什么信息还在? 解决之道-文件,数据库 为了解决上诉问题,使用更加利于管理数据 ...

  6. 算法研究之快速排序java版

    很早之前就已经接触过快速排序算法了,面试当中也屡屡被问到,虽然明白其原理,但从未真正的用代码敲出来. 写关于算法的代码之前一定要原理想明白,不然就是盲目,在参考有关资料及自己的沉思之后,写出如下代码, ...

  7. 软件开发、持续集成(CI)、持续交付(CD)、持续部署(CD) 和 版本管理(Version Control) 的理解和思考

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  8. MySQL(单表查询、多表查询、Navicat软件使用、查询练习、pymysql模块)

    一 单表操作 表准备和注意事项 create table employee( id int not null unique auto_increment, name varchar(20) not n ...

  9. ItemTouchHelper 实现交互动画

    目录介绍 01.拖拽需要实现功能 02.几个重要的方法说明 03.简单实现思路 04.拖拽效果上优化 05.完整代码展示 好消息 博客笔记大汇总[16年3月到至今],包括Java基础及深入知识点,An ...

  10. CoordinatorLayout滑动抖动问题

    目录介绍 01.CoordinatorLayout滑动抖动问题描述 02.滑动抖动问题分析 03.自定义AppBarLayout.Behavior说明 04.CoordinatorLayout滑动抖动 ...