免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 940 | 回复: 0
打印 上一主题 下一主题

Advanced Mapping Concepts [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-13 21:57 |只看该作者 |倒序浏览
在Message Mapping存在3个比较重要的概念: Value、Context和Queues。一个queue中包含了多个contexts,一个context中包含了多个values。

Value
Value最容易理解,就是消息结构中各个字段的值。

Queues
Message mapping在运行时通过queues进行的,一个queue中包含了message mapping过程中关于一个字段的所有值,queue又可以分为input queues和result queues。
1)源消息结构中每个字段都对应一个queue;
2)标准functions和用户自定义的functions处理input queues,然后将计算的结果写入一条result queue中;
3)一个function的result queue将作为另一个function的input queue;
4)最后,每个目标字段都有个queue,目标字段的限制因素决定了目标字段queue中的哪个值写入到目标结构中

Context
context可以理解为对字段处于的结构或层级的一种描述,当一个字段允许有多个值时,那么这个字段就可以处于多个结构层中,于是就包含了多个contexts。
context中还有个非常重要的概念,那就是context change。当一个字段所处的结构出现多次的时候,context change就产生了,(注意:并不是一个字段在一个结构中出现多次的时候)。



相同长度的input queue进行计算时,计算方法如下(黑色部分为context change):

对应的位置分别计算,然后得出相应位置的计算结果。


不同长度的input queues进行计算时,计算方法如下(黑色部分为context change):

两个input queues中对应context中的value依次从右向左计算,待其中一个context中的值不够时,采用该context中的上一值代替。

在PI中有两个标准的mapping functions可以对context进行处理,一个是removeContext(),用来删除queue中所有的context changes;一个是SplitByValue(),它刚好与removeContext()功能相反,用于在queue中每个values的后面添加context changes。



还有个经常使用的自定义function:copypervalue,用于复制value,增加queue的长度。





本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/109665/showart_2148257.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP