AEAI ESB路由转换机制说明

1. 背景概述

相信了解数通畅联的人对AEAI ESB并不陌生,其设计器ESBDesigner中内置组件有:路由和转换、数据适配器、协议适配器、协议接入适配器等4类组件,每类组件下面包含各类类型的组件节点,可使程序流程更直观,加快开发速度。
路由和转换中包含了三个节点分别为:分支路由、合并路由和 java转换,分支路由用于将一条线路分为多个支路,合并路由为将多条分支合并到一块儿,java转换节点能够进行变量的数据转换和赋值,而且在模型没法知足要求时支持代码扩展。本文档详细介绍一下路由和转换的机制,但愿能为使用者提供帮助。
java

2. 预期读者

  1. 数通畅联内部技术人员
  2. 数通畅联合做伙伴技术人员

3. 名词解释

  1. ESBEnterprise Service BUS企业服务总线,通常用做数据集成平台、应用集成平台。
  2. 分支路由:AEAI ESB 内置组件,用于将一条线路分为多个支路
  3. 合并路由:AEAI ESB 内置组件,将多条分支合并到一块儿
  4. java转换:AEAI ESB 内置组件,能够进行变量的数据转换和赋值,而且在模型没法知足要求时支持代码扩展

4. 组件介绍

4.1 分支路由

选择分支路由后只能够在“基本信息”中进行配置,用于将一条线路分为多个支路。多线程

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

  • 流转类型:点击流转类型的下拉箭头后会出现auto和condition选项,当对走向不须要作判断时,便可选择auto,当须要对走向作判断时,能够在条件表达式中添加判断。
  • 条件表达式:当须要对走向进行判断,流转类型选为condition时,须要在此添加判断条件,此处只能够填写Boolean类型的变量表达式,点击“选择变量”进行选择。

描述:能够对此节点功能进行简单描述,方便本身和他人之后查看。
注意:
并发

  1. 当控制类型为and时,分支流程为并发进行可是当分支流程为数据插入且数据源选择相同时系统会报错。
  2. 当控制类型为xor时流转类型比为condition且必定有判断条件

4.2 合并路由

合并路由为将多条分支合并到一块儿,使用方法与分支路由基本相同,可参见“分支路由”的介绍。

匹配分支:经过匹配分支选择当前的合并路由与哪一个分支路由相匹配。
注意:
学习

  1. 绝大部分的流程中分支路由与合并路由选择的控制类型是相同的,可是当只有合并无分支时选择的控制类型便不相同。
  2. 当控制类型为“or”时须要选择匹配的分支路由以下:

4.3 java转换

能够进行变量的数据转换和赋值,而且在模型没法知足要求时支持代码扩展。

在类别选为赋值时,支持DataBox赋值给DataSet、DataBag赋值给DataRow、DataRow赋值给DataRow、DataSet赋值给DataSet,若是都不知足要求能够选择自动与代码赋值,点击“Next”为以下界面:
测试

  1. 来源变量 类型:为上一步选择赋值变量类型自动填写的。
  2. 来源变量 表达式:此处经过点击“选择”按钮来选择来源变量。
  3. 目标变量 类型:若是目标变量已经存在可直接填下一个框,若是目标变量不存在,先点击下拉箭头选择目标变量类型,而后点击“建立”按钮填写变量名称。
  4. 若是目标变量已存在,可点击“选择”按钮进行选择变量。
    扩展代码:若是模板不知足实际条件时,可可选择扩展代码,进行写代码实现。在类别选为转换时,支持DataSet转换为数据表格,DataSet转换为基本图表,DataSet转换为基本列表,若是都不知足要求能够选择自定义代码模板转换
  5. DataSet转换为数据表格:将DataSet中的数据转换为JSON数据,点击“Next”为以下界面:
  6. DataSet转换为基本图表:将DataSet中的数据转换为XML数据,点击“Next”为以下界面:
  7. DataSet转换为基本列表:与 DataSet转换为基本图表用法基本相同,将数据转换为列表图形的XML格式自定义代码模板转换:若是模板不知足实际条件时,可选择扩展代码,进行写代码实现。

5. 样例说明

5.1 多条件分支

分支路由到各分支的链接线是condition流转类型的,均有条件表达式。经过设置控制类型为xor(if(){}else if(){}else{}),达到不一样的表达式结果限制流程的走向实现了分支路由的控制效果。
流程图以下:

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

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

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

测试结果以下:
spa

5.2 多线程分支

流程图中,全部链接线均为auto流转类型的,即没有条件表达式。则全部流程都会走。
流程图以下:

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

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

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

测试结果以下:
线程

5.3 循环样例

使用合并路由和分支路由的组件,配合链接线的条件表达式,实现循环操做。
流程图以下:

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

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

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

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

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

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

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

测试结果以下:
设计

6. 感悟与收获

AEAI ESB主要用于集成各业务系统,实现异构系统的互联互通,笔者自知自身的知识积累不足但至入职接触AEAI ESB以来逐步学习进步,发现AEAI ESB不只实现了图形化的交互方式,支持拖拽式建立Web服务、消息流程,便于快速构建,并且具备灵活的扩展性以及支持热部署的模式而且能够远程调试能够设置断点、逐步调试,便于准确调试定位。调试

相关文章
相关标签/搜索