继承维基页面的维基页面布局的方法

文档序号:6455401阅读:385来源:国知局
专利名称:继承维基页面的维基页面布局的方法
技术领域
本发明一般地涉及改进的数据处理系统,具体地说,涉及用于编程模型的方法和装置。更具体地说,本发明涉及用于使用浏览器操纵内容的计算机实现的方法、装置和计算机可用程序代码。

背景技术
因特网是通过将消息从发送网络协议转换为接收网络协议的过程中处理数据传输的网关联接在一起的计算机和网络所构成的全球网络。在因特网上,任何计算机都能与任何其他计算机进行通信,其中信息通过各种称为协议的语言在因特网上传送。因特网上最常用的协议集称为传输控制协议/网际协议(TCP/IP)。
因特网给通信和商业带来了革命性的变化,同时也成为信息和娱乐的来源。其中一种常用的软件类型称为维基(Wiki)软件。维基软件是一款运行维基环境的协作软件。在可由一组用户通过界面访问的共享环境中提供该软件。维基应用是一种允许用户操纵内容的网站。用户可以快速而轻松地添加、删除或以其他方式编辑和更改内容。维基应用通常用作有效的协作编写工具。维基应用的当前使用关注于协作内容创建,例如联机百科全书或其他知识库。用户通常可以在共享环境中创建内容。在这种环境下,将保存对页面的修订以便允许恢复先前的版本。进一步地,提供标记快捷方式来创建页间链接。进一步地,通常使用“所见即所得”(WYSIWYG)编辑模式/编辑器。


发明内容
示例性实施例描述了一种用于继承页面的页面布局的计算机实现的方法、计算机程序产品和数据处理系统。响应于接收到从客户端浏览器显示当前页面的请求,判定所述当前页面是否具有一组父辈页面。布置所述一组父辈页面,以使所述一组父辈页面中的最近父辈页面首先出现在父辈页面列表中。标识与所述一组父辈页面中的一个父辈页面关联的布局页面。将所标识的布局页面与所述当前页面进行组合以形成组合页面。将所述组合页面发送到所述客户端浏览器。



下面将仅通过实例的方式参考附图描述本发明的优选实施例,这些附图是 图1是其中可实现本发明的示例性实施例的数据处理系统网络的图形表示; 图2是其中可实现本发明的示例性实施例的数据处理系统的方块图; 图3是示出根据本发明的示例性实施例的在生成和使用维基应用中使用的组件的图; 图4是示出根据本发明的示例性实施例的维基体系结构的图; 图5是示出根据本发明的示例性实施例的呈现页面的数据流的图; 图6是示出根据本发明的示例性实施例的维基应用的客户端和服务器上的组件的图; 图7是根据本发明的示例性实施例的拖动活动内容的示例性显示屏幕; 图8是根据本发明的示例性实施例的编辑命令属性的显示屏幕; 图9是根据本发明的示例性实施例的页面树视图; 图10是根据本发明的示例性实施例的维基页面的显示屏幕; 图11是根据本发明的示例性实施例的抽象语法树的方块图; 图12是根据本发明的示例性实施例的命令的方块图; 图13是示出根据本发明的示例性实施例的编辑组件的属性的图; 图14是示出根据本发明的示例性实施例的维基应用的客户端和服务器上的命令之间的数据流的图; 图15是示出根据本发明的示例性实施例的初始页面呈现过程期间服务器上的命令之间的数据流的图; 图16是示出根据本发明的示例性实施例的响应于用户的页面请求而生成的维基页面的图; 图17是示出根据本发明的示例性实施例的在客户端浏览器处显示的所呈现页面的图; 图18是示出根据本发明的示例性实施例的在客户端浏览器处加载并显示新的页面之后在客户端侧数据中心上的组件间的数据流的图; 图19A和19B是示出根据本发明的示例性实施例的在页面更新期间在客户端侧数据中心和服务器侧数据中心之间的数据流的图; 图20是示出根据本发明的示例性实施例的在页面更新期间在服务器侧数据中心和客户端侧数据中心之间的消息流的图; 图21是示出根据本发明的示例性实施例的服务器侧数据中心对象的图; 图22是示出根据本发明的示例性实施例的客户端侧数据中心对象的图; 图23是示出根据本发明的示例性实施例的将维基页面内容嵌入维基布局页面正文的过程的方块图; 图24是示出根据本发明的示例性实施例的用于确定页面组件内容的可视性的复选框的方块图; 图25是根据本发明的示例性实施例的创建维基页面的过程的流程图; 图26是根据本发明的示例性实施例的显示页面的过程的流程图; 图27是根据本发明的示例性实施例的生成页面树视图的过程的流程图; 图28是根据本发明的示例性实施例的拖动活动内容的过程的流程图; 图29是根据本发明的示例性实施例的组合维基页面内容的过程的流程图; 图30是根据本发明的示例性实施例的编辑命令的过程的流程图; 图31是根据本发明的示例性实施例的呈现维基命令的过程的流程图; 图32是根据本发明的示例性实施例的属性编辑预备过程的流程图; 图33是根据本发明的示例性实施例的属性编辑过程的流程图; 图34是根据本发明的示例性实施例的选择属性编辑器的过程的流程图; 图35是根据本发明的示例性实施例的删除页面的过程的流程图; 图36是根据本发明的示例性实施例的修订页面的过程的流程图; 图37是根据本发明的示例性实施例的复制页面的过程的流程图; 图38是根据本发明的示例性实施例的重命名页面的过程的流程图; 图39是根据本发明的示例性实施例的取消删除页面的过程的流程图; 图40是根据本发明的示例性实施例的选项板构建的过程的流程图; 图41是根据本发明的示例性实施例的配置过程的流程图; 图42是根据本发明的示例性实施例的导出过程的流程图; 图43是根据本发明的示例性实施例的导入过程的流程图; 图44是根据本发明的示例性实施例的检索和分析树的过程的流程图; 图45是根据本发明的示例性实施例的处理网页以便在维基中显示的过程; 图46是根据本发明的示例性实施例的处理事件的流程图; 图47是根据本发明的示例性实施例的实例化服务器侧数据中心对象时发生的操作的流程图; 图48是根据本发明的示例性实施例的实例化客户端侧数据中心对象时发生的操作的流程图; 图49是根据本发明的示例性实施例的服务器侧数据中心接收到来自客户端侧数据中心的处理事件的请求时发生的操作的流程图; 图50是根据本发明的示例性实施例的当生成者命令处理事件时发生的操作的流程图; 图51是示出根据本发明的示例性实施例的当使用者命令处理事件时发生的操作的流程图; 图52是根据本发明的示例性实施例的当客户端侧数据中心接收事件时发生的操作的流程图; 图53是根据本发明的示例性实施例的当服务器侧数据中心处理事件时发生的操作的流程图; 图54是根据本发明的示例性实施例的当客户端侧数据中心判定是否将事件发送到服务器进行处理时发生的操作的流程图; 图55是根据本发明的示例性实施例的当作为processClientEvent方法调用的结果,服务器侧数据中心从客户端侧数据中心接收到事件时发生的操作的流程图; 图56是根据本发明的示例性实施例的当维基变元对象执行最小充分变元处理时发生的操作的流程图; 图57是根据本发明的示例性实施例的当维基变元对象判定是否设置了命令的最小必要变元时发生的操作的流程图; 图58是示出根据本发明的示例性实施例的用于检测是否应触发argument/available事件的setClientArguments方法的流程图; 图59是示出根据本发明的示例性实施例的使用维基页面定义维基页面布局的操作的流程图; 图60是根据本发明的示例性实施例的呈现维基页面的操作的流程图; 图61是根据本发明的示例性实施例的服务器侧数据中心对象类的类定义的图示; 图62是根据本发明的示例性实施例的数据中心管理方法类的一组方法接口的图示; 图63A是根据本发明的示例性实施例的生成者和使用者方法类的一组方法接口的图示; 图63B是根据本发明的示例性实施例的主题方法类的一组方法接口的图示; 图64是根据本发明的示例性实施例的事件处理方法类的一组方法接口的图示; 图65是根据本发明的示例性实施例的命令管理方法类的一组方法接口的图示; 图66是根据本发明的示例性实施例的客户端侧数据中心对象类的类定义的图示; 图67是根据本发明的示例性实施例的生成者和使用者方法类的一组方法接口的图示; 图68是根据本发明的示例性实施例的主题方法的一组方法接口的图示; 图69是根据本发明的示例性实施例的事件处理方法的一组方法接口的图示; 图70是根据本发明的示例性实施例的命令管理方法的一组方法接口的图示; 图71是根据本发明的示例性实施例的数据中心主题对象类的类定义和方法接口的图示; 图72是根据本发明的示例性实施例的数据中心事件对象类的类定义和方法接口的图示; 图73是根据本发明的示例性实施例的维基变元对象类的类定义的图示;以及 图74是根据本发明的示例性实施例的检测是否触发argument/available事件的算法的伪代码的图示。

具体实施例方式 现在参考附图,具体地说,参考图1-2,提供了其中可实现本发明的示例性实施例的数据处理环境的相应示意图的描述。应该理解图1-2仅是示例,并非旨在断言或暗示对其中可实现不同实施例的环境的任何限制。可以对所示环境做出许多修改。
现在参考附图,图1示出了可以在其中实现本发明的示例性实施例的数据处理系统网络的图形表示。网络数据处理系统100是可以在其中实现各实施例的计算机网络。网络数据处理系统100包含网络102,网络102是用于提供在网络数据处理系统100内连接在一起的各种设备和计算机之间的通信链路的介质。网络102可以包括连接,例如有线、无线通信链路、或光缆。
在所示实例中,服务器104和106连同存储单元108一起与网络102相连。此外,客户端110、112和114与网络102相连。这些客户端110、112和114可以例如是个人计算机或网络计算机。在所示实例中,服务器104将诸如引导文件、操作系统映像和应用之类的数据提供给客户端110、112和114。在此实例中,客户端110、112和114是服务器104的客户端。网络数据处理系统100可以包括其他服务器、客户端以及其他未示出的设备。
在所示实例中,网络数据处理系统100是因特网,同时网络102代表全球范围内使用传输控制协议/网际协议(TCP/IP)协议集来相互通信的网络和网关的集合。在因特网的核心是主节点或主机之间的高速数据通信线路的主干,它包括数以千计的商业、政府、教育以及其他路由数据和消息的计算机系统。当然,网络数据处理系统100也可以被实现为许多不同类型的网络,例如企业内部互联网、局域网(LAN)或广域网(WAN)。图1旨在作为一个实例,并非旨在作为对不同实施例的体系结构限制。
现在参考图2,图2示出了其中可实现本发明的示例性实施例的数据处理系统的方块图。数据处理系统200是计算机(如图1中的服务器104或客户端110)的实例,实现本发明的各种示例性实施例的过程的计算机可用代码或指令可以位于其中。
在所示实例中,数据处理系统200采用包括北桥及存储控制器集线器(MCH)202和南桥及输入/输出(I/O)控制器集线器(ICH)204的集线器体系结构。处理单元206、主存储器208以及图形处理器210与北桥及存储控制器集线器202相连。图形处理器210可以例如通过加速图形端口(AGP)与MCH相连。
在所示实例中,局域网(LAN)适配器212与南桥及I/O控制器集线器204相连,音频适配器216、键盘和鼠标适配器220、调制解调器222、只读存储器(ROM)224、通用串行总线(USB)端口及其他通信端口232,以及PCI/PCIe设备234通过总线238与南桥及I/O控制器集线器204相连,并且硬盘驱动器(HDD)226和CD-ROM驱动器230通过总线240与南桥及I/O控制器集线器204相连。PCI/PCIe设备可以例如包括以太网适配器、附加卡以及笔记本计算机的PC卡。ROM 224可以例如是闪速二进制输入/输出系统(BIOS)。硬盘驱动器226和CD-ROM驱动器230可以例如使用集成驱动电子设备(IDE)或串行高级技术附件(SATA)接口。超级I/O(SIO)设备236还可以通过总线238与南桥及I/O控制器集线器204相连,如图所示。
在图2的示例性实施例中,操作系统在处理器206上运行,并协调和提供对数据处理系统200内的各种组件的控制。所述操作系统可以是诸如Microsoft

Windows

XP之类的商业操作系统(Microsoft和Windows是Microsoft Corporation在美国和/或其他国家/地区的商标)。诸如JavaTM编程系统之类的面向对象的编程系统可以与操作系统一起运行并从在数据处理系统200上执行的JavaTM程序或应用来提供对操作系统的调用(Java和所有基于Java的商标是Sun Microsystems,Inc.在美国和/或其他国家/地区的商标)。
所述操作系统、面向对象的编程系统以及应用或程序的指令位于诸如硬盘驱动器226之类的存储设备上,并可以加载到主存储器208内以便由处理器206执行。所述示例性实施例的过程可以由处理器206使用计算机可执行指令来执行,所述可执行指令可以位于诸如主存储器208、只读存储器204之类的存储器之中,也可以位于一个或多个外围设备中。
图1-2中的硬件可以根据实施方式而不同。除了图1-2中所示的硬件以外,或替代图1-2中所示的硬件,还可以使用诸如闪存、等效的非易失性存储器或光盘驱动器之类的其他内部硬件或外围设备。同样,所述示例性实施例的各过程还可以应用于多处理器数据处理系统。
在某些示例性实例中,数据处理系统200可以是个人数字助理(PDA),其通常具备闪存来提供用于存储操作系统文件和/或用户生成的数据的非易失性存储器。诸如总线238和240之类的总线系统可以包含一条或多条总线,例如系统总线、I/O总线以及PCI总线。当然,可以使用在与结构或体系结构连接的不同的组件或设备之间提供数据传输的任意类型的通信结构或体系结构来实现所述总线系统。通信单元包括可以包括一个或多个用于传输和接收数据的设备,例如调制解调器或网络适配器。存储器可以例如是主存储器208或诸如在北桥及存储控制器集线器202中找到的高速缓存。处理单元可以包括一个或多个处理器或CPU。图1-2中所示的实例以及上述实例并非旨在暗示体系结构限制。例如,除了采取PDA的形式以外,数据处理系统200还可以是平板电脑、膝上型计算机或电话设备。
在示例性实例中,服务器104托管维基应用。服务器104处的环境允许诸如客户端110、112和114之类的客户端根据示例性实施例协作并开发应用。这些应用可以例如包括与天气相关的应用、学校的注册和登记簿、电子邮件应用以及其他类型的面向商业的应用。不同的实施例可以包括在服务器侧、客户端侧或两者处提供协作环境以根据示例性实施例开发维基应用的过程。
所述示例性实施例认识到,当前维基应用并不适合于作为知识库或文档的文本和文件的协作以外的应用协作开发。
现在参考图3,其是示出了根据本发明的示例性实施例的在生成和使用维基应用中所用的组件的图。在该实例中,用户可以与客户端环境300交互以生成和使用维基环境302所支持的应用。客户端环境300是在诸如图1中的客户端110之类的客户端上执行的软件应用或环境。维基环境302在诸如图1中的服务器104之类的数据处理系统上执行。
在这些实例中,客户端环境300处的用户可以向维基环境302发送对页面的请求。在这些实例中,用户在客户端环境300中通过浏览器做出所述请求。维基环境302将页面返回给用户。在这些示例性实例中,所述页面包括允许用户操纵和选择要生成的页面的内容的JavaScrip。在所述示例性实施例中,这些页面是为用户提供对应用的访问的协作网页。这些应用是可由客户端计算机处的用户使用和修改的协作应用。
具体地说,不同的示例性实施例提供了一种使用户使用协作编写工具的功能以外的功能生成应用的方法和装置。
这些实例中的许多功能是通过PHP超文本预处理器(PHP)提供的。PHP是一种用于创建在维基环境302中执行的Web应用的编程语言。PHP是一种内嵌超文本标记语言的开源脚本编写语言,旨在作为用于生成动态Web内容的高级工具。
根据具体实施方式
的不同,可以使用诸如Java虚拟机(JVM)之类的虚拟机来促进所述示例性实施例中提供的不同功能。同样,还可以使用JavaScript以外的其他脚本编写语言来实现这些过程,具体取决于特定的实施例。
现在参考图4,其是示出了根据本发明的示例性实施例的维基体系结构的图。在这些特定的实例中,此体系结构是一种非常易于完成(QED)的维基体系结构。如图所示,维基环境400包含维基引擎402。该引擎包括请求处理机404、命令处理器406以及页面编写器408。请求处理机404从客户端接收请求。
例如,用户可以将统一资源定位器(URL)形式的统一资源标识符(URI)发送到维基环境200。由请求处理机404接收该请求以便处理。在这些实例中,将针对请求处理机404处理的每个请求生成一个页面。请求处理机404还生成“页面片段(page fragment)”以便处理基于AJAX的交互,所述页面片段是超文本标记语言源片段,而非完整的超文本标记页面。
命令处理器406处理不同的命令来构建页面或页面片段,以响应请求处理机404接收到的请求。此外,命令处理器406在命令以及文本片段的处理完成之后呈现页面。页面编写器408也参与生成用户所请求的页面。在这些实例中,页面编写器408用于页面的布局、页面正文内容以及脚本收集。
维基环境400还包括辅助功能410。在此实例中,辅助功能410包括列表412、注释414、电子邮件416以及附件418。使用列表412,用户可以生成供其他用户查看的列表。此外,使用注释414,用户可以向不同的页面添加注释或其他文本。附件418允许用户将文件附加到特定页面。电子邮件416可用于在页面更新或修改之后通知用户,或允许用户将电子邮件作为附件发送到页面。电子邮件416还允许一个或多个用户接收有关对指定页面的更改的消息。用户可以订阅维基的富集站点概要(RSS)种子(feed)来确定维基页面何时更改。
此外,维基环境400包含维基命令420。示例性实施例中的维基命令420包含两类命令内置命令422和定制命令424。内置命令422是维基环境400中存在的命令或服务。定制命令424引用通过外部源提供的命令。基本上,这些命令允许用户包括和处理页面数据。
在一个或多个实施例中,维基命令420包括使用面向服务的体系结构(SOA)。此类SOA命令允许用户将服务与页面包括在一起。在这些实例中,命令可以使用与其运行所在的应用和计算平台无关的良好定义的接口来引用服务。
在所示实例中,服务是软件模块。这些类型的服务通常基于标准兼容接口,例如Web服务描述语言(WSDL)。当然,维基命令420所引用的服务可以包含任何类型的接口。这些命令可以采取各种形式。例如,所述命令可以是金融、天气、测绘、新闻和事件、搜索、政府或国际信息。
数据库426包含诸如用户所请求和创建的页面之类的信息。进一步地,页面的修订、附件、注释以及其他信息存储在数据库426中。在示例性实施例中,信息通常以表428的形式存储在数据库426中。
现在参考图5,其是示出了根据本发明的示例性实施例的呈现页面的数据流的图。在这些实例中,当页面的处理完成并准备传输到客户端时,将在服务器上呈现该页面。通过诸如图4中的维基引擎402之类的维基引擎来操纵图5中示出的不同组件。
在这些示例性实施例中示出的编程体系结构和模型允许使用客户端上的浏览器对维基内容进行可视汇编。客户端所请求的任何内容在概念上都是页面。例如,使用诸如页面和变量名称之类的统一资源标识符模型来引用变量。进而,在这些实例中页面被用作数据结构。将存储变量以供以后使用。这些变量包括会话变量、请求变量以及永久性变量。
在所述示例性实例中,用户通过列表创建结构化数据。可以查询、搜索和/或组合这些列表。在操纵列表时,用户采用创建、检索、更新和删除(CRUD)过程。
维基控制器500接收来自用户的统一资源标识符506。维基控制器500包含路由器502和对象变量504。路由器502将请求处理委派给相应的请求处理机。对象变量504提供处理组件之间的互连。例如,维基控制器500具有对象变量504“Wiki”,它是指向维基对象508的指针。图5中的每个对象都具有作为到对象交互所需的其他资源的引用的对象变量。由诸如图4中的请求处理机404之类的请求处理机来处理维基控制器50。
响应于接收到统一资源标识符506,维基控制器500实例化维基对象508的实例。如图所示,维基对象508包含对象变量510、变量512、PHP安全514、电子邮件检查516、用户518以及页面520。维基对象508是每次接收到请求时实例化的实例,它充当生成页面520的内容时使用的所有对象的储存库。
在这些实例中,对象变量510包含处理页面520所需的信息。变量512包含存储在会话522中的会话信息。在这些实例中,该会话信息是用户与页面交互时或生成页面时使用的信息。对象变量510中的更多永久性数据存储在数据库524中。在所示实例中,数据库524存储任何生成页面或存储用户所做的更改时使用的信息。
PHP安全514是用于判定客户端所标识的代码是否可以运行以及用于启动代码执行的功能。PHP是一种主要在服务器侧应用上采用的开源编程语言。在这些示例性实例中,PHP代码可以在维基环境内由不同的对象执行。在这些实例中,用户可以从客户端侧以及服务器侧运行PHP代码。在维基对象508中提供电子邮件检查516来检查当页面520被呈现和发送给用户时可以在页面520上显示的电子邮件消息。用户518包含有关用户的信息,例如用户权限级别、标识符以及会话日志。
页面526是维基对象508中包含的页面520的更具体的实例。在该实例中,页面526包含对象变量528、附件530、过程532、访问534、布局536、脚本538以及内容540。
在这些实例中,对象变量528包含页面数据结构的变量实例。例如,可以存在提供布局信息的分段数组。上下文指针可以引用根维基命令。对象变量528中可以存在实例ID来引用内部页面ID。这些不同的变量包含呈现诸如页面526之类的要发送给用户的页面时所需的信息。
附件530是可在页面上提供的附件的标识。如果用户选择附件,则可以在此时将该附件下载到用户。过程532包含生成要发送给用户的页面时所用的代码。在这些示例性实例中,过程是一种例如标识页面内容、标识所有附件以及标识可以包括在要发送给用户的页面中的任何脚本的方法。
访问534用于确定用户针对将要布置在页面上的内容具有何种访问权限。在一个实施例中,使用访问控制列表(ACL)542确定此类访问权限。根据请求页面的特定用户所拥有的访问的不同,针对页面526要包括的内容也有所不同。该用户是请求页面526的用户。在生成页面526的内容时,对象变量528引用维基命令上下文544。该命令上下文包含对象变量546和内容548。对象变量546表示存储器中的页面内容版本。这些变量包括命令列表和包含当前页面的文本段列表。内容548表示用于操纵页面内容的对象方法。
在页面526中执行过程532时,将通过维基命令上下文544标识来自命令550的一组命令。维基命令上下文544通过命令550生成一组命令实例。维基命令上下文544分析内容540并加载命令以创建诸如片段552之类的片段树结构。片段552还包含对象变量554和内容556。片段522是页面526中的未呈现形式的部分。在该实例中,维基命令上下文544包含表示要包括在页面中的命令的结构的片段。这些命令是可以由用户来操纵的命令。当过程532完成时,将页面526向下发送给发出请求的用户。将保存数据中心558以用于以后的交互。同样,在该实例中,当用户与页面526中的组件交互时,数据中心558将被恢复并包含过程和数据结构。数据中心558内的过程用于标识片段552中的何种页面命令使用数据,或者标识可由数据中心558接收的命令。此外,数据中心558将结果返回给客户端。这些结果被发送到客户端上的数据中心。
现在参考图6,其是示出了根据本发明的示例性实施例的维基应用的客户端和服务器上的组件的图。在该实例中,客户端环境600是图3中的客户端环境300的更详细的图示。在这些示例性实施例中,客户端环境600可以采取客户端Web浏览器或某些其他与网络(如因特网)具有连接性的应用的形式。维基环境601在诸如图1中的服务器104之类的数据处理系统上执行。
在该实例中,客户端环境600接收页面602。页面602包括多个组件,例如页首604、页脚606、左边距608、右边距610、菜单612以及正文614。页首604、页脚606、左边距608、右边距610是用于页面布局的页面组件。这些组件包括各种内容,例如超文本标记语言(HTML)内容。
菜单612提供对用户可以在页面602上执行或者结合页面602执行的操作或功能的访问。例如,菜单612可以包括将请求发送到服务器的菜单项,在请求被许可时,所述服务器允许用户在WYSIWYG编辑器中编辑页面内容。
在该实例中,可以在正文614中找到不同类型的内容。在该实例中,正文614包含HTML内容616、数据信息618以及变量620。正文614还包含命令622、624、626、628、630和632。命令622、624、626、628、630和632是维基命令,例如图4中的维基命令420。这些命令是通过页面602提供的维基应用的命令。命令622、624、626、628、630和632与数据中心634一起提供了页面602内的动态内容。
数据中心634是维基环境中的数据中心对象,与图5中的数据中心558类似。但是,数据中心634是客户端侧数据中心。数据中心634包括用于在页面602中的命令与维基环境601中的命令之间发送和接收事件对象的属性和一组方法。数据中心634包括用于在页面602中的命令与维基环境601中的命令之间发送和接收事件和/或数据的属性和一组方法。
事件对象是定义在与诸如页面602之类的维基页面关联的命令之间传输的事件的数据对象。事件对象可以包括,但并不一定包括事件数据。在这些实例中,事件是指示已发生某些事务的消息,例如出现或发生任务、程序或命令的意义。例如,事件可以包括接收用户输入、收集一组最低程度上需要的变元、完成命令操作、给定时间发生或任何其他活动、接收输入或数据、出现、发生或活动。
示出页面602中的不同类型内容是为了描述向用户呈现维基应用的方式。但是,该图示并非旨在暗示对维基应用中可以使用的内容的类型和范围的限制。例如,在不偏离本发明的示例性实施例的范围的情况下,页面602可以包括图6中未示出的其他附加的内容、命令和/或组件。
用户可以操纵页面602中的内容以使用维基应用和/或更改维基应用执行的方式。换言之,用户可以向页面602添加诸如命令之类的内容或从中删除该内容(通过操纵这些命令的图形表示),以生成或修改页面602的内容和/或功能。
在该实例中,维基环境601为诸如图3中的维基环境302和图4中的维基环境400之类的维基环境。维基环境601包括采取命令树或抽象语法树形式的命令640-650。命令640-650在维基环境中更新。命令640-650和命令624-632在实施方式上有所不同,但是它们指类似的命令。例如,命令632与客户端环境关联并且由用户在客户端环境600中更新。在网络连接上使用AJAX 636并借助异步JavaScript和可扩展标记语言在维基环境601中更新相应的命令650。
AJAX 636是一种Web开发技术,用于创建诸如维基页面之类的交互Web应用。AJAX 636与位于后台的关联主机服务器交换少量的数据,以便不会在用户每次更改所请求的页面时重新加载整个页面。AJAX 636旨在提高诸如页面602之类的页面的交互性、速度、响应性及可用性。尽管示例性实施例描述了通过AJAX或JSON交换数据,但是可以使用在一组给定组件之间达成一致的任何通信协议来根据本发明的示例性实施例交换数据。
维基环境601中的命令640、642、644、646、648和650与数据中心638交互。数据中心638是诸如图5中的数据中心558之类的服务器侧数据中心。在该示例性实例中,客户端环境600的数据中心634和数据中心638通过AJAX 640交换事件和/或数据。AJAX 636和AJAX 640可以使用可扩展标记语言(XML)作为在客户端环境600与维基环境601之间传输数据的格式来进行通信,尽管可以使用任何格式,其中包括预格式化的超文本标记语言(HTML)、纯文本以及JavaScript对象符号(JSON)。JavaScript对象符号是一种轻量计算机数据交换格式。JSON是JavaScript对象描述符号的子集,但是其使用时不需要JavaScript。
示例性实施例提供了一种用于应用维基的计算机实现的方法、装置和计算机可用程序代码。维基应用是一种协作的Web环境,它允许单个或多个用户有效地集成静态内容和交互内容。维基页面是维基应用中的页面。本发明的示例性实施例允许用户轻松地创建和管理维基页面。用户可以通过拖放活动内容来编辑维基页面。活动内容是根据不断变化的信息更新的动态内容。例如,活动内容包括可由与气象预报站链接的服务器更新的特定地理位置的天气图。
维基页面保存在页面树视图中。页面树视图是包括页面和子页面的内容层次结构。页面树视图可以称为维基空间、页面空间、树或其他内容层次结构。本说明中的每个页面都可以根据需要同时作为内容提供者以及其他子页面的容器。页面树视图与其他文件结构不同,因为所有页面都可以包括内容并且同时被视为容器。页面树视图中的页面通过为每个页面指定的名称来区分。页面包括节点和叶节点。节点可以显示内容并用作其他维基页面的文件夹或容器。叶节点只提供内容。
现在参考图7,其中示出了根据本发明的示例性实施例的用于拖动活动内容的示例性显示屏幕。维基页面700是诸如图6中的页面602的页面。维基页面700可以在设计模式下专门进行编辑。例如,用户可以勾选非常易于完成(QED)复选框,指示该维基页面正在被编辑。在设计模式下,维基页面700可以显示选项板702。选项板702是用于协作地操纵网页的工具栏或工具集。例如,用户可以使用选项板702选择活动内容以便在维基页面700的正文704中显示。正文704是维基页面700中可以被定制和编辑以显示用户指定内容的部分。
选项板702可以包括任何数量的图标706、708和710。每个图标都是可用命令的图形表示。选项板702可用于显示内容,所述内容包括命令、数据、页面内容、维基实用工具、数据服务、定制列表以及任意数量的其他功能。
图标706可以例如是到采用图标形式的GoogleTM Search工具的活动链接。图标708可以是到GoogleTM Maps的活动链接(Google、GoogleSearch和Google Maps是Google Corporation在美国和/或其他国家/地区的商标)。图标710可以是富集站点概要或真正简单整合(RSS)种子。富集站点概要是提供整合和聚合Web内容的开放方法的可扩展标记语言(XML)的协议和应用。使用富集站点概要,用户可以创建提供来自网站的标题、链接以及文章概要的数据种子。用户可以通过正文704中的新闻聚合器使不断更新的内容从网站传送到维基页面700。新闻聚合器是一款专门用于接收这些类型的种子的软件。
在一个实例中,用户可以通过将图标708从选项板702拖到正文704上来在正文704中显示Google

map。用户可以使用将在图8中描述的属性编辑器进一步定制通过维基命令显示的内容。页面内容中的现有维基命令显示诸如醒目图示(eye-catcher)712之类的醒目图示来指示可以编辑现有维基命令的属性。
现在参考图8,其中示出了根据本发明的示例性实施例的用于编辑命令属性的显示屏幕。现代应用维基需要编辑维基“markdown”命令属性的可视方法,此方法不需要用户编辑页面,从而允许用户在没有不协调的页面刷新和概念性上下文切换的情况下修改命令设置。
应用维基减小了用户必须了解或学习超文本标记语言标记的负担。在这些实例中,应用维基引入了用于创建列表和表格的简写语法以及使用简短字符序列、行位置以及空格的组合的其他超文本标记语言结构。例如,与超文本标记语言中必需的<OL><LI></LI></OL>标记相对,在行的第一列中由后跟一个空格的单个星号(*)来定义列表项。由应用维基引入的简写语法被称为“简化(markdown)”来强调使用超文本标记语言创建内容与在维基环境中创建内容之间的差异。维基命令类支持生成用于编辑“简化”命令的可视属性编辑器。
维基页面800是诸如图7中的维基页面700之类的维基页面的局部视图。选项板802类似于图7中的选项板702。维基页面800包含显示名为库和列表的醒目图示804和806的维基命令。
可以使用属性编辑器808来编辑显示醒目图示804和806的维基命令的属性。属性是由所述醒目图示表示的命令在图7中的维基页面700上显示内容时使用的特性、数据、字段和其他信息。属性编辑器808允许用户定制由活动内容显示的信息。属性编辑器808包括超文本标记语言和与维基页面内容一起下载到浏览器客户端的JavaScript。例如,用户可以指定用于显示Google

map的具体地址。同样地,用户可以进行查询并限制在维基页面800中显示的信息。
用户可以使用属性编辑器808输入允许调整其可视表示大小的维基命令的宽度和高度值。此外,属性编辑器808可用于输入缩放系数、数据源名称,并且最大值和最小值是一些其他实例。属性编辑器808用于为用户呈现维基命令的可变点。
例如,图5中的过程532可以根据需要针对每个命令生成默认的属性编辑器。每个维基命令都可以提供定制的属性编辑器来呈现该维基命令的特有可变点。选择命令的醒目图示804或806将导致显示关联命令的属性编辑器。
现在参考图9,其中示出了根据本发明的示例性实施例的页面树视图。页面树视图900是可视的存储结构,用于直观地向用户显示维基页面的组织。页面树视图900示出了维基应用内的维基页面的名称或标记。标记是用户指定的用于对维基内容进行分类的标签。这些实例中的每个页面都是节点或叶节点。
WikiSpace 902是页面树视图900的基页面并且还可以用于引用页面树视图900的内容。页面树视图900与其他文件系统以及数据结构不同,因为WikiSpace 902以及其他包括Test 904、Testing 906、Toplevel 908以及Wiki 910的基页面或基节点可以同时将内容和功能显示为其他维基页面的文件夹或容器。诸如“+”号之类的图形指示器可以指示维基页面是一个节点。WikiSpace 902使用平面层次结构,其中由节点表示的每个页面都可以是容器和内容提供者。例如,WikiSpace902包括内容,但是还可用于链接到包括HelloWorld 912、Homepage 914和MenuTest 916的维基子页面或叶节点。在这些实例中,页面树视图900中的基页面可以同时显示为内容提供者和页面容器。
用户可以使用页面树视图900浏览维基页面。例如,通过单击维基页面,将显示维基页面的内容和/或其子页面。因此,用户可以通过选择页面名称轻松地浏览维基。
现在参考图10,其中示出了根据本发明的示例性实施例的维基页面的显示屏幕。维基页面1000是诸如图6中的维基页面602之类的页面。用户可能已使用选项板中的醒目图示(例如图7中的醒目图示708和选项板702)以将活动内容拖到维基页面1000中。
例如,商务旅行者可能已先前修改维基页面1000以针对将要进行的商务旅程显示目的地1002的列表。通过单击目的地1002列表中的每个位置,维基页面将显示全国地图1004来提供地址、天气预报1006以及当地警示1008。定制的信息允许用户针对商务旅行中的天气和其他情况做出计划并且直观地绘出每次会议的地点。当地警示1008可以包括到指定地理位置的正在发生的事件以及新商店的链接,告知用户可能与商务会议有关的当地事件。
示例性实施例还提供了一种用于处理网页以在维基环境中显示的计算机实现的方法、装置和计算机可用程序代码。在呈现最终的视图之前,添加的组件能够与其他组件进行交互。将启用组件以从页面提供上下文中发现新的属性和参数设置。在呈现最终视图之前,将使用验证机制以便组件验证输入并报告错误。在页面提供序列的生命周期内处理目标事件。在单个服务器上管理同一组件的多个版本。
现在参考图11,其中示出了根据本发明的示例性实施例的抽象语法树的方块图。抽象语法树环境1100包括形成和处理抽象语法树1102时所用的各种组件。
维基命令上下文(WCC)1104是从诸如图6中的页面602之类的维基页面的标记语言来创建抽象语法树1102的对象。维基命令上下文1104是命令的抽象语法树的父辈。维基命令上下文1104负责加载页面命令或源片段。抽象语法树1102包括维基源的命令(如图6中的命令640、642、644、646、648、650)。树是包括源节点或基节点(其分支为包括叶节点或节点)的数据结构。树中相互连接的节点表示依赖于其他互连节点的命令。诸如节点1106-1110之类的节点表示抽象语法树1102中的不同命令。
例如,节点1106名为Accordion并执行使用户指定给Accordion的属性和变量内部化以及将客户端浏览器环境作为目标发出Accordion的超文本标记语言片段所需的步骤。节点1108名为模板并且是名为Accordion的节点1106的子节点。节点1106提供要在客户端浏览器环境中显示的Accordion内的标签的名称。节点1110名为预报并且是一个用于将天气预报插入维基页面的命令。
数据中心1112是诸如图6中的数据中心638之类的数据中心。数据中心1112通过使用预排序遍历来遍历抽象语法树1102并调用每个节点处的特定功能来处理抽象语法树1102。例如,节点1114具有提供纬度和经度的功能。节点1114可以是提供指定地址的纬度和经度的Google

map命令。
根据页面的复杂性,维基命令上下文(WCC)1104表示的抽象语法树1102可以包含两类子节点第一类是那些先前描述的节点,第二类是其根为另一维基命令上下文的其他抽象语法树。在处理生成其他维基源片段(其也需被处理)的统一资源指示器请求时使用另一维基命令上下文。
本发明的示例性实施例还提供了一种用于扩展维基环境的能力的计算机实现的方法、装置和计算机可用程序代码。维基是允许单个或多个用户有效地集成静态内容和交互内容的协作网页。使用面向对象的框架来定义如何扩展对象以便轻松地创建协作环境。维基环境需要支持一种基础机制以在无需更改核心运行时组件的情况下扩展核心环境。
所述示例性实施例包括处理维基命令以管理包括任意数量的维基命令的部署环境的客户端和服务器侧元件。如进一步描述的,将使用维基环境内的一组抽象基类和核心处理引擎来处理维基命令类的具体实现。核心处理引擎支持核心运行时组件的处理和生命周期管理,以扩展维基环境的能力。所述核心处理引擎是诸如图4中的维基引擎402之类的引擎。
现在参考图12,其中示出了根据本发明的示例性实施例的命令的方块图。维基命令是用于实现诸如图3中的维基环境302之类的维基的功能和过程的命令。图12描述了维基命令元数据接口和关联的命令1200。命令1200是诸如图5中的命令550之类的命令。
命令1200包括各种命令种类,其中可以包括种类1202、生命周期1204、属性编辑1206以及页面处理1208。命令1200中仅示出了一些实例。例如,命令包括Get/setCategory 1210、getName 1212和getDescription 1214。Get/setCategory 1210描述了维基命令所属的种类。getName 1212是简化的组件名称。getDescription 1214是旨在帮助用户理解命令的维基命令的文本描述。
种类1202还可以包括其他命令,例如 getHelp是当用户将鼠标放在页面或选项板中的命令之上时出现的帮助文本, getSample返回用于插入命令的样例维基命令源, getIcon返回要针对维基命令在选项板中显示的图标, getDragContent返回在最初将维基命令拖离选项板期间使用的维基源片段,以及 getDropContent返回将维基命令放置在初始位置时插入的维基源片段。
生命周期1204可以包括诸如wasSaved 1216、wasDeleted 1218以及wasCopied 1220之类的命令。在服务器环境中保存命令之后调用wasSaved1216。在这些实例中,在从服务器页面环境中删除命令时调用wasDeleted1218。wasDeleted 1218提供了一种使维基命令清除与给定页面上的维基命令关联的永久性资源的方法。在将包含给定维基命令的页面复制为其他名称时调用wasCopied 1220。wasCopied 1220提供了一种使维基命令对新复制的页面应用任何所需的永久性更改的方法。
生命周期1204还包括其他命令,例如 getVersion返回维基命令的版本, getParameters返回与维基命令关联的参数的列表, aboutToSave在要将命令保存到服务器环境时被调用,使得命令有机会执行使命令持续所需的任何活动, configure在需要配置命令时被调用, get/setPluginData在配置命令期间保存/获取与维基命令关联的数据, wasUndelete在将先前从给定页面删除的命令放置回所述页面时被调用, wasRenamed在包含维基命令的页面已重命名时被调用, aboutToExport恰好在将维基命令导出为已保存的维基格式之前被调用,以及 wasImported恰好在从维基保存格式导入维基命令之后被调用。
属性编辑1206可以包括诸如generatePropertyEditor 1222和allowEditor 1224之类的命令。在所述示例性实施例中,generatePropertyEditor 1222由核心引擎调用以允许命令生成客户端侧编辑视图。如果未实现generatePropertyEditor 1222,将生成默认的属性编辑器来编辑维基命令的参数。属性编辑器是允许用户输入参数、值、文本、变量和维基命令的其他数据的界面。allowEdit 1224判定是否允许编辑维基命令。
页面处理1208可以包括诸如render 1226、drawEyeCatcher 1228、refreshOnUpdate 1230以及getTargetDIV 1232之类的命令。当维基命令需要在超文本标记语言的输出流中显示自身时调用render 1226。在页面上提取命令以提供可通过单击操纵客户端上的维基命令的内容(通常调用选定命令的属性编辑器)时调用drawEyeCatcher 1228。所述醒目图示用于跟踪单个编辑功能。在判定当使用属性编辑器更新命令变元之后是否应刷新整个页面时调用refreshOnUpdate 1230。getTargetDIV 1232返回要更新的超文本标记语言DIV的名称。DIV表示超文本标记语言文件中的一个分部/部分。在客户端浏览器上的DIV内显示每个命令。DIV具有关联的标识,维基引擎将自动生成所述标识或由命令通过实现getTargeDIV协议来提供所述标识。
页面处理1208还包括其他命令,例如 getDestinationDiv返回当在页面上重新呈现命令时要更新的超文本标记语言/DIV的名称标识。呈现命令是以指定的方式重新产生或显示编码数据。例如,通过生成在维基页面中呈现的超文本标记语言以便显示所述醒目图示来呈现所述醒目图示。
getArguments返回传递给命令以进行处理的实际变元的列表。变元包含getParameters调用所返回的参数的“实际”值,该调用将返回命令的正式变元列表。
refreshOnInsert在判定将命令置于维基页面上之后是否应刷新整个页面时被调用。
areArgumentSet返回一个值,该值指定是否已满足维基命令的所有输入变元,以便该命令可以‘触发’其调用方法来执行模型操作。
Init被调用以初始化内部维基命令。
上述方法和命令用于提供图31-43中的过程。
现在参考图13,其是示出了根据本发明的示例性实施例的属性编辑组件的图。属性编辑系统1300包括醒目图示1302、属性编辑器1304以及选择器编辑器1306。
醒目图示1302是选定命令的图形表示。例如,醒目图示1302可以表示用于显示指定地址的地图的GoogleTM Map。醒目图示1302可以采用图标的形式进行单击以调用属性编辑器1304,从而允许用户编辑选定的命令。
属性编辑器1304用于建立命令的特性。例如,所述特性可以指定信息类型、属性、参数、特性的绑定信息以及默认值和允许值。例如,属性编辑器1304可以允许用户指定GoogleTM Map的地址来生成所请求的地图。选择器编辑器1306是允许用户建立特定特性元数据的专用属性编辑器。例如,用户能够使用选择器编辑器1306指定编辑地址。在属性编辑器1304中建立特性时,特定的特性可以自动打开选择器编辑器1306以在属性编辑器1304中输入更详细的特性或字段信息。
本发明的示例性实施例还提供了一种用于在服务器侧数据中心处处理从远程数据处理系统上的客户端侧数据中心接收的维基页面请求的计算机实现的方法、装置和计算机可用程序代码。服务器侧数据中心是服务器上的在服务器接收到页面请求时被实例化的数据中心对象实例。服务器侧数据中心与特定页面实例关联。因此,每当服务器从与页面关联的客户端接收诸如修改或更新页面之类的请求时,将检索和加载与特定页面关联的服务器侧数据中心实例来处理所述请求。
服务器侧数据中心包括属性和一组方法。该组方法是数据中心上的一种或多种方法,用于将事件从服务器上的生成者命令发送给与协作应用实例关联的一组使用者命令。在这些实例中,所述一组使用者命令可以位于服务器侧、客户端侧,或者同时位于服务器侧和客户端侧。
使用者命令是需要接收或希望接收事件和/或数据以便处理和/或执行命令功能的命令。使用者命令向数据中心进行注册来接收与给定主题关联的事件对象。
例如,搜索组件需要或希望接收搜索输入条件以执行搜索组件的搜索功能。因此,搜索组件是搜索输入条件的使用者。因此,搜索命令是与搜索条件和可用主题相关的事件的使用者。
使用者命令还可以称为侦听者命令,因为使用者命令侦听或等待与一个或多个特定主题相关的事件。在上面的实例中,搜索组件侦听与可用搜索条件相关的主题。
在这些实例中,一组使用者包括单个使用者以及两个或更多个使用者。
当在客户端处接收到请求的页面时,将在客户端处创建客户端侧数据中心。该客户端侧数据中心与诸如维基应用之类的协作应用的实例关联。
服务器侧数据中心和相应的客户端侧数据中心的使用使得与所请求的页面关联的维基命令能够通过服务器侧数据中心和/或客户端侧数据中心路由在命令间传输的事件而在处理页面请求期间更容易地交互。
根据本发明的示例性实施例,可以利用服务器侧数据中心和/或客户端侧数据中心在使用事件处理机制的任何应用中的命令之间路由事件。事件处理机制是一种允许诸如维基命令之类的应用中的模块与应用中的其他模块通信的机制。例如,Web浏览器使用事件处理机制。此外,诸如电子邮件组件和新闻阅读器之类的Web应用也使用事件处理机制。
现在参考图14,其是示出了根据本发明的示例性实施例的在维基应用的客户端和服务器上的命令之间的数据流的图。服务器1400是诸如图1中的服务器104和106之类的服务器。服务器1400是诸如图3中的维基环境302、图4中的维基环境400以及图6中的维基环境601之类的维基环境的一部分。
数据中心1402是诸如图5中的数据中心558和图6中的数据中心638之类的服务器侧数据中心。当接收到来自客户端1408的页面请求时,将在服务器1400上创建数据中心1402。因此,在接收到来自客户端侧数据中心的请求时,将实例化服务器侧数据中心1402。服务器侧数据中心1402是在维基环境中的命令之间传播或路由事件的具有特性和方法的数据中心对象的实例。服务器侧数据中心1402上的一组方法用于处理与从客户端1408上的用户接收的页面请求关联的事件和命令。
维基命令1404是诸如图4中的命令422、图5中的命令550以及图6中的命令640-650之类的维基系统中存在的维基命令对象。维基命令1404允许用户将数据包括在页面中和/或处理页面数据,或执行与所请求的维基页面关联的任何其他功能。在该实例中,维基命令1404通过诸如图5中的维基页面对象526之类的维基页面对象的页面处理循环来处理。
数据中心1402判定维基命令1404的变元/参数所需的所有必要数据和/或输入值是否存在。如果所有必要数据和/或输入值存在,数据中心1402针对维基命令1404触发调用方法。调用方法触发维基命令1404,以向服务器侧数据中心1402触发事件1406。事件1406是定义事件的事件对象。
在该示例性实例中,由服务器1400上的维基命令1404触发事件1406。但是,根据本发明的示例性实施例,事件1406还可以包括由服务器侧数据中心1402从客户端侧数据中心1410接收的事件。在此类情况下,事件1406将是诸如事件1407之类的由客户端上的命令触发的事件,其是由客户端侧维基命令1412触发的事件对象。根据另一示例性实例,事件1407可以包括由客户端侧维基命令1412生成并被发送到客户端侧数据中心1410以便在客户端上处理或路由到服务器侧数据中心以便在服务器1400上处理的事件。
从维基命令1404接收到事件1406时,数据中心1402立即将事件1406发送到事件队列进行处理。事件队列是用于存储事件对象,直到事件对象被处理的缓冲区或数据结构。
在处理事件阶段,服务器侧数据中心1402处理事件1406。在处理事件1406期间,服务器侧数据中心1402判定诸如维基命令1404之类的任何命令是否注册为事件1406的使用者命令。使用者命令是需要与给定事件主题关联的事件的命令。事件主题是与事件对象关联的主题或题材。例如,用户输入搜索条件之后触发的事件对象的事件主题为“search”或“searchavailable”。
使用者命令向数据中心注册为给定主题的使用者命令。因此,当数据中心接收到给定主题的事件对象时,数据中心能够将事件发送到给定事件主题的一组已注册的使用者命令。
已注册的使用者命令是注册为给定主题的事件的使用者的命令。例如,显示命令针对诸如accident之类的主题聚合数据集。此报告要在地图显示上显示的命令将向数据中心注册为主题“accidents”的使用者命令。当数据中心接收到针对accidents的事件时,会将accidents事件对象发送给所有针对主题“accidents”注册的使用者命令,其中包括显示命令。一旦显示命令接收到“accidents”主题事件,显示命令将利用或使用所述数据来生成示出accidents数据的地图显示或将先前显示的地图更新为示出新的accidents数据。
数据中心1410将事件1406发送给维基命令1412进行处理。数据中心1410判定维基命令1412中是否存在维基命令1412需要触发的给定变元/参数的所有必要数据和/或输入值。如果所有必要数据和/或输入值存在,数据中心1410针对维基命令1412触发invoke方法。响应于数据中心1410针对维基命令1412调用invoke方法,维基命令1412将事件1407发送或触发到数据中心1410进行处理。当事件1407完全被处理之后,数据中心1410将事件1406发送到浏览器或客户端进行显示。当事件为正确的格式(如超文本标记语言代码)以便在浏览器处显示时,则该事件被完全处理。
因此,示例性实施例提供了一种用于处理页面请求的计算机实现的方法、装置和计算机可用程序代码。服务器侧数据中心从远程数据处理系统上的客户端侧数据中心接收页面请求。客户端侧数据中心与协作应用的实例关联。服务器侧数据中心在初始页面呈现的过程中使用一组方法处理该请求。所述一组方法用于将事件从服务器上的生成者命令发送给与协作应用关联的一组使用者命令。
现在参考图15,其是示出了根据本发明的示例性实施例的在初始页面呈现过程中服务器上的命令之间的数据流的图。数据中心1500是诸如图5中的数据中心558和图6中的数据中心638之类的服务器侧数据中心。在该示例性实例中,数据中心1500以PHP超文本预处理器(PHP)实现。维基命令生成者1502是与服务器关联的命令。生成者是提供可被另一维基组件使用或利用的数据的维基命令组件。在该示例性实例中,维基命令生成者1502注册为主题“cars”的事件的生成者。为了将维基命令生成者1502注册为主题“cars”的生成者,数据中心1500将维基命令生成者1502的标识符添加到对象变量以使生成者标识符与主题“cars”关联。
维基命令使用者1506是与服务器关联的命令。维基命令使用者1506向数据中心1500注册为主题“cars”1508的使用者。为了将维基命令使用者1506注册为主题“cars”的使用者,数据中心1500将维基命令使用者1506的标识符添加到数据中心1500上的使用者对象变量内的使用者命令标识符的数组中。
维基页面1510是具有与正在被加载到维基环境内的给定请求页面关联的处理循环的对象。在初始化阶段,服务器调用ini方法来初始化与给定请求页面关联的所有命令,例如维基命令生成者1502。一旦初始化,命令就向数据中心注册为诸如维基生成者1502之类的生成者命令或诸如维基使用者1506之类的使用者命令。
当维基命令生成者1502具有准备好触发的数据和/或事件时,维基命令生成者1502将检索数据并触发主题为“car/available”的事件。当维基命令生成者1502触发事件主题“car/available”事件1512时,事件被发送到数据中心1500。数据中心1500将主题car/available”事件添加到数据中心1500内的事件队列1514中。在处理来自事件队列的主题“car/available”事件之后,主题“car/available”事件被发送给所有针对事件主题“cars”注册的使用者。
维基页面对象的维基页面处理循环调用第一processEvents方法。在该处理事件阶段,数据中心处理服务器侧数据中心上的事件队列中的事件,其中包括由维基命令生成者1502触发的“car/available”事件对象。数据中心1500从事件队列检索事件“car/available”。数据中心1500针对注册为事件主题“cars”1508的使用者(包括维基命令使用者1506)的每个命令调用callback方法。将所述事件作为callback方法的变元/参数传递给维基命令使用者1506。使用者callback方法通过在callback方法内部执行代码来处理所述事件对象。
如果在初始化所有组件之后,但在呈现请求页面之前,还存在要执行的其他处理,则每个命令有机会通过调用discover方法来执行代码。将调用第二processEvents阶段1520来处理在discover阶段触发的任何事件。
最后,维基页面对象1510针对所有命令调用render阶段。在render阶段,所有命令都应使其全部数据可用,以便能够生成超文本标记语言代码并将所述超文本标记语言代码发送到客户端,以便在客户端浏览器处呈现为所请求的页面。如果维基使用者1506是由生成者生成的“cars”数据的表格显示,则所述render阶段将生成cars的表格,如图16所示。
现在参考图16,其是示出了根据本发明的示例性实施例的响应于用户的页面请求而生成的维基页面1600的图。如上所述,所有与页面关联的命令都可以向数据中心注册为生成者或使用者。当生成者生成事件时,使用者将使用所述事件呈现超文本标记语言或JavaScript来呈现整个页面或页面片段。超文本标记语言或JavaScript被发送到客户端浏览器进行显示。
因此,所有交互都在维基页面处理循环期间经过数据中心。这些交互的结果是,所有事件都在呈现时被处理。因此,诸如页面1600之类的初始呈现的页面完全示出了维基页面的正确视图。换言之,客户端不必触发事件来修改初始呈现的页面以纠正页面视图,因为与从服务器加载新页面关联的所有事件都通过服务器侧数据中心进行了处理。
在服务器上处理完初始页面请求之后,服务器将生成所请求页面的超文本标记语言代码和/或JavaScript。当客户端接收到超文本标记语言代码和/或JavaScript时,将新页面加载到客户端处以便在客户端浏览器中显示。
在页面加载过程中,页面的超文本标记语言代码和/或JavaScript代码将创建客户端侧数据中心对象。客户端侧数据中心对象将客户端上的所有命令向客户端侧数据中心注册为生成者命令和使用者命令,就像在服务器处的初始页面处理循环期间,将服务器上的命令向服务器侧数据中心进行注册那样。
在这些实例中,如果可以在客户端上完全包含和处理在加载初始页面之后在客户端处发生的命令交互,则不会将命令交互发送到服务器。换言之,维基命令在客户端上进行交互以修改所显示的页面,从而反映通过用户操作或客户端上的其他事件触发的其他输入或事件。如果可以在客户端上完全处理组件交互,则不会将客户端生成的事件发送到服务器。该事件可能能够在客户端处被完全处理。如果是此情况,则服务器不必以任何方式参与事件的处理。在所示实施例中,术语“修改”包括更新页面或以其他方式更改页面以反映新的数据和/或新的页面内容。
因此,本发明的示例性实施例提供了一种用于客户端侧数据中心处理事件的计算机实现的方法,装置和计算机可用程序代码。客户端侧数据中心接收给定主题的事件。由与客户端关联的生成者命令生成所述事件。客户端侧数据中心处理所述事件来标识给定主题的一组使用者命令。客户端侧数据中心将所述事件发送给给定主题的一组使用者。客户端侧数据中心从所述一组使用者中的一个或多个使用者接收新的页面内容,其中使用所述新的页面内容更新所显示的页面以形成更新后的页面。
现在参考图17,其是示出了根据本发明的示例性实施例的在客户端浏览器处显示的所呈现页面的图。在呈现的页面1700上,来自组件1702的搜索输入向客户端侧数据中心注册为事件主题“search/available”的生成者。回送使用者组件1704向客户端侧数据中心注册为主题事件“search/available”的使用者。使用者组件1704用于在搜索组件1702触发“search/available”事件时回送用户键入搜索组件中的内容。
图18是示出根据本发明的示例性实施例的在客户端浏览器处加载并显示新页面后在客户端侧数据中心上的组件间的数据流的图。数据中心1800是诸如图6中的数据中心634和图14中的数据中心1410之类的客户端侧数据中心。在加载页面期间在客户端上创建数据中心1800。在该示例性实例中,客户端侧数据中心1800以JavaScript和超文本标记语言实现。
维基命令生成者1802是客户端上提供可以由另一维基命令使用的数据或希望通知另一组件特定事件已发生的命令。维基命令生成者1802向数据中心1800注册1804为主题“search/available”的生成者。在该实例中,维基命令生成者1802是图17中的搜索组件1702。
维基命令使用者1806是客户端上使用事件对象、使用数据或希望获得事件通知的命令。维基命令使用者1806向客户端侧数据中心1800注册为事件主题“search/available”1808的使用者。在该实例中,维基命令使用者1806是图17中的回送使用者组件1704。维基命令使用者1806是服务器上相应的维基命令对象的客户端版本。客户端上的维基命令使用者1806包括服务器上的维基命令对象的所有数据,但是它不包含在服务器上相应的维基命令中找到的所有方法。
当用户在输入搜索条件(如图17中示出的“Wiki”搜索条件)之后按下“go”按钮时,维基命令生成者1802将触发“search/available”事件。维基命令生成者1802创建事件对象,将数据附加到事件对象,然后通过调用数据中心1800上的fireEvent方法1810来触发事件对象,以便将所述事件发送到数据中心1800。不同于在数据中心进行事件排队以及在processEvents阶段处理事件的服务器侧数据中心,客户端侧数据中心1800不会将事件发送到事件队列。相反,客户端侧数据中心1800立即处理事件并将所述事件发送给针对所述事件注册的一组使用者。
在该示例性实例中,数据中心1800调用回送组件回调1812。维基命令使用者1806通过使用JavaScript将文本“Search termWiki”插入所显示的页面来修改诸如图17中的页面1700之类的所呈现的页面。维基命令使用者1806用于动态更新所呈现页面的内容的示例性JavaScript图示包括如下项 var divld=document_getElementByld(′echoDivld′); divld.innerHTML="Search term; "+event.getValuc(); 但是,根据本发明的示例性实施例,可以由维基命令使用者1806使用任何用于修改页面的已知或可用的方法(包括但不限于文档对象模型(DOM)操纵)来修改所呈现的页面。
但是,如果交互需要服务器参与事件的处理,则将事件发送到服务器。在客户端上触发的事件可能需要该事件被发送到服务器侧数据中心,因为数据可能位于服务器上,也可能由服务器检索所述数据。
换言之,在客户端处显示页面之后,将从用户接收新的事件或新的数据。该事件可能需要在服务器处进行整体处理或部分处理。如果是此情况,则客户端将在更新所显示的页面之前将该事件发送到服务器。
客户端和服务器上的数据中心使得维基组件和命令能够在客户端上交互,在服务器上交互,以及使用基于主题的事件处理机制有效地连接各组件。当用户交互的结果需要访问服务器来执行某些不可能在客户端上执行的操作或处理时,客户端侧数据中心将事件发送到服务器侧数据中心。
例如,如果服务器拥有或可以访问诸如数据库表之类的给定用户交互所需的数据(客户端不拥有或不能访问该数据),则将事件发送到服务器。此外,如果需要服务器来检索诸如数据种子(data feed)之类的用户交互所需的数据,则将事件发送到服务器。在这些情况下,事件被发送到服务器进行处理/处置。服务器上的事件处理/处置完成之后,服务器立即将更新后的页面内容发送到客户端以便在客户端处修改显示的页面。
例如,搜索组件是接受用户输入的组件。根据用户输入的文本,将搜索文本发送到服务器。服务器将执行搜索。服务器使用表格组件呈现搜索结果。将由服务器上的表格组件生成的呈现表格返回客户端进行显示。
本发明的示例性实施例还提供了一种用于事件的数据中心处理的计算机实现的方法、装置和计算机可用程序代码。客户端侧数据中心接收与当前显示的页面关联的给定主题的事件。客户端侧数据中心将事件数据发送到服务器侧数据中心以便在服务器上进行事件处理。
服务器侧数据中心将给定主题的事件添加到服务器侧数据中心上的事件队列以响应接收到与页面关联的事件。服务器侧数据中心处理事件队列中的事件。然后标识与所述事件关联的给定主题的一组使用者命令。使用者命令是接收给定主题事件的命令。服务器侧数据中心将所述事件发送给给定主题的一组使用者命令。所述一组使用者命令中的一个或多个使用者处理所述事件以为页面呈现页面内容。服务器侧数据中心然后将事件处理的结果发送回客户端侧数据中心。
客户端侧数据中心从服务器侧数据中心接收事件处理结果。事件处理结果包括新的页面内容。然后在客户端浏览器处使用新的页面内容更新当前显示的页面以形成更新后的页面。
现在参考图19A和图19B,其是示出了根据本发明的示例性实施例的在页面更新期间在客户端侧数据中心和服务器侧数据中心之间的数据流的图。当初次加载维基页面时,将处理服务器侧命令以生成发送到客户端以便向用户显示的初始页面呈现,如图8-9所示。在该示例性实例中,当初次加载页面时将创建服务器侧数据中心1900。维基命令生成者1902是搜索组件。
在初始化阶段,维基命令生成者1902初始化并向数据中心1900注册1904为事件主题“search/available”和“search/clicked”的生成者。维基命令生成者1902搜索组件还注册为由客户端生成的“search/clicked”事件主题的使用者。以这种方式,维基组件的客户端表示可以与服务器侧组件通信或调用服务器侧组件上的方法。
维基命令使用者1906是列表组件。维基命令使用者1906初始化并向数据中心1900注册为“search/available”事件主题的使用者。在第一processEvents阶段,将调用服务器侧数据中心上的processEvents方法。数据中心1900调用维基命令生成者1902上的invoke方法。作为响应,维基命令生成者1902执行搜索并生成将包括在“search/available”事件对象内的数据。维基命令生成者1902触发事件对象“search/available”来指示搜索数据已准备就绪。
数据中心1900调用维基命令使用者1906列表组件上的callback方法,以便将“search/available”事件对象发送给维基命令使用者1906。然后执行发现操作和第二processEvents阶段。最后,在呈现阶段,数据中心1900针对与所请求的页面关联的所有命令调用render。维基命令生成者1902呈现超文本标记语言和JavaScript以显示搜索表单。现在是生成者组件的维基命令使用者1906列表组件呈现超文本标记语言和JavaScript以显示表格。将所呈现组件的结果与其余的超文本标记语言页面相组合并将其发送到客户端进行显示。在浏览器加载页面时,JavaScript代码创建客户端侧数据中心1910并向客户端侧数据中心1910注册所有生成者1912和所有使用者1914。这是初始的页面呈现。
一旦初始显示了页面,用户交互就会导致更改一个或多个组件的呈现。例如,当用户输入搜索条件并按下“go”时,将出现更改数据的用户交互。客户端侧搜索组件维基命令生成者1916触发主题为“search/clicked”1918的事件。将搜索短语作为数据附加到事件对象。客户端侧数据中心1910接收事件对象并将其发送给客户端上注册为事件主题“search”的使用者的任何侦听者。与在服务器侧数据中心内不同,客户端侧数据中心不会将事件排队到事件队列。
客户端侧数据中心1910判定是否应将事件发送给服务器上与服务器侧数据中心关联的使用者命令。如果应将事件发送给服务器上的使用者命令,客户端侧数据中心通过AJAX、JSON或任何其他已知的或可用的远程方法调用法来调用processClientEvent方法1920,从而将事件发送到服务器。
服务器侧数据中心1900将接收的事件添加到事件队列1922。服务器侧数据中心1900处理事件队列中的事件,其中一个事件是从客户端接收的“search/clicked”事件。服务器侧数据中心1900将“search/clicked”事件发送给注册为事件主题“search/clicked”1924的使用者的维基命令生成者1902搜索组件。维基命令生成者1902搜索组件执行搜索并产生/生成搜索数据。维基命令生成者1902创建主题为“search/available”的事件对象并将所生成的搜索数据附加到事件对象。
服务器侧数据中心1900将“search/available”事件对象添加到事件队列中。由于服务器侧数据中心1900仍然在processEvents阶段处理事件,因此“search/available”事件对象被立即从事件队列移除并由服务器侧数据中心1900处理。服务器侧数据中心1900然后将“search/available”事件对象发送给维基命令使用者1906,因为维基命令使用者1906注册为“search/available”主题1926的使用者。
维基命令使用者1906将新数据保存在“search/available”事件对象之外。服务器侧数据中心1900针对参与处理从客户端侧数据中心1910接收的原始事件“search/clicked”的所有组件调用render方法1928。维基命令使用者1906列表组件呈现方法使用超文本标记语言和JavaScript构建新的列表。维基命令使用者1906将新的列表内容返回到服务器侧数据中心1900。服务器侧数据中心1900从涉及的所有组件/命令(包括维基命令使用者1906)收集新的呈现,并捆绑新的呈现以返回到客户端侧数据中心1910。客户端侧数据中心接收processClientEvent方法1930的结果并使用新的页面内容1932更新在客户端上呈现的命令。
接下来,图20是示出根据本发明的示例性实施例的在页面更新期间在服务器侧数据中心与客户端侧数据中心之间的消息流的图。在消息1,当客户端侧生成者组件触发具有与事件名称链接的主题“clicked”的事件时所述消息流开始。在消息2.1,客户端侧数据中心接收事件并将其发送给客户端上的任何侦听者。
客户端侧数据中心判定是否应将事件发送给服务器上的侦听者(消息2.2)。在这些示例性实例中,侦听者是注册为给定事件主题的使用者的命令或组件。如果应将事件发送给服务器上的侦听者,则客户端侧数据中心通过调用processClientEvent或另一远程方法调用法将所述事件发送到服务器(消息2.3)。服务器侧数据中心将接收的事件添加到事件队列(消息3)。
在消息4.1,服务器侧数据中心处理队列中的事件,其中一个事件是来自客户端的事件。服务器侧数据中心将“clicked”事件发送给相应的注册为侦听者的使用者(消息4.2)。
所述组件执行事件所需的操作(消息5.1)。服务器侧数据中心对待所有事件的方式都相同,与是从客户端接收还是从服务器接收事件无关。所述组件创建指示其结果可用的新“available”事件(消息5.2)。服务器侧数据中心将“available”事件添加到队列(消息6)。
服务器侧数据中心处理“available”事件并将所述事件发送给服务器上的一组使用者(消息7)。使用者组件使用来自“available”事件对象的数据。服务器侧数据中心针对所有组件调用render方法(消息8.1)。所有组件都以超文本标记语言和JavaScript将新呈现返回到服务器侧数据中心(消息8.2)。服务器侧数据中心将收集的呈现从所有参与组件返回到客户端侧数据中心(消息9)。客户端侧数据中心接收服务器处理事件的结果。客户端将所述结果发送给客户端上的侦听者(消息10),以便在客户端浏览器上呈现页面更新。
在备选实施例中,还可以在其中服务器侧数据中心在未从客户端侧数据中心接收事件的情况下根据本发明的示例性实施例执行操作的系统中实现页面请求处理并使能命令间的交互。在其他实例中,可以在其中客户端为PDA、蜂窝电话、GPS导航器或任何其他不支持JavaScript的客户端设备的系统中实现页面请求处理。
图21是示出根据本发明的示例性实施例的服务器侧数据中心对象的图。在所示实例中,数据中心2100是诸如图5中的数据中心558、图6中的数据中心638以及图7中的数据中心702之类的数据中心对象。在该示例性实例中,数据中心2100是以PHP实现的数据中心对象。
为用户所请求的维基页面的每个实例创建诸如数据中心2100之类的数据中心。页面实例用于引用特定页面视图以及该页面的关联数据中心实例。在将客户端上与给定页面关联的请求或事件发送到服务器时,服务器将加载与给定页面关联的指定数据中心实例。
换言之,将为客户端所请求的每个维基页面实例在服务器上创建数据中心的实例。在客户端上加载并显示页面实例之后,将不再需要在客户端上的该页面的数据中心实例。所述数据中心实例被保存在诸如图1中的存储单元108之类的存储设备中。当用户输入新的输入或请求与该页面相关的操作时,将通过重新加载与特定页面视图关联的数据中心的先前串行化的实例,来在服务器上重新创建该特定页面视图的维基环境。已保存和重新加载的数据中心实例反映了该特定页面在客户端浏览器上的当前状态。数据中心2100包括特性/对象变量和一组方法。
所述一组方法包括五个方法种类或分类。所述方法种类如下数据中心管理2102、生成者和使用者2104、主题2106、事件处理2108和命令管理2110。在这些示例性实例中,方法是一种用于执行与诸如数据中心2100之类的一个或多个对象关联的操作或过程的程序、函数或例程。
数据中心2100的一组方法包括用于使方法执行各种功能(如保存数据中心实例、检索/重新加载数据中心实例、添加命令、添加生成者、删除生成者等)的方法接口。例如,数据中心管理2102的一组方法接口包括用于使方法从诸如图1中的存储单元108之类的数据存储中检索已存储的数据中心实例的方法接口“public static function init(页面实例)”。
数据中心2100还针对数据中心主题对象2112和数据中心事件对象2114调用方法,以实现维基环境和客户端环境中的命令之间的事件传输。数据中心主题对象2112主要是一个定义使用者命令可以订阅的主题的数据对象。在这些示例性实例中,使用者是需要和/或请求来自用户、另一命令、另一组件和/或另一对象的数据、事件或输入以执行所述命令/组件的特定功能的命令、组件或对象。在这些示例性实例中,生成者是提供来自用户、另一命令、另一组件和/或另一对象的数据、事件或输出的命令、组件或对象。
数据中心事件对象2114是定义由生成者创建并被发送给与所述事件对象关联的给定事件主题的使用者的数据中心事件的数据对象。
图22是示出根据本发明的示例性实施例的客户端侧数据中心对象的图。数据中心2200是诸如图6中的数据中心634和图14中的数据中心1410之类的数据中心对象。在该示例性实例中,数据中心2200是以JavaScript实现的客户端侧数据中心对象。
数据中心2200是使得维基组件能够与服务器上的其他维基组件和客户端上的其他维基组件交互的客户端数据中心。数据中心2200还使得维基组件能够将在客户端上生成的事件发送到服务器以便处理。
数据中心2200包括属性和一组方法。在该示例性实例中,所述一组方法包括四个方法种类。所述方法种类如下生成者和使用者2202、主题2204、事件处理2206和命令管理2208。
客户端侧数据中心2200还针对客户端侧数据中心主题对象2210和客户端侧数据中心事件对象2212调用方法,以实现维基环境和客户端环境中的命令之间的事件传输。数据中心主题对象2210是诸如图21中的数据中心主题对象2112之类的数据中心主题对象。数据中心事件对象2212是诸如图21中的数据中心事件对象2114之类的数据中心事件对象。
在本发明的一个或多个实施例中,维基页面布局通常是静态的。而且,维基页面布局的静态特性以及必须单独修改一组页面中的每个页面布局的要求使得编辑一个维基页面或一组维基子页面来使其全部共享相同的特定布局变得非常耗时。维基页面布局是示出用于构成所有组件都放置到位的完整维基页面的多个页面组件组合的页面。返回参考图6,页面600示出了诸如页首604、页脚606、左边距608、右边距610、菜单612以及正文614之类的页面组件的实例。维基页面是位于维基应用内的页面。因此,希望可以在维基页面中动态地配置和定义维基页面布局,以便用户能够像创建新的维基页面那样简单地创建新的维基页面布局。还希望使相关的维基页面集合共享相同的维基布局页面。
本发明的示例性实施例提供了将维基页面内容嵌入维基布局页面的正文。维基布局页面是定义维基页面的页面布局的维基页面。此外,可以将特定布局与维基页面关联。用户可以通过简单地新建维基页面并编辑新建维基页面的内容来创建新的维基布局页面。由维基命令(在该命令为之提供内容的页面组件之后命名)提供新建维基页面的每个页面组件的默认内容。维基命令是用于实现维基应用的功能和/或过程的命令。例如,在本发明的示例性实施例中,维基命令是命名的页首、页脚、菜单、左边距和右边距。
用户可以通过使用HTML页面流将来自这些维基命令的内容包括在维基页面上用户所需的任意位置。HTML页面流是浏览器如何根据包括页面源的HTML标记来放置网页的内容。例如,网页源中的HTML<TABLE>标记能够使浏览器呈现分为由上至下垂直布置的行和列的表格显示。因此,用户可以采用与编辑任何其他维基页面相同的方式来编辑维基布局页面。用户可以按照用户的浏览需要将其他静态HTML内容和其他动态维基命令包括在新建的维基页面中。因此,本发明的示例性实施例允许用户创建共享通用外观和布局(如在页首显示的内容(例如公司徽标或图像)以及显示菜单的位置)的页面。此外,本发明的示例性实施例允许用户按照与用户熟悉的操作(即,创建和编辑维基页面)一致的简单方式创建此通用外观。
每当用户通过键入统一资源定位器来请求维基页面时,都会检查维基页表来判定是否存在与所述页面或一组子页面关联的布局页面名称。如果布局页面与所请求的维基页面关联,则呈现所述维基页面,且添加布局信息并使其围绕所请求的维基页面以形成组合页面。
在本发明的示例性实施例中,维基布局页面中包括一个特殊的模板变量。在使用新的维基布局页面时,由目标维基页面的内容替换该特殊模板变量。在这些实例中,所述模板变量是一个字符串变量。当命名该特殊模板变量时,用户希望尽可能避免与新请求的页面上的其他文本的冲突。因此,该特殊模板变量的名称通常为不太可能自然出现的模式。在本发明的示例性实施例中,该特殊模板变量名为%_BODY_%。该特殊模板变量位于维基布局页面的正文字段内。正文字段是诸如图5中的对象变量528之类的维基布局页面对象的对象变量。正文字段包含原始的未呈现的维基页面内容。
本发明的示例性实施例提供了维基页面继承来自父辈维基页面的维基页面布局。每个维基页面都具有与该维基页面关联并且是该维基页面的父辈维基页面的维基页面列表。父辈维基页面是那些在页面命名层次结构内的较高级别出现的维基页面。例如,如果维基页面名为“LevelOne/LevelTwo”并且存在名为“LevelOne”的维基页面,则名为“LevelOne”的维基页面被认为是维基页面“LevelOne/LevelTwo”的父辈。一组父辈维基页面的列表存储在维基页面对象中的字段内。一组父辈维基页面可以包括一个或多个父辈维基页面。在本发明的示例性实施例中,字段称为路径字段。将使用按照反向层次结构顺序查找父辈维基页面列表中包含维基页面布局指定符的第一维基页面的查询。在本发明的示例性实施例中,将根据诸如图5中的数据库524之类的数据库中的Wiki_pages表格检查父辈页面列表。Wiki_pages表格包括一系列表项。每个表项都包括一个维基页面和任何与该特定维基页面关联的维基布局页面。将父辈维基页面列表中的每个维基页面与Wiki_pages表格中的表项相比较。一旦发现与父辈维基页面列表中的维基页面匹配且具有关联维基布局页面的表项,则选择指定的布局页面以供目标维基页面继承。
接下来,图23是示出根据本发明的示例性实施例的将维基页面内容嵌入维基布局页面正文的过程的方块图。图23中的该过程可以由诸如图4中的维基引擎402之类的维基引擎实现。当前页面对象2302是诸如图5中的维基页面526之类的维基页面对象。正文2310是维基页面的正文字段,其是诸如图5中的对象变量528之类的维基页面对象的对象变量。布局页面对象2304包括页面组件页首2322、菜单2324、右边距2326、左边距2328、页脚2330以及正文2320。布局页面对象2304中的页面组件包含在布局页面对象2304的正文字段内,其是诸如图5中的对象变量528之类的布局页面对象的对象变量。当前页面对象2302的正文字段的内容(即,正文2310)置于布局页面对象2304的正文组件(即,正文2320中)。然后,布局页面对象2304的正文字段的内容(其包括页面组件页首2322、菜单2324、右边距2326、左边距2328、页脚2330以及正文2320)被置于当前页面对象2302的正文字段(即,正文2310)中。
然后将当前页面对象2302重新呈现为组合后的页面2306。组合后的页面2306是将当前页面对象2302与布局页面对象2304进行组合的结果。组合后的页面2306包括来自布局页面对象2304的布局页面组件页首2322、菜单2324、右边距2326、左边距2328和页脚2330以及由正文2310表示的当前页面对象2302的正文字段的内容。
在传统维基应用中,当前没有任何方法可以以有条件地显示或隐藏维基页面布局的特定页面组件的方式动态地配置维基布局页面。维基页面布局是示出用于构成所有组件都放置到位的完整维基页面的页面组件组合的页面。维基页面是维基应用内的页面。
本发明的示例性实施例提供了以编程的方式隐藏和显示维基页面布局组件。维基布局页面被分为一组页面组件。页面组件称为页首、菜单、左边距、右边距、正文以及页脚组件。图6示出了诸如页首604、页脚606、左边距608、右边距610、菜单612以及正文614之类的页面布局组件的实例。由维基命令生成每个组件的内容。维基命令是用于实现维基应用的功能和/或过程的命令。在本发明的示例性实施例中,维基命令具有与它们为其生成内容的页面组件相同的名称。维基页面布局包含简单的内嵌维基命令标记的HTML标记。当呈现页面时,维基命令将查询控制页面组件是否应显示维基命令生成的内容的维基页面设置。
在本发明的示例性实施例中,维基页面设置实现为当用户编辑维基页面时可由用户编辑的复选框。通过勾选和取消勾选复选框,用户控制各种页面组件以及页面注释、附件和电子邮件的可视性。所述设置保存在Wiki_pages表格(其是诸如图5中的数据库524之类的数据库的一部分)中的“component”列,作为根据其检查显示逻辑的位掩码。页表中的表项包括identity(ID)、account、tag、time、body、owner identity(ownerID)、modified-by、isLatest、layout、isLayout、isEditing、commentOn、sections、path、attributes(attrib)和errors等字段。位掩码是一个二进制数,其中每个位表示不同变量的肯定值或否定值(1或0)。通过使用快速逐位运算,可以确定或更改特定变量的值。因此,位掩码是一种简洁有效的存储此类变量的方法。
现在参考图24,其是示出了根据本发明的示例性实施例的确定页面组件内容的可视性的复选框的方块图。可视性设置2402是用户可以通过其控制各种页面布局组件的可视性的显示区域。可以作为维基页面内容的一部分实现可视性设置2402。在本发明的备选示例性实施例中,可视性设置2402实现为客户端浏览器上的菜单选项。正文2406包括复选框2408。复选框2408包括用于页首、菜单、左边距、右边距以及页脚布局页面组件的复选框以及用于注释、附件和电子邮件的复选框。通过勾选或取消勾选复选框2408,用户可以控制命名的布局页面组件以及页面注释、附件和电子邮件的内容的可视性。在本发明的示例性实施例中,勾选复选框可以使命名的布局页面组件以及页面注释、附件和电子邮件的内容显示在客户端浏览器中。在此类实施方式中,可视性设置2402的顶部将包括文字显示或可视,或某些其他等价含义的词汇。在图24中,顶部2404包括文字显示,指示勾选复选框将导致属于布局页面部分的内容显示在客户端浏览器中。
在本发明的备选示例性实施例中,勾选可视性设置2402中的复选框可导致相应布局页面组件的内容在客户端浏览器中隐藏。在此类实施方式中,顶部2404将包含指示该实施方式的词汇(例如,隐藏)。
在本发明的示例性实施例中,勾选和取消勾选复选框2408的结果将作为位掩码存储在数据库中。在呈现要显示的页面的过程中,显示逻辑将检查所述位掩码来确定哪些内容要显示在客户端浏览器中。
现在参考图25,其中示出了根据本发明的示例性实施例的创建维基页面的过程的流程图。图25中的过程用于创建诸如图6中的维基页面602之类的维基页面。图25中的过程始于接收用户输入以创建新的维基页面(过程方块2502)。在过程方块2502,用户可以使用客户端浏览器从菜单选择新的页面命令来提供用户输入。
接下来,所述过程提示用户输入新的维基页面的名称(过程方块2504)。在一个实例中,页面名称可以包含遵循CamelCase规则的字母和数字字符。维基页面名称还可以包含指示层次结构中分区和级别的“/”字符。例如,新的维基页面可以是图9中的test904。
接下来,所述过程构建和编辑请求统一资源定位器(URL)并将相应的超文本传输协议(HTTP)请求发送到服务器(过程方块2506)。所述编辑请求可以在客户端浏览器上由JavaScript功能构建,并且可以指定新的页面操作和新的页面名称。
接下来,所述过程加载适当的编辑器并使用超文本传输协议响应将页面提供给客户端浏览器(过程方块2508)。过程方块2508可以由图5中的维基控制器500实现。
接下来,所述过程接收用户更改并向服务器提交超文本传输协议表单提交(过程方块2510)。过程方块2510可以发生以响应用户在客户端浏览器中编辑维基页面和提交要保存的内容。
接下来,所述过程使用提交的内容创建和保存维基页面(过程方块2512),此后所述过程结束。在过程方块2512,维基控制器处理页面超文本传输协议请求,并且可以使用createPage和save方法来实例化维基页面对象,然后保存维基页面对象。诸如图5中的维基对象508之类的维基页面对象在诸如图5中的数据库524之类的维基页面数据库表格中创建一个行来表示新的维基页面。
现在参考图26,其中示出了根据本发明的示例性实施例的显示页面的过程的流程图。所述过程始于接收维基页面的用户指定统一资源定位器(URL)并将超文本传输协议请求发送到服务器(过程方块2602)。可以由图3中的客户端环境300内的客户端浏览器接收过程方块2602。
接下来,过程处理所述请求、实例化维基页面上的对象、处理维基页面,并作为超文本传输协议响应将维基页面的内容呈现到客户端浏览器(过程方块2604),此后所述过程结束。过程方块2604可以由图5中的维基控制器500实现。维基控制器可以针对维基对象调用showPage方法。showPage方法实例化维护维基页面数据库表中特定行的维基页面内容的维基页面对象。维基控制器然后针对维基页面对象调用处理维基页面并将页面内容呈现到客户端浏览器的process方法。
现在参考图27,其中示出了根据本发明的示例性实施例的生成页面树视图的过程的流程图。图27中的过程可用于创建图9中的页面树视图900。图27中的过程可以由图5中的命令550内的PageTreeCommand实现。
所述过程始于PageTreeCommand读取维基页面数据库表格中的所有行并提取页面名称列值(过程方块2702)。页面名称也可以是标记。标记是用于对维基页面内容进行分类的页面名称或标签。所述数据库可以是诸如图5中的数据库524之类的数据库。
接下来,PageTreeCommand遍历页面名称值来构建页面树视图(过程方块2704)。在过程方块2704期间,将页面的层次结构分组成多个节点和叶节点以形成可视树结构。节点同时作为容器和内容提供者,而叶节点只是内容提供者。例如,如果页面名称以“/”字符结尾,则页面被视为容器和内容提供者,并由诸如图9中的test904之类的表示容器的适当图标表示。所有以包括“/”的名称开始的维基页面名称都被视为该页面的后代。如果维基页面名称的其余部分包含“/”,则也将该维基页面视为容器和内容提供者。如果维基页面名称的其余部分不包含“/”,则将该维基页面视为叶节点并使用诸如图9中的helloworld 912之类的适当图标表示该页面。可以使用任意数量的诸如“/”之类的不同页面指示符来指定页面是节点还是叶节点。
接下来,PageTreeCommand返回页面树视图的超文本标记语言表示(过程方块2706),此后所述过程结束。页面树视图的超文本标记语言表示显示在客户端浏览器上以便用户在浏览维基页面中使用。
现在参考图28,其中示出了根据本发明的示例性实施例的拖动活动内容的过程的流程图。本发明的示例性实施例允许将动态内容拖到维基页面上并在将动态内容拖到页面上时提供内容样例。使用XMLHttpRequest,可以远程地调用维基组件并在拖动视图中使用XMLHttpResponse返回内容。请求是从浏览器客户端发送到Web服务器的数据。响应是作为对所接收的请求数据的反应(响应)而从Web服务器发送到浏览器客户端的数据。超文本传输协议是一种定义发送到Web服务器的请求以及来自Web服务器的响应的特定格式和内容的国际标准。XMLHttpRequest/Response是支持可扩展标记语言数据内容和特定响应格式的进一步专门化的超文本传输协议请求/响应。可以使用图7中的维基页面700实现图28中的过程。
所述过程始于接收执行拖放操作的用户输入和调用JavaScript功能,该功能将XMLHttpResponse发送到服务器来请求选定维基组件的样例输出(过程方块2802)。可以通过用户拖动图标(例如将醒目图示708从选项板702拖动到维基页面700的正文704上(均在图7中))来生成过程方块2802的用户输入。可以由图3中的客户端环境300内的客户端浏览器接收过程方块2802的过程。
接下来,所述过程处理XMLHttpRequest,为选定维基组件创建维基命令子类的实例,并且调用检索拖动的内容的方法(过程方块2804)。在过程方块2804期间,图5中的维基控制器500可以处理XMLHttpRequest并将请求路由到AJAX格式器,所述AJAX格式器在针对维基命令对象实例调用诸如getDrageContent之类的方法之前创建维基命令子类的实例。AJAX格式器是诸如图4中的请求处理机404的请求处理机的一部分并且被认为是图5中的维基控制器500的扩展。如上所述,图5中的路由器502解码入站请求并将请求路由到正确的请求处理机。所述AJAX格式器是所述请求处理机之一。
接下来,所述过程从维基对象检索当前维基页面实例并在使用XMLHttpResponse将所呈现的输出返回到客户端浏览器之前调用render方法(过程方块2806)。过程方块2806的过程可以由所述AJAX格式器执行并且可以将getDragContent调用的结果传递给诸如renderFragment之类的方法。
接下来,所述过程处理XMLHttpResponse并提取和显示超文本标记语言拖动内容(方块2808),此后所述过程结束。过程方块2808的过程由客户端浏览器上的异步JavaScript代码执行。所述JavaScript代码可以使用使拖动内容呈半透明的层叠样式表(CSS)样式。一旦已处理、提取和显示所述响应,就可以将所述过程的控制传递给拖动支持。
所述拖动支持包括响应于鼠标移动事件的事件驱动JavaScript代码。当用户按下鼠标按钮并移动鼠标时,浏览器JavaScript运行时将触发鼠标移动事件。所述拖动支持实现鼠标移动事件处理机JavaScript函数,该函数被调用以处理鼠标移动事件。所述拖动支持使用浏览器的JavaScript文档对象模型(DOM)应用编程接口(API)函数来确定鼠标指针的当前位置。所述拖动支持然后使用文档对象模型应用编程接口函数来设置拖动内容(如从AJAX请求返回到getDragContent的半透明可视内容)的位置。然后,只要用户一直按下鼠标按钮并继续移动鼠标,便会重复所述过程。当用户释放鼠标按钮时,浏览器的JavaScript运行时将触发鼠标弹起事件。所述拖动支持实现鼠标弹起事件处理机JavaScript函数,该函数被调用以处理鼠标弹起事件。所述拖动支持使用浏览器的JavaScript文档对象模型应用编程接口函数来确定鼠标指针的当前位置。所述拖动支持然后将XMLHttpRequest发送到服务器以将内容插入维基页面。
现在参考图29,其中示出了根据本发明的示例性实施例的组合维基页面内容的过程的流程图。本发明的示例性实施例的应用维基需要一种强大而一致的方法来合成在各种页面上创建的内容。维基组件通过“简化(markdown)”语法包括在维基页面源中,所述“简化”语法包括两个“{”字符,后跟维基组件名称,后跟空格,后跟以“名称="值"”语法表示的可选空格分隔的变元。例如,{{ImportPage page=″Homepage″/}},其中“ImportPage”是维基组件的名称。可以使用与维基组件相同的维基“简化”语法将任意维基页面的内容包括在另一页面中。要将名为“Homepage”的维基页面包括在当前页面中,维基用户仅需键入{{Homepage/}}并且Homepage内容将被直接扩展。
图29中的过程可以在诸如图10中的维基页面1000之类的复合内容上实现。所述过程始于将维基页面源解析为表示静态文本内容和维基组件的解析片段对象(过程方块2902)。过程方块2902的过程由诸如图5中的维基命令上下文544之类的维基命令上下文对象实现。在过程方块2902期间,页面被解析为以名为抽象语法树(AST)的树结构组织的解析片段,所述抽象语法树是维基页面内容的存储器中的内部表示。后面步骤中的操作现在可以通过遍历所述树并针对树节点执行操作来操纵页面内容。
接下来,所述过程调用遍历维基页面上的一系列维基组件的加载插件方法(过程方块2904)。将针对每个维基组件调用诸如LoadPlugins之类的方法来实例化实现每个维基组件的功能的适当维基命令子类。过程方块2904是创建页面内容的存储器内表示的进一步细化并且是一个过渡过程。
接下来,所述过程调用维基对象的加载命令方法来执行维基命令类加载。如果加载命令方法无法找到适当的维基命令类,则所述方法发出异常(过程方块2906)。过程方块2906的加载插件方法可以是loadPlugin。过程方块2906通过将支持的命令对象与维基组件解析片段进行关联来完成维基页面的存储器内表示的创建。
接下来,所述过程捕获异常并调用维基对象的页面存在方法来判定命名的维基页面是否真正为维基页面。将有效的页面名称加载到导入页面组件内(过程方块2908)。在过程方块2908中,如果诸如pageExists之类的方法返回有效页面,则维基命令上下文调用loadPlugin方法来加载在维基页面名称中传递的导入页面组件。所述导入页面组件用于嵌入命名页面的内容。
接下来,所述过程将导入页面组件添加到维基命令上下文组件的列表(过程方块2910)。接下来,所述过程在呈现过程中将导入页面组件扩展为命名维基页面的内容(过程方块2912),此后所述过程结束。在过程方块2912中,所述过程将importPage命令实例添加到所述组件列表。
现在参考图30,其中示出了根据本发明的示例性实施例的编辑命令的过程的流程图。图30中的过程可以在诸如图8中的维基页面800之类的页面上实现。所述过程始于响应于编辑维基页面的用户输入而显示维基组件的选项板(过程方块3002)。在过程方块3002中,用户可通过选择非常易于完成的复选框来提供用户输入。所述选项板是诸如图8中的选项板802之类的选项板。诸如维基页面800之类的页面可以包括任意数量的为用户提供是否可以选择和编辑组件的可视提示的醒目图示。可以由图3中的客户端环境300内的客户端浏览器来接收过程方块3002。
接下来,响应于用户选择醒目图示,所述过程调用将XMLHttpRequest发送到服务器来检索选定维基组件的属性编辑器的JavaScript功能(过程方块3004)。所述醒目图示可以是诸如图7中的醒目图示708之类的

map图标。
接下来,所述过程处理该请求并将处理委派给AJAX格式器。所述AJAX格式器创建维基命令上下文对象并调用关联的请求加载属性编辑器维基组件的加载插件方法(过程方块3006)。由图5中的维基控制器500执行过程方块3006。
接下来,所述过程调用在选定维基组件名称中传递的属性编辑器组件的draw方法。使用XMLHttpResponse将draw方法的结果返回到客户端(过程方块3008)。
接下来,所述过程处理包含选定组件的属性编辑器的超文本标记语言和JavaScript的XMLHttpResponse并使属性编辑器可见(过程方块3010)。所述处理以异步的方式完成并且可以使用层叠样式表(CSS)使属性编辑器可见。可以由图5中的维基控制器内的AJAX格式器实现过程方块3010的过程。
接下来,所述过程接收用户在属性编辑器中的输入并将XMLHttpRequest发送到服务器以更新选定维基组件的属性(过程方块3012)。由所述属性编辑器和相应的客户端浏览器来执行过程方块3012。
接下来,所述过程处理该请求并将处理委派给AJAX格式器。AJAX格式器创建维基命令上下文对象并调用关联的请求加载更新命令维基组件的加载插件方法(过程方块3014)。接下来,所述过程调用在选定维基组件名称中传递的更新命令组件的draw方法。所述更新命令组件更新在服务器上“简化”的维基组件源并返回指示成功或失败的XMLHttpResponse(过程方块3016),此后所述过程结束。可以由图5中的维基控制器500内的AJAX格式器实现过程方块3016的过程。
因此,本发明的示例性实施例提供了一种用于应用维基的计算机实现的方法、装置和计算机可用程序代码。本发明的示例性实施例允许用户轻松地创建和管理维基页面。用户可以通过拖放活动内容来编辑维基页面。可以根据用户的请求组合维基页面并且可以使用属性编辑器编辑维基页面。维基页面保存在用于浏览维基的包括节点和叶节点的页面树视图中。
现在参考图31,其中示出了根据本发明的示例性实施例的呈现维基命令的过程的流程图。图31中的过程可以在图4中的维基引擎404内实现。所述维基页面可以包括若干维基命令。每个维基命令同样可以包含其他维基命令。图31中的过程从维基引擎针对维基命令调用render方法开始(过程方块3102)。维基引擎可以是诸如图4中的维基引擎402之类的引擎。所述render方法可以是诸如图12中的render 1226之类的页面处理方法。
接下来,所述过程调用open方法(过程方块3104)。过程方块3104的open方法为维基命令提供了开始显示所呈现内容的机制。例如,命令可以生成超文本标记语言的“开始”片段,例如“<SPAN>”Forecast命令。将使用close方法生成所述SPAN的结尾片段。接下来,所述过程判定所述维基命令是否允许编辑(过程方块3106)。维基命令将忽略allowEdit的设置来判定所述命令是否允许编辑命令内容。true值表示可以编辑命令。如果维基命令允许编辑,则所述过程将生成一个醒目图示(过程方块3108)。
如果所述维基命令不允许编辑,所述过程将调用renderBody(过程方块3110)。renderBody为命令提供了呈现或发出相应的超文本标记语言内容的机会。接下来,renderBody显示醒目图示,然后针对所有现有子节点中的每个子节点调用render(过程方块3112)。例如,在过程方块3112中,可以使用draw方法显示所述醒目图示。所述维基命令可以形成层次结构,也就是说,维基命令可以包含其他维基命令。因此,所述维基命令形成命令树。子节点是被包含或嵌入的第一代维基命令。接下来,所述过程调用close方法(过程方块3114),此后所述过程结束。
现在参考图32,其中示出了根据本发明的示例性实施例的属性编辑的预备过程的流程图。图32中的过程用于编辑维基命令的属性。所述过程从呈现命令开始(过程方块3202)。所述命令在诸如图31中的过程之类的呈现过程中呈现。接下来,所述过程生成默认的属性编辑器并在所生成的页面上隐藏属性编辑器(过程方块3204),此后所述过程结束。多数情况下,用户不与属性编辑器进行交互,因此属性编辑器的默认状态为“隐藏”,直到用户需要时才显示。如果命令选择不实现自身,则在过程方块3204中生成默认的属性编辑器。命令可以通过忽略generatePropertyEditor协议来实现属性编辑器。
现在参考图33,其中示出了根据本发明的示例性实施例的属性编辑过程的流程图。图33中的过程可以在图32中的过程之后发生。首先,所述过程接收来自用户的触发要针对选定命令调用的属性编辑器的信号(过程方块3302)。例如,在过程方块3302中,用户可以单击触发属性编辑器的维基命令的醒目图示。
接下来,所述过程标识客户端侧属性编辑器子系统的选定命令(过程方块3304)。维基环境包括通过跟踪在所生成的醒目图示上的鼠标单击来跟踪选定组件的JavaScript基本子系统。在醒目图示上的单击操作将标识选定命令。可以由诸如图13中的醒目图示1302之类的醒目图示来执行过程方块3304。
接下来,所述过程生成AJAX调用来请求服务器侧命令代表呈现客户端侧属性编辑器(过程方块3306)。可以由诸如图13中的属性编辑器1304之类的属性编辑器来执行过程方块3306。在过程方块3306的执行期间,所述AJAX调用将调用维基命令处理器的服务器统一资源指示器,后者将页面加载到在请求的对象变量中标识的服务器内。统一资源指示器还包含表示维基命令输入值的新值的一组新的对象变量。所述引擎然后更新维基命令的输入值并请求维基命令根据所述新值更新相应的可视表示。可以由诸如图12中的generatePropertyEditor 1222之类的命令启动过程方块3306。
接下来,所述过程选择属性编辑器(过程方块3308)。在过程方块3308中,选定的维基命令可以选择通过忽略generatePropertyEditor方法提供专用属性编辑器,也可以继承默认的实施方式。备选地,维基命令可以提供其自己的属性编辑器,该属性编辑器包括编辑维基命令的参数、属性和特性所需的超文本标记语言。可以根据选定命令的特性在过程方块3308中选择属性编辑器。
所述属性编辑器然后接收用户交互并提交对维基命令参数的更新(过程方块3310)。接下来,所述属性编辑器生成基于AJAX的请求,所述请求指示服务器页面处理器更新给定页面上的选定维基命令的参数列表(过程方块3312)。接下来,命令处理器查找命令、实例化命令,以及将命令的值设为从客户端传递的新值(过程方块3314)。接下来,命令处理器将询问命令是否应通过调用refreshOnUpdate方法来更新整个页面(过程方块3316)。过程方块3316由图4中的命令处理器406实现。如果命令指示应更新整个页面,则在客户端上重新显示整个页面(过程方块3318),此后所述过程结束。如果命令指示无需更新整个页面,则命令呈现自身,且在客户端超文本标记语言文档上的getTargetDIV区域中显示新的内容(过程方块3320),此后所述过程结束。
作为过程方块3320的一个实例,用户可以使用属性编辑器更新实现过程的Forecast维基命令的属性值,如下面的实例所述。用户使用属性编辑器更新邮政编码属性。属性编辑器生成更新命令请求并将所述命令发送到服务器。服务器接收该请求、加载包含Forecast命令的页面、将新的邮政编码置于页面中、保存更新后的页面,并且询问Forecast命令该命令是否需要刷新页面。Forecast命令回答“否”,因此服务器要求Forecast命令使用从属性编辑器发送的输入值的新值来呈现自身。将生成的超文本标记语言片段发送回客户端并将其置于由getTargetDIV协议标识的超文本标记语言元素中。所述命令可以在诸如图31中的过程之类的过程中呈现自身。
现在参考图34,其中示出了根据本发明的示例性实施例的选择属性编辑器的过程的流程图。图34中的过程是图33中的过程方块3308的更具体的描述。所述过程始于默认的属性编辑器调用getParameters来确定与选定命令关联的参数的列表和类型(过程方块3402)。接下来,所述过程针对每个返回的参数生成客户端侧编辑器(过程方块3404)。所述参数列表提供了所返回参数的名称、帮助字符串以及可能的值。
接下来,所述过程将聚合的内容传送到客户端,以便在客户端属性编辑器中呈现(过程方块3406),此后所述过程结束。聚合内容是从特定命令的属性编辑器接收的信息。例如,所述聚合内容包括针对显示的命令在过程方块3402和3404中获取的每个元数据和参数以便示出属性编辑器。可以在如图33中的过程方块3306之类的步骤期间定义的客户端属性编辑器中呈现所述聚合内容。
图35-36是在维基页面的生命周期内使用的页面生命周期过程。现在参考图35,其中示出了根据本发明的示例性实施例的删除页面的过程的流程图。所述过程从将页面标记为删除开始(过程方块3502)。用户可以基于内容陈旧、内容失去相关性或任何其他原因对页面进行标记。在过程方块3502中,将页面标记为删除。所述页面并未真正从数据库中删除。接下来,通知所述页面上的每个命令其所属页面已被删除(过程方块3504),此后所述过程结束。可以使用诸如图12中的wasDeleted 1218之类的方法通知每个命令。过程方块3504用于清除与给定页面上的维基命令关联的永久性资源。
现在参考图36,其中示出了根据本发明的示例性实施例的修订页面的过程的流程图。所述过程从新建空页面开始(过程方块3602)。接下来,所述过程将现有页面克隆到新页面中(过程方块3604)。接下来,所述过程通知页面上的每个命令aboutToSave(将被保存)(过程方块3606)。aboutToSave可以是诸如图12中的生命周期1204之类的生命周期命令。
接下来,将所述页面保存到数据库(过程方块3608)。然后,所述过程调用wasDeleted方法以通知该页面其已被从页面删除(通过不再作为页面的一部分)(过程方块3610)。针对每个不再作为页面一部分的命令执行过程方块3610。接下来,所述过程通知页面上的每个命令该页面wasSaved(已保存)(过程方块3612),此后所述过程结束。过程方块3612可以使用诸如图12中的wasSaved 1216之类的方法。
现在参考图37,其中示出了根据本发明的示例性实施例的复制页面的过程的流程图。所述过程从新建空页面开始(过程方块3702)。接下来,所述过程将现有页面克隆到新页面中(过程方块3704)。接下来,所述过程针对页面上的每个命令调用wasCopied方法(过程方块3706)。过程方块3706可以使用诸如图12中的wasCopied 1220之类的方法。
接下来,所述过程保存已克隆的页面,针对页面上的每个命令调用wasSaved(过程方块3708),此后所述过程结束。
现在参考图38,其中示出了根据本发明的示例性实施例的重命名页面的过程的流程图。图38中的过程从加载原始页面开始(过程方块3802)。接下来,所述过程更新页面的标记名称来针对页面所包含的所有子页面反映页面的新名称(过程方块3804)。接下来,所述过程调用wasRenamed来通知维基命令已针对该页面上的每个维基命令重命名了页面(过程方块3806),此后所述过程结束。
现在参考图39,其中示出了根据本发明的示例性实施例的取消删除页面的过程的流程图。图39中的过程始于通过将isLatest标志设为true而将页面从陈旧状态转为活动状态(过程方块3902)。接下来,所述过程通知页面上的每个命令页面wasUndeleted(已取消删除)(过程方块3904),此后所述过程结束。在先前从给定页面删除命令之后将命令重新放回所述给定页面时调用waswasUndeleted。
现在参考图40,其中示出了根据本发明的示例性实施例的构建选项板的过程的流程图。维基环境提供了安装在维基中的可用命令的选项板。所述选项板提供了一种显示维基环境中的可用维基命令的可视机制。所述选项板被定义为由getCategory协议定义的多个种类。使用图40中的过程针对维基中的每个命令生成所述选项板。
首先,所述过程判定命令是否支持编辑(过程方块4002)。如果维基支持编辑,所述过程将调用getDropContent,后者返回要插入与给定维基命令关联的页面中的默认维基标记(过程方块4004),此后所述过程结束。可以响应于将维基命令拖离所述选项板并将其放置在页面上而执行过程方块4004。
如果所述过程在过程方块4002中判定命令不支持编辑,则所述过程检索所述命令的种类(过程方块4006)。由维基环境中的命令来定义种类。某些示例性种类包括“Data Services”和“Page Content”。同一种类中的每个命令都在选项板视图上的同一标签中显示。接下来,所述过程检索名称(过程方块4008)。可以使用诸如图12中的getName 1212之类的方法检索名称。接下来,所述过程检索描述(过程方块4010)。可以使用诸如图12中的getDescription 1214之类的方法检索描述。接下来,所述过程检索图标(过程方块4012)。可以使用诸如getIcon之类的方法检索图标。接下来,所述过程检索拖动内容并将每个命令的元素置于选项板上(过程方块4014)。可以使用诸如getDragContent之类的方法检索拖动内容。
命令可以显示唯一的表达命令用法的图标或醒目图示。所述getIcon协议用于检索在呈现时显示命令图标的超文本标记语言片段。很多时候,当组件首次被放到页面上以将新命令插入所述页面时,命令希望为用户提供不同的超文本标记语言内容以拖离已放置在页面上的选项板。可以通过忽略getDragContent方法来指定实际从选项板拖动的内容。
接下来,所述过程返回过程方块4004并调用getDropContent,后者返回要插入与给定维基命令关联的页面中的默认维基标记,此后所述过程结束。
现在参考图41,其中示出了根据本发明的示例性实施例的配置过程的流程图。有时需要配置驻留在维基环境中的维基命令。例如,GoogleMap命令需要与应用程序接口一起使用的密钥。
图41中的过程用于使命令能够配置自身并维护与特定维基命令关联的配置数据集。图41中的过程从显示总体分类信息开始(过程方块4102)。接下来,所述过程调用configure方法(过程方块4104)。configure方法允许命令生成用于编辑与维基中的维基命令关联的数据的超文本标记语言视图。接下来,所述过程调用get/setPluginData方法(过程方块4106),此后所述过程结束。get/setPluginData方法用于检索和存储影响维基站点的维基命令数据。例如,命令数据包括调用命令所需的初始化数据,例如注册码。
现在参考图42,其中示出了根据本发明的示例性实施例的导出过程的流程图。维基支持导入和导出完整的维基或维基的子集。导出格式包含导出的页面的列表以及页面内容(包括命令和附件)。维基引擎调用图42中的过程来帮助导出页面集合。所述页面集合是一个或多个页面。
图42中的过程从导出包括页面名称的总体页面信息开始(过程方块4202)。接下来,所述过程针对页面上的每个维基命令调用abountToExport(过程方块4204)。接下来,所述过程调用getVersion方法并将其存储为输出的一部分(过程方块4206)。如果在过程方块4204中调用的abountToExport返回数据,则在过程方块4206中将所述数据保存为输出流中的串行化PHP对象。
接下来,所述过程导出与页面关联的命令(过程方块4208),此后所述过程结束。可以将注释附加到每个维基页面,所述注释代表用户对各个页面的评论。所述注释用作在维基中进行协作的机制。例如,专利代理人可以询问发明人如何在维基页面上使用注释。
现在参考图43,其中示出了根据本发明的示例性实施例的导入过程的流程图。维基引擎调用图43中的过程以导入页面上的每个维基命令。
图43中的过程从导入包括页面名称的常规页面信息开始(过程方块4302)。接下来,所述过程判定命令是否保存了数据(过程方块4304)。例如,所述过程判定命令是否在诸如图42中的过程方块4206之类的步骤中保存了数据。如果命令保存了数据,所述过程取消串行化数据(过程方块4306)。默认实施方式确保已保存的版本名称与当前安装的维基命令版本的名称匹配。接下来,所述过程使用取消串行化的数据调用wasImported(过程方块4308),此后所述过程结束。如果在过程方块4304中保存了数据,所述过程将返回新的页面(过程方块4310),此后所述过程结束。
因此,本发明的示例性实施例还提供了一种用于扩展维基环境的能力的计算机实现的方法、装置和计算机可用程序代码。面向对象的框架用于定义如何扩展对象以便轻松地创建协作环境。将处理维基命令类,以便有效地管理所部署的环境,从而促进重用性、适应性以及易用性。
现在参考图44,其中示出了根据本发明的示例性实施例的检索和解析树的过程的流程图。所述树是由示例性实施例使用的核心处理数据结构。所述树可以是诸如图11中的抽象语法树1102之类的抽象语法树。图44中的过程由诸如图11中的维基命令上下文1104之类的维基命令上下文实现。所述维基命令上下文检索页面并将其解析为抽象语法树(过程方块4402),此后所述过程结束。由维基加载维基页面。所述维基页面实例化创建所述树的维基命令上下文。
现在参考图45,其中示出了根据本发明的示例性实施例的处理网页以便在维基中显示的过程。图45中的过程可以由维基引擎实现,具体地说,由命令处理器实现,例如图4中的维基引擎402和命令处理器406。图45中的过程始于处理引擎访问抽象语法树中的每个节点来针对抽象语法树中存在的命令调用initiation方法(过程方块4502)。initiation方法可以是命名的init方法。所述init方法查找抽象语法树的每个节点内的命令并使所述命令可用于其他命令。因此,所述命令可以与另外的包括其他相同命令的命令进行通信。在过程方块4502期间,命令负责初始化命令的内部数据结构、发布所提供的主题,以及订阅数据中心内感兴趣的主题。主题代表发布者和订阅者之间的兴趣领域。例如,发布者/订阅者环境中的一个重要主题是“data/available”。其他主题实例包括“address”和“latlong”。在过程方块4502期间,命令可以将需要在使用initi方法调用所有命令之后处理的事件放置在队列中。事件将状态更改从一种状态传递到另一状态。所述事件激励所述传递来实现状态更改。
将对事件进行排队,以便可以有序地串行处理事件并且不会在诸如Javascript客户端之类的单线程执行环境中丢失事件。事件排队使得核心执行环境能够确保所有组件都被正确地初始化并准备好在分配事件之前处理事件。可以在本发明的示例性实施例的每个阶段执行所述命令并且所述命令可以忽略默认的实施方式。
接下来,所述命令处理器针对数据中心调用processEvents来传送所有已排队的事件(过程方块4504)。发布和订阅模型规定订阅者向数据中心注册感兴趣的事件,以便能够从数据中心接收事件。发布者触发在数据中心上排队的事件。在processEvents阶段,数据中心处理每个排队的事件并确定感兴趣的订阅者,接着调用订阅者以便传送事件。所述排队的事件是在过程方块4502中放入队列的事件。接下来,命令处理器访问抽象语法树中的每个节点来针对抽象语法树中存在的命令调用discover方法(过程方块4506)。
所述discover方法定位与命令相关的信息源以获取命令之间更详细的交互。在过程方块4506期间,生成者、使用者或控制器命令可以使用数据中心相互进行定位并建立彼此(而不是数据中心)之间的直接事件连接。命令可以选择像上面所述的那样通过数据中心间接地交互,或在discover阶段定位其他命令。在处理的discover阶段,命令可以就发布者、订阅者和主题等询问数据中心。如果需要,命令也可以直接通信,绕过上面建立的间接通信方法。此能力允许更有效地处理事件并无需将数据中心作为通信接口。此外,命令可以将自身从数据中心删除。在使用initiation方法调用所有命令之后,命令可以将需要处理的事件排入队列或放入队列。
接下来,所述命令处理器针对数据中心调用processEvents来传送所有排队的事件(过程方块4508)。所述排队的事件是在过程方块4506中排入队列的事件。接下来,所述命令处理器访问抽象语法树中的每个节点来针对抽象语法树中存在的命令调用render方法(过程方块4510),此后所述过程结束。在过程方块4510中,命令同时呈现页面的可视内容和不可视内容。例如,可视内容可以包括列表数据的表格显示。不可视内容可以包括搜索数据列表并且没有可视内容的SearchList命令。还在过程方块4510期间呈现诸如页面的文本片段之类的非命令节点。在图45中的任何步骤期间,命令都可以通过针对页面源片段递归地调用图45中的过程来额外地处理其他页面源片段。页面源片段都是非命令内容。页面源片段捕获页面上的命令间的所有非命令内容。
现在参考图46,其中示出了根据本发明的示例性实施例的处理事件的流程图。由诸如图11中的数据中心1112之类的数据中心执行图46中的处理步骤。图46是图45中的过程方块4504的更详细的解释。
所述过程始于数据中心将事件移出队列(过程方块4602)。接下来,所述数据中心将事件传送给已注册的订阅者(过程方块4604)。已注册的订阅者通常为命令,但是备选地可以为独立的功能单元。已注册的订阅者在启动期间进行注册,在所述启动期间,命令向所有其他命令发布、订阅或注册感兴趣的内容。接下来,所述数据中心将所有传送给已注册的订阅者的结果事件放入队列(过程方块4606)。过程方块4606的事件是那些在过程方块4604中传送给已注册的订阅者的事件。
接下来,所述数据中心针对已由数据中心的数据传送机制提供其输入值的命令触发invoke方法(过程方块4608),此后所述过程结束。命令提供一组输入值以执行其功能。输入值可以是静态的,也可以是动态的。当输入值是动态的时,维基引擎将跟踪数据何时变得可用作命令的输入。当输入变得可用时,其被提供给命令并因此变为“被执行”。
因此,本发明的示例性实施例还提供了一种用于处理网页以便在维基环境中显示的计算机实现的方法、装置和计算机可用程序代码。在呈现最终视图之前,新添加的组件能够与采用抽象语法树形式的其他组件进行交互。将启用组件以便从采用抽象语法树节点的形式的页面提供上下文发现新的特性和参数设置。在呈现最终视图之前,组件使用处理和验证机制验证输入并报告错误。在页面提供序列的生命周期内处理目标事件。在单个服务器上管理同一组件的多个版本。
现在参考图47,其中示出了根据本发明的示例性实施例的实例化服务器侧数据中心对象时发生的操作的流程图。所述过程由图4中的维基引擎402实现。
所述过程始于接收从客户端加载新页面的请求(过程方块4702)。当服务器接收到加载新页面的请求时,所述过程将根据服务器侧维基数据中心类变量和方法所指定的特性和方法,创建与所请求的新页面关联的客户端侧数据中心对象的实例(过程方块4704)。所述过程向服务器侧数据中心对象注册服务器上的所有组件(过程方块4706),此后所述过程结束。
现在参考图48,其中示出了根据本发明的示例性实施例的实例化客户端侧数据中心对象时发生的操作的流程图。由客户端上的处理单元(如图2中的客户端200内的处理单元206)实现所述过程。
所述过程始于加载从服务器接收的新页面(过程方块4802)。当客户端上的处理单元加载页面的超文本标记语言或JavaScript时,所述过程将根据客户端侧维基数据中心类变量和方法所指定的特性和方法,创建与所请求的新页面关联的客户端侧数据中心对象的实例(过程方块4804)。所述过程向客户端侧数据中心对象注册客户端上的所有组件(过程方块4806),此后所述过程结束。
现在参考图49,其中示出了根据本发明的示例性实施例的服务器侧数据中心接收到来自客户端侧数据中心的处理事件的请求时发生的操作的流程图。由服务器上的数据中心(如图5中的数据中心558和图6中的数据中心638)实现所述数据中心。
所述数据中心对象始于从客户端侧数据中心接收页面请求和/或事件(过程方块4902)。所述数据中心对象使用一组方法处理所述请求/事件(过程方块4904)。由与客户端关联的生成者命令来生成所述请求/事件。所述一组方法可以是数据中心对象的一组方法,数据中心主题对象、数据中心事件对象的一组方法或与数据中心对象、数据中心主题对象和/或数据中心事件对象关联的方法的任意组合。所述数据中心对象将处理后的事件发送给一组使用者命令(过程方块4906),此后所述过程结束。
现在参考图50,其中示出了根据本发明的示例性实施例的当生成者命令处理事件时发生的操作的流程图。在该示例性实例中,所述过程由诸如图14中的维基命令对象1404和1412之类的命令对象实现。
所述过程从针对命令调用init方法之后初始化命令时开始(过程方块5002)。由数据中心调用初始化所述命令的init方法。所述命令向数据中心注册为诸如主题A之类的给定事件主题的生成者(过程方块5004)。所述命令检索数据(过程方块5006)。在该示例性实例中,检索数据可以包括接收用户输入,以及检索数据库或其他数据存储设备中的数据。所述命令将主题A的事件对象触发到数据中心(过程方块5008),此后所述过程结束。
现在参考图51,其是示出了根据本发明的示例性实施例的当使用者命令处理事件时发生的操作的流程图。在该示例性实例中,由诸如图14中的维基命令对象1404和1412之类的命令对象实现所述过程。
所述过程从使用者命令进行初始化以响应数据中心针对所有命令调用init方法开始(过程方块5102)。所述命令向数据中心注册为诸如主题A之类的给定事件主题的使用者命令(过程方块5104)。当数据中心针对使用者命令调用callback方法时,所述命令从数据中心接收主题A的事件(过程方块5106)。所述命令处理事件(过程方块5108),所述命令将处理结果呈现为超文本标记语言或JavaScript以响应数据中心针对所述命令调用render方法(过程方块5110)。最后,所述命令将呈现结果发送到数据中心(过程方块5112),此后所述过程结束。
现在参考图52,其中示出了根据本发明的示例性实施例的当客户端侧数据中心接收事件时发生的操作的流程图。在该示例性实例中,由诸如图6中的数据中心634、图14中的数据中心1412和图19A中的数据中心1910之类的客户端侧数据中心实现所述过程。
所述过程始于客户端侧数据中心从用户和/或组件(如生成者组件)接收事件(过程方块5202)。所述客户端侧数据中心立即处理事件(过程方块5204)。在该步骤中,所述客户端侧数据中心判定一个或多个命令是否已注册为与事件对象关联的给定主题的使用者。如果一个或多个命令已注册为给定主题的使用者,则所述客户端侧数据中心针对所述一组已注册的使用者调用callback方法,以便将事件发送给已注册的使用者(过程方块5210),此后所述过程结束。
现在参考图53,其中示出了根据本发明的示例性实施例的当服务器侧数据中心处理事件时发生的操作的流程图。在该示例性实例中,由诸如图6中的数据中心638、图14中的数据中心1402和图15中的数据中心1500之类的服务器侧数据中心实现所述过程。所述过程在服务器侧数据中心针对与服务器关联的所有命令调用初始化“init()”方法时开始(过程方块5302)。
所述服务器侧数据中心接收作为给定主题事件的使用者的命令的注册(过程方块5304)。所述服务器侧数据中心接收给定事件主题的事件(过程方块5306)。所述事件可以包括数据。可以从用户输入或从另一命令接收所述事件(过程方块5308)。所述服务器侧数据中心将所述事件添加到事件队列(过程方块5310)。
所述服务器侧数据中心在processEvents方法阶段处理事件队列中的事件。所述服务器侧数据中心针对为给定主题注册的所有使用者命令调用callback方法。所述服务器侧数据中心调用callback方法以将事件发送给与该事件关联的事件主题的注册使用者(过程方块5316)。
所述服务器侧数据中心判定是否接收到具有正在被处理的给定事件主题的新事件(过程方块5318)。如果接收到新事件,则所述服务器侧数据中心将该事件添加到事件队列(过程方块5310)以便在下一processEvent阶段进行处理。现在返回过程方块5318,如果未接收到任何新事件数据,则所述服务器侧数据中心将针对参与事件处理的所有命令调用render方法(过程方块5320)。所述服务器侧数据中心收集从参与事件处理的所有命令接收的呈现结果并将内容发送到客户端进行显示(过程方块5322),此后所述过程结束。返回到客户端的内容以超文本标记语言或Javascript的形式返回,以便在客户端浏览器中显示。
现在参考图54,其中示出了根据本发明的示例性实施例的当客户端侧数据中心判定是否将事件发送到服务器进行处理时发生的操作的流程图。在该示例性实例中,由诸如图6中的数据中心634、图14中的数据中心1410和图19A中的数据中心1910之类的客户端侧数据中心实现所述过程。
所述过程从客户端侧数据中心接收由生成者命令触发的事件开始(过程方块5402)。所述客户端侧数据中心将事件发送给客户端上向数据中心注册为与该事件关联的事件主题的使用者的任何命令(过程方块5404)。所述客户端侧数据中心判定是否应将所述事件发送到服务器侧数据中心(过程方块5406)。如果所述客户端侧数据中心判定不应将所述事件发送到服务器侧数据中心,则所述客户端侧数据中心在客户端上处理事件(过程方块5408)。如果所述客户端侧数据中心判定应将所述事件发送到服务器,则所述客户端侧数据中心调用processClientEvent方法以将所述事件发送到服务器侧数据中心进行处理(过程方块5410)。所述客户端侧数据中心从服务器侧数据中心接收processClientEvent的结果(过程方块5412)。所述客户端侧数据中心使用从服务器的processClientEvent的结果中接收的新维基页面内容来更新客户端上所显示的维基页面(过程方块5414),此后所述过程结束。
现在参考图55,其中示出了根据本发明的示例性实施例的在服务器侧数据中心作为processClientEvent方法调用的结果接收来自客户端侧数据中心的事件时发生的操作的流程图。在该示例性实例中,由诸如图6中的数据中心638、图14中的数据中心1402和图15中的数据中心1500之类的服务器侧数据中心实现所述过程。
所述过程始于所述服务器侧数据中心从客户端侧数据中心接收具有给定事件主题(如主题B)的事件(过程方块5502)。所述服务器侧数据中心将主题B的事件发送到事件队列(过程方块5504)。所述服务器侧数据中心在下一processEvent阶段处理事件队列中主题B的事件(过程方块5506)。所述服务器侧数据中心将主题B的事件发送到服务器上注册为主题B的侦听者/使用者的一组使用者(过程方块5508)。所述服务器侧数据中心从服务器上的生成者接收主题B的新的事件数据(过程方块5510)。触发所述新事件的生成者是在过程方块5508中接收事件数据的一个或多个使用者。所述服务器侧数据中心将所述新事件添加到事件队列(过程方块5512)。
所述服务器侧数据中心在下一processEvent阶段处理主题B的新事件(过程方块5514)。所述服务器侧数据中心将所述新事件发送到服务器上注册为主题B的侦听者/使用者的使用者(过程方块5516)。所述服务器侧数据中心针对参与主题B的事件处理的所有命令调用render方法(过程方块5518)。所述服务器侧数据中心接收以超文本标记语言或JavaScript形式呈现的命令处理事件的结果(过程方块5520)。所述服务器侧数据中心绑定来自有所命令的呈现并将所述呈现发送到客户端侧数据中心(过程方块5522),此后所述过程结束。
本发明的示例性实施例还提供了一种用于事件触发的变元检测的计算机实现的方法、装置和计算机可用程序代码。事件触发指将事件发送到数据中心进行处理的过程。
所述过程聚合来自一组源的变元数据以形成聚合数据集。所述过程生成一系列用于触发事件的最小充分变元以形成最小变元集。所述过程将所述聚合数据集与所述最小变元集进行比较以判定所述最小变元集是否可用。所述过程触发命令以便触发事件,以响应判定所述最小变元集可用。
现在参考图56,其中示出了根据本发明的示例性实施例的当维基变元对象执行最小充分变元处理时发生的操作的流程图。在该示例性实例中,由诸如图14中的维基命令1404或维基命令1412之类的维基命令对象实现所述过程。
所述过程在维基变元对象聚合来自一组源的变元数据时开始(过程方块5602)。所述维基变元对象根据声明的参数准则生成最小充分变元集以形成变元集(过程方块5604)。所述维基变元对象将聚合变元数据集与最小变元集进行比较(过程方块5606)。所述维基变元对象判定是否存在充分的变元(过程方块5608)。如果所述维基变元对象判定存在充分的变元,则所述维基变元对象触发指示所需数据可用于触发事件的dataAvailable事件(过程方块5610),此后所述过程结束。
如果所述维基变元对象判定不存在充分的变元,则所述维基变元对象判定是否接收到新数据(过程方块5612)。如果已接收到新数据,则所述过程返回过程方块5604,其中维基变元生成新的聚合变元数据集以判定现在是否存在充分的变元。如果未接收到任何新数据,所述过程此后将结束。
现在参考图57,其中示出了根据本发明的示例性实施例的当维基变元对象判定是否设置了命令的最小必要变元时发生的areArguments设置方法的过程的流程图。在该示例性实例中,由诸如图14中的维基命令1404或维基命令1412之类的维基命令对象实现所述过程。
所述过程从接收来自对象的调用以触发要求在触发变元之前存在最小充分变元值集的事件开始(过程方块5702)。所述过程在变元列表中生成一系列必要变元(过程方块5704)。接下来,所述过程判定所述变元列表中是否存在更多尚未被检查的变元(过程方块5706)。换言之,所述过程通过判定所述变元列表中的哪个变元是所述列表中下一要被检查的变元来标识下一要被检查或处理的变元。所述过程通过重复地判定变元是否可用和有效来检查列表中的下一变元,直到已检查所述列表中的所有变元的可用性和有效性。如果所述列表不包含任何其他未处理或未检查的变元,则所述过程将布尔值“true”返回到调用方对象(过程方块5710),此后所述过程结束。
返回过程方块5706,如果所述列表包含下一未处理或未检查的变元,则所述过程判定是否设置了所述变元列表中的下一变元(过程方块5708)。所述过程从未处理变元列表中删除下一变元(过程方块5706)。如果所述过程在过程方块5708中判定已设置了变元,所述过程将返回过程方块5706来继续处理所述列表,直到已检查所述变元列表中的所有变元。如果所述过程判定未设置变元,则所述方法将布尔值“false”返回到调用方(过程方块5712),此后所述过程结束。
现在参考图58,其中示出了根据本发明的示例性实施例的用于检测是否应触发argument/available事件的setClientArgument方法的过程的流程图。在该示例性实例中,由诸如图14中的维基命令1404或维基命令1412之类的维基命令对象实现所述过程。
所述过程从判定是否设置了标识符变元开始(过程方块5802)。所述标识符变元是属于数据中心命令的默认变元。所述标识符变元用于在事件的存在期间在数据中心内唯一地标识所述事件。如果所述过程判定未设置所述标识符变元,所述过程随即结束。
返回过程方块5802,如果设置了标识符变元,则所述过程判定在触发已标识的事件之前需要存在的所有变元是否都可用(过程方块5806)。所述过程通过检查标志(其判定先前定义的必要变元集中的所有变元是否可用)来做出此判定。如果所述过程判定必要变元集中先前定义的变元不可用,则所述过程调用areArgumentsSet方法(过程方块5808)。如果所述过程从areArgumentsSet方法接收到返回值“false”,所述过程此后结束。
现在返回步骤5808,如果变元设置过程返回“true”值,所述过程将创建数据可用事件对象(过程方块5810)。所述数据可用事件对象指示在触发已标识的事件之前需要存在的所有变元都存在。所述过程触发数据可用事件对象以触发与已标识的事件关联的命令,从而触发所述已标识的事件(过程方块5812)。
返回过程方块5806,如果所述过程判定areArgumentsSet方法像图57中的过程方块5708中所示的那样返回“true”,所述过程将创建数据可用事件对象(过程方块5810)。接下来,所述过程针对数据中心对象调用fireEvent方法,且将所述数据可用事件作为所述方法的变元来触发事件对象(过程方块5812),所述fireEvent方法将事件传递到任何侦听过程。所述过程此后结束。
图59是示出根据本发明的示例性实施例的使用维基页面定义维基页面布局的操作的流程图。在过程方块5912至5920中特别突出显示了继承维基页面的维基页面布局的操作。图59中的操作由诸如图4中的维基引擎402之类的维基引擎实现,更具体地说,由诸如图5中的维基控制器500之类的维基控制器实现。所述操作从维基引擎接收显示页面的请求开始(过程方块5902)。所述请求通常是由远程客户端浏览器发出的HTTP请求。维基控制器对象处理所述请求。所述维基控制器对象开始呈现与布局页面组合的所请求页面的过程(过程方块5904)。
在本发明的示例性实施例中,通过调用诸如图5中的维基对象508之类的维基对象的showPage方法来调用所述呈现所请求页面的过程。所述showPage方法检索所请求的维基页面并呈现可以在客户端浏览器中显示的所请求维基页面的HTML版本。所述维基对象用作生成最新被请求维基页面的内容所使用的所有对象和字段的储存库。作为页面呈现过程的一部分,将调用第一子过程(过程方块5906)。所述第一子过程执行创建所请求页面的数据模型所需的数据操纵。在本发明的示例性实施例中,所请求页面的数据模型是诸如图5中的维基页面526之类的维基页面对象。在本发明的示例性实施例中,所述第一子过程是由showPage方法调用的processPage方法。
所述第一子过程调用第二子过程(过程方块5908)。所述第二子过程的用途是加载与作为当前请求的主题的维基页面关联的维基布局页面。在本发明的示例性实施例中,所述第二子过程是loadLayout方法。
所述第二子过程判定所请求维基页面的数据模型的布局字段是否包含维基布局页面名称(过程方块5910)。在本发明的示例性实施例中,所述布局字段是维基页面对象的对象变量(如图5中的页面526的对象变量528)。如果所述第二子过程判定布局字段不包含当前所请求维基页面的维基布局页面名称(过程方块5910的“否”输出),则所述第二子过程判定当前所请求维基页面是否具有父辈维基页面(过程方块5912)。父辈维基页面是那些在页面命名层次结构中的较高级别上出现的维基页面。例如,如果某个维基页面名为“LevelOne/LevelTwo”并且存在一个名为“LevelOne”的维基页面,则名为“LevelOne”的维基页面被认为是维基页面“LevelOne/LevelTwo”的父辈。在本发明的另一示例性实施例中,所述第二子过程通过检查维基页面对象的路径字段来判定当前所请求的维基页面是否具有父辈维基页面。如果所述路径字段包含维基页面的名称,则当前所请求的维基页面被判定为具有父辈维基页面。
如果所述第二子过程判定当前所请求的维基页面具有父辈维基页面(过程方块5912的“是”输出),则所述第二子过程检索路径,将路径加载到数组,并反转数组顺序以便首先显示最近的父辈页面(过程方块5914)。在页面名称层次结构中,最近的父辈页面是在最后一个名称段之前立即出现的名称段。例如,如果某个页面名为“LevelOne/LevelTwo/LevelThree”,则该页面的最近的父辈页面是名为“LevelTwo”的页面。该页面的最远的父辈页面是名为“LevelOne”的页面。接下来,所述第二子过程判定Wiki_pages表中的行或表项是否与路径数组中的页面标识之一匹配(过程方块5916)。Wiki_pages表是数据库中包括维基页面对象的对象变量的表。在本发明的示例性实施例中,页表中的表项或行包括以下字段identity(ID)、account、tag、time、body、owner identity(ownerID)、modified-by、isLatest、layout、isLayout、isEditing、commentOn、path、attribute(attrib)和errors。
如果第二子过程判定存在匹配(过程方块5916的“是”输出),所述第二子过程将加载作为匹配项返回的维基布局页面(过程方块5918)。被发现为在Wiki_pages表中具有匹配表项的父辈页面称为匹配的父辈页面。在本发明的示例性实施例中,所述第二子过程通过调用加载作为匹配项从查询返回的维基布局页面的第三子过程,来加载作为匹配项从查询返回的维基布局页面。在本发明的另一示例性实施例中,所述第三子过程是维基对象的loadPage方法。然后所述操作转到过程方块5924。
如果所述第二子过程判定不存在匹配(过程方块5916的“否”输出),所述第二子过程将加载默认的布局页面(过程方块5920)。在本发明的示例性实施例中,将调用所述维基对象的loadPage方法来加载默认的布局页面。然后所述操作转到过程方块5924。
如果所述第二子过程判定当前所请求的维基页面没有父辈维基页面(过程方块5912的“否”输出),所述第二子过程将加载默认布局页面(过程方块5920)。在本发明的示例性实施例中,将调用所述维基对象的loadPage方法来加载默认布局页面。然后所述操作转到过程方块5924。
如果所述第二子过程判定为当前所请求的维基页面设置了布局字段(过程方块5910的“是”输出),则所述第二子过程将加载在所述布局字段中命名的布局页面(过程方块5922)。在本发明的示例性实施例中,将调用所述维基对象的loadPage方法来加载命名的布局页面。
接下来,所述第二子过程将布局维基页面对象返回所述第一子过程(过程方块5924)。在本发明的示例性实施例中,所述第二子过程通过所述第三子过程将布局维基页面对象返回所述第一子过程。所述第一子过程将当前所请求的维基页面的维基页面对象的正文字段内容置于页面组件“正文”内,所述页面组件“正文”是维基布局页面对象的正文字段的一部分(过程方块5926)。所述正文字段是诸如图5中的页面526的对象变量528之类的维基页面对象的对象变量。在本发明的示例性实施例中,所述第一子过程通过使用当前所请求的维基页面的维基页面对象的正文字段替代维基布局页面对象中的特殊模板变量,来将当前所请求的维基页面的维基页面对象的正文字段内容置于维基布局页面对象的正文字段内。在本发明的示例性实施例中,所述特殊模板变量是字符串变量。在本发明的另一示例性实施例中,所述第一子过程通过字符串替换,使用当前所请求的维基页面的正文替代所述特殊模板变量。
接下来,使用维基布局页面对象的正文字段替代当前所请求的页面的维基页面对象的正文字段(过程方块5928)。维基布局页面对象的正文字段包括页面组件页首、菜单、右边距、左边距、页脚和正文。在客户端浏览器中呈现页面的处理继续照常进行(过程方块5930),随后所述操作结束。因此,在客户端浏览器中呈现时,当前所请求的维基页面包括当前所请求的维基页面的原始内容,所述原始内容被包装在关联的维基布局页面内。
因此,本发明的示例性实施例提供了将维基页面内容嵌入布局页面正文的过程。此外,可以将特定布局与维基页面进行关联。用户可以通过简单地新建维基页面并编辑所述新建维基页面的内容来新建维基布局页面。所述新建维基页面的每个部分的默认内容由维基命令(在所述命令为之提供内容的所述部分之后命名)来提供。用户可以通过使用HTML页面流将来自这些维基命令的内容包括在用户所需的任意页面位置上。用户可以根据需要将其他静态HTML内容和其他动态维基命令包括在新建的维基页面中。
此外,本发明的示例性实施例提供了使维基页面从父辈页面继承维基页面布局的过程。每个维基页面都具有与作为该维基页面的父辈页面的维基页面关联的页面列表。所述父辈页面列表存储在维基对象的字段中。在本发明的示例性实施例中,所述字段称为路径字段。将使用按照反层次结构顺序查找父辈维基页面列表中包含维基页面布局指定符的第一维基页面的查询。然后选择所指定的布局页面以供目标页面继承。
图60是根据本发明的示例性实施例的呈现维基页面的操作的流程图。图60中的操作可以由诸如图4中的维基引擎402之类的维基引擎实现,更具体地说,由诸如图5中的维基控制器500之类的维基控制器实现。所述操作从维基引擎接收显示维基页面的请求开始(过程方块6002)。所述请求通常是由远程客户端浏览器发出的HTTP请求。维基控制器对象处理所述请求。所述维基控制器对象开始呈现与维基布局页面组合的所请求页面的过程(过程方块6004)。
在本发明的示例性实施例中,通过调用维基对象(如图5中的维基对象508)的showPage方法来调用所述呈现所请求维基页面的过程。showPage方法检索所请求的维基页面并呈现可以在客户端浏览器中显示的所请求维基页面的HTML版本。所述维基对象用作生成最新请求的维基页面的内容所使用的所有对象和字段的储存库。接下来,维基引擎测试诸如图5中的维基页面526之类的所请求维基页面的称为组件字段的字段中存储的位掩码的位掩码设置(过程方块6006)。组件字段位掩码包括与诸如页首、菜单、页脚之类的维基页面中的每个页面组件对应的位。如果给定页面组件的位或设置的值为“1”,则允许布局页面中相应的页面组件维基命令将维基命令所生成的内容提供给维基页面。如果给定页面组件的位或设置的值为“0”,则不允许布局页面中相应的页面组件维基命令将内容提供给维基命令将生成的维基页面。
接下来,所述操作将所请求的维基页面与关联的维基布局页面进行组合(过程方块6008),从而形成组合页面。在本发明的示例性实施例中,为了确定与所请求的维基页面关联的维基布局页面,将检查页表来确定与所请求的维基页面关联的特定维基布局页面。在本发明的示例性实施例中,所述页表称为Wiki_page表。如果所请求的维基页面没有与所述页表中的维基页面关联的特定维基布局页面,则将默认的维基布局页面与所请求的维基页面进行关联和组合。
因此,本发明的示例性实施例提供了以编程的方式隐藏和显示维基页面布局部分的过程。维基页面设置实现为当用户编辑维基页面时,可由用户编辑的复选框。通过勾选和取消勾选复选框,用户控制各种页面组件以及页面注释、附件和电子邮件的可见性。
现在参考图61,其中示出了根据本发明的示例性实施例的服务器侧数据中心对象类的类定义的图示。诸如图21中的服务器侧数据中心对象2100之类的服务器侧数据中心对象具有由维基数据中心类定义来定义的诸如代码6102中的类变量之类的特性和对象变量。
该示例性维基数据中心类定义提供维基命令对象6104的数组、使用者标识符6106的数组以及生成者标识符6108的数组。因此,每当针对给定页面实例来实例化服务器侧数据中心时,将由诸如上面所示的维基数据中心类定义之类的维基数据中心类定义来定义服务器侧数据中心实例的数据中心特性。
现在参考图62,其中示出了根据本发明的示例性实施例的数据中心管理方法类的一组方法接口的图示。一组数据中心管理方法6200是与诸如图14中的数据中心管理1402之类的服务器侧数据中心关联的数据中心管理方法接口。代码6202是恢复在文件系统或诸如图1中的存储单元108之类的其他数据存储设备中保存的数据中心对象的方法的实例。代码6204是将数据中心对象的实例保存或缓存到文件系统的方法的实例。
现在参考图63A,其中示出了根据本发明的示例性实施例的生成者和使用者方法类的一组方法接口的图示。一组生成者和使用者方法6300是与诸如图21中的生成者和使用者2104之类的服务器数据中心关联的数据中心方法接口。一组数据中心管理方法6200是诸如图21中的生成者和使用者2104之类的数据中心管理方法接口。
代码6302是将命令添加到数据中心的方法。代码6304是获取作为数据中心成员的命令的方法。代码6306是获取命令的方法。代码6308是被调用以添加生成者命令的方法。代码6310是添加可编辑的生成者命令的方法。可编辑的生成者命令提供可被编辑以进行创建、更新和删除操作的数据。
代码6312是删除诸如常规生成者命令或可编辑生成者命令之类的生成者命令的方法。代码6314是获取所有生成者的列表的方法。代码6316是将使用者命令添加为特定主题的侦听者的方法。代码6318是删除作为特定主题的侦听者的使用者命令的方法。代码6320是获取正在侦听特定主题的使用者命令的列表的方法。代码6322是将客户端使用者命令添加为特定命令的侦听者的方法。
代码6324是添加客户端JavaScript处理机的命令。代码6326是删除作为特定主题的侦听者的使用者命令的代码。代码6328是获取正在侦听特定主题的使用者命令的列表的方法。代码6330是将客户端使用者添加为特定主题的侦听者的方法。代码6332是针对属于客户端侧数据中心的命令在客户端上生成JavaScript代码的方法。
现在参考图63B,其中示出了根据本发明的示例性实施例的主题方法类的一组方法接口的图示。一组主题方法6340是服务器侧数据中心上诸如图21中的主题2106之类的主题方法的方法接口。例如,代码6342是添加事件主题的方法的实例。代码6344是删除事件主题的方法。
现在参考图64,其中示出了根据本发明的示例性实施例的事件处理方法类的一组方法接口的图示。一组事件处理方法6400是服务器侧数据中心上诸如图21中的事件处理2108之类的事件处理方法的方法接口。例如,代码6402是触发事件的方法。代码6404是在服务器上处理事件的方法。代码6406是处理将发送到服务器的客户端事件的方法。可以将多个事件成批发送到服务器。
现在参考图65,其中示出了根据本发明的示例性实施例的命令管理方法类的一组方法接口的图示。一组命令管理方法6500是服务器侧数据中心上诸如图21中的命令管理2100之类的命令管理方法的方法接口。例如,代码6502是设置命令的变元的方法。这将更改源中的变元。代码6504是从页面源中删除命令的方法。
现在参考图66,其中示出了根据本发明的示例性实施例的客户端侧数据中心对象类的类定义的图示。由客户端侧数据中心的维基数据中心类定义来定义数据中心特性和对象变量,如代码6600所示。代码6602是使用者标识符的对象变量。代码6604是主题的对象变量。代码6606是事件的对象变量。
现在参考图67,其中示出了根据本发明的示例性实施例的生成者和使用者方法类的一组方法接口的图示。一组生成者和使用者方法6700是客户端侧数据中心上的诸如图22中的生成者和使用者2202之类的生成者和使用者方法接口。例如,代码6702是添加使用者命令的方法。代码6704是删除使用者命令的方法。
现在参考图68,其中示出了根据本发明的示例性实施例的主题方法类的一组方法接口的图示。一组主题方法6800是客户端侧数据中心上的诸如图22中的主题2204之类的主题方法的方法接口。例如,代码6802是添加可用于其他使用者命令的主题的方法。代码6804是获取可用主题的列表的方法。
现在参考图69,其中示出了根据本发明的示例性实施例的事件处理方法类的一组方法接口的图示。一组事件处理方法6900是客户端侧数据中心上的诸如图22中的事件处理2206之类的事件处理方法的方法接口。例如,代码6902是触发所有排队事件的方法。代码6904是触发事件的方法。代码6906是将事件发送到服务器以便执行的方法。
现在参考图70,其中示出了根据本发明的示例性实施例的命令管理方法类的一组方法接口的图示。一组命令管理方法7000是客户端侧数据中心上的诸如图22中的命令管理2208之类的命令管理方法的方法接口。例如,代码7002是添加维基命令的方法。代码7004是删除命令的方法。
数据中心主题对象定义使用者可以订阅的主题以及生成者命令可以发布或触发的主题。例如,搜索组件是订阅搜索主题的使用者。当用户接口接收到来自用户的搜索条件时,所述用户接口将针对该搜索主题触发事件。换言之,所述用户接口是发布使用者搜索组件所订阅的主题的生成者。
现在参考图71,其中示出了根据本发明的示例性实施例的数据中心主题对象类的一组对象变量和方法接口的图示。对象变量700定义主题对象的特性。一组方法是诸如图21中的数据中心主题对象2112和图22中的数据中心主题对象2210之类的客户端侧数据中心或服务器侧数据中心上的数据中心主题对象的方法接口。在本发明的该示例性实施例中,与服务器关联的数据中心主题对象和与客户端关联的数据中心主题对象具有相同的对象变量和方法。
现在参考图72,其中示出了根据本发明的示例性实施例的数据中心事件对象类的类定义和方法接口的图示。类定义7200定义事件对象的特性。例如,代码7202定义主题的对象变量。所有事件对象都在主题对象变量中具有主题值。代码7204定义值的对象变量。事件对象可以使数据存储在对象变量值中。但是,不是所有事件对象都包括数据。
在本发明的该示例性实施例中,一组方法是诸如图21中的数据中心事件对象2114和图22中的数据中心事件对象2212之类的数据中心事件对象的方法接口。与服务器关联的数据中心事件对象和与客户端关联的数据中心事件对象具有相同的对象变量和方法。
在不偏离本发明的示例性实施例的范围的情况下,数据中心对象、数据中心主题对象和/或数据中心事件对象可以包括所述示例性实施例中未示出的其他方法。此外,与数据中心对象、数据中心主题对象和/或数据中心事件对象关联的一种或多种方法可以不存在于根据本发明的示例性实施例的数据中心对象、数据中心主题对象和/或数据中心事件对象的一组方法中。
在基于事件的维基组件模型中,某些维基组件在该组件可以响应或触发事件对象之前,需要存在一组最小充分变元值。这些最小充分变元可以来自多个分离的源。因此,本发明的示例性实施例的各方面提供了最小充分变元检测机制,所述机制聚合来自潜在的多个源的变元数据并根据声明的参数准则匹配变元集,以便只有当存在满足所声明/定义的参数准则的最小充分变元时才触发“data available”事件。
维基变元对象是与诸如图14中的维基命令1404和维基命令1412之类的维基命令关联的对象。维基变元对象具有“avail”属性,该属性指示触发命令所需的变元是否已被设置和是否有效。
图73是根据本发明的示例性实施例的维基变元对象的类定义的图示。由诸如图14中的维基命令对象1404和1402之类的命令对象上的维基变元对象来执行检测是否触发argument/available事件的算法。代码7302是指示变元对象是否有效的对象变量。代码7304是指示变元是否已设置和可用的变元对象。
现在参考图74,其中示出了根据本发明的示例性实施例的检测是否触发argument/available事件的算法的伪代码的图示。
在该实例中,代码7400是判定触发数据中心事件对象的最小必要变元集中的每个变元是否可用的算法。在代码7402中检查每个变元来判定可用变量是否为null。如果所述算法指示集合中的每个变元都可用,则代码7406判定变元是否可用和已被设置。如果变元可用并已被设置,则代码7408触发与变元集关联的新的数据中心事件对象。
因此,示例性实施例的各方面提供了服务器侧数据中心对象和相应的客户端侧数据中心对象,以便在维基环境和客户端环境中的命令之间传送和路由事件对象。使用数据中心对象使得命令能够在处理与给定维基页面关联的事件的过程中更轻松地进行交互。
应指出的是,尽管根据维基环境中的维基应用描述了上面详细说明的本发明的示例性实施例,但是本发明的上述示例性实施例并不限于维基环境中的维基应用。使用维基环境中的维基应用作为上述说明中的实例并非旨在以任何方式限制本发明的范围。对本领域的技术人员将显而易见的是,本发明的上述示例性实施例等同地应用于一组用户可通过接口访问的任何共享环境。此外,尽管以JavaSxript语言说明了上述示例性实施例的某些方面,但是在上述说明中使用JavaScript语言作为实例并非旨在以任何方式限制本发明的范围。本领域的技术人员将认识到,上述示例性实施例可以使用任何面向对象的脚本编写语言来实现。
附图中的流程图和方块图示出了根据本发明的各种实施例的方法、装置和计算机程序产品的可能实施方式的体系结构、功能和操作。在此方面,流程图或方块图中的每个方块都可以代表代码的模块、段或部分,它们包括实现一个或多个指定逻辑功能的一个或多个可执行指令。还应指出的是,在某些备选实施方式中,方块中示出的功能可以不按照图中示出的顺序执行。例如,连续示出的两个方块实际上可能基本上同时执行,或者有时按照相反的顺序执行方块,具体取决于所涉及的功能。
本发明可以采取完全硬件实施例、完全软件实施例或包含硬件和软件元素两者的实施例的形式。在一个优选实施例中,本发明以软件实现,所述软件包括但不限于固件、驻留软件、微代码等。
此外,本发明可以采取可从计算机可用或计算机可读介质访问的计算机程序产品的形式,所述计算机可用或计算机可读介质提供了可以被计算机或任何指令执行系统使用或与计算机或任何指令执行系统结合的程序代码。出于此描述的目的,计算机可用或计算机可读介质可以是任何能够包含、存储、传送、传播或传输由指令执行系统、装置或设备使用或与所述指令执行系统、装置或设备结合的程序的有形装置。
所述介质可以是电、磁、光、电磁、红外线或半导体系统(或装置或设备)或传播介质。计算机可读介质的实例包括半导体或固态存储器、磁带、可移动计算机盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。光盘的当前实例包括光盘-只读存储器(CD-ROM)、光盘-读/写(CR-R/W)和DVD。
适于存储和/或执行程序代码的数据处理系统将包括至少一个通过系统总线直接或间接连接到存储器元件的处理器。所述存储器元件可以包括在程序代码的实际执行期间采用的本地存储器、大容量存储装置以及提供至少某些程序代码的临时存储以减少必须在执行期间从大容量存储装置检索代码的次数的高速缓冲存储器。
输入/输出或I/O设备(包括但不限于键盘、显示器、指点设备等)可以直接或通过中间I/O控制器与系统相连。
网络适配器也可以被连接到系统以使所述数据处理系统能够通过中间专用或公共网络变得与其他数据处理系统或远程打印机或存储设备相连。调制解调器、电缆调制解调器和以太网卡只是几种当前可用的网络适配器类型。
出于示例和说明目的给出了对本发明的描述,并且所述描述并非旨在是穷举的或是将本发明限于所公开的形式。对于本领域的技术人员来说,许多修改和变化都将是显而易见的。实施例的选择和描述是为了最佳地解释本发明的原理、实际应用,并且当适合于所构想的特定使用时,使得本领域的其他技术人员能够理解本发明的具有各种修改的各种实施例。
权利要求
1.一种用于继承页面的页面布局的计算机实现的方法,所述计算机实现的方法包括
响应于接收到从客户端浏览器显示当前页面的请求,判定所述当前页面是否具有一组父辈页面;
布置所述一组父辈页面,以使所述一组父辈页面中的最近父辈页面首先出现在父辈页面列表中;
标识与所述一组父辈页面中的一个父辈页面关联的布局页面;
将所标识的布局页面与所述当前页面进行组合以形成组合页面;以及
将所述组合页面发送到所述客户端浏览器。
2.根据权利要求1的计算机实现的方法,其中所述页面是允许单个或多个用户有效地集成静态内容和交互内容的协作Web环境中的页面。
3.根据权利要求1的计算机实现的方法,其中标识与所述一组父辈页面中的一个父辈页面关联的布局页面的步骤进一步包括
查询数据库以查找页表中具有与所述一组父辈页面中的一个父辈页面匹配的表项的第一行以形成匹配的父辈页面;以及
确定与所述匹配的父辈页面关联的布局页面。
4.根据权利要求3的计算机实现的方法,其中所述页表中的表项包括页面和与该页面关联的布局页面。
5.根据权利要求3的计算机实现的方法,还包括
响应于未找到页表中具有与所述一组父辈页面中的一个父辈页面匹配的表项的第一行,将默认布局页面与所述一组父辈页面中的一个父辈页面相关联。
6.根据权利要求1的计算机实现的方法,其中所述当前页面包括所述一组父辈页面的列表。
7.根据权利要求1的计算机实现的方法,其中所述一组父辈页面中的所述最近父辈页面是与在最后一个名称段之前立即出现的名称段对应的页面,其中所述最后一个名称段对应于所述当前页面。
8.一种包括计算机可用介质的计算机程序产品,所述计算机可用介质包含用于继承页面的页面布局的计算机可用程序代码,所述计算机程序产品包括
用于响应于接收到从客户端浏览器显示当前页面的请求,判定所述当前页面是否具有一组父辈页面的计算机可用程序代码;
用于布置所述一组父辈页面,以使所述一组父辈页面中的最近父辈页面首先出现在父辈页面列表中的计算机可用程序代码;
用于标识与所述一组父辈页面中的一个父辈页面关联的布局页面的计算机可用程序代码;
用于将所标识的布局页面与所述当前页面进行组合以形成组合页面的计算可用程序代码;以及
用于将所述组合页面发送到所述客户端浏览器的计算机可用程序代码。
9.根据权利要求8的计算机程序产品,其中所述页面是允许单个或多个用户有效地集成静态内容和交互内容的协作Web环境中的页面。
10.根据权利要求8的计算机程序代码,其中用于标识与所述一组父辈页面中的一个父辈页面关联的布局页面的计算机可用程序代码进一步包括
用于查询数据库以查找页表中具有与所述一组父辈页面中的一个父辈页面匹配的表项的第一行以形成匹配的父辈页面的计算机可用程序代码;以及
用于确定与所述匹配的父辈页面关联的布局页面的计算机可用程序代码。
11.根据权利要求9的计算机程序产品,其中所述页表中的表项包括页面和与该页面关联的布局页面。
12.根据权利要求9的计算机程序产品,还包括
用于响应于未找到页表中具有与所述一组父辈页面中的一个父辈页面匹配的表项的第一行,将默认布局页面与所述一组父辈页面中的一个父辈页面相关联的计算机可用程序代码。
13.根据权利要求8的计算机程序产品,其中所述当前页面包括所述一组父辈页面的列表。
14.根据权利要求8的计算机程序产品,其中所述一组父辈页面中的所述最近父辈页面是与在最后一个名称段之前立即出现的名称段对应的页面,其中所述最后一个名称段对应于所述当前页面。
15.一种用于继承页面的页面布局的数据处理系统,所述数据处理系统包括
存储设备,其中所述存储设备存储计算机可用程序代码;以及
处理器,其中所述处理器执行所述计算机可用程序代码以执行以下操作响应于接收到从客户端浏览器显示当前页面的请求,判定所述当前页面是否具有一组父辈页面;布置所述一组父辈页面,以使所述一组父辈页面中的最近父辈页面首先出现在父辈页面列表中;标识与所述一组父辈页面中的一个父辈页面关联的布局页面;将所标识的布局页面与所述当前页面进行组合以形成组合页面;以及将所述组合页面发送到所述客户端浏览器。
16.根据权利要求15的数据处理系统,其中所述页面是允许单个或多个用户有效地集成静态内容和交互内容的协作Web环境中的页面。
17.根据权利要求15的数据处理系统,其中执行计算机可用程序代码以标识与所述一组父辈页面中的一个父辈页面关联的布局页面进一步包括
执行计算机可用程序代码来查询数据库以查找页表中具有与所述一组父辈页面中的一个父辈页面匹配的表项的第一行以形成匹配的父辈页面;以及确定与所述匹配的父辈页面关联的布局页面。
18.根据权利要求17的数据处理系统,其中所述页表中的表项包括页面和与该页面关联的布局页面。
19.根据权利要求17的数据处理系统,还包括
响应于未找到页表中具有与所述一组父辈页面中的一个父辈页面匹配的表项的第一行,执行计算机可用程序代码以将默认布局页面与所述一组父辈页面中的一个父辈页面相关联。
20.根据权利要求15的数据处理系统,其中所述当前页面包括所述一组父辈页面的列表。
全文摘要
本发明提供了一种用于继承页面的页面布局的方法。响应于接收到从客户端浏览器显示当前页面的请求,判定所述当前页面是否具有一组父辈页面。布置所述一组父辈页面,以使所述一组父辈页面中的最近父辈页面首先出现在父辈页面列表中。标识与所述一组父辈页面中的一个父辈页面关联的布局页面。将所标识的布局页面与所述当前页面进行组合以形成组合页面。将所述组合页面发送到所述客户端浏览器。
文档编号G06F17/30GK101484894SQ200780025246
公开日2009年7月15日 申请日期2007年7月3日 优先权日2006年7月7日
发明者B·A·柯蒂斯, S·尼古拉斯, W·E·维克奈尔 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1