第 2 天 日程表

88
第 2 第 第第第 第第 第第第第 第 XML 第第第第第 MDL 第第第 第第 第第第第第第第 第第第第第 HL7 第第第 X12 第第第 第第第 第第第第第 第第第 第第第第 第第 第第第第第 第第第第第 第第 第第第第第 第第第 第第第第 第第第第 WSDL 第第第第 第第第第第第第 第第第第 第第第第第第 第第 SA 第第第第第

Upload: eagan-wolf

Post on 30-Dec-2015

45 views

Category:

Documents


1 download

DESCRIPTION

第 2 天 日程表. 转换映射 创建一个新的映射 映射编辑器 操作 映射检测器 过滤器 用户操作 脚本概况 WSDL 导入向导 流程组件编辑器 特性概况 了解消息流程 运行 SA 管理控制台. 安装 消息格式 在 XML 模式中复制 MDL 编辑器 创建一个变量记录输出 格式检测器 HL7 编辑器 X12 编辑器 日程表 假日日程表 查找表. 安装. 前提 : Sun Java 1.5 JDK 运行安装程序,安装到你选择的路径 重新启动让环境变量变更起作用 对于主要版本,如果安装到同一路径,安装新版本前请先卸载先前的版本 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 2 天 日程表

第 2 天 日程表 安装 消息格式

在 XML 模式中复制 MDL 编辑器 创建一个变量记录输

出 格式检测器 HL7 编辑器 X12 编辑器

日程表 假日日程表

查找表

转换映射 创建一个新的映射 映射编辑器 操作 映射检测器 过滤器 用户操作

脚本概况 WSDL 导入向导 流程组件编辑器

特性概况 了解消息流程

运行 SA 管理控制台

Page 2: 第 2 天 日程表

安装 前提 : Sun Java 1.5 JDK 运行安装程序,安装到你选择的路径 重新启动让环境变量变更起作用 对于主要版本,如果安装到同一路径,安装新版本前请先

卸载先前的版本 复制修改过的 ChainBuilderESB-SE-Transformer-1.2.jar

Page 3: 第 2 天 日程表

已安装的组件 ChainBuilder ESB

Eclipse 集成开发环境 (IDE + Server install only) Service 和 JBI 容器 Tomcat Web Server Derby 数据库

Page 4: 第 2 天 日程表

消息格式 HL7 – Healthcare

HL7 编辑器 MDL – 消息定义语言

消息格式编辑器 固定 变量 分级

X12 X12 编辑器

XML – 导入模式

Page 5: 第 2 天 日程表

简单固定的记录范例– Account Balance

输入格式 : Account Number (5), Balance (10) 范例数据 (accountBalance.txt):

617230000070.00 514290000238.31 012840007452.99 831490000002.35

文件

消息

字段

消息类型

Page 6: 第 2 天 日程表

字段定义

字段属性

Page 7: 第 2 天 日程表

测试 MDL

测试目录 : C:\<cbesb_home>\ideworkspace\Level1\src\test

移动不同行的范例数据

Page 8: 第 2 天 日程表

输入数据格式 : first, last, account# 范例数据 (clientAccountNumbers.csv):

Doe,John,61723 Doe,Jane,51429 Smith,John,01284 Johnson,Jim,83149

简单 CSV 范例 – clientAccountNumbers.mdl

文件

消息

字段

消息类型分隔符

Page 9: 第 2 天 日程表

测试 MDL

移动不同行的范例数据

Page 10: 第 2 天 日程表

HL7 编辑器 许多常见 HL7 格式都是预装入的 HL7 变体允许修改现有格式

Page 11: 第 2 天 日程表

HL7 编辑器 – 创建一个变体 添加一个额外的 PID 字段来捕获病人的 E-mail 地

MSH|^~\&|ADT1|MCM|LABADT|MCM|199008181126|SECURITY|ADT^A01|MSG00001|P|2.3.1|

EVN|A01|199008181123||

PID|1||PATID1234^5^M11^ADT1^MR^MCM~123-45-6789^^^USSSA^SS||SMITH^JOHN^A^III||19800101|M||C|100 N MAIN STREET^^COLUMBUS^OH^43125-1020|GL|(614)555-1212|(614)555-3434||S||PATID12345001^2^M10^ADT1^AN^A|123456789|987654^OH|||||||||||[email protected]

NK1|1|SMITH^JANE^K|WI^WIFE||||NK^NEXT OF KIN

PV1|1|I|2000^2012^01||||004444^SMITH^CHARLES^J.|||SUR||||ADM|A0|

Page 12: 第 2 天 日程表

HL7 编辑器 – 创建一个变体 在 PID 的末尾增加最大长度为 50 的额外字段

Page 13: 第 2 天 日程表

HL7 编辑器 – 测试变体 选择消息类型 ADT A01 并进行测试

Page 14: 第 2 天 日程表

X12 编辑器 许多常见 X12 格式都是预装入的 X12 变体允许修改现有格式

Page 15: 第 2 天 日程表

查找表编辑器 创建从 Package Explorer ( 右击 ) New -> Lookup File 简单 键 - 值 对表 点击绿色加号添加新条目

Page 16: 第 2 天 日程表

查表 XML 文件 命名为 *.tbl 设置在表目录 从 Transform 或 Java 索引 范例 :

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE properties SYSTEM

"http://java.sun.com/dtd/properties.dtd"><properties>

<comment>LookUp Table Example general_sample</comment><entry key=“key1">value1</entry><entry key=“key2">value2</entry>

</properties>

Page 17: 第 2 天 日程表

映射编辑器 操作属性 源和目标树 操作树 操作面板

Page 18: 第 2 天 日程表

操作 联合 : 连接多个源 注释 块注释 : 注释掉 / 取消注释 现有操作 复制 : 单一源到单一目标 迭代器 : 循环读取数据元素 查找 数学

Page 19: 第 2 天 日程表

操作 发送 : 创建发送到外部消息 ( 所有在一起交换 ) 禁止 : 防止在映射结束消息自动创建 If: 使用 Java 比较,如: ?1.equals(“string”) ElseIf Else While User: 使用自定义映射用户操作 JDBC: 映射执行时访问数据库

Page 20: 第 2 天 日程表

映射测试器 测试前必须创建项目 点击测试按钮开始 选择输入文件 选择读取格式

Page 21: 第 2 天 日程表

映射测试结果 源数据树和目标数据树 操作树 翻阅多个结果集

保存结果 到文件

Page 22: 第 2 天 日程表

迭代映射范例 目的 : 创建映射 orders.trn 从重复元素项 XML 格式

到相似的格式 源 : SingleOrderReportInternational.xsd 目标 : SingleOrderReportUSA.xsd

Page 23: 第 2 天 日程表

迭代映射范例 使用映射特性完成大部分

映射 从 Order ( 源树 ) 点击和拖

拽到 Order ( 目标树 ) 自动地为相同名字的所

有字段创建复制和迭代语句

Page 24: 第 2 天 日程表

迭代映射范例 注意元素编码颜色和

父子组关系 说明:某些字段没有

映射也许需要手动映射

PostalCode -> Zip

Page 25: 第 2 天 日程表

迭代映射范例 完善缺少的 Zip 代码复制

操作 点击不在迭代器中的复制

( 所以新的操作不会在迭代器内被创建 )

从源字段拖拽到目标

Page 26: 第 2 天 日程表

迭代映射范例 测试映射

首先,存储映射并创建项目 测试文件

Order_International_USA_apoproval.xml Order_International_USA_denial.xml

注意迭代器如何在出站消息中输入重复元素

Page 27: 第 2 天 日程表

迭代映射范例

Page 28: 第 2 天 日程表

高级迭代范例 目的:映射从重复 product 属性的 XML 格式到包含一个

属性的 CSV 格式 从每一个迭代器创建一个出站消息 ( 所有在一次消息交

换 ) ,并可能创建出基于逻辑的额外出站消息

Page 29: 第 2 天 日程表

高级迭代范例 迭代操作只能在单一的循环结构内执行。如果我们映射到

的目标格式有一个循环结构,那在它的内部会有一个嵌套的循环。

Page 30: 第 2 天 日程表

高级迭代范例 使用源作为键查找表,在目标字段返回它的值

Page 31: 第 2 天 日程表

高级迭代范例 如果语句使用 java 比较 ( 选择类型 ) 用 ?1, ?2, ?3, 等索引源数据元素

Page 32: 第 2 天 日程表

高级迭代范例 如果多种源字段语句使用 Integer 比

Page 33: 第 2 天 日程表

高级迭代范例 数学运算允许多种源字段 使用 ?1 类型索引 允许基本的数学运算

Page 34: 第 2 天 日程表

高级迭代范例

有条件地填充基于属性名的变量

为每个迭代器创建出站消息

如果我们发现高度,宽度和长度然后计算尺寸并创建额外的记录

禁止自动创建消息 ( 防止最后一条消息重复 )

在表中找到 ID 属性

初始化变量 循环重复属性标签

Page 35: 第 2 天 日程表

自定义代码

代码必须用 Java 或 Groovy写 代码自动生成 必须创建项目

Page 36: 第 2 天 日程表

自定义代码类型 映射过滤器:为映射中字符串操作的单一方法 映射用户操作:自定义映射操作 TrxId: 在 CBR 中确定路由名称 Upoc:插入绑定组件 脚本组件:自定义绑定组件,可能是提供者或消费者 自定义组件:在向导界面下创建自定义绑定组件

Page 37: 第 2 天 日程表

过滤器 可以进行许多操作 典型地用来文本操作 选择类和方法 必须先建立项目 单一字符串输入 单一字符串输出

Page 38: 第 2 天 日程表

映射过滤器范例import java.util.Date;import java.text.DateFormat;import java.text.SimpleDateFormat;

public class Filters {public String trimQuotes (String in) {

// removes all double-quote characters (") from input datain = in.replaceAll("\"", "");return in;

}

public String replaceSpacesWithUnderscores (String in) {// removes all double-quote characters (") from input datain = in.replaceAll(" ", "_");return in;

}

public String getDateTime(String in) {DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");

Date date = new Date();return dateFormat.format(date);

}}

Page 39: 第 2 天 日程表

映射用户操作范例package com.bostechcorp.cbesb.map; import java.util.Map;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Map;import com.bostechcorp.cbesb.runtime.ccsl.lib.ITransformationOperation;public class reformatDate implements ITransformationOperation { public boolean process(String[] arg0, String[] arg1) throws Exception { /* * Takes in a date with a given format at outputs the date in a modified format * input: arg0[0]: input date format arg0[1]: output date format arg0[2]: date to be modified * output: arg1[0]: modified date */ String inputPattern = arg0[0]; String outputPattern = arg0[1]; SimpleDateFormat inputFormatter = new SimpleDateFormat(inputPattern); SimpleDateFormat outputFormatter = new SimpleDateFormat(outputPattern); Date date = (Date)inputFormatter.parse(arg0[2]); String dateStr = outputFormatter.format(date); arg1[0] = dateStr; return true; } }

Page 40: 第 2 天 日程表

脚本组件范例public void run(Log logger, String rootDir, ComponentContext componentContext, DeliveryChannel

channel, MessageExchange exchange, Map<String, String> params) throws Exception {

/* * This class receives in an inbound message and prints the contents * Then the out message is set to a different value and sent on * Use this class when it is necessary to have an out message (in-out) */

NormalizedMessage inMsg = exchange.getMessage("in");NormalizedMessageHandler nmhIn = new NormalizedMessageHandler(inMsg);Source record = nmhIn.getRecordAtIndex(0);// assumes that incoming message is a stringString inMessage = ((StringSource)record).getText();logger.info("modifyMessage - inbound message: " + inMessage);NormalizedMessage outMsg = exchange.getMessage("out");NormalizedMessageHandler nmh = new NormalizedMessageHandler(outMsg);// set new outbound messageStringSource strSrc = new StringSource("modified message");nmh.addRecord(strSrc);nmh.generateMessageContent();LinkedList sendList = new LinkedList();sendList.add(exchange);

}

Page 41: 第 2 天 日程表

WSDL 导入向导 从 ChainBuilder ESB 菜单访问 从 WSDL生成模式 选择源 WSDL(必须从文件)和目标目录 用来创建可以被利用的映射的模式向 Web Service 发送数

Page 42: 第 2 天 日程表

流程组件编辑器

Eclipse 插件 图形化界面 拖拽功能 向导援助

Page 43: 第 2 天 日程表

绑定组件 HTTP – 包括 web services File FTP JMS - MQ TCPIP – Server 或 Client 模式 , 包括 MLP Script Custom Email – POP3 和 SMTP

Page 44: 第 2 天 日程表

文件绑定组件 读取和写入文件

在复选框中选择模式读,写或都选

使用 CCSL 选项打开或关闭在向导中下面的 CCSL配置界面,典型地选择 True

Page 45: 第 2 天 日程表

文件绑定组件

文件模式 – 选择输入文件读取目录

Glob or Regex 基本的或高级的日程表

源和层目录可以是完整或相对路 (esbHome\runtimes\test\SA)

Page 46: 第 2 天 日程表

文件绑定组件 读入方式

raw: 整个文件内容读到单一的消息 newline: 在单一的交换每一行读入不同的消息

Page 47: 第 2 天 日程表

文件绑定组件 动作:删除或存档 保留:在启动时怎样处

理层目录中的文件 二次校验:在读入前是否检查文件大小

Page 48: 第 2 天 日程表

文件绑定组件 回复设置

只为写入 / 读出配置 回复是最后的出站

消息 写出方式

raw: 每一个交换消息写入到不同的文件

newline: 所有交换消息到单一文件

Page 49: 第 2 天 日程表

文件绑定组件 文件模式 –包含文字字符和宏

基本名:原始文件名 (无扩展名 ) 日期:系统日期格式为 YYYYMMDD 时间:系统时间格式为 hhmmss 数:从 1 开始,每次组件启动自动递增 EXT :原始文件扩展名

Page 50: 第 2 天 日程表

文件绑定组件 写入模式属性

只有写在第一个界面上检查了才可以

Page 51: 第 2 天 日程表

文件绑定组件 CCSL 配置 – 允许在组件中使用 UPoCs ( 脚本 )

保存错误:在这个组件中,当错误发生时,打开或关闭数据库 ( 设置为 True)

Page 52: 第 2 天 日程表

HTTP绑定组件 HTTP SOAP Web Services Client, Server, or both

Page 53: 第 2 天 日程表

HTTP 绑定组件 – 客户端属性 启用 SOAP 的 Web

Service 浏览选择 WSDL 选择适当的服务,端口等

Page 54: 第 2 天 日程表

HTTP 绑定组件 – 服务器端属性 支持 SOAP 的 Web

Services 定义 URL 点击单选按钮打开对话框

Page 55: 第 2 天 日程表

HTTP 绑定组件 – 服务器端属性 使用存在的 WSDL 对话框

Page 56: 第 2 天 日程表

HTTP 绑定组件 – 服务器端属性 创建一个新的 WSDL 选项 从导入模式中创建 WSDL 选择一个导入模式

Page 57: 第 2 天 日程表

HTTP 绑定组件 – 服务器端属性 创建一个新的 WSDL 选项 (第二个页面 ) 配置选项并添加操作

Page 58: 第 2 天 日程表

HTTP 绑定组件 – 基本模式 基本模式

在一个消息里发送被写入 FTP或者自动从 FTP服务器下载到一个消息

在大多数情况下,脚本模式是可取的

Page 59: 第 2 天 日程表

FTP绑定组件 – 脚本模式 No configuration in component flow All configuration is done through XML message passed to the component Example script:<ftp_request xmlns="http://cbesb.bostechcorp.com/wsdl/ftp/1.0">

<commands><connect host="support.bostechcorp.com" /><login user="supportftpuser" password="Bostech41" /><changeWorkingDir>UPLOAD/ESBtest/source/</

changeWorkingDir><changeLocalWorkingDir>C:\ESBtest\fileout</

changeLocalWorkingDir><mget>*</mget><logout /><disconnect />

</commands></ftp_request>

Page 60: 第 2 天 日程表

JMS绑定组件 与 IBM MQSeries 使用或在 activeMQ 内创建 对于 activeMQ, 使用 dynamicQueues 名称前缀 消费者获得 提供者提供

Page 61: 第 2 天 日程表

TCP/IP 绑定组件 选择一个适当的处理程序 设置模式 /角色:

客户端 / 提供者 如果发送数据 服务器 / 消费者 如果接受数据

Page 62: 第 2 天 日程表

TCP/IP绑定组件 客户端和服务器模式各自有不同的属性界面

Page 63: 第 2 天 日程表

脚本绑定组件 从 SA 或 ESB 项目选择脚本 (Java 或 Groovy) 消费者模式允许配置日程表

Page 64: 第 2 天 日程表

自定义绑定组件 从可用的自定义绑定组件列表中选择 创建自定义组件作为单独的项目部属于任何 SA 或 ESB

项目 选择合适的组件,然后使配置向导界面可用

Page 65: 第 2 天 日程表

Email 绑定组件 使用 SMTP 发送消息

Page 66: 第 2 天 日程表

Email绑定组件 通过 POP3 检索消息

Page 67: 第 2 天 日程表

服务引擎 Transformer Parser XSLT Sequencer CBR JDBC

Page 68: 第 2 天 日程表

Transformer服务引擎 配置一个 预定义 .trn 转换文件 发送一个初始消息,映射消息会被返回

Page 69: 第 2 天 日程表

Parser服务引擎 显示 CBESB 内部 XML 消息代表 有用的快速创建一个任何数据的 XML 版本 从 mdl, X12, or HL7 选择解析器类型 从选择类型中选择一个消息定义

Page 70: 第 2 天 日程表

XSLT服务引擎 配置一个预定义 XSLT 文件 在初始消息中发送,修改消息会被返回

Page 71: 第 2 天 日程表

Sequencer 服务引擎 通过多种事件用来控制消息流程 当消息交换被创建,它将会被服务编排器自动编号

Page 72: 第 2 天 日程表

CBR 服务引擎 基于内容的路由器

路由消息基于消息内容 可用的路由类型 :

Fixed CSV – 任何分隔符 HL7 X12 XPath – XML 路由 Script

Page 73: 第 2 天 日程表

JDBC 服务引擎 用于数据库连接 在 XML 消息中发送,其中包含 SQL 语句

Page 74: 第 2 天 日程表

其他组件 外部

外部系统 – 用来说明外部系统的使用 注释

消息流程 消息交换 – 连接流程中的组件

Page 75: 第 2 天 日程表

日程表 在许多绑定组件中建立调度 工作就像 Cron 填写特定的值或者

* 任意值 ? 没有值 ( 用来防止确

定的某天 / 一周中的某天冲突 )

这个例子每小时在一小时会运行

可选择一个假日日程表

Page 76: 第 2 天 日程表

假日日程表 定义例外的日程表 日程表在定义在假日日程表的时间不运行 创建从 Package Explorer ( 右击 ) New -> Holiday File 点击绿色加号添加日期

Page 77: 第 2 天 日程表

理解消息流程 角色

消费者– 接受入站消息 ( 读一个文件等 ) 并通过引擎启动一个消息流程

提供者 – 发送一个消息到外部系统 (写一个文件等 ) 并在 CBESB 中标记消息路径的结尾

MEP – 消息交换模式 In-only: 创建一个消息并不期望一个返回 In-out: 创建一个消息并期望一个返回消息 Reliablein: In-Only 和错误处理

Page 78: 第 2 天 日程表

In-Only

FileIn 属性 :

Page 79: 第 2 天 日程表

In-Out

Page 80: 第 2 天 日程表

理解消息流 每个组件扮演着 In-Out 或 In-Only

依赖流的位置 服务编排器的子结点总是 in-out 除了最后一项采用输

入 MEP 箭头从普通 (in-only) 变化为菱形结尾 (in-out)

CBR 的子结点采用输入 MEP

Page 81: 第 2 天 日程表

消息流程和服务编排器范例In-Only 文件

组件读入器In-Out 文件

组件读入器

注意消息交换箭头变化

In-Only In-Out

Page 82: 第 2 天 日程表

运行服务集 – 命令行 cbesb_run <sa_name> 必须从驱动即 ESB 安装的地方执行 调试模式 : cbesb_run –debug <sa_name> 如果使用 activeMQ: cbesb_run –activemq <sa-name> 日志消息存储 <cbesb_home>\runtimes\log

Page 83: 第 2 天 日程表

运行服务集 – 管理工具 连接到本地或远程计算机 http://<server>:8080/console/ 本地计算机 : http://localhost:8080/console/ 在控制台或文件存储系统查看日志信息:

<cbesb_home>\log

Page 84: 第 2 天 日程表

运行服务集 – 管理工具初始设置 第一次使用控制台,安装并启动所有组件和服务引擎 在安装选项卡,点击安装,安装每个组件

Page 85: 第 2 天 日程表

运行服务集 – 管理工具初始设置 在当前选项卡,点击启动,启动每个组件

Page 86: 第 2 天 日程表

运行服务集 – 管理工具 部署服务集 点击服务集,然后部署选项卡 浏览目录 <cbesb_home>\ideworkspace\<sa_name>\dist 选择 zip 文件 点击确认然后部署

Page 87: 第 2 天 日程表

运行服务集 – 管理工具 在当前选项卡,点击启动启动服务集

Page 88: 第 2 天 日程表

第 2 天 回顾 安装 消息格式

在 XML 模式中复制 MDL 编辑器 创建一个变量记录输

出 格式检测器 HL7 编辑器 X12 编辑器

日程表 假日日程表

查找表

转换映射 创建一个新的映射 映射编辑器 操作 映射检测器 过滤器 用户操作

脚本概况 WSDL 导入向导 流程组件编辑器

特性概况 了解消息流程

运行 SA 管理控制台