Download - 第 2 天 日程表

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 管理控制台


Top Related