示例说明:

系统A发送XML格式患者信息到Mirth的Source端HTTP Listener,完成患者信息入库逻辑;然后Mirth的Destinations端Web Service Sender调用系统B开放的C#实现的Webservice接口服务完成患者信息的查询并把响应结果返回给最初调用者系统A。这个数据交互通讯过程涉及:系统A---->Mirth---->系统B---->Mirth---->系统A

多信道交互响应消息处理步骤:

新建信道并设置源端输入输出参数格式、目的端输入输出格式、响应输入输出参数格式

设置源端HTTP Listener参数

设置源端转换规则;源端新建JS转换步骤,在‘输入消息模板’录入如下XML消息模板并添加如下js脚本完成患者信息入库逻辑

<patient>

<pid>110</pid>

<name>撰獲濟</name>

<sex>M</sex>

<dob>19650108</dob>

<addr>臺灣大學</addr>

<ssn>33661489</ssn>

<status>0</status>

</patient>

var dbConn;

try {
      var pid=msg['pid'].toString();
      var name=msg['name'].toString();
      var sex=msg['sex'].toString();
      var dob=msg['dob'].toString();
      var addr=msg['addr'].toString();
      var ssn=msg['ssn'].toString();
      channelMap.put('pid',pid);
     dbConn=DatabaseConnectionFactory.createDatabaseConnection('org.mariadb.jdbc.Driver', 'jdbc:mariadb://127.0.0.1:3306/mirthtestdb', 'root', '125353Ct');
      var result=dbConn.executeCachedQuery("select count(*) from  patient WHERE pid = "+pid);
     result.next();
      var icount = result.getInt(1);
      if(icount==0)
      {
         var expression = "INSERT INTO patient (pid,name,sex,dob,addr,ssn) VALUES (?,?,?,?,?,?)";
         var paramList=new Array(pid,name,sex,dob,addr,ssn);
        icount = dbConn.executeUpdate(expression, paramList);
        channelMap.put('Ret','1');
      }else{
          channelMap.put('Ret','0');
      }
      result.close();

} finally {
     if (dbConn) {
         dbConn.close();
     }

}

设置目的端Web Service Sender参数

输入C# Webservice接口响应消息作为响应‘输入参数模板’,对返回值映射到Response Map的自定义变量responseAck中

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

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
     <acceptMessageResponse xmlns="http://tempuri.org/">
       <acceptMessageResult>string</acceptMessageResult>
     </acceptMessageResponse>
   </soap:Body>

</soap:Envelope>

var mapping;

try {
     mapping = msg.*::['Body'].*::['acceptMessageResponse'].*::['acceptMessageResult'].toString();

} catch (e) {
     mapping = '';

}

responseMap.put('responseAck', validate(mapping, '', new Array()));

运行C#版HTTP Sender,进行如上测试,成功获取响应,验证Mirth Connect 的HTTP Listener源通道、Web Service Sender目标通道与C# Webservice接口服务双向交互通讯OK!

本节课知识点总结:

1.Mirth调用外部C#的Webservice接口并获取返回值

2.响应消息通过responseMap变量返回

3.响应消息Raw格式返回C#Webservice的原始格式返回值

第七課-Channel Study For HTTP Listener & Web Service Sender Intercommunicates Response Handler的更多相关文章

  1. 转:Java NIO系列教程(七) Socket Channel

    Java NIO中的SocketChannel是一个连接到TCP网络套接字的通道.可以通过以下2种方式创建SocketChannel: 打开一个SocketChannel并连接到互联网上的某台服务器. ...

  2. Listener(Web监听器、活化、钝化)

    Web监听器 总共有8个 划分成三种类型 定义一个类,实现接口 注册 | 配置监听器 监听三个作用域创建和销毁 request -httpServletRequest session -httpSes ...

  3. soapui中文操作手册(七)----Web Service Sample Project

    REST推理 这份简短的教程将引导您完成架构推断功能. 我们将创建一个新的项目,并添加一个REST服务,而初始WADL文件启动了. 发送请求后,我们就可以使用响应来构建我们的架构. 演示请求 为了演示 ...

  4. JBoss 系列七十:一个简单的 CDI Web 应用

    概述 本文通过一个简单的 CDI Web 应用演示dependency injection, scope, qualifiers 以及EL整合.应用部署完成后我们可以通过http://localhos ...

  5. Web Service进阶(七)浅谈SOAP Webservice和RESTful Webservice

    浅谈SOAP Webservice和RESTful Webservice REST是一种架构风格,其核心是面向资源,REST专门针对网络应用设计和开发方式,以降低开发的复杂性,提高系统的可伸缩性.RE ...

  6. Spring学习(七)——开发Web Service的几种方式

    本文作者在学习使用Java开发Web Service(不包括Restful)时,由于不知道Java有这么多框架支持开发Web Service一度陷入迷惘,不知道这些框架各有 什么不同,各有什么优缺点. ...

  7. javaWeb核心技术第七篇之HTTP、Tomcat、Servlet、Request和Response

    - Web服务器 - 概念: - web资源: "英文直译"网"的意思 资源:一切数据文件 web资源:通过网络可以访问到的资源,通常指的是一切放在服务器上的文件&quo ...

  8. Mirth Connect的简单使用

    第一步: 切换到Channels界面,右键点击New Channel 第二步 : 上面是设置一些通道信息. 其中summary(概要) 界面主要包含 通道名称,数据类型,依赖,通道初始状态,附件(是否 ...

  9. Oracle Net Listener Parameters (listener.ora)(转)

    12/20 7 Oracle Net Listener Parameters (listener.ora) This chapter provides a complete listing of th ...

  10. Webservice实践(七)CXF 与Spring结合+tomcat发布

    上一节介绍了如何使用CXF 来发布服务,但是没有介绍使用web 容器来发布,很多项目需要用tomcat 这样的容器来发布.另外本节将介绍CXF 与spring 结合的方法. 一 目标: 1.利用spi ...

随机推荐

  1. arch签名出现问题时,无法修复时

    sudo rm -rf /etc/pacman.d/gnupgsudo pacman-key --init sudo pacman-key --populate archlinux && ...

  2. 项目性能优化—使用JMeter压测SpringBoot项目

    项目性能优化-使用JMeter压测SpringBoot项目 我们的压力测试架构图如下: 配置JMeter 在JMeter的bin目录,双击jmeter.bat 新建一个测试计划,并右键添加线程组: 进 ...

  3. Sealos 云开发:Laf 出嫁了,与 Sealos 正式结合!

    千呼万唤始出来,Laf 云开发最近已正式与 Sealos 融合,入住 Sealos!大家可以登录 Sealos 公有云 体验和使用,现在正式介绍一下 Sealos 云开发. Sealos 云开发是什么 ...

  4. C# 人脸检测 人脸比对 活体检测 口罩检测 年龄预测 性别预测 眼睛状态检测

    基于以下开源软件做了一个Demo GitHub - ViewFaceCore/ViewFaceCore: C# 超简单的离线人脸识别库.( 基于 SeetaFace6 ) 效果 代码 using Sy ...

  5. springboot整合视频点播

    1 //上传视频到阿里云 2 @Override 3 public String uploadAyl(MultipartFile file) { 4 try { 5 //accessKeyId,acc ...

  6. KingbaseES V8R3 集群运维案例 -- cluster.log无日志输出问题诊断

    案例说明: KingbaseES V8R3集群正常运行期间,现场发现cluster.log日志无任何信息输出,针对这一问题做了复现及提出解决方案.后现场检查发现,cluster.log文件曾被删除: ...

  7. 学习蓝图+行为树实现AI角色的跟随操作

    跟随B站视频学习 准备工作 一个角色蓝图类用来设置AI角色,一个Blackboard--AI的大脑,一个AITree--AI的行为控制,一个AIController蓝图类--定义AI的控制器. 是否发 ...

  8. 自己写个网盘系列:③ 开源这个网盘编码,手把手教你windows linux 直接部署,docker本地打包部署网盘应用

    系列①②已经完成了这个项目的页面和项目的全部编码,前后端分离,这个文章将向你展示运维小伙伴如何部署到windows服务器,linux服务器,docker部署,一学就会,快来看看吧! 说明:这个系列准备 ...

  9. SPEL表达式注入分析

    环境依赖 <dependencies> <dependency> <groupId>org.springframework</groupId> < ...

  10. Python日志模块封装

    一.先上结论 对Python logging模块进行二次封装 # -*- coding:utf-8 -*- # 作者:IT小学生蔡坨坨 # 博客:caituotuo.top # 时间:2022/3/1 ...