`
jssanshengshi
  • 浏览: 16425 次
  • 性别: 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" 描述:"ESB应用Custom_Action,有图片" 标签:"JBoss_ESB" 知识点解析: 在企业服务总线(Enterprise Service Bus,简称ESB)的架构中,Custom_Action作为一项关键特性,允许开发...

    WSO2-ESB-Custom-Message-Builder

    本文将深入探讨与"WSO2-ESB-Custom-Message-Builder"相关的知识点。 **1. WSO2 ESB的角色** WSO2 ESB作为一个服务总线,主要职责包括路由、转换、协议适配、安全管理以及性能优化。它提供了一个灵活的平台,可以...

    ESB介绍和案例

    企业服务总线(Enterprise Service Bus,简称ESB)是企业级集成的重要工具,它作为服务导向架构(Service-Oriented Architecture,简称SOA)的核心组件,用于连接不同系统和应用程序,实现数据和服务的高效交互。ESB...

    ESB原理及Mule ESB实践

    **ESB**(企业服务总线)是SOA(面向服务架构)架构中的关键组件之一,用于实现服务间的智能集成与管理。其核心作用在于简化不同系统间的服务交互过程,并提供标准化的数据交换机制。 1. **智能化集成与管理:** -...

    JBOSS_Esb学习资料

    3. **自定义操作**:在《JBoss_ESB学习笔记6——第五个ESB应用Custom_Action.doc》中,我们能学习到如何编写自定义操作,这是扩展ESB功能的关键,使得开发者能够根据特定需求定制服务处理逻辑。 4. **Spring整合**...

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

    泛微Ecology9.0是一款企业级协同办公系统,它在9.0版本中引入了对ESB(Enterprise Service Bus,企业服务总线)接口的支持,以实现更高效的数据展现和集成。ESB作为一种中间件,它能促进不同系统间的通信,通过统一...

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

    3. **集成**:集成是ESB的核心功能之一,它连接各种数据库、聚合服务、适配遗留系统和应用程序,以及使用EAI中间件实现不同系统的互联。ESB还进行服务映射、协议转换,并支持各种应用程序服务器环境和语言接口。 4....

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

    **ESB(Enterprise Service Bus)** 是企业服务总线,是一种中间件,旨在促进不同系统间的集成和通信。它提供了一种方式,使得各种应用程序和服务能够通过标准接口进行交互,而无需了解彼此的具体实现细节。ESB的...

    IBM ESB 介绍(IBM ESB Story)

    IBM的WebSphere ESB是其ESB产品之一,专注于提供全面的服务集成能力,包括服务注册、服务安全、服务质量(QoS)管理等。另一方面,WebSphere Message Broker更倾向于作为一个强大的消息传递平台,它利用WebSphere MQ...

    mule -esb 源码

    Spring是Mule ESB的核心组件之一,负责管理对象的生命周期和依赖注入。这两个DTD文件确保了配置文件的正确性,帮助开发者理解如何配置Mule应用。 `security.policy`文件是Java安全策略的配置,用于控制Mule 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

    JBoss.ESB.Beginners.Guide_Code.rar

    该书的配套代码资源包含在"JBoss.ESB.Beginners.Guide_Code.rar"这个压缩包中,主要分为"META-INF"、"org"和"WEB-INF"三个部分。 1. **META-INF**: 这个目录通常包含与Java应用相关的元数据信息。在ESB项目中,`...

    talend-ESB是什么?OSGI是什么?TOS-ESB相关组件介绍

    TOS-ESB支持广泛的服务集成方式,并可以运行于多种操作系统之上。Talend提供的图形化设计界面,使得用户可以像在Talend Open Studio中处理数据集成一样,直观地处理服务集成。TOS-ESB的相关组件包括一系列可以实现...

    C# ESB 分布式处理技术 Remote

    **C# ESB 分布式处理技术 Remote** 在软件开发中,企业服务总线(Enterprise Service Bus,ESB)是一种架构模式,它提供了一种在分布式系统中集成和交互服务的方式。C#中的Remote技术是.NET框架提供的一个关键组件...

    esb的简介和优点

    3、 准确性高:ESB 产品采用可配置的方式,所有跟数据操作相关的元素都由 ESB 产品来获取,用户只需简单选择即可,避免了错误的发生,可以达到百分之百的准确。 4、 丰富的协议:ESB 产品中包括各种常用或者不常用...

    ESB.NET架构方案

    **ESB.NET架构方案** 企业服务总线(Enterprise Service Bus,ESB)是一种软件架构模式,用于构建松散耦合、灵活的企业级应用系统。它作为企业内部不同系统间通信的桥梁,允许服务消费者和服务提供者之间进行高效、...

    ESB

    **ESB:企业服务总线** 企业服务总线(Enterprise Service Bus,ESB)是企业级集成中的核心组件,主要用于解决分布式系统之间的通信问题。它提供了一种中间件架构,使得不同系统的服务能够互相交互,实现数据和服务...

    ESB3实例代码及文档

    【标题】"ESB3实例代码及文档"指的是企业服务总线(Enterprise Service Bus,ESB)的第三阶段实现的相关实例代码和配套文档。ESB是企业级集成的关键技术,它提供了一种在不同系统之间交换信息和服务的方式,使得应用...

Global site tag (gtag.js) - Google Analytics