半结构化数据的动态树存储模型研究
2022-08-27
来源:易榕旅网
第28卷第5期 2011年5月 计算机应用与软件 Computer Applications and Software Vo1.28 No.5 Mav 2011 半结构化数据的动态树存储模型研究 张雨佳 苏中滨h 吴华瑞 ’(东北农业大学工程学院朱华吉 北京100097) 陶 勇 黑龙江哈尔滨150030) (国家农业信息化工程技术研究中心软件工程部。(农业部农业信息技术重点开放实验室北京100097) 摘要 为了克服半结构化数据存储的不确定性,基于半结构化数据的结构信息可由其模式来描述的思想,提出一种动态树存储 模型。在对对象交换模型OEM(Object Exchange Mode1)进行深度优先遍历,找出所有最大简单路径表达式基础上,采用累加计数原 则将得到的最大路径表达式依次添加到一个动态树中,从而生成存储模型。最后将此模型映射到关系表中,实现了半结构化数据在 关系数据库中的存储与查询。以村镇土地审批处理系统为实例来说明这种存储模型的有效性。 关键词 对象交换模型 半结构化数据模式抽取 动态树 RESEARCH oN DYNAMIC TREE SToRAGE MoDEL oF SEMI.STRUCTURED DATA Zhang Yujia ・ Su Zhongbin Wu Huarui ’ Zhu Huaji , Tao Yong (School ofEngineering,No.beast Agricultural University,Harbin 150030,Heilongfiang,China) (Department ofSotfware Engineering,National Engineering Research Centerfor Information Technology in Agriculture,Beijing 100097,China) (Key Laboratoryfor Information Technologies in Agriculture,Ministry ofAgriculture,Beijing 100097,China) Abstract In order to overeome the uncertainty of semi—structured data storage,a dynamic tree storage model was proposed based on the idea that the structure information of semi—stuctured data can be descrirbed by its mode1.First,all biggest simple path expressions were found by carrying out the OEM depth—first traversa1.Then,these expressions were added in tuna to a dynamic tree to generate the storage model accordingly by adopting the principle of cumulative count.Finally,the semi-structured data storage and query in relational databases was achieved after mapping the model to relationship table.The treatment system of land examining and approving in village—town was taken as the example to illustrate the effectiveness of this mode1. Keywords Object exchange model(OEM) Semi-structured data Mode abstraction Dynamic tree 半结构化数据存储模型,以有效解决半结构化数据类型和模式 0引 言 半结构化数据是指那些结构隐含或无规则、不严谨的自我 描述型数据,介于严格结构化数据(如关系数据库和对象数据 库中的数据)和完全无结构的数据(如声音、图像文件)之间-- 。 由于半结构化数据缺乏类型信息,只有有效地将其存储之后,才 不断变化的问题,并将此模型映射到关系表中,实现了半结构化 数据在关系数据库中的存储与查询。 1 半结构化数据描述模型 在将半结构化数据存储之前,首先要找到一个高度灵活的 数据模型,它能够表达不同类型数据,并对半结构化数据的模式 进行描述。而对此目前已经提出了多种描述形式,有基于图的 能对其进行索引及查询处理,从而方便管理,因此,半结构化数 据存储策略将是一个十分重要的研究课题。 近年来大量国内外相关研究机构致力于半结构化数据的存 储与查询处理的研究。目前,提出并实现了的存储技术主要有: 文本文件方式、RDB方式及OODB等方式。其中,文本文件的 描述形式和基于逻辑的描述形式。在这里采用比较有代表性的 基于图的OEM模型。 OEM是斯坦福大学Serge Abiteboul教授等提出的用来描述 半结构化数据的描述模型。该模型中所有的实体均为对象,由 表示对象的结点和带标签(1abe1)的有向边构成 。每个OEM 存储方式存储难度较大,不利于数据的检索和管理。RDB存储 方式运算效率低,即使一个非常简单的查询也将会产生较多的 联结。OODB存储方式在事先不知道数据的类型信息时,数据 加载的代价可能会很高,并且一旦类型发生了变化,将会导致代 价更高的模式更新,而半结构化数据正是一种缺乏类型信息,并 且数据类型和模式不固定的数据,因此也不适合用OODB方式 存储。 针对以上各种方式的局限性,本文提出~种动态树结构的 收稿日期:2009—12—29。“948”项目(2006一G63);国家科技支撑 计划(2006BAJ09B05);国家高技术研究发展计划项目(2007AA01 Z179);国家科技支撑计划子课题(2006BAJ09 B0702);黑龙江省教育厅 自然科学重点项目(1154zi011)。张雨佳,硕士生,主研领域:计算机决 策支持系统。 第5期 张雨佳等:半结构化数据的动态树存储模型研究 2.1模式的定义 87 对象都可用一个4元组表示:(oid,label,type,value)。其中old 是对象的唯一标识。label是对象的标签描述,为一字符串表达 对象的含义。type是对象类型,OEM对象类型有两类:原子对 象和复杂对象。原子对象是不可再分的基本类型,具有integer、 模式定义的提出需要引入一些OEM相关概念知识,现结合 图1给出几个定义和符号表示如下: 定义1 简单路径表达式spe令li是对象引用中的一个 标签,其中i=1,…,n(n≥1),则spe=ll,12,…, 就是一个长 度为n的简单路径表达式。 定义2 最大简单路径表达式nape若有一个简单路径表 string等类型的值。复杂对象是对象引用的集合,每一个对象引 用指向另一个对象,不失一般性。 现结合村镇土地审批流程处理中的相关数据,在分析了流 程数据具有半结构性的基础上,构造出一个有关宅基地的OEM 描述模型。 达式集合{spel,spe2,…,spen},对于某个spei在集合中不存在任 何spei的超集,则称spei是该集合中的最大印e,记作rope。 由于村镇土地流转业务复杂、审批处理流程标准不统一,会 使相同的土地审批处理在各村镇问有着各异的流程,甚至因为 某项政策的改变,同一个村镇的某项审批处理流程也会随之发 生变动。比如同样一个关于宅基地申请的处理流程,有的村镇 只需“农民申请”、“村委审议”和“乡镇政府审批”三个业务点 组成,有的村镇还需“实地调查审核”这个业务点,即相同的流 程数据可能具有不规则的结构,并可能随时处于变化之中,从而 说明土地审批处理中涉及的流程数据具有半结构性。为简单起 见,在一定程度上简化了对宅基地的描述,只对其部分主要属性 进行了OEM模型表达,如图1所示,认为它由用户标识符、所有 者、面积、宅基地申请审批流程以及宅基地建房审批流程描述, 并且每个流程业务点也只列出其中比较重要的几个属性,例如 规划主体(Subject)、规划操作(Operation)、规划客体(Object) 等。其中,用户标识符由用户根据其不同的含义进行定义,例如 此块宅基地记为zjd1。 图1宅基地的OEM描述模型 2半结构化数据的动态树存储模型 半结构化数据的模式是用于描述数据结构信息的,而不是 对数据结构进行强制约束 ,但由于半结构化数据的模式与数 据是混淆在一起的,为此模式抽取就成为找到半结构化数据中 的结构,发现数据对象间关系,从而将其存储到关系数据系统中 的首要步骤。基于这样的思想,本研究提出一种动态树存储模 型,此模型可体现半结构化数据的模式信息,方便我们发现半结 构化数据的结构。下面仍以图1为例,首先对半结构化数据的 模式进行定义,明确模式抽取的目标对象。然后详细介绍如何利 用层次结构思想和累加计数原则,生成具有半结构化数据模式 的动态树存储模型。 例:ShengQ.PlanPoint.Subject是一个长度为3的简单路径 表达式;集合S={spel=ShengQ.PlanPoint;spe2=ShengQ. PlanPoint.Subject},则spe2即为该集合的rope,ShengQ为spel与 spe2的共享前缀。 定义3频繁简单路径表达式foe spe出现在OEM模型中 的个数,称作spe的支持度计数,记作sup( e)。当sup(spe)≥ arin_sup(最小支持度阈值)时,spe就为频繁的spe,记作fpe。 定义4数据路径表达式dp令0 是一个对象i:0,1, …,n,对象0 和标签li以逗号为间隔并交替出现的序列,即 =0。,z。,0。,z ,…,z ,0 ,和就称为一个源于00的止于0 的长度为n的数据路径表达式。 例: ={1.ShengQ.4.PlanPoint.6.Subject.17},是一个源 于1的止于l7的长度为3的数据路径表达式。 半结构化数据的模式抽取是为了找到数据中的结构,发现 数据对象问关系,因此对OEM模型中的连接对象要比对象本身 更感兴趣。而根据上面的概念可知,spe要比 更能反映半结 构化数据的一般结构。为此,将待抽取的数据模式定义为OEM 中所有频繁的最大简单路径表达式(mpe) 。 2.2 生成具有层次结构的最大简单路径表达式集合 为了找到OEM中所有频繁的mpe,本文需首先试图生成一 个由所有mpe构成的集合。由于OEM模型具有层次性,所以可 充分利用深度优先遍历的优势,对图1中的OEM模型进行深度 优先遍历,找出所有mpe并生成集合。借鉴文献[4]提出的分 层结构的思想,可有效解决OEM模型的分支问题。因此本文同 样采用此思想,将遍历得到的rape添加层次标记,从而生成…・个 具有层次结构的mpe集合,记作s。这样,图1中的OEM模型 经深度优先遍历之后,即可生成集合5{uid...,Area ,Own— el"】3,ShengQ1—4.PlanPoint 2一1.Sut#ct 3一l・-…・}。 2.3构造动态树结构的存储模型 得到集合S之后,便期望从中找到所有频繁的mpe,即提取 出半结构化数据的模式。为此本研究提出一种累加计数原则, 将S中各个元素mpe依次作为树的分支,最终生成一个动态树。 由于通过此原则生成的树可方便地对数据的模式进行提取,找 到半结构化数据的隐含结构,发现对象问的关系,从而将半结构 化数据进行存储,于是本文提出将此树结构作为半结构化数据 的存储模型。 根据OEM模型的基本特点并结合图1,可对树的结构进行 如下定义: #define MAX—.TREE—.SIZE 500 typedef struct Node{ ,7 谗缝 stirng label; //mpe的共享前缀 string level—code; //label的层次标记 integer id; //节点在OEM中的oid 88 mteger count; 计算机应用与软件 //计数器,记录节点在OEM中出现的次数 child 2011血 根据累加计数原则可知,通过此树各节点的count值即可方 便地找出所有频繁的mpe,抽取出半结构化数据的模式,发现数 据的结构。 该存储模型除了可方便我们提取数据的结构信息以外,还 有着动态性,可随时方便地进行更新,以适应半结构化数据的高 度灵活扩展和不规则性。比如从图2可以看出,此时的宅基地 建房审批流程是由“农民申请宅基地使用权”、“村委会对农民 提交材料复核”、“镇土地管理所现场勘测宅基地”以及最终的 “县级政府正式批准宅基地建房”这4个业务点组成。但若某 struct Node //一个指向子节点的指针 ,/_I《遗锗 }Node; typedef struct Tree{ Node nodes[MAX—TREE—SIZE]; int r,n; }Tree; //根的位置和节点数 接下来,根据上述结构定义,开始构造动态树。其中根节点 的level—code和count都为0,label记为“ZJD”,id记录该宅基地 的oid信息。而在将集合S中的各个元素mpe作为分支依次添 村镇的宅基地建房申请审批处理中,又规定建设单位或个人必 加到树中时,需依据累加计数原则,以便日后提取数据的模式信 息。即:添加mpe元素时,判断此元素所含的节点与当前树中的 前一个节点之间是否有共享前缀,即它们的label是否相同。若 无共享前缀(1abel不同),则创建新的分支,即直接将此元素添 加到树中;若有共享前缀(1abel相同),则需再进一步判断它们 的level—code的值是否相同。若level—code的值相同,则说明此时 在添加的是OEM模型中的一个分支,即只需在原有节点下添加 一个分支即可。例如:在添加元素ShengQ1—3.PlanPoint2—1.Ob一 ct3-3时,因为当前树中的前一个元素为ShengQ1—3.PlanPoint2— 1.Operation3—2,判断出它们的label(ShengQ.PlanPoint)以及 一 el—code(1-3和2—1)值都相同,说明此时添加的是PlanPoint节 点的一个分支,只需在原有节点PlanPoint:2—1:16:1下添加 Object:3—3:19:1这一分支。若判断它们的level—code值不同, 则说明此时添加的元素与之前节点不是兄弟节点,则count值加 1,并将此元素涉及到的每个节点添加一条新纪录,记录保存着 label、level—code、id和count的新值,进而转入开始处理新的分 支。例如:在添加元素ShengQ1—3.PlanPoint2—2.Subject3-4时,判 断出其与当前树中的前一个元素ShengQ1—3.PlanPoint2—1.Ob一 ct3,3的label值相同,但level—code值不同,因此说明此时在添 加的是一个新的分支,需要为PlanPoint节点添加一条Plan— Point:2-2:7:2的新纪录。依此类推,直至集合S中的所有元素 添加完毕,此时一个由mpe构成的树就构造完成。 为了节省空间,对构造出的树又做了进一步的改进:将每个 结构节点的定义信息level—code、id以及count等作为一个元素依 次链成一个以各相应节点label为名字的队列。具体改进过的 树结构如图2所示。 一 }zJD 00:Ol IFII ̄:5:Ii  ̄114:1:1j胁{ 2:ll Owner[1.8:3:l} 碉1舭l I2吨9:l: 24:6:1 2矗1O:2: 2-2:7:2; 2-6:11:3; ∞12:4} 34:22:2; Ⅲ 1:37: 图2动态树结构的半结构化数据存储模型 须在用地经批准后,要由镇土地管理所现场验线,核实无误后方 可施工,为此需要对宅基地建房申请审批流程增加“镇土地管 理所现场验线”这个业务点,则只需在图2所示的树结构基础 上,对JianF下的PlanPoint节点及其分支节点各添加一条记 录:}PlanPoint:2—8:38:5;Subject:3—22:39:5;Operation:3—23:40: 5;Object:3-24:41:5},而无需改变整个树结构。 由此可见,借助此动态树的存储模型,即可方便地发现半结 构化数据的结构,又可实现半结构化数据的动态存储,解决其往 往不规则,并且经常处于变化之中的问题。 3 半结构化数据的存储与查询 3.1半结构化数据的存储 生成存储模型后,下一步需要解决的问题就是半结构化数 据如何进行物理存储。由于关系数据库技术已发展成为一种成 熟的数据库技术,所以若能利用关系数据库来存储半结构化数 据,就可重用关系数据库的查询优化器和事务处理机制,以保证 半结构化数据的一致性和完整性 J。为此,本研究继续提出将 生成的动态树存储模型映射到关系表中,以实现半结构化数据 的存储。 首先,根据存储模型中节点的性质,将各节点划分为两类: 模式节点和数据节点,对这两类节点将分别采用不同的方式映 射到关系数据库中。为此,需要对存储模型中各节点的属性数 据所具有的结构程度进行简单的判断,即根据节点出现的数目 决定将该节点转化数据节点或模式节点。当节点数目大于某个 阈值n时,则将其定义为模式节点;否则,视为数据节点。阈值 1的确定必须合理,如果n的取值太小,有可能形成大量元组 数目较小的关系,从而影响数据存储和处理的效率;n的取值 过大,则不能充分地发挥出这种存储模型的优势。 判断出节点类型后,就可对这两类节点将分别采用不同的 方式映射到关系数据库中。其中,由于数据节点和OEM描述模 型中的数据节点类似,用来表示源数据中结构松散的数据。所 谓“松散”是指这类节点常以属性值的形式出现在OEM描述模 型中,而在存储模型中,也表现为叶节点,用来描述模式节点,因 此它们大多数可以作为属性保存在对应模式节点的主关系 表中。 根据节点划分规则可知,模式节点可理解为OEM描述模型 中由类型相近的数据节点组成的集合,对于模式节点的存储是 本研究存储映射工作中的难点和重点。每个模式节点都有一个 对应的主关系表和从属关系表,用来保存集合中各源数据节点 的相关信息。 在模式节点主关系表中,由于源数据节点在主关系表中唯 一对应一个元组,因此可以用源数据节点的本身 作为主键。 第5期 张雨佳等:半结构化数据的动态树存储模型研究 89 而该表中的其他属性域用来保存集合中多数节点的共有属性值, 即某属性出现的次数较频繁,就将其作为一个属性域,这样可以 保证表中大多数的元组具有该属性域,避免存储的浪费。为此, 8 f 乡镇政府 I 审批 f 宅基地 表3建房业务点主关系表(Yewu_JF_main) ID Subject Operation Obiect 本研究设定一个阈值 ,并设定/2=0.5,如果具有某属性值的 节点数目与总的节点数目的比值较大(大于 ),即该集合中有 过半的节点都有该属性,则在主关系表中添加此属性域;而对于 9 lO l1 i2 农民 村委会 镇土地管理所 县级政府 申请 复核 现场勘测 审批 宅基地 那些少量节点独有的属性域则需要创建单独的属性从属关系表。 在该属性从属关系表中除了要保存那些少量节点的值和类型信 宅基地 宅基地 息以外,还要根据节点队列中保存的child指针所指向的节点,保 存这些节点的父节点 。 模式节点从属关系表,用来保存模式节点之间的从属关系, 即该表的属性域为连接模式节点的边的开始节点 和目标节点 。通常情况下,主关系表中的一个节点可对应其他主关系表中 的多个节点,因此,在模式节点从属关系表中,源数据节点的 是该表的外键。节点 作为主关系表和从属关系表的主键和外 键,在数据查询时,经常用来确定关系元组,因此可在主关系表和 从属关系表的ID属性域上建立哈希索引。 根据以上的映射思想,并结合图2生成的存储模型,具体的 映射过程及生成的表结构如下: (1)节点类型的划分宽度优先遍历图2的存储模型,根据 规则找出模式节点ZJD(宅基地)、Yewu_SQ(申请业务点)和Yewu 一,F(建房业务点),其他节点视为数据节点。如表1、表2和表3 所示。 (2)模式节点主关系表和属性从属关系表的生成 分别对 ZJD、Yewu_SQ和Yewu一,F这三个模式节点生成各自的主关系表: ZJD_main、Yewu_SQ_main以及Yewu一,F—main。在生成模式节点 主关系表时,关键的步骤就是确定关系表的属性域,以Yewu—JF 模式节点为例简略说明Yewu_JF_main属性域的确定过程。由于 JianF分支下的PlanPoint模式节点的总节点数目为4,而Object 的count为3,判断具有此属性值的节点数目与总的节点数目的 比值,显然3/4大于本研究设定的阀值 (72=0.5),则将Object 添加到PlanPoint的主关系表的属性域中。而对于Date属性,其 count为1,由于1/4小于0.5,则Date的值将保存在PlanPoint的 属性从属关系表Yewu一, ttSub中,并根据图2中节点PlanPoint 和Date保存的child指针,存储属性域Yuanld和 的值,以便 日后能够对少量节点独有的属性进行查询。如表7所示。 (3)模式节点从属关系表的生成结合图2生成的存储模 型,确定三个模式节点ZJD、Yewu—SQ和Yewu—JF之间的从属关 系,从而生成模式节点从属关系表ZJD—Sub、SQ—Sub以及 一 Sub。如表4、表5和表6所示。 (4)建立索引 分别在ZJD、Yewu—sq和Yewu一,F的主关系 表和从属关系表的ID属性域上建立哈希索引,方便数据的查询。 表1宅基地主关系表(ZJD _main )表2申请业务点主关系表(Yewu—SQ_main) ID Subiect Operation Objeot 6 农民 申请 宅基地 7 村委 审议 宅基地 表4宅基地从属关系表(ZJD_Sub) ID SubId 00 4 00 5 表6建房审批从属关系表(JF—Sub) ID SubId 5 9 5 10 5 l1 5 12 表7 建房业务点属性从属表(YewujF—AttSub) YuanId 1 Id ValHe 1O 31 2oo3—9 用关系表来存储半结构化数据必须保证不破坏或丢失原来 数据的结构信息和数据信息,因此,除了要存储节点对象值之外, 还要存储对象之间的关系。本研究在上述的存储映射规则中也 注意了这方面的内容。从上面的存储映射规则可以看出,其中, 模式节点的主关系表就是用来对节点对象的存储,而模式节点从 属关系表和属性从属关系表都是对对象间关系的存储。 综上所述,本研究提出的这种存储方法将半结构化数据在很 大程度上转化为关系数据,在转化的过程中既保证了半结构化数 据的完整性,又没有对半结构化数据结构复杂、灵活易变的特点 进行过多的限制,为利用半结构化数据的结构信息提供了有效 途径。 3.2半结构化数据的查询 通过上面的存储映射,已将半结构化数据存储到关系数据库 中,因此日后对半结构化数据的查询就可转化为我们所熟知的关 系表的查询,同时,也可应用传统的关系查询优化的思想和查询 技术来选择具体的查询执行计划。 例如,要查询此块宅基地(uid为zjd1)建房的流程,只需写基 于关系的SQL查询语句:select Subject,Operation,Objectfrom Yewu— JF_main where 11)in(select Subldfrom JF—Sub where ID in(select SubldfromZJD_SubwhereIDin(selectIOfromZJD_mainwhere uid =zjd1)))即可查询到此块宅基地的所有建房流程。同样,也可 以对宅基地的其他属性信息进行查询。 由此可见,将此动态树结构的存储模型映射到关系表中之 计算机应用与软件 2011皇 后,即可利用关系数据库系统对半结构化数据实现查询与分析 处理。 4应用实现 将本研究提出的动态树存储模型应用到村镇土地审批处 理系统中,可有效地对土地审批处理过程中涉及的各流程数 据进行动态存储,实现流程的动态定制。该实例系统的具体 实现技术路线包括以下几步:首先,借助OEM模型针对不同 村镇的实际情况进行流程数据的动态定义,以解决流程数据 的描述问题。然后,利用本研究提出的思想,生成一个具有流 程数据模式信息的动态存储模型。最后,将模型映射到关系 表中,实现流程数据的动态存储。以此技术路线为准则,制定 了系统流程图,如图3所示。 囤一( 一j [至 ~囤~ 图3实例系统流程图 5结束语 本研究遵循着从概念模型到逻辑模型,再到具体物理存储 的思路,逐步研讨如何实现半结构化数据的存储与查询。首先 借助OEM模型(概念模型),并结合模式的定义,构造出半结构 化数据的动态树存储模型(逻辑模型),然后根据一定的映射规 则,将生成的存储模型映射到关系数据库中,实现了半结构化数 据在计算机内部的物理存储。该存储模型不仅能够体现半结构 化数据的模式信息,方便抽取数据结构,还可针对半结构化数据 类型信息缺乏、描述结构不严格且不断变化等特点,随时灵活地 进行更新,克服了半结构化数据存储的不确定性。另外,将此模 型应用到村镇土地审批处理系统中,有效解决了个性化流程数 据的动态存储问题,实现了审批处理流程的灵活定制,通过实践 证明此模型的可行性和有效性。下一步工作的重点将是半结构 化数据的增量更新。 参考文献 [1]Stefankis E.Modelling semi—structured geographical data[J].Interua- tional Journal ofGeographicalInformation Science,2003,17(6):517— 546. [2]Abiteboul S.Querying Semi—sturctured Data[C]//Proc.of ICDT Del- phi,Greece:[S,n.],1997. [3]吕橙,魏楚元,张瀚韬.基于OEM模型的半结构化数据的模式发现 [J].计算机工程与应用,2006,34:162—165,181. [4]叶飞跃,蒙德龙,员红娟.一种用于存储与查询半结构化数据的新 方法[J].计算机工程,2006,32(19):91—93. [5]冯建华,王钦克,周立柱,等.半结构数据的存储模型和查询执行 [J].计算机科学,2002,29(10):6—10. (上接第74页) 图7联邦门户的协作页面 从以上案例可知,在传统的联邦门户环境中,消费者门户虽 然可以订阅生产者门户的Portlet,但不能针对远程Pordet的协 作特性进行二次开发,因为远程Portlet和本地Portlet不具备协 作能力,这样就为Portlet的再利用增加了额外的迁移和开发负 担。而联邦协作框架增强了异构门户的互操作性,能够支持远 程Portlet和本地Portlet的协作,使得Portlet开发人员能够复用 远程Portlet的协作能力,促进Portlet的再利用,从而达到减少工 作量、充分整合遗留IT资源的目的。 5 结论 随着联邦门户系统的出现,要求门户能提供一个通用的 Portlet协作框架,但JSR286和WSRP2.0的协作都存在对规范 的依赖,使得门户开发人员在门户构建中不能有效使用可协作 的远程Portlet构建业务页面。本文通过引入了协作信息转换机 制和服务注册机制,消除依赖关系。文中给出了协作信息转换 和服务注册的原理,同时对联邦门户系统中的Portlet容器和代 理容器进行扩展以支持远程Portlet和本地Portlet的协作。该方 法已在门户中间件OncePortal中实现,并很好地解决了联邦门 户系统中协作的问题。 参考文献 [1]Wege C.Portal server technology[J].IEEE Internet Computing,2002 (6):73—77. [2]JSRI68 Portlet Specification1.0[S].Java Community Process,2003. [3]WSRP v1.0 Web Services for Remote Portlets Speciifcation v1.o[s].Or- ganization for the Advancement of Structured Information Standards,2OO3. [4]JSR268 Portlet Specification2.0[S].Java Community Process,2008. [5]WSRP v2.0 Web Services for Remote Portlets Speciifcation v2.0[s]. Organization for the Advancement of Sturctured Information Standards, 2o08. [6]Paul C,Felix B,Len B.Documenting Software Architectures:Views and Beyond[M].Boston:Addison Wesley,2002. [7]Radestock M,Eisenbach S.Component Coordination in Middleware systerns [C]//International Conference On Distributed Systems Hafforms nad Open Distirbuted Processing(Middleware'98).Berlin:Springer,1998. [8]Gregor H,Bobby W.Enterprise Integration Patterns:Designing,Build— ing,and Deploying Messaging[M].Boston:Addison Wesley,2003. [9]Mamma E,Helm R,Johnson R,et a1.Design Patterns:Elements of Re— usable Object—Oriented softw&re[M].Boston:Addison Wesley,1994. [10]中科院软件所.网驰平台门户中间件(OncePort1a)[EB/OL]. 2007.http://www.once.org.cn.