`
jssanshengshi
  • 浏览: 16066 次
  • 性别: Icon_minigender_1
  • 来自: wuxi
社区版块
存档分类
最新评论

Chain Builder ESB 之custom code

阅读更多
Chain Builder ESB心得之custom code
当我们在做chain Builder 流程配置时候,难免有一些现有的组件的功能无法满足我们的需要,而chain Builder 为我们提供了很好的自定义代码(custom code)功能,让我们在处理一些现有组件无法完成的功能时,能通过写自定义代码来实现。
建立自定义代码
1. 当我们的自定义代码是想在多个JBI 功能引用的,我们可以在ESB 工程中建立,而单独的作为一个JBI 工程的自定义代码,则在此JBI工程新建。
2. 界面分析

在工程右键新建-自定义代码,界面如上图所示,其中
2.1 类型:
˙Map User Operation --> 用于做映射时的自定义操作;
˙TrxID              --> 从信息中获得或设置TrxID 并返回
˙Upoc               --> 对终端消息链的自定义操作(如出错信息的监控)
˙Script Component   --> 可以自定义脚本组件
˙Etl Error Handler  --> 自定义ETL 组件的出错监控
2.2 语言:
˙java 完全支持java语言
˙Groovy 基于java 虚拟机的敏捷动态语言
实际应用介绍
1. Map User Operation 自定义代码
1.1 场景介绍:在做一次调用webServices返回一个附件信息(默认进行了base64 的编码),我们需要将附件映射到一个目标数据源中,需要对webServices返回的附件进行base64 的解码,将获得到的附件信息在保存到数据库中;
1.2 解决方案:在获得到webServices返回信息时候,映射时选择自定义操作,从而调用自定义代码,将webServices返回的附件信息,进行解码保存;自定义代码类名:StoreAttachmentFromByte

其核心代码如下:

public boolean process(String[] sources, Object[] sourcesDom,
			Node[] targetDom, Object[] targets,
			IMapOperationContext operationContext,
			IMapExecutionContext mapContext) throws Exception { 
		if (sources.length > 0) {
			if(sources.length > 1 && "false".equalsIgnoreCase(sources[1]))
			{
				logger.error("获得附件内容失败:"+mapContext.getMetadata("keyvalue"));
				if(sources.length > 2)
				{
					logger.error("webservice返回出错信息:"+sources[2]);
				}
				return false;
			}
			//对webservice 返回的sources[0] 进行base64解码,返回一个byte数组
			byte[] byteArry = Base64Util.decodeToByteArray(sources[0]); 
			String destCID = generateContentId();//生成一个附件ID
			DataSource ds = new ByteArrayDataSource(byteArry,"application/octet-stream");
			if (null != ds) {
				DataHandler dh = new DataHandler(ds);
				if (null != dh) {//将格式化的附件添加到目标数据中
					mapContext.setTargetAttachment(destCID, dh);
					targets[0] = destCID;
				}
			}
		} else {
			logger.error("No source argument provided:"+mapContext.getMetadata("keyvalue"));
			return false;
		}

		return true;
	}




分享到:
评论

相关推荐

    ChainBuilder ESB-开源

    ChainBuilder ESB是Java商业集成(JBI)兼容的开源解决方案,可用于面向服务的体系结构(SOA)环境。 ChainBuilder ESB的图形集成使新旧应用程序可以轻松地进入SOA。

    ESB应用Custom_Action

    ESB应用Custom_Action,有图片

    WSO2-ESB-Custom-Message-Builder

    ESB-Custom-Message-Builder

    Sonic ESB logging and custom services

    NULL 博文链接:https://deadcow.iteye.com/blog/713113

    JBoss ESB 学习笔记

    6——第五个ESB代码Custom Action 51 7——第六个ESB代码Http Gateway 63 8——第七个ESB代码Https Gateway 74 9——第八个ESB代码JMS Router 83 10——第九个ESB代码JMS Topic 91 11——第十个ESB代码Message ...

    ESB技术学习教程,适用初学ESB人员

    ESB ESB技术学习教程ESB ESB技术学习教程ESB ESB技术学习教程ESB ESB技术学习教程ESB ESB技术学习教程ESB ESB技术学习教程

    关于ESB关于ESB关于ESB

    关于ESB项目的一些整理,工作原理之类。

    泛微Ecology9.0数据展现集成之ESB接口应用

    3.1. ESB事件说明 3.1.1. 查询事件 3.1.2. 回显事件 3.2. 数据展现集成配置 3.2.1. 是否支持分页 3.2.2. ESB查询服务 3.2.3. ESB回显查询服务 3.2.4. 字段设置 4. 功能示例 4.1. 数据展现集成“ESB服务”数据来源...

    ESB介绍和案例

    ESB介绍和案例

    esb简单例子 学习esb的初学者 可以看看

    esb的 实例 学习esb的初学者 可以看看

    Oracle之ESB培训

    Oracle之ESB培训 00_Overview 01_ESB_Resources 02_ContextVariable 03_ServiceBusConsole 04_MessageFlow 05_MessageEnrichment 06_ESB_EJB 07_MessageFlowActions 08_Transformation 09_ESB_Debug

    ESB原理及Mule ESB实践

    ESB原理及Mule ESB实践

    国产ESB产品介绍

    文档列举了三个国产ESB的介绍:金蝶ApusicESB、锐易特软件、合众企业服务总线,希望可以对后来者提供一些建议

    IBM ESB 介绍(IBM ESB Story)

    IBM ESB产品介绍(官方) 初步介绍ESB和IBM的两个ESB产品-WESB WMB

    ESB原理架构实现及应用

    摘要:随着面向服务体系结构(s0A)的推出及其深入应用,企业服务总线(EsB)在理论和应用方面成为软件开发、集成与部署的 热点技术。论文分析了ESB的原理,对其体系结构进行了归纳,根据现有的ESB实现平台,重,最介绍...

    ESB大合集ESB大合集

    ESB大合集ESB大合集,包含你所需的文档!

    Jboss ESB简介及开发实例

    一、Jboss ESB的简介 1、 什么是ESB。 ESB的全称是Enterprise Service Bus,即企业服务总线。ESB是过去消息中间件的发展,ESB采用了“总线”这样一种模式来管理和简化应用之间的集成拓扑结构,以广为接受的开放...

    WebService&ESB入门

    ESB减少了你的SOA体系中的接口的数量,大小和复杂度。 ESB在请求者和服务之间实现了: 路由服务间的消息 转化请求者和服务之间的传输协议 转换请求者和服务之间的消息格式 处理分离资源间的业务事件

    esb 资料大全汇总

    ESB.rar ESB设计与最佳实践.ppt IBM ESB, WebSphere ESB and WebSphere Message Broker.pdf IBM_ESB_MB企业服务总线系统集成的核心平台.ppt IBMESB总体架构交流.ppt

Global site tag (gtag.js) - Google Analytics