`
enshiwzw
  • 浏览: 50895 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MB备忘----3

阅读更多

做完消息集,现在来做消息流。

切换到[代理应用开发视图]进行一个最简单的流开发。Queue-----Queue,不用进行任何转换。当然,这个时候默认的消息域是BLOB,常用的是MRM(要配合消息定义等等)。这种例子到处都是,就不再啰嗦。

 

研究消息流的时候,注重研究MB提供的常用的节点和消息的逻辑树结构(这一点非常重要,几乎是MB的灵魂所在)。

现在研究消息逻辑树结构:

一,Message(Properties,[MQMD],Headers,Body)

二,Environment(Variables)

三,LocalEnvironment(Variables,Destination,WrittenDestination)

四,ExceptionList

下面我们仔细研究:

 

消息逻辑树:Message

根为ROOT,下面有Properties和MQMD(如果用其它通信方式,换为相应的头)、消息头及消息体Body。
属性域要设置消息集MessageSet(消息集名称)、MessageType(消息名称)、MessageFormat(物理格式,这与消息集定义时的物理格式有关,写相应的名称便可,一般为XML1,CWF1,TDS.....之类的)、Encoding、CodedCharSet等等,可以查看帮助文档得知。

用ESQL解析消息时,不同节点根的名称有所不同,

不能改变消息内容的一般都为Root,后面跟消息解析器名称如XML等等,后面换Body开始的头,如Filter节点的 ROOT.XML.AA.a表示XML文件<AA><a>...</a></AA>

能改变消息内容的一般为OutputRoot等,后面都一样。如果输出消息格式要变更一下,如TDS的想输出XML,设置MessageFormat='XML',如果要输出CWF,MessageFormat='CWF'......等等。当然,这些都是与消息集定义有关的,具体参数值是多少,要看消息定义物理格式的的名称。

 

全局环境逻辑树:Environment

全局变量在任何一点改变都会影响后面流经的到其它节点的值。

操作它的值如下:Environment.Variables.aaaa='aaaa'

 

局部变量逻辑树:LocalEnvironment

它有变量节点,也有固定的路由节点Destination。关于本节点的操作要仔细阅读并使用,路由中常用到它。

 

错误列表:ExceptionList

主要是出错相关的处理。

 

 

其实学习这些树,就是为了ESQL编程中使用它们,那么,如何引用它们呢?

(可以在资料中查找逻辑树的引用,主要注意Compute常用InputRoot,OutputRoot等,而其它的可能用Root.解析器名称)

======================================================

要丰富引用实例如下面:

Filter



 相应的ESQL

 

 

Filter_ESQL 写道
CREATE FILTER MODULE filter_Filter
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
IF Root.XML.aa.a = 'a' THEN
RETURN TRUE;
ELSEIF Root.XML.aa.a = 'b' THEN
RETURN FALSE;
ELSEIF Root.XML.aa.a = 'u' THEN
RETURN UNKNOWN;
END IF;
END;

END MODULE;
 

 

END MODULE;

 

传入消息

 

 

<aa>
<a>u(a,b,u之一)</a>
<b>b</b>
<c>c</c>
<d>d</d>
</aa>
 

这样消息会分别进入对应的节点。但要注意,Filter节点不能变更消息内容,只能路由一下。它的根是Root,后面的XML是输入消息处设置的解析器名称(消息域与此相同)。这样一个Filter消息流便处理完成。

==============================================================

针对验证,处理方式是验证match,那么输出到相应的Match点,如果不合格,直接输出到Failure点。集体处理方式见下图:



 
这儿只要做相应的属性设置便可,没有编程处理。

 

=================================================

还有另外一类逻辑判断节点:

如果想用Label和RouteToLabel一起达到第一个效果,当然也是可以做到的。

 


特别要注意的一点:因为本compute节点要用到Environment和消息,所以,Compute中的计算方式(Compute Mode)一定要选[LocalEnvironment和消息 ]或者[全部] 才可以。

 

 

ESQL 写道
SET OutputRoot = InputRoot;
IF OutputRoot.XML.aa.a = 'a' THEN
SET OutputLocalEnvironment.Destination.RouterList.DestinationData.labelName ='a';
ELSEIF OutputRoot.XML.aa.a = 'b' THEN
SET OutputLocalEnvironment.Destination.RouterList.DestinationData.labelName ='b';
ELSEIF OutputRoot.XML.aa.a = 'u' THEN
SET OutputLocalEnvironment.Destination.RouterList.DestinationData.labelName ='u';
ELSE
SET OutputLocalEnvironment.Destination.RouterList.DestinationData.labelName ='e';
END IF;

 

如果一个消息有多个匹配 写道
SET OutputRoot = InputRoot;
IF OutputRoot.XML.aa.a = 'a' THEN
SET OutputLocalEnvironment.Destination.RouterList.DestinationData.labelName ='a';
ELSEIF OutputRoot.XML.aa.a = 'b' THEN
SET OutputLocalEnvironment.Destination.RouterList.DestinationData.labelName ='b';
ELSEIF OutputRoot.XML.aa.a = 'u' THEN
SET OutputLocalEnvironment.Destination.RouterList.DestinationData.labelName ='u';
ELSE
SET OutputLocalEnvironment.Destination.RouterList.DestinationData.labelName ='e';
SET OutputLocalEnvironment.Destination.RouterList.DestinationData.labelName ='u';
END IF;

如果消息到了ELSE这儿,像这种情况,消息要选择进入e还是u ,这就要根据消息流中RouteToLabel设置的属性选定[路由到第一个,路由到最后一个],如果选的是第一个,那么消息会进入e,如果选的是路由到最后一个,消息会路由到u。

 

当然,有时候消息会到达多个目的地,这就要求消息一个个的试要到达的目的地,怎么让节点重新载入相应的消息呢?用PROPAGATE:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 大小: 10.9 KB
  • 大小: 10.4 KB
  • 大小: 16.9 KB
分享到:
评论

相关推荐

    MB备忘----2

    【标题】"MB备忘----2"所提及的内容可能与某个名为"MB"的项目或者技术有关,这可能是一个软件开发、系统管理或者是其他IT领域的记事或文档集合。"MB"可能是项目缩写,也可能是特定技术或工具的名称。由于描述中提到...

    MB备忘----2 Message Flows

    NULL 博文链接:https://ibmtech.iteye.com/blog/722412

    MB备忘----2 Message Models

    3. **消息模型对象**:使用消息模型对象来表示复杂的消息结构,如多部分消息或消息之间可能存在的关系。 4. **消息类别文件**:允许用户创建消息类别文件,将相似的消息定义组织在一起,提高复用性。 5. **数据结构*...

    全百科备忘记事本.rar

    如果用全百科备忘记事本软件就不会发生这样的问题了!全百科备忘记事本软件(记事本自动保存)是一款绿色免费的记事本实时保存不怕...可替代Windows自带的记事本程序,程序小巧绿色最大可支持9.8MB的文本自动保存到文件。

    Linux速查备忘手册

    【Linux速查备忘手册】 Linux作为一款自由和开放源代码的操作系统,其核心在于Linux内核,由Linus Torvalds创立并持续发展。Linux系统以其高度的可定制性、灵活性和安全性著称,拥有强大的命令行界面和丰富的开发...

    Novell eDirectory安装步骤(备忘)

    - 内存:最小推荐内存为512MB,但实际需求可能更高,取决于负载。 - 硬盘空间:根据安装选项和预期用户数量,至少需要几个GB的可用空间。 - 网络配置:正确配置的网络连接,以便eDirectory能与其他系统通信。 2....

    微软集群配置安装备忘录

    - 心跳分区(Z盘):500MB,用于集群心跳 - 数据盘(S盘):270GB,用于SQL Server 2000的数据存储 **集群信息** - 集群IP:10.72.32.9 - NETBIOS名:CWBGDZCSQL - SQL Server 2000信息: - SQL服务器IP:10.72.32...

    学习数据库笔记备忘SQL语句复习

    (NAME = N'db_name', FILENAME = N'path\db_name_data.mdf', SIZE = 5MB, MAXSIZE = 10MB, FILEGROWTH = 10%) LOG ON (NAME = N'db_name_log', FILENAME = N'path\db_name_log.ldf', SIZE = 2MB, FILEGROWTH = 2MB);...

    scripts:我写的各种脚本

    SmartOS 备忘录 显示 SmartOS 区域的内存使用情况 dave @ [ nexus :: (SunOS) ] ~ # /opt/memusage.sh ALIAS MEMORY (mb) UUID global 92.8398mb / 1.75922e+13mb - go 46.1484mb / 256mb 00105c11-fed4-413c-...

    密码管理专家V1.0.2.0

    简介: 本软件为开源软件。软件所有数据均保存在本地,安全可靠。 功能: ... ...6、软件提示更新功能,让您能实时掌握软件的更新动态。...8、回收站功能,您再也不必因为误删数据而导致...3、更换为更加安全的数据加密算法。

    基于System C和UML的语音备忘器设计-综合文档

    基于System C和UML的语音备忘器设计资源大小:2.45MB[摘要] 随着VLSI的集成度越来越高,设计也越趋复杂。传统的设计方法如原理图输入、HDL语言描述在进行复杂系统设计时,设计效率往往比较低。特别是在算法由软件...

    产品定义(推广用).知识分享.docx

    - 存储:128Mb Nor Flash + 32Mb SRAM,最大可扩展至256+64MB。 - 电池:1050mAh,提供持久续航。 - 通信:支持GPRS/EDGE,Class 12等级,以及彩信(MMS)和WAP 2.0浏览。 - 多媒体:内置MP3播放器,支持MP4、3GP...

    go-send:临时保存文件或简短备忘,方便个人设备间或熟人之间互传文件

    cli 命令行工具,服务器、终端环境也可使用支持快捷键发送系统剪贴板内容 (可发送纯文本或文件)demo 演示密码: abc演示版会自动压缩图片,正式版则是上传原图演示版限制单个文件 512KB 以下,数据库总容量 10MB, ...

    企业人事管理系统概要设计说明书

    - [3]《C#入门经典》,清华大学出版社,作者:Karli Watson、Christian Nagel等,译者:乔立波。 #### 二、总体设计 - **需求规定**: - 基本信息管理:实现职工基本信息的管理,包括名族类别、职工类别、文化...

    Vista自学手册-联想内部Vista培训

    - 内存:对于32位版本至少512 MB,对于64位版本至少1 GB。 - 硬盘空间:15 GB以上可用空间。 - 显卡:DirectX 9图形处理器,且支持Pixel Shader 2.0和WDDM驱动程序。 #### Vista界面新特性概览 Vista在界面设计上...

    Maude-manual

    - **定义无条件成员资格**:使用 `mb` 关键字声明一个元素属于某个集合。 - **成员资格的意义**:用于描述数据类型之间的关系。 **4.3 条件方程与成员资格** - **条件方程**:通过 `if` 子句定义条件方程,其执行...

    JavaME开发备忘.pdf

    CDC(Connected Device Configuration)则面向运算能力更强、内存大于2MB的设备,如机顶盒或冷气机。 "设备版型"是在"设备配置"基础上的进一步细分,提供了特定功能集的API。例如,CLDC上的MIDP(Mobile ...

    iPhone/ipod touch/ipad文件传输工具 ifunBox_sc中文版(数据线版)支持

    iFunBox:PC 端程序,简单、高效,只需要 iTunes 环境支持,数据线传输,速度一般 10MB/S i-FunBox v0.99版本, 更新信息: 1. 传输文件到电脑: 支持iBooks的ePubs图书文件,语音备忘录Voice Memo的.m4a 格式。 2....

Global site tag (gtag.js) - Google Analytics