AEAI ESB路由转换机制说明
1. 背景概述
相信了解数通畅联的人对AEAI ESB并不陌生,其设计器ESBDesigner中内置组件有:路由和转换、数据适配器、协议适配器、协议接入适配器等4类组件,每类组件下面包含各种类型的组件节点,可以使程序流程更直观,加快开发速度。
路由和转换中包含了三个节点分别为:分支路由、合并路由和 java转换,分支路由用于将一条线路分为多个支路,合并路由为将多条分支合并到一起,java转换节点可以进行变量的数据转换和赋值,并且在模型无法满足要求时支持代码扩展。本文档详细介绍一下路由和转换的机制,希望能为使用者提供帮助。
2. 预期读者
- 数通畅联内部技术人员
- 数通畅联合作伙伴技术人员
3. 名词解释
- ESB:Enterprise Service BUS企业服务总线,一般用作数据集成平台、应用集成平台。
- 分支路由:AEAI ESB 内置组件,用于将一条线路分为多个支路
- 合并路由:AEAI ESB 内置组件,将多条分支合并到一起
- java转换:AEAI ESB 内置组件,可以进行变量的数据转换和赋值,并且在模型无法满足要求时支持代码扩展
4. 组件介绍
4.1 分支路由
选择分支路由后只可以在“基本信息”中进行配置,用于将一条线路分为多个支路。

- 别名:此处可以填写汉字,可以使节点下方现在中文,便于更直观的此节点用途。
- 控制类型:点击下拉箭头后可以看到:and、xor、or三个可选项,and为所有分支线路都会走,xor的判断方式类似于if(){}else if(){}else{}的判断方式,or的判断方式类似于if( ){ }if( ){ }if( ){ }的判断方式,xor和or的判断走向需要与分支路由分出的线的基本信息配置进行配合使用,当点击线时,线的基本信息如下所示:

- 流转类型:点击流转类型的下拉箭头后会出现auto和condition选项,当对走向不需要做判断时,即可选择auto,当需要对走向做判断时,可以在条件表达式中添加判断。
- 条件表达式:当需要对走向进行判断,流转类型选为condition时,需要在此添加判断条件,此处只可以填写Boolean类型的变量表达式,点击“选择变量”进行选择。
描述:可以对此节点功能进行简单描述,方便自己和他人以后查看。
注意:
- 当控制类型为and时,分支流程为并发进行但是当分支流程为数据插入且数据源选择相同时系统会报错。
- 当控制类型为xor时流转类型比为condition且一定有判断条件
4.2 合并路由
合并路由为将多条分支合并到一起,使用方法与分支路由基本相同,可参见“分支路由”的介绍。

匹配分支:通过匹配分支选择当前的合并路由与哪个分支路由相匹配。
注意:
- 绝大部分的流程中分支路由与合并路由选择的控制类型是相同的,但是当只有合并没有分支时选择的控制类型便不相同。
- 当控制类型为“or”时需要选择匹配的分支路由如下:



4.3 java转换
可以进行变量的数据转换和赋值,并且在模型无法满足要求时支持代码扩展。

在类别选为赋值时,支持DataBox赋值给DataSet、DataBag赋值给DataRow、DataRow赋值给DataRow、DataSet赋值给DataSet,如果都不满足要求可以选择自动与代码赋值,点击“Next”为如下界面:

- 来源变量 类型:为上一步选择赋值变量类型自动填写的。
- 来源变量 表达式:此处通过点击“选择”按钮来选择来源变量。
- 目标变量 类型:如果目标变量已经存在可直接填下一个框,如果目标变量不存在,先点击下拉箭头选择目标变量类型,然后点击“创建”按钮填写变量名称。
- 如果目标变量已存在,可点击“选择”按钮进行选择变量。扩展代码:如果模板不满足实际条件时,可可选择扩展代码,进行写代码实现。 在类别选为转换时,支持DataSet转换为数据表格,DataSet转换为基本图表,DataSet转换为基本列表,如果都不满足要求可以选择自定义代码模板转换。
- DataSet转换为数据表格:将DataSet中的数据转换为JSON数据,点击“Next”为如下界面:

- DataSet转换为基本图表:将DataSet中的数据转换为XML数据,点击“Next”为如下界面:

- DataSet转换为基本列表:与 DataSet转换为基本图表用法基本相同,将数据转换为列表图形的XML格式。自定义代码模板转换:如果模板不满足实际条件时,可选择扩展代码,进行写代码实现。
5. 样例说明
5.1 多条件分支
分支路由到各分支的连接线是condition流转类型的,均有条件表达式。通过设置控制类型为xor(if(){}else if(){}else{}),达到不同的表达式结果限制流程的走向实现了分支路由的控制效果。
流程图如下:

在HttpRequest节点添加入参condition
点击分支路由节点设置控制类型为xor(if(){}else if(){}else{})如下图:

点击分支路由节点与分支节点之间的连线,分别设置流转类型为condition,并点击
按钮添加条件表达式。

在HttpResponse节点打印信息执行完成,请查看控制台日志

测试结果如下:


5.2 多线程分支
流程图中,所有连接线均为auto流转类型的,即没有条件表达式。则所有流程都会走。
流程图如下:

点击分支路由节点设置控制类型为and(所有流程都会走)如下图:

点击分支路由节点与分支节点之间的连线,分别设置流转类型为auto。

在HttpResponse节点打印信息执行完成,请查看控制台日志

测试结果如下:


5.3 循环样例
使用合并路由和分支路由的组件,配合连接线的条件表达式,实现循环操作。
流程图如下:

在HttpRequest节点添加入参counter
创建全局变量如下:

初始化参数节点扩展代码如下:

获取HttpRequest传递的参数counter的值并存放在变量”counter”中
为变量”index”赋初始值为0
点击循环合并节点配置如下:

循环体节点打印循环的次数扩展代码如下:

点击循环分支节点配置如下:

循环分支与循环合并之间的节点连线配置如下:

在HttpResponse节点打印了循环变量如下图:

测试结果如下:


6. 感悟与收获
AEAI ESB主要用于集成各业务系统,实现异构系统的互联互通,笔者自知自身的知识积累不足但至入职接触AEAI ESB以来逐步学习进步,发现AEAI ESB不仅实现了图形化的交互方式,支持拖拽式创建Web服务、消息流程,便于快速构建,而且具有灵活的扩展性以及支持热部署的模式并且可以远程调试可以设置断点、逐步调试,便于准确调试定位。
AEAI ESB路由转换机制说明的更多相关文章
- AEAI ESB V3.5.4开源发布,应用集成平台
AEAI ESB 应用集成平台为数通畅联的核心产品,本着分享传递的理念,数通畅联将ESB管理控制台项目开源,目的在于满足客户与伙伴的OEM需求,以及为广大IT爱好者的集成工具提供多一种选择,多一种便利 ...
- AEAI ESB培训大纲
1. 概述 本文档的目的是为了让使用者能更好的操作.维护.服务于整个ESB系统平台,该信息系统平台不仅需要成熟稳定的产品,更需要技术熟练的运行维护人员,以便能更好地进行科学有效的运行维护工作. AEA ...
- (转)示例化讲解RIP路由更新机制
目录(?)[+] 以下内容摘自最新上市的“四大金刚”图书之一<Cisco路由器配置与管理完全手册>(第二版)(其它三本分别为<Cisco交换机配置与管理完全手册>(第二 ...
- Javascript中双等号(==)隐性转换机制
在Javascript中判断相等关系有双等号(==)和三等号(===)两种.其中双等号(==)是值相等,而三等号(===)是严格相等(值及类型是否完全相等). 因此有几个常识知识: 1.对于strin ...
- Kettle 4.2源码分析第三讲--Kettle 转换机制transformation介绍
转换机制 每个转换步骤都是ETL数据流里面的一个任务.转换步骤包括输入.处理和输出.输入步骤从外部数据源获取数据,例如文件或者数据库:处理步骤处理数据流,字段计算,流处理等,例如整合或者过滤.输出步骤 ...
- Atitit.跨语言异常转换机制 java c# php到js的异常转换
Atitit.跨语言异常转换机制 java c# php到js的异常转换 1. bizEx 直接抓取,然后js catchEX1 2. Chkec runtimeEx1 3. Other异常..J ...
- Javascript中双等号(==)隐性转换机制 JS里charCodeAt()和fromCharCode()方法拓展应用:加密与解密
Javascript中双等号(==)隐性转换机制 在Javascript中判断相等关系有双等号(==)和三等号(===)两种.其中双等号(==)是值相等,而三等号(===)是严格相等(值及类型是否 ...
- RabbitMQ学习总结(6)——消息的路由分发机制详解
一.Routing(路由) (using the Java client) 在前面的学习中,构建了一个简单的日志记录系统,能够广播所有的日志给多个接收者,在该部分学习中,将添加一个新的特点,就是可以只 ...
- MVC5路由系统机制详细讲解
请求一个ASP.NET mvc的网站和以前的web form是有区别的,ASP.NET MVC框架内部给我们提供了路由机制,当IIS接受到一个请求时,会先看是否请求了一个静态资源(.html,css, ...
随机推荐
- ucos实时操作系统学习笔记——内核结构和任务创建
对于ucos实时操作系统,邵贝贝的那本书已经写得很详细了,我因为之前不深的研究过ucos,所以在这里做一个笔记,写一些个人对该操作系统的理解,仅仅是个人理解,如果有人看到这边随笔有不对的地方,望给我指 ...
- what's deviceone
DeviceOne技术介绍 一. DeviceOne是什么 DeviceOne(以下简称Do)是一个移动开发的平台或技术,与之对等的是Android移动开发技术,iOS移动开发技术,Windo ...
- 虚拟机体验之 VirtualBox 篇 —— 性能强大的经典架构
前两篇体验了 QEMU 和经过 KVM 加速的 QEMU,并体验了第三方虚拟机管理工具 virt-manager,让我们见识了开源社区的强大和开源虚拟机软件的高质量和高性能.这一篇,我来剖析一下 Vi ...
- EMC与电容(二)-电容参数意义、各电容的特点及应用
上次的问题,看到很多回答里都有关于X电容,Y电容,NPO之类,这些很奇怪的参数到底代表什么意义呢?以前很多次都在BOM表里看到这些参数,一直都无视过去,正好这次的EMC课程里也提到这方面的知识,正好跟 ...
- android-解决全屏-webview-输入框被输入法挡住-FullScreen-adjustResize失效问题
由于公司开发的 App 中,Html 的页面嵌入的有点多,坑爹的是,还有很多输入框,这就算了,还要求全屏.然后就出现了这个情况. 下面来唠叨唠叨具体的来龙去脉. 起初是这样的,整个项目基本完工了.测试 ...
- Java多线程系列--“JUC锁”03之 公平锁(一)
概要 本章对“公平锁”的获取锁机制进行介绍(本文的公平锁指的是互斥锁的公平锁),内容包括:基本概念ReentrantLock数据结构参考代码获取公平锁(基于JDK1.7.0_40)一. tryAcqu ...
- 微信小程序定时器组件(输入时间字符串即可倒计时)
昨天写了代码,今天发现要重用,干脆就抽出来做个组件得了,顺便还改善了一下代码通用性. 昨天的代码在这里 github下载地址 用法: 引入: var timer = require('../../pl ...
- 【干货】用大白话聊聊JavaSE — ArrayList 深入剖析和Java基础知识详解(二)
在上一节中,我们简单阐述了Java的一些基础知识,比如多态,接口的实现等. 然后,演示了ArrayList的几个基本方法. ArrayList是一个集合框架,它的底层其实就是一个数组,这一点,官方文档 ...
- Quartz.net 开源job调度框架(二)----定点执行
在上一篇 Quartz.net 开源job调度框架(一) 中讲到了基本的使用以及配置job轮训数据执行 这种做法适用于对数据操作实时性要求不高的场景,在实际场景中还有一种比较常用的场景就是我们需要在 ...
- DOM 事件深入浅出(二)
在DOM事件深入浅出(一)中,我主要给大家讲解了不同DOM级别下的事件处理程序,同时介绍了事件冒泡和捕获的触发原理和方法.本文将继续介绍DOM事件中的知识点,主要侧重于DOM事件中Event对象的属性 ...