--超时需要特殊处理
--SET OutputLocalEnvironment.Destination.RouterList.DestinationData[1].labelName = 'NO';
--获取最后一个RecoverableException
DECLARE ref REFERENCE TO InputExceptionList.*[1];
DECLARE tmp REFERENCE TO InputExceptionList.*[1];
DECLARE errMsg CHARACTER 'ExceptionList {';
DECLARE I INTEGER;
WHILE ENDSWITH(FIELDNAME(ref),'Exception') AND ENDSWITH(FIELDNAME(tmp),'Exception') DO
SET errMsg = errMsg || '[Catalog=' || COALESCE(ref.Catalog,'') || ',Label=' || COALESCE(ref.Label,'') || ',Number=' || CAST(ref.Number AS CHARACTER) || ',Text=' || COALESCE(ref.Text,'');
FOR errorText AS ref.Insert[] DO
IF LENGTH(errorText.Text) >= 256 THEN
SET errMsg = errMsg || ',Insert=' || SUBSTRING(errorText.Text FROM 1 FOR 256);
ELSE
SET errMsg = errMsg || ',Insert=' || errorText.Text;
END IF;
END FOR;
SET errMsg = errMsg || ']';
MOVE tmp LASTCHILD;
IF ENDSWITH(FIELDNAME(tmp),'Exception') THEN
SET ref = tmp;
END IF;
END WHILE;
SET errMsg = errMsg || '}';
If ref.Number IS NULL THEN
SET Environment.Variables.RequestHeader.RetCode = '9999';
SET Environment.Variables.RequestHeader.RetMsg = 'Unknow Exception';
ELSE
SET Environment.Variables.RequestHeader.RetCode = CAST(ref.Number AS CHARACTER);
SET Environment.Variables.RequestHeader.RetMsg = ref.Text;
END IF;
SET Environment.Variables.RequestHeader.ExceptionName = FIELDNAME(ref);
SET Environment.Variables.RequestHeader.errClass = ref.Catalog;
SET Environment.Variables.RequestHeader.Desc = errMsg;
/**
DECLARE ref_new REFERENCE TO InputExceptionList.*[1];
WHILE FIELDNAME(ref) = 'RecoverableException' and POSITION('Exception' IN FIELDNAME(ref_new)) > 0 DO
--MOVE ref LASTCHILD;
MOVE ref_new LASTCHILD;
IF POSITION('Exception' IN FIELDNAME(ref_new)) > 0 THEN
SET ref = ref_new;
END IF;
END WHILE;
DECLARE errMsg CHAR FIELDNAME(ref.*[<]);
SET errMsg = ref.{errMsg}.*[<].Text;
IF errMsg IS NULL THEN
SET errMsg = ref.[<].Text;
END IF;
--設置异常状态
SET Environment.Variables.RequestHeader.RetCode = CAST(ref.Number AS CHARACTER);
SET Environment.Variables.RequestHeader.RetMsg = trim(ref.Text)||','||trim(errMsg);
If ref.Number = NULL then
SET Environment.Variables.RequestHeader.RetCode = '9999';
END IF;
*/
RETURN TRUE;
END;
CREATE PROCEDURE CopyMessageHeaders() BEGIN
DECLARE I INTEGER 1;
DECLARE J INTEGER;
SET J = CARDINALITY(InputRoot.*[]);
WHILE I < J DO
SET OutputRoot.*[I] = InputRoot.*[I];
SET I = I + 1;
END WHILE;
END;
CREATE PROCEDURE CopyEntireMessage() BEGIN
SET OutputRoot = InputRoot;
END;
END MODULE;
分享到:
相关推荐
- **高度可定制化:** 用户可以根据需求自定义UMO(Universal Message Objects),虽然这一概念已被Component取代。 - **高效性和易用性:** Mule强调高性能的同时也注重开发效率。 3. **Mule 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
### Mule ESB 开发实例详解 #### 一、Mule ESB 概述与应用场景 Mule ESB (Enterprise Service Bus) 是一种用于集成不同系统和服务的企业级平台。它提供了一个灵活且强大的架构,使得开发者能够轻松地连接不同的...
- **UMO (Universal Message Objects)**:这是Mule 2.0及以前版本中的概念,现已由Component Composition取代。UMO用于实现整合逻辑,可以是POJO或JavaBean等形式。 - **组件Composition**:用于组织和编排业务逻辑...
项目创建完成后,你会在flows文件夹中看到一个名为"Basic Tutorial.flow"的文件,以及src目录下的"mule-project.xml"配置文件。 我们的目标是构建一个简单的Mule流,它能接收HTTP请求,记录日志,修改负载,然后...
6. **Flow**:自Mule 3.0版本起引入的新概念,Flow由一个消息源(Message Source)和多个消息处理器组成,形成了一个处理器链,用于处理消息的整个生命周期。 #### SEDA处理请求的步骤 SEDA(Simple Event Driven ...
MULE ESB的服务编排基于“流(Flow)”的概念来进行。每个流通常包含以下几种基本节点元素: - **入口端点(Inbound Endpoint)**:用于接收外部消息的起点,如HTTP请求。 - **组件(Component)**:执行特定功能的...
- **FLOW配置**:配置过程更加流程化,简化了配置步骤。 - **Patterns**:配置模式化,有助于简化不同情况下的配置。 - **Annotation**:改进后的注释机制对于组件中的依赖注入、transformers的发布等方面具有重要...
Websphere Message Broker(WMB),也称为IBM Integration Bus(IIB),是IBM提供的一款强大的企业服务总线(ESB)和消息中间件产品。它允许企业构建、部署和管理集成解决方案,通过消息传递实现系统之间的通信。在...
- **WebSphere Message Broker**:IBM 提供的一款企业服务总线 (ESB) 产品,用于实现不同系统和服务之间的集成与通信。 - **Event Broker**:作为 WebSphere Message Broker 的一部分,它专注于处理事件驱动的应用...
2. **核心组件**:书中会详细介绍Mule的几个关键组件,如Flow、Connector、Transformer和Message Processor,它们在构建复杂集成方案中的作用和配置方法。 3. **Mule配置**:学习如何使用XML或Anypoint Studio...
Oracle Service Bus(ОСB)是Oracle提供的一种集成平台,用于构建和管理企业服务总线(ESB)解决方案。它允许企业将不同的应用和服务连接起来,实现数据交换和业务流程集成。以下是对`Oracle Service Bus-快速入门.doc...
在学习Mule ESB的过程中,重要的是理解其核心组件,例如Message Processors(消息处理器)、Connectors(连接器)和Transformers(转换器)。消息处理器负责控制流程的执行,如选择、过滤、分发消息;连接器用于与...
7. **性能监控与优化**:学习使用WMB提供的监控工具来分析和优化系统性能,如Message Flow Performance Counter和System Monitoring Console。 8. **故障排查与维护**:掌握如何诊断和解决WMB运行中遇到的问题,...
2. **IIB架构**:详细解析IIB的组件,如Message Flow Processor (MFP)、Enterprise Information Server (EIS)连接器、Message Queue (MQ)、DataPower设备等,并解释它们的角色和交互方式。 3. **消息流编程**:展示...
2. **Core Modules**:包括 Routing(路由)、Transaction Management(事务管理)、Transformation(转换)、Message Broker(消息代理)、Transportation Management(传输管理)、Security(安全)等。...
- **入参示例**:提供了一个XML格式的请求示例,包含了医院名称、应用ID、密钥、手机号码、短信内容、签名和MAC(Message Authentication Code,消息认证码),这些是发送短信时必须提供的数据。 - **返回值**:...