对门户中的导航状态进行有效地串行化的方法、系统和计算机程序产品的制作方法

文档序号:6570004阅读:207来源:国知局
专利名称:对门户中的导航状态进行有效地串行化的方法、系统和计算机程序产品的制作方法
对门户中的导航状态进行有效地 串行化的方法、系统和计算机程序产品技术领域方法、系统和计算机程序产品,并且特别涉及减小门户页面的标记大小、减小URL长度、以及减小生成作为门户页面的一部分的URL所 需的处理时间。
背景技术
本发明使用的导航状态描述了 "作为特定客户端的全部导航交互 的结果的门户当前视图"。客户端可以通过与门户页面交互,例如通 过导航到新页面,来请求(查询)不同的视图。这种类型的用户交互 不改变服务器侧的状态,而是仅请求服务器的新视图;因此就HTTP 方面而言这是"安全的"操作。该用户交互的特性在于客户端可以 使用其浏览器的向后和向前按钮对其近期的视图进行向后和向前导 航,以及客户端可以对视图设置书签并在稍后的时间点通过调用浏览 器书签返回该视图。HTTP的主要特征之一在于它是无状态协议,也即,在HTTP中 不存在跨越多个请求/响应交互的会话概念。但是,由于几乎所有的应 用情境都需要一些机制在请求中保存其状态,因此出现了 一些允许创 建(逻辑的)有状态会话的机制,可以将其确定地视为目前现有技术 的状态。两个最为流行的状态保存机制是Cookies (RFC 2109)和隐 藏输入字段。然而,这两种方法在可设置书签性、高速缓存、向后/向前按钮以 及由搜索引擎索引(可爬性)方面都具有一些主要的不足。因此,出 现了新的导航状态保存方法,其将导航状态编码到URL中。不同的导航状态导致不同的URL。 Web应用在以前仅仅是基于表单的应用, 但目前却变得越来越复杂,特别是在这样的门户环境中,其中多个组 件(门户组件(portlet))组合到较大门户应用中。这导致了这样的问题"描述"门户的某个视图的导航状态变得 十分庞大,因为门户必须聚合用户所交互的所有门户组件的导航状 态。因此,必须将把导航状态有效地串行化(以及分别解串行化)到 URL中的能力视为满足当今日益迫切的性能需求("更快"、"更少 的存储")的关键能力。现有技术在门户应用中,导航状态通常表示为层级化树型文档,其包含描 述当前导航状态的全部信息。层级化文档的有效结构在状态模型(通 常是文档类型定义(DTD)或者XML才莫式定义(XSD))中定义。 为了能够将导航状态编码到新门户页面的头部中或者URL中(也即, HTML基础标签中),需要对该层级化状态文档进行串行化。用于对层级化对象结构进行串行化的现有技术通常基于XML串 行化技术或者Java对象串行化。在门户领域中,这些技术是不够的, 因为它们没有考虑门户特定的导航状态的特性。门户将若干应用(所 谓的门户组件)组合到较大的门户应用中。因此,门户还需要管理所 有这些门户组件的导航状态。换言之,描述具体门户视图的导航状态 需要包含所有门户组件的导航状态。通常通过由门户组件编程者定义的所谓的绘制参数来表示门户 组件的导航状态。因此,门户不能控制门户组件的导航状态。门户组 件编程者可以根据其期望随意定义任意多个和任意复杂的绘制参数。 在导航状态串行化期间忽视这一事实将很可能导致过长的URL,其甚 至超过HTTP特定的URL长度限制,即2KB。除了门户组件特定的 状态之外,门户的导航状态还必须包括页面导航控件、管理工具栏以 及门户用户界面的任何其他元素的状态。因此,某个门户视图的导航 状态变得非常复杂。发明目的本发明的目的是提供一种用于对门户的导航状态进行有效地串 行化以避免现有技术中的缺点的方法、系统和计算机程序产品。发明内容本发明使用完全基于流的串行化,其将导航状态的层级化对象表示(输入)转换为最小长度的无层级的(flat )基于字符(character-based ) 的表示(输出)。基本上,本发明将基于流的串行化划分为两个子处 理。第一基于流的串行化子处理是面向层级的,其使用导航状态的层 级化对象表示,并将其转换为一系列事件。该事件用作用于压缩与这 些事件相关联的信息的各种策略的输入。在子处理的末尾,将接收到 的事件所携带的经过压缩的导航状态信息转换为基于字符的表示,并 且根据接收的事件的顺序推导出导航状态的层级化结构并将其转换 为附加的基于字符的表示,将二者直接流传输给第二子处理。第二基于流的串行化子处理是独立于层级的,其使用第一子处理 的结果并应用进一步的压缩和字符编码策略,此后将经过压缩和字符 编码的信息流传输到所述新门户页面的头部或URL。两个子处理无缝 地链接在一起。此创造性的基于流的串行化是高效的,因为其最小化了生成URL 所需的整个处理时间,并且还是有效的,因为其确保串行化结果尽可 能的短,以满足URL长度和标记大小方面的要求。在本发明的优选实施方式中,面向层级的第一子处理是根据基于 事件的过滤器链,该过滤器链负责提到的导航状态信息的压缩。这些 过滤器的每一个对在该子处理开始处生成的接收事件应用特定的策 略。在处理事件之后,过滤器将包括相关联的(现在经过压缩的)状 态信息的事件传递给作为该过滤器链的一部分的下一个过滤器。优选地使用基于字符的记录器链来实现独立于层级的第二子处理。这允许将在第 一 串行化子处理的范围内被压缩的状态信息直接流 传输至该记录器链,以便立即压缩接收的信息。此创造性的串行化方法允许添加任意的策略或者是基于事件的 过滤器链中包括的过滤器,或者是基于字符的记录器链中包括的记录 器。在本发明的优选实施方式中,基于事件的过滤器链包括两个过滤器,其实现以下两个策略所谓的绘制参数映射策略关注门户组件的导航状态,特别是门户 组件的绘制参数。绘制参数映射策略按照参数名称和值的长度来监控 特定门户组件的绘制参数的复杂性。如果参数名称或者值超过了特定 的预定义阈值,该策略将把完整的参数映射到只包含一个字符的短 键。通过过滤表示绘制参数的事件并对其进行相应的处理来实践该策 略。所谓的标志映射策略负责处理可以根据导航状态模型(提至'j的 DTD或者XSD)直接推导出的预定义的门户特定的状态标志(名称、 状态值)。其将所有这些名称和值映射到短的单字符表示。通过过滤 每个事件并随后相应地处理相关联的信息(上面提到的名称和值)来 实践该策略。


通过下面的详细描述,本发明的上述以及其他目的、特征和优点 将变得显而易见。本发明的新颖特征在所附权利要求中阐述。然而,通过参考下面 结合附图对示例性实施方式的详细描述,将最好地理解本发明本身以 及使用的优选模式、其他目的及其优点,其中图1以简化的方式示出了创造性的基于流的串行化方法,并具体 示出了优选的两步方法将层级化导航状态文档转换为无层级的基于 字符的表示,此后进一步压缩该基于字符的表示;图2示出了根据本发明的借助于示例性导航状态文档进行的给定层级化导航状态文档到一系列事件的转换;是基于事件的过滤器链和基于字符的记录器链的具体实施方式
;图4示出了与图l中所示的串行化处理相对应的创造性的解串行 化处理,并且具体示出了优选的两步方法对无层级的基于字符的表 示解压缩,此后将该无层级的表示转换回原始层级化对象表示;图5示出了本发明优选使用的绘制参数过滤器的内部结构,包括 在状态串行化期间执行的内部交互;图6示出了本发明优选使用的绘制参数过滤器的内部结构,包括 在状态解串行化期间执行的内部交互;图7示出了本发明优选使用的使用DTD的示例性状态模型定义 以及可以从其推导出的映射表;有预定义标志映射到短的单字符表示的标志映射过滤器;以及 图9示出了实现本发明的门户结构。
具体实施方式
图1示出了创造性的基于流的串行化方法。串行化方法被划分成各自都基于流的两个子处理。第 一基于流的 串行化子处理是面向层级化的,其使用导航状态的层级化对象表示并 将其转换为一系列事件,其中,事件用作用于压缩与这些事件相关联 的信息的各种策略的输入,其中,在所述子处理的末尾,将所接收的 事件携带的经过压缩的导航状态信息转换为基于字符的表示,并根据 所接收事件的顺序推导出所述导航状态的层级化结构,将该层级化结 构转换为附加的基于字符的表示,二者都被直接流传输至所述第二子 处理。第二基于流的串行化子处理是独立于层级的,其使用所述第一子 处理的结果并应用进一步的压缩和字符编码策略,此后将经过压缩和 字符编码的信息流传输到所述新门户页面的URL或头部中。这两个子处理无缝地链接在一起。在优选实施方式中,使用基于事件的过滤器链来实现第一面向层 级的子处理,所述过滤器链包括过滤器F卜.Fn的集合,该过滤器负责 对将要串行化的层级化对象表示中包含的状态信息进行压缩。每个过滤器Fj实现对实现该目的有所贡献的某个策略。过滤器链获得一 系列事件,这些事件反映输入导航状态的层级化 结构。每个事件携带层级化结构中特定节点的具体状态信息,也即, 节点的名称、值和属性。因此,过滤器能够检查从相应事件处取回的 状态信息并相应地反应。通常,过滤器集中在状态信息的一个特定方 面,例如,门户组件特定的导航状态。换言之,过滤器截获其感兴趣 的事件(例如,借助于该事件的名称)、相应地处理这些事件、并继 而将其传递给链中的下一个过滤器。与所需标准不匹配的所有其他事 件都不变地委托给接下来的过滤器。在执行过滤器链之前,串行化组件必须生成一系列事件,其对应 于将要串行化的给定层级化对象表示。负责该转换步骤的组件是所谓 的串行化中介器(参见图1)。如图2所示,串行化中介器遍历层级化状态文档(使用虚线箭头 所示的广度优先搜索算法),以便初始化事件流。对于每个被访问节 点,串行化中介器创建具有节点名称以及节点属性(如果有)的startNode事件、具有节点值(如果有)的nodeValue事件、以及指示 节点处理完成的endNode事件。注意,所生成事件的顺序,特别是 startNode事件的嵌套,反映了输入文档的层级。在其创建之后,串行化中介器将事件发送给链中的第一事件处理 过滤器F!。图2还示出了对应于所描述的示例性导航状态文档的事件 流。用来表示各个事件的名称追溯到与XML处理技术相关的术语(例 如,JAVA SAX API)。借助于与事件相关联的信息(例如,与startNode事件一起传送 的节点名称),每个过滤器能够截获其感兴趣的事件种类,并在将事 件传递给下一个过滤器之前修改所携带的信息(例如,节点值或者甚至节点名称)。在事件通过所有过滤器之后,其到达所谓的串行化处理机(参见 图2),该处理机负责将携带已压缩的状态信息的所接收事件转换为 无层级的字符表示上。为了对其实现,串行化处理机逐步地将名称、 值和属性附加到基于字符的表示,并继而将得到的字符串传递给第二 串行化子处理以用于进一步的压缩和字符编码。在处理所有事件之 后,串行化处理机移交反映导航状态文档的层级的附加信息片段。需 要该信息片段以用于在稍后的解串行化期间恢复状态文档的层级。为了对层级信息进行编码,串行化处理机对与先前处理的startNode事 件的嵌套相对应的位表示进行编码。第二子处理是完全基于流的,其借助于上面提到的基于字符的记 录器链W卜..Wn (参见图1)来处理接收到的字符串。每个记录器对 接收到的字符串应用特定的压缩或字符编码策略,而后将其传递给链 中的下一个记录器。注意,这些记录器不能对接收到的字符串进行任 何假设,既不能对所包含的信息的语义进行假设,也不能对其内部结 构进行假设。因此,它们只能应用一般的字符压缩和编码技术,例如 现有压缩技术的状态,例如GZIP。在各个记录器已经应用了其压缩 (例如,GZIP)和字符编码(例如,UTF-8)策略之后,将得到的字 符表示写入特定的数据槽。数据槽通常是URL,其继而携带导航状态 的串行化形式。当点击这样的URL时,必须从该URL中取回导航状 态部分以用于状态的解串行化。在解串行化期间,如下文所解释的那 样,必须撤销所有的串行化策略。图2中示出了基于事件的过滤器链和基于字符的记录器链的优选 实施方式。渐变颜色强调从左边基于事件的过滤器链到右边基于字符 的记录器链的无缝过渡。如图所示,基于事件的过滤器链包括在发明内容中已经概括的两 个过滤器(除了系统特定的串行化中介器和串行化处理机之外)。第 一事件处理过滤器实现门户组件绘制参数映射策略,而第二过滤器应 用导航状态文档中包含的所有预定义标志(名称和值)的一般映射。对于这些具体过滤器的细节,参考解串行化部分之后的部分。基于字 符的记录器链包括(除了仅将结果流传输到特定数据槽的槽记录器之外)执行GZIP压缩的记录器和执行Base 64字符编码的另 一记录器。 对应的解串行化处理负责将导航状态的给定无层级的字符表示 转换回导航状态的原始层级化的树型对象表示。图4示出了解串行化 处理。如所示的那样,由本创造性的解串行化方法处理的输入数据是最 小长度无层级的字符表示。解串行化结果是导航状态的层级对象表 示,该导航状态等同于在对其串行化之前的导航状态。作为串行化的 对应者,解串行化处理也被划分为两个子处理。第一,基于字符的读 取器链通过应用对应的解压缩和字符解码技术RV..R,p撤销在串行 化期间应用的压缩和字符编码策略。在该子处理之后,在再次应用基 于事件的过滤器链FV..F,,之前,恢复导航状态文档的层级,以便撤 销在串行化期间进行的信息压缩策略。注意,F、表示应用与过滤器 Fi相对应的策略相反的策略的过滤器。以下的段落详细描述如图4所 示的解串行化。解串行化中涉及的第 一组件是所谓的源读取器。源读取器是对给 定的数据源进行操作的字符读取器。在本发明的情况中,其从URL 中读取经过串行化的导航状态,并将读取的字符串提交给读取器链 RV..RV读取器链通过应用相应的字符解码和解压缩技术来撤销串 行化期间执行的字符编码和压缩。串行化解析器用作基于字符的读取 器链和基于事件的过滤器链之间的适配器,串行化解析器緩沖接收到 的字符串,以便最终将其转换回与串行化期间的事件流等同的一 系列 事件。为了对其实现,串行化解析器必须考虑经过编码的层级信息, 以生成按照具有正确嵌套的正确顺序的事件。注意,串行化解析器可 以容易地执行该任务,因为它是所述串行化处理机的对应组件,因此 具有关于如何解释串行化层级信息所需的知识。此后,事件流通过基于事件的过滤器链FV..F,"将串行化期间 执行的信息压缩进行反向。在基于事件的过滤器链的末尾,所谓的解串行化中介器(串行化中介器的对应组件)直接将接收到的事件映射到控制器操作,以通过创建节点并将其彼此连接来恢复层级化对象表示。在所有这些之后,已经恢复了整个原始的导航状态文档。该步骤 结束解串行化处理。绘制参数映射过滤器绘制参数映射过滤器关注门户组件的导航状态,特别是门户组件的绘制参数。该过滤器实现的策略按照参数名称和值的长度监控具体 门户组件的绘制参数的复杂性。如果参数名称或值超过了某个预定义 阈值,该策略将把表示完整参数的事件映射到携带仅包含一个字符的短键(key)的事件,而将具体的参数名称和值串行化到用户的HTTP 会话中。图5示出了在状态串行化期间使用的绘制参数过滤器的内部结构 (在稍后讨论的解串行化期间需要逆向过滤器)。首先,过滤器检查接收到的startNode事件是否指示门户组件绘 制参数(借助于节点名称"参数")。如果过滤器检测到这样的事件 ("是"分支),其将该事件传递给执行复杂性检查的内部参数映射 器组件。否则("否,,分支),其只是将事件委派给过滤器链中的下 一个过滤器。参数映射器按照绘制参数的名称和值的长度来对其进行评估,从 而执行复杂性检查。如果超过了配置的长度阈值,其将参数映射到短 键(字符)上并仅将携带该键的事件发送给下一个过滤器。将实际的 绘制参数以及生成的键串行化到HTTP会话中。注意,该过程具有 HTTP会话过大的风险。因此,必须使用过期策略来管理键-参数映射, 该过期策略根据近期最少使用(LRU)的策略去除所存储的映射。图6示出了在解串行化期间撤销该映射的对应过滤器的内部结 构。在这种情况下,过滤器仅截获代表这种键的事件。如果检测到这 种事件,过滤器将该键事件重新路由到内部参数映射器组件,该组件 使用接收到的键来查找HTTP会话中的具体参数名称和值。只要恢复了携带实际绘制参数的事件,就将其传递至链中的下一个过滤器。 标志映射过滤器标志映射过滤器实现旨在压缩尽可能多的标志的一般策略。因 此,其不截获匹配特定标准(例如,特定的节点名称)的事件,而是 试图映射每个所接收事件的所有标志,也即名称、值和属性。为了执 行该映射,其重复使用从状态模型定义中取回的信息。如先前已经提 到的,状态模型定义指定导航状态文档的有效结构(也即,节点名称以及节点值和属性值的数据类型之间的关系),并且通常在DTD或 者XSD文件中描述状态模型定义。基于该定义,标志映射过滤器推 导出映射表,其为所包含的每个预定义标志指派单字符替代。预定义 标志包括节点和属性的名称(其在状态模型定义中完全指定)以及在 状态模型定义中显式指定的所有节点和属性的值。图7示出了使用类似DTD语法的示例状态模型定义,包括根据 该定义推导出的标志映射表。所描述的映射表是无层级的,也即,不 反映状态模型的层级。在状态模型更为复杂的典型情境中,也推荐利 用状态模型的层级。在这种情况下,根据DTD而不是无层级的映射 表推导出所谓的映射树。在映射树中,映射仅在特定树级别的范围内 必须是唯一的。图8示出了如何在示例事件流上应用无层级的映射表。注意,标 志映射过滤器必须是基于事件的过滤器链中最后的过滤器,因为其修 改文档节点的名称,该文档节点的名称通常用作其他过滤器的过滤器 标准(否则,在标志映射过滤器之后执行的所有其他过滤器将需要了 解映射表)。没有在状态模型定义中指定的所有节点和属性值不能映射到短 单字符表示。这特别应用于门户组件绘制参数的名称和值。 图9示出了实现本发明的门户结构。组件以及为了提供创造性的功能性而新添加的组件。作为每个门户的 一 部分的现有技术功能组件如下 Servlet 10Servlet 10是接收传入的HTTP请求的前端控制器。其通常准备 请求处理引擎20,以用于通过初始化涉及的组件来处理接收到的 HTTP请求。在此之后,servlet 10将对请求的处理委派给请求处理引 擎20。请求处理引擎20请求处理引擎20也是负责控制对传入请求的处理的前端控制器 的一部分。通常其定义包括若干请求处理阶段的请求处理生命周期。 在门户中,请求必须经历4个阶段。首先,在初始阶段,执行请求特 定的初始化任务,随后是负责认证和动作执行的动作阶段(门户组件 动作以及命令)。在动作阶段之后,通过调用聚合处理来执行绘制阶 段。最终阶段通过执行请求特定的清除任务来结束请求处理。聚合组件60在请求处理生命周期的绘制阶段期间调用聚合组件60。其负责将 请求页面的布局模型(描述门户组件在页面上如何布置)转换为呈送 树以及将对应于该呈送树的标记写到响应中。认证组件50认证组件50负责-验证用户身份。每个传入请求必须通过认证。 门户2使用用户身份来确定该用户授权访问的内容以及要执行的命 令。门户组件容器30门户组件容器30提供对门户组件的统一访问。特別地,其允许 收集特定门户组件的标记或者执行门户组件动作。门户组件容器借助 于门户组件API来调用门户组件。命令API 40命令API40 (应用编程接口 )提供门户特定的命令的抽象层。特 別地,其允许经由统一的接口执行命令。命令可以用来执行管理任务, 例如创建和/或删除门户页面、向门户页面添加门户组件和/或从门户页面移除门户组件、将门户组件布置到已有页面上等等。 导航状态管理组件70导航状态管理组件70具有以下责任定义导航状态的生命周期,以及提供允许请求处理引擎20将已 定义的状态处理任务包含到整个请求处理生命周期中的接口 ;定义对象模型来表示导航状态,以及提供允许读和写/修改导航状 态的应用编程接口 (API);提供这样的框架,其允许将导航状态的对象表示有效地串行化到 URL中以及从(传入的)URL中解串行化导航状态以便恢复内部对 象表示。该框架需要包括可以被URL生成组件调用的接口 ,以创建 携带导航状态的URL。URL生成API 80如名称所隐含的,URL生成API 80提供允许针对多种使用情况 来创建URL的API。其支持编程者将导航状态与所创建的URL相关 联,以及将URL写入给定的目的地流。该写操作涉及对与所创建URL 相关联的状态信息进行串行化。除了可编程地创建URL之外,URL 生成API通常提供一些URL标签从而在JSP内创建URL。默认地,通过请求特定的导航状态对所创建的URL进行初始化, 以确认没有丟失先前交互的导航状态。为了确定URL的特定语义, 可以仅针对该具体URL改变该导4元状态。新添加的提供创造性功能性的功能组件细化了导航状态管理组 件70:状态串行化框架70A状态串行化框架70A是导航状态管理组件70的子组件,其实现 发明的基于流的串行化方法。其特别负责提供面向层级的第 一基于流的串行化子处理,使用所述导航状态的层 级化对象表示,并将其转换为一系列事件,其中所述事件用作用于压 缩与这些事件相关联的信息的各种策略的输入,其中在所述子处理的 末尾,将所接收事件携带的经过压缩的导航状态信息转换为基于字符的表示,并根据所接收的事件的顺序推导出所述导航状态的层级化结 构,并将该层级化结构转换为附加的基于字符的表示,二者都被直接 流传输至所述第二子处理;第二基于流的串行化子处理是独立于层级的,其使用所述第一子 处理的结果并应用进一步的压縮和字符编码策略,并最终将经过压缩和字符编码的信息流传输至所述新门户页面的URL或头部,其中,两个子处理无缝地链接在一起,将多个串行化策略(以及对应的解串行化策略)组装为(解)串行化链;提供插入点,以便在将来插入进一步的策略;提供应用编程接口 (API),该应用编程接口允许在URL生成期 间执行组装的串行化链、以及在URL解码期间执行解串行化链。组件的输入数据是用于串行化的层劲 解串行化的导航状态的串行化字符表示
权利要求
1.一种用于对门户中的导航状态进行有效地串行化的方法,其中,所述门户在服务器系统中运行,其中,所述服务器系统包括通信组件,其允许在所述门户和客户端浏览器之间经由通信通道的通信,其中,所述门户确定请求的门户页面的布局,调用属于所述门户页面的各种页面元素的绘制,并且将所述门户页面传送给客户端的浏览器以用于显示,其中,所述门户页面的至少一个页面元素提供链接功能,用于发起由所述门户进行的绘制新页面或新页面元素,其中,通过点击所述页面元素处的所述链接,每个用户交互在所述门户侧生成新的导航状态,其中,所述导航状态将所述门户的当前视图作为特定客户端的所有先前导航交互的结果进行描述,其中,响应于对新门户页面的客户端请求,将所述导航状态以串行化形式编码到新门户页面的头部中和/或每个URL中,其中,所述方法包括以下两个子处理面向层级的第一基于流的串行化子处理,其使用所述导航状态的层级化对象表示并将其转换为一系列事件,其中,所述事件用作用于压缩与这些事件相关联的信息的各种策略的输入,其中,在所述子处理的末尾,将由所接收的事件携带的经过压缩的导航状态信息转换为基于字符的表示,并且根据所接收的事件的顺序推导出所述导航状态的层级化结构并将所述导航状态的层级化结构转换为附加的基于字符的表示,将两者直接流传输至所述第二子处理,独立于层级的第二基于流的串行化子处理,其使用所述第一子处理的结果并应用进一步的压缩和字符编码策略,并最终将经过压缩和字符编码的信息流传输至所述新门户页面的头部或URL,其中,这两个子处理无缝地链接在一起。
2. 根据权利要求1所述的方法,其中,所述第一子处理是根据基 于事件的过滤器链,其中,每个过滤器对特别指派的事件子集进行操 作,并应用用于压缩与所述事件相关联的导航状态信息的特定策略。
3. 根据权利要求2所述的方法,其中,所述第一子处理通过遍历 导航状态的层级化对象表示来生成针对基于事件的过滤器链的事件流,并针对所述对象表示的每个被访问的节点生成具有节点名称以及节点属性的startNode事件、具有节点值的nodeValue事件、以及指示 节点结束的endNode事件。
4. 根据权利要求3所述的方法,其中,按照反映导航状态对象表 示的层级化冲对型结构的顺序来生成所述生成的startNode、 nodeValue 和endNode事件,其中,直到处理了相应节点的完整子树,才生成所 述endNode事件。
5. 根据权利要求4所述的方法,其中,在所述基于事件的过滤器 链的末尾,使用特殊的过滤器来编码层级化结构,所述层级化结构按 照接收的事件的顺序并在接收的startNode事件的嵌套中建立。
6. 根据权利要求2所述的方法,其中,所述第二子处理使用基于 字符的记录器链,其中,每个记录器对接收到的、在所述第一子处理 末尾处生成的字符信息执行特定压缩或字符编码策略。
7. 根据权利要求6所述的方法,其中,在所述基于字符的记录器 链的末尾,使用特殊的记录器,其将经过压缩的字符信息直接流传输 至门户页面的头部或指派的URL。
8. —种用于对门户中的导航状态进行有效地串行化的系统,其中, 所述门户在所述系统中运行,其中,所述系统包括通信组件,其允许 在所述门户和客户端浏览器之间经由通信通道的通信,其中,所述门 户确定请求的门户页面的布局,调用属于所述门户页面的各种页面元其中,所述;户页面的至少二个页面元;提供链接功:用于发起由所述门户进行的绘制新页面和新页面元素,其中,所述门户包括导航 状态管理组件,如果在所述页面元素处点击所述链接,所述导航状态 管理组件针对每个用户交互生成新的导航状态,其中,所述导航状态 将所述门户的当前视图作为特定客户端的所有先前导航交互的结果 进行描述,其中,响应于对新门户页面的客户端请求,所述导航状态 管理组件将所述导航状态以串行化形式编码到新门户页面的头部中 和/或每个URL中,所述系统包括进一步的功能组件提供面向层级的第一基于流的串行化子处理的功能组件,所述第使用所述导航状态的层级化对象表示并将 其转换为一系列事件,其中,所述事件用作用于压缩与这些事件相关 联的信息的各种策略的输入,其中,在所述子处理的末尾,将由所接 收的事件携带的经过压缩的导航状态信息转换为基于字符的表示,并 且根据所接收的事件的顺序推导出所述导航状态的层级化结构并将 所述导航状态的层级化结构转换为附加的基于字符的表示,将两者直 接流传输至所述第二子处理,以及提供独立于层级的第二基于流的串行化子处理的功能组件,所述 第二子处理使用所述第一子处理的结果并应用进一步的压缩和字符 编码策略,并最终将经过压缩和字符编码的信息流传输至所述新门户 页面的头部或URL,其中,所述功能组件提供的两个子处理无缝地链接在 一起。
9. 根据权利要求8所述的系统,其中,所述功能模块是所述导航 状态管理组件的集成部分。
10. 根据权利要求9所述的系统,其中,所述导航状态管理组件 是所述门户的一部分。
11. 根据权利要求8所述的系统,其中,提供所述第一子处理的 所述功能组件通过遍历导航状态的层级化对象表示来生成针对基于 事件的过滤器链的事件流,并针对所述对象表示的每个被访问的节点 生成具有节点名称以及节点属性的startNode事件、具有节点值的 node Value事件、以及指示节点结束的endNode事件,其中,按照反 映导航状态对象表示的层级化树型结构的顺序来生成所述生成的 startNode 、 node Value和endNode事件,其中,直到处理了相应节点 的完整子树,才生成所述endNode事件,其中,在所述基于事件的过 滤器链的末尾,使用特殊的过滤器来编码层级化结构,所述层级化结 构按照接收的事件的顺序并在接收的startNode事件的嵌套中建立。
12. —种计算机程序产品,包含用于执行权利要求1到7所述方 法的计算机可执行指令。
全文摘要
本发明提供用于通过使用被划分为两个基于流的子处理的完全基于流的串行化来将导航状态有效地串行化到新门户页面的头部或URL中的方法、系统和计算机程序产品。面向层级的第一基于流的串行化子处理使用导航状态的层级化对象表示并将其转换为一系列事件。在该子处理的末尾,将接收事件携带的经过压缩的导航状态信息转换为基于字符的表示,并根据接收事件的顺序推导出导航状态的层级化结构并将其转换为附加的基于字符的表示,将二者直接流传输至第二子处理。独立于层级的第二基于流的串行化子处理使用第一子处理的结果并应用进一步的压缩和字符编码策略,并最终将经过压缩和字符编码的信息流传输到所述新门户页面的头部或URL中。两个子处理无缝地链接在一起。
文档编号G06F17/30GK101331486SQ200680047153
公开日2008年12月24日 申请日期2006年10月18日 优先权日2005年12月14日
发明者C·洛伊厄, F·波施, S·贝尔 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1