第二課:Mirth培養興趣之旅 ——由定時刷庫接口編程講起
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培養興趣之旅 ——由定時刷庫接口編程講起的更多相关文章
- gym101522 [小熊骑士限定]La Salle-Pui Ching Programming Challenge 培正喇沙編程挑戰賽 2017
西瓜队(划掉),Kuma Rider久违的第一场训练,四小时瞎打.jpg A.水题,排序 #include<cstdio> #include<iostream> #includ ...
- 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 ...
- 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 ...
- 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 ...
- MSSS攝影大賽計劃書(第三版)
比賽內容:對香港的城市風景以及自然風光的攝影 預期成果: 提升同學對香港的認識,鼓勵學生走出大學學園去瞭解香港,同時豐富會員的課餘活動,培養同學的興趣愛好 比賽時間:4月1-15日 最後作品提交時間: ...
- VLC祥解
功能部份: VLC媒體播放器的核心是libvlc ,它提供了界面,應用處理功能,如播放列表管理,音頻和視頻解碼和輸出,線程系統.所有libvlc源文件設在的/src目錄及其子目錄: # con ...
- [SharePoint 2010] SharePoint 2010上多人同時編輯Office 2010文件
Office 2010這個版本,提供了一個令人興奮的新功能,那就是它可以讓多人同時編輯一份Office 2010的文件. 這是一個很大的突破. 以往在與SharePoint搭配下的分享環境,檔案只能被 ...
- 邁向IT專家成功之路的三十則鐵律 鐵律十二:IT人養生之道-德行
所謂的「養生」在中國古代裡所指的是針對內在精神層面修為的提升,到了近代中醫所謂的養生,則除了包含最根本的內在精神層面之外,還涵蓋了外在身體的養護.在現今各行各業的人士當中,嚴格來說都應該要有一套專屬的 ...
- 我要成为前端工程师!给 JavaScript 新手的建议与学习资源整理
来源于:http://blog.miniasp.com/post/2016/02/02/JavaScript-novice-advice-and-learning-resources.aspx 今年有 ...
- GOOGLE搜索從入門到精通V4.0
1,前言2,摘要3,如何使用本文4,Google簡介5,搜索入門6,初階搜索 6.1,搜索結果要求包含兩個及兩個以上關鍵字 6.2,搜索結果要求不包含某些特定資訊 6.3,搜索結果至少包含多個關鍵字中 ...
随机推荐
- Asp .Net Core 系列:Asp .Net Core 集成 Hangfire+MySQL
简介 https://www.hangfire.io/ 在 .NET 和 .NET Core 应用程序中执行后台处理的简单方法,无需 Windows 服务或单独的进程. Hangfire 是一个开源的 ...
- JavaFx 圆形头像实现
原文:JavaFx 圆形头像实现 - Stars-One的杂货小窝 本文基于TornadoFx框架进行编写,封装工具代码是kotlin版本 圆形头像框组件封装成了stars-one/common-co ...
- 三维模型3DTile格式轻量化压缩模型变形浅析
三维模型3DTile格式轻量化压缩模型变形浅析 在对三维模型进行轻量化压缩处理的过程中,常常会出现模型变形的现象.这种变形现象多数源于模型压缩过程中信息丢失或误差累积等因素.以下将对此现象进行详细分析 ...
- pandas 自动化处理Excel数据
需求: 如下一份这样的Excel数据 现在需要把学生的学号.姓名分离出来到单独的一列 ,将 测验.讨论.成绩三列转换成数值,并把讨论这列的"-"转换成 0 显示 最后把处理好的内 ...
- hdfs disk balancer 磁盘均衡器
目录 1.背景 2.hdfs balancer和 hdfs disk balancer有何不同? 3.操作 3.1 生成计划 3.2 执行计划 3.3 查询计划 3.4 取消计划 4.和disk ba ...
- vue核心基础-过渡动画
第一种方法:引入类名 .v-enter{ opacity: 0; } .v-enter-to{ opacity: 1; } .v-leave{ opacity: 1; } .v-leave-to{ o ...
- KingbaseES V8R3 集群运维系列 -- 修改数据库服务端口
案例说明: KingbaseES V8R3集群数据库服务端口(默认:54321)的配置在数据库及集群多个配置文件中都存在,修改端口需要更改所有的配置文件,本案例详细描述了数据库服务端口修改操作步骤 ...
- vim-plus install
1.输入:git clone https://github.com/chxuan/vimplus.git ~/.vimplus 2.输入:cd ~/.vimplus 3.输入:./install.sh ...
- pymysql连接、关闭、查询,python如何操作mysql数据库
1 def get_conn(): 2 """ 3 :return: 连接,游标 4 """ 5 # 创建连接 6 conn = pymys ...
- C++设计模式 - 桥模式(Bridge)
单一职责模式: 在软件组件的设计中,如果责任划分的不清晰,使用继承得到的结果往往是随着需求的变化,子类急剧膨胀,同时充斥着重复代码,这时候的关键是划清责任. 典型模式 Decorator Bridge ...