CN101101603A - 配置针对合作网页的命令的方法与系统 - Google Patents

配置针对合作网页的命令的方法与系统 Download PDF

Info

Publication number
CN101101603A
CN101101603A CNA2007101286612A CN200710128661A CN101101603A CN 101101603 A CN101101603 A CN 101101603A CN A2007101286612 A CNA2007101286612 A CN A2007101286612A CN 200710128661 A CN200710128661 A CN 200710128661A CN 101101603 A CN101101603 A CN 101101603A
Authority
CN
China
Prior art keywords
page
wiki
leaf
order
incident
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CNA2007101286612A
Other languages
English (en)
Inventor
布赖斯·A·柯蒂斯
斯图尔特·E·尼克拉斯
韦恩·E·维克奈尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN101101603A publication Critical patent/CN101101603A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

一种用于配置针对合作网页的命令的计算机实现的方法。在合作网页上选择所选择命令的图形表示。针对所选择命令,援用接口。所述接口允许对所选择命令的属性进行编辑。响应于在接口中接收具体的用户输入,使用该具体的用户输入更新所选择命令,以形成更新的命令。根据该更新的命令而更新合作网页。

Description

配置针对合作网页的命令的方法与系统
技术领域
总体上讲,本发明涉及一种改进的数据处理系统,具体地讲,本发明涉及一种针对程序设计模型(programming model)的系统与装置。更具体地讲,本发明涉及一种使用浏览器操纵内容的计算机实现的方法、装置以及计算机可用程序代码。
背景技术
因特网是通过网关连接在一起的计算机与网络的全球网络,在从发送网络的协议到接收网络的协议的消息转换过程中,网关处置数据的传送。在因特网上,任何计算机均可以与任何其它计算机进行通信,其中,信息通过各种称为协议的语言在因特网上传播。因特网上最常使用的协议集合被称为传输控制协议/因特网协议(TCP/IP)。
因特网实现了通信与商务活动的革命化,并且成为信息与娱乐的源泉。越来越频繁使用的一种软件是Wiki软件。Wiki软件是一种运行Wiki环境的合作软件。在可以由一组用户通过接口访问的共享环境中提供了该软件。Wiki应用为一种允许用户操纵内容的Web站点。用户可以非常快速且容易地添加、去除、或者编辑与改变内容。通常,Wiki应用通常用作合作写作(collaborativewriting)的有效工具。Wiki应用的当前使用面向合作内容创建,诸如在线百科全书或其它知识库。用户通常可以在共享环境中创建内容。在这一环境中,保存对页的修订,以允许恢复先前的版本。另外,还为创建页间链接提供了标记捷径(mark-up shortcut)。而且,通常利用一种“所见即所得”(WYSIWYG)编辑模式/编辑器。
发明内容
此处所描述的说明性实施例,提供了一种用于配置针对合作Web页的命令的计算机实现的方法。在合作Web页上选择所选择命令的图形表示。针对所选择命令,援用(invoke)接口。该接口允许对所选择命令的属性(property)进行编辑。响应于在接口中接收具体的用户输入,使用该具体的用户输入更新所选择命令,以形成更新的命令。根据更新的命令更新合作Web页。
附图说明
所附权利要求中简述了被视为本发明的性质的新特征。然而,当结合附图阅读时,参照以下对说明性实施例的详细描述,将最佳理解本发明自身,以及本发明的优选使用模式、进一步的目的与优点,其中:
图1为其中可以实现本发明的说明性实施例的数据处理系统网络的图形表示;
图2为其中可以实现本发明的说明性实施例的数据处理系统的方框图;
图3说明了根据本发明的说明性实施例的用于生成和使用Wiki应用的部件;
图4说明了根据本发明的说明性实施例的Wiki体系结构;
图5说明了根据本发明的说明性实施例呈递(render)页的数据流;
图6说明了根据本发明的说明性实施例的针对Wiki应用的客户机与服务器上的部件;
图7为根据本发明的说明性实施例的用于拖拽(drag)实况内容(livecontent)的示范性显示屏幕;
图8为根据本发明的说明性实施例的用于对命令的属性进行编辑的显示屏幕;
图9为根据本发明的说明性实施例的页树视图;
图10为针对根据本发明的说明性实施例的Wiki页的显示屏幕;
图11为根据本发明的说明性实施例的抽象语法树的方框图;
图12为根据本发明的说明性实施例的命令的方框图;
图13为描述根据本发明的说明性实施例的属性编辑部件的图;
图14为图,说明根据本发明的说明性实施例的针对Wiki应用的客户机与服务器上的命令之间的数据流;
图15为图,说明根据本发明的说明性实施例的、在初始页呈递过程期间服务器上的命令之间的数据流;
图16为图,说明了根据本发明的说明性实施例的、响应于来自用户的页请求所生成的Wiki页;
图17为图,说明了根据本发明的说明性实施例的、在客户机浏览器上所显示的所呈递页;
图18为图,说明了根据本发明的说明性实施例的、在客户机浏览器上加载并且显示新页之后,客户机侧数据中枢(hub)上的部件之间的数据流;
图19A和19B为图,说明了根据本发明的说明性实施例的、在页更新期间客户机侧数据中枢和服务器侧数据中枢之间的数据流;
图20为图,说明了根据本发明的说明性实施例的、在页更新期间服务器侧数据中枢和客户机侧数据中枢之间的消息流;
图21为图,说明了根据本发明的说明性实施例的服务器侧数据中枢对象;
图22为图,说明了根据本发明的说明性实施例的客户机侧数据中枢对象;
图23为方框图,说明了根据本发明的说明性实施例的、用于把Wiki页内容嵌入Wiki布置(layout)页的主体中的过程;
图24为方框图,描述了根据本发明的说明性实施例的、用于确定页部件的内容可视性的复选框;
图25为根据本发明的说明性实施例的、用于创建Wiki页的过程的流程图;
图26为根据本发明的说明性实施例的、用于显示页的过程的流程图;
图27为根据本发明的说明性实施例的、用于生成页树视图的过程的流程图;
图28为根据本发明的说明性实施例的、用于拖拽实况内容的过程的流程图;
图29为根据本发明的说明性实施例的、用于组合Wiki页内容的过程的流程图;
图30为根据本发明的说明性实施例的、用于编辑命令的过程的流程图;
图31为根据本发明的说明性实施例的、用于呈递Wiki命令的过程的流程图;
图32为根据本发明的说明性实施例的、用于属性编辑的预备过程的流程图;
图33为根据本发明的说明性实施例的、用于属性编辑的过程的流程图;
图34为根据本发明的说明性实施例的、用于选择属性编辑器的过程的流程图;
图35为根据本发明的说明性实施例的、用于删除页的过程的流程图;
图36为根据本发明的说明性实施例的、用于修订页的过程的流程图;
图37为根据本发明的说明性实施例的、用于拷贝页的过程的流程图;
图38为根据本发明的说明性实施例的、用于重新命名页的过程的流程图;
图39为根据本发明的说明性实施例的、用于解除对页的删除的过程的流程图;
图40为根据本发明的说明性实施例的、用于选用区构造(paletteconstruction)的过程的流程图;
图41为根据本发明的说明性实施例的、用于配置的过程的流程图;
图42为根据本发明的说明性实施例的、用于导出(export)的过程的流程图;
图43为根据本发明的说明性实施例的、用于导入(import)的过程的流程图;
图44为根据本发明的说明性实施例的、用于取得(retrieve)与解析树的过程的流程图;
图45为根据本发明的说明性实施例的、用于处理供在Wiki中显示的Web页(网页)的过程;
图46为根据本发明的说明性实施例的、用于处理事件的流程图;
图47为根据本发明的说明性实施例的、在实例化服务器侧数据中枢对象时发生的操作的流程图;
图48为根据本发明的说明性实施例的、在实例化客户机侧数据中枢对象时发生的操作的流程图;
图49为根据本发明的说明性实施例的、在服务器侧数据中枢从客户机侧数据中枢接收处理事件的请求时发生的操作的流程图;
图50为根据本发明的说明性实施例的、在生产者(producer)命令处理事件时发生的操作的流程图;
图51为根据本发明的说明性实施例的、在消费者命令处理事件时发生的操作的流程图;
图52为根据本发明的说明性实施例的、在客户机侧数据中枢接收事件时发生的操作的流程图;
图53为根据本发明的说明性实施例的、在服务器侧数据中枢处理事件时发生的操作的流程图;
图54为根据本发明的说明性实施例的、客户机侧数据中枢确定是否向服务器发送事件供处理时发生的操作的流程图;
图55为根据本发明的说明性实施例的、当作为processClientEvent方法调用的结果在服务器侧数据中枢从客户机侧数据中枢接收事件时发生的操作的流程图;
图56为根据本发明的说明性实施例的、在Wiki变元(argument)对象执行最小充分变元过程时发生的操作的流程图;
图57为根据本发明的说明性实施例的、在Wiki变元对象确定是否设置命令的最小所要求变元时发生的操作的流程图;
图58为根据本发明的说明性实施例的、用于检测是否应该激发(fire)变元/可用事件的setCheckArguments方法的流程图;
图59为根据本发明的说明性实施例的、以Wiki页定义Wiki页布置的操作的流程图;
图60为根据本发明的说明性实施例的、呈递Wiki页的操作的流程图。
图61为根据本发明的说明性实施例的服务器侧数据中枢类的类定义的说明;
图62是根据本发明的说明性实施例的数据中枢管理方法的类的方法接口的集合的说明;
图63A是根据本发明的说明性实施例的生产者与消费者方法的类的方法接口的集合的说明;
图63B是根据本发明的说明性实施例的题目(topic)方法的类的方法接口的集合的说明;
图64是根据本发明的说明性实施例的事件处理方法的类的方法接口的集合的说明;
图65是根据本发明的说明性实施例的命令管理方法的类的方法接口的集合的说明;
图66是根据本发明的说明性实施例的客户机侧数据中枢对象类的类定义的说明;
图67是根据本发明的说明性实施例的生产者与消费者方法的类的方法接口的集合的说明;
图68是根据本发明的说明性实施例的题目方法的方法接口的集合的说明;
图69是根据本发明的说明性实施例的事件处理方法的方法接口的集合的说明;
图70是根据本发明的说明性实施例的命令管理方法的方法接口的集合的说明;
图71是根据本发明的说明性实施例的数据中枢题目对象的类的类定义与方法接口的说明;
图72是根据本发明的说明性实施例的数据中枢事件对象的类的类定义与方法接口的说明;
图73是根据本发明的说明性实施例的Wiki变元对象类的类定义的说明;以及
图74是根据本发明的说明性实施例的、用于检测是否应该激发变元/可用事件的算法的伪代码的说明。
具体实施方式
现在参照各图,特别是参照图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)协议集来互相通信。因特网的核心为主节点或宿主计算机之间的高速数据通信线路的主干(backbone),由成千上万的商务、政府、教育以及路由数据与消息的其它计算机系统组成。当然,也可以把网络数据处理系统100实现为不同类型的网络,例如,内联网(intranet)、局域网(LAN)或广域网(WAN)。图1仅旨在作为例子,而不旨在作为对不同实施例的体系结构的限制。
现在,参照图2,图2描述了其中可以实现本发明的说明性实施例的数据处理系统的方框图。数据处理系统200为诸如图1中的服务器104或客户机110的计算机的例子,其中,可以设置实现本发明的各说明性实施例的过程的计算机可用代码,即指令。
在所描述的例子中,数据处理系统200使用了包括北桥与存储器控制器集线器集线器(MCH)202和南桥与输入/输出(I/O)控制器集线器(ICH)204的集线器体系结构。把处理器206、主存储器208以及图形处理器210耦合于北桥与存储器控制器集线器202。例如,可以通过加速图形端口(AGP)把图形处理器210耦合于MCH。
在所描述的例子中,把局域网(LAN)适配器212耦合于南桥与I/O控制器集线器204,通过总线238把音频适配器216、键盘与鼠标适配器220、调制解调器222、只读存储器(ROM)224、通用串行总线(UBS)端口以及其它通信端口232、PCI/PCIe设备234耦合于南桥与I/O控制器集线器204,并且通过总线240把硬盘驱动器(HDD)226和CR-ROM驱动器230耦合于南桥与I/O控制器集线器204。PCI/PCIe设备可以包括例如Ethernet适配器、添加卡以及针对笔记本计算机的PC卡。ROM 224可以为例如闪速二进制输入/输出系统(BIOS)。硬盘驱动器226和CR-ROM驱动器230可以使用例如集成驱动电子装置(IDE)或串行先进技术附接(SATA)接口。如图中所示,也可以通过总线238把超I/O(SIO)设备236耦合于南桥与I/O控制器集线器204。
在图2的说明性实施例中,操作系统运行在处理器206上,并且协调数据处理系统200中的各个部件,以及提供对它们的控制。所述操作系统可以为商业可用的操作系统,例如Microsoft WindowsXP(Microsoft和Windows为Microsoft公司在美国、在其它国家、或者在美国与其它国家中的注册商标)。面向对象的程序设计系统,例如JavaTM程序设计系统,可以与操作系统一起运行,并且从在数据处理系统200上执行的Java程序或应用提供对操作系统的调用(Java和所有基于Java的注册商标为Sun Microsystems公司在美国、在其它国家、或者在美国与其它国家中的注册商标)。
把针对操作系统、面向对象的程序设计系统、以及应用或程序的指令定位在诸如硬盘驱动器226的存储设备中,并且可以将它们加载于主存储器208中,以由处理器206执行。可以由处理器206使用可以定位在存储器或在一或多个外部设备中的计算机可执行指令而执行这些说明性实施例的过程,所述存储器可以为例如主存储器208、只读存储器224等。
图1~2中的硬件可以随实现的不同而不同。除了图1~2中所描述的硬件,或者取代图1~2中所描述的硬件,也可以使用其它的内部硬件或外围设备,例如闪存、等效的非易失存储器或者光盘驱动器等。另外,也可以把这些说明性实施例的过程用于多处理器数据处理系统。
在某些说明性例子中,数据处理系统200可以为个人数字助手(PDA),其通常配置有闪存,以提供用于存储操作系统文件和/或用户生成的数据的非易失存储器。总线系统,例如总线238和240,可以由诸如系统总线、I/O总线和PCI总线的一或多条总线构成。当然,也可以使用任何类型的、提供了附接于结构或体系结构的不同部件或设备之间的数据传递的通信结构或体系结构,而实现总线系统。通信单元可以包括一或多个用于传输和接收数据的设备,例如,调制解调器或网络适配器。存储器可以为例如主存储器208或诸如在北桥与存储器控制器集线器202中发现的超高速缓冲存储器。处理单元可以包括一或多个处理器或CPU。图1~2中所描述的例子,以及以上所描述的例子,不意味着对体系结构的限制。例如,除呈PDA形式外,数据处理系统200也可以为输入板式(tablet)计算机、膝上计算机或者电话设备。
在这些说明性的例子中,服务器104可以主管(host)Wiki应用。根据说明性实施例,服务器104处的环境,允许诸如客户机110、112以及114的客户机合作与开发应用。这些应用可以包括例如与天气相关的应用、学校的注册与名录(roster)、电子邮件应用、以及其它类型的面向商务的应用。根据说明性实施例,不同的实施例可以包括在提供开发Wiki应用的合作环境的过程中的服务器侧、客户机侧或者这两侧的处理。
这些说明性实施例意识到,当前的Wiki应用不适合超出作为知识库或文档的文本与文件的合作之外的应用的合作开发。
现在,转向图3,根据本发明的说明性实施例,描绘用于生成和使用Wiki应用的部件的图。在这一例子中,用户可以与客户机环境300交互,以生成和使用Wiki环境302所支持的应用。客户机环境300为在诸如图1中的客户机110的客户机上执行的软件应用或环境。Wiki环境302在诸如图1中的服务器104的数据处理系统上运行。
在这些例子中,客户机环境300处的用户可以向Wiki环境302发送对页的请求。在这些例子中,用户通过客户机环境300中的浏览器进行该请求。Wiki环境302向用户返回所述页。在这些说明性例子中,所述页包括使用户能够操纵与选择待生成的页的内容的Java脚本语言(JavaScript)。在这些说明性的实施例中,这些页为向用户提供对应用的访问的合作Web页。这些应用为可以由用户在客户机计算机处使用和修改的合作应用。
具体地,这些不同的说明性实施例向用户提供了生成具有超出合作写作工具的功能之外的功能的应用的方法与装置。
通过PHP:超文本预处理器(Hypertext Preprocessor,PHP),提供这些例子的许多特征。PHP是一种用于创建在Wiki环境302上执行的Web应用的编程语言。PHP是开放源,作为用于生成动态Web内容的高级工具所设计的嵌入超文本标记语言的脚本语言。
依据具体的实现,可以通过对诸如Java虚拟机(JVM)的虚拟机的使用而促进这些说明性实施例中所提供的不同特征。另外,依据具体的实施例,也可以使用除JavaScript之外的其它脚本处理语言来实现这些过程。
现在,转向图4,根据本发明的说明性实施例,描绘说明Wiki体系结构的图。在这些具体的例子中,这一体系结构是一种相当容易实现的(quite easilydone,QED)Wiki体系结构。如图中所说明的,Wiki环境400包括Wiki引擎402。这一引擎包括请求处置器404、命令处理器406以及页创作器(pagecomposer)408。请求处置器404接收来自客户机的请求。
例如,用户可以向Wiki环境400发送通用资源定位符(URL)的形式的通用资源标识符(URI)。请求处置器404接收该请求,以进行处理。在这些例子中,针对请求处置器404所处置的每一个请求生成一个页。请求处置器404还生成用于处置基于AJAX的交互的“页片段(page fragment)”,页片段为超文本标记语言源片段,而非完整的超文本标记页。
命令处置器406响应于请求处置器404所接收的请求,处理不同的命令,以建造页或页片段。另外,当完成了命令和文本片段的处理时,命令处理器406呈递(render)页。在生成用户的页请求的过程中,也涉及页创作器408。在这些例子中,页创作器408用于页的布置(layout)、页主体(page body)内容以及页的脚本收集。
Wiki环境400还包括辅助功能410。在这一例子中,辅助功能410包括列表412、评论(comment)414、电子邮件416及附件418。通过列表412,用户可以生成供其他用户看到的列表。另外,使用评论414,用户可以把评论或其它文本添加于不同的页。附件418用户把文件附接于具体的页。电子邮件416允许当更新或修改页时通知用户,并且允许用户向页发送电子邮件作为附件。电子邮件416还允许一或多个用户接收关于对指定页的改变的消息。用户可以订购Wiki的丰富网点总结(rich site summary,RSS)馈送,以确定何时Wiki页改变。
另外,Wiki环境400还包括Wiki命令420。在所说明的这一实施例中的Wiki命令420包含两种类型的命令:内置的(built-in)命令422和定制的(custom)命令424。内置的命令422为在Wiki环境400内存在的命令或服务。定制的命令424涉及通过外部源提供的命令。基本上,这些命令允许用户放入(include)和处理针对页的数据。
在一或多个实施例中,Wiki命令420涉及对面向服务的体系结构(serviceoriented architecture,SOA)的使用。这样的SOA命令允许用户把服务包括在页中。在这些例子中,命令可以通过独立于应用和它们所运行的平台的、很好定义的(well-define)接口,援引(reference)服务。
在所描述的例子中,服务为软件模块。这些类型的服务通常基于符合标准的接口,例如Web服务描述语言(WSDL)。当然,Wiki命令420所援引的服务可能涉及任何类型的接口。这些命令可以呈不同的形式。例如,这些命令可针对金融、天气、地图映像、新闻与事件、搜索、政府、或国际信息。
数据库426包含诸如用户所请求和所创建的页的信息。另外,还把页、附件、评论以及其它信息的修订存储在数据库426中。在说明性的实施例中,通常以表428的形式把信息存储在数据库426中。
现在,转向图5,根据本发明的说明性实施例,描绘说明呈递页的过程中的数据流。在这些例子中,当完成了页的处理,并且准备好向客户机传输时,把该页呈递于服务器上。通过诸如图4中的Wiki引擎402的Wiki引擎,操纵图5中所说明的不同的部件。
在这些说明性的例子中,所说明的编程体系结构与模型允许使用客户机上的浏览器对Wiki内容进行可视的汇编。客户机所请求的每一事物概念上是页。例如,使用诸如页和变量名的通用资源标识符模型引用(reference)变量。另外,在这些例子中,还把页用作数据结构。存储变量,以备后用。这些变量包括会话变量、请求变量以及持久变量。
在这些说明性的例子中,用户通过列表创建结构化的数据。可以查询、搜索和/或组合这些列表。在操纵列表的过程中,用户使用创建、取得、更新以及删除(create,retrieve,update,and delete,CRUD)过程。
Wiki控制器500接收来自用户的通用资源标识符506。Wiki控制器500包含路由器502和对象变量504。路由器502把请求处理委托于相应的请求处置器。对象变量504提供了处理部件之间的互相连接。例如,Wiki控制器500具有作为指向Wiki对象508的指针的对象变量504“Wiki”。图5中的每一个对象具有对作为对对象交互所需的其它资源的引用的对象变量。由诸如图4中的请求处置器404的请求处置器处置Wiki控制器500。
响应于接收到通用资源标识符506,Wiki控制器500实例化Wiki对象508的实例。如图中所说明的,Wiki对象508包含对象变量510、变量512、PHP安全514、电子邮件检查516、用户518以及页520。Wiki对象508为无论何时接收到请求都被实例化的实例,而且其用作用于生成页520的内容的所有对象的储存库。
在这些例子中,对象变量510包含处理页520所需的信息。变量512包含存储在会话522中的会话信息。在这些例子中,该会话信息为在用户与页交互期间,或者在页的生成期间所使用的信息。把对象变量510中更持久的数据存储在数据库524中。在所描述的这些例子中,数据库524存储任何可用于生成页或用于存储用户所进行的改变的信息。
PHP安全514是用于确定是否可以运行客户机所标识的代码,以及是否可以启动这一代码的执行。PHP为一种主要用于服务器侧应用的开放源编程语言。在这些说明性的例子中,可以由Wiki环境中的不同的对象执行PHP代码。在这些例子中,用户既可以从客户机侧,也可以从服务器侧运行PHP代码。把电子邮件检查516提供于Wiki对象508中,以当把页520呈递和发送于用户时检查可以在页520上显示的电子邮件消息。用户518包含关于用户的信息,例如用户特权级(privilege level)、标识符以及会话日志。
页526为包含在Wiki对象508中的页520的更详细的例子。在这一例子中,页526包含对象变量528、附件530、过程(process)532、访问534、布置536、脚本538以及内容540。
在这些例子中,对象变量528包含针对页数据结构的变量的实例。例如,可以存在区段阵列(section array)以提供布置信息。语境(context)指针可以引用根Witi命令。实例ID可以存在于对象变量528中,以引用内部页ID。这些不同的变量包含呈递待向用户发送的、诸如页526的页所需的信息。
附件530为可以在页中呈现的附件的标识。如果用户选择了附件,则可以在此刻把附件下载到用户。过程532包括用于生成将传递于用户的页的代码。在这些说明性的例子中,过程为方法,例如,用于标识页的内容,标识任何附件,以及标识可以包括在将发送于用户的页中的任何脚本。
访问534用于确定对于要放置在页上的内容用户具有何种访问特权。在一个实施例中,利用访问控制列表(access control list,ACL)542标识这样的访问特权。对于页526而言,将包括的内容依赖于请求页的具体用户所具有的访问权的不同而不同。这个用户为请求页526的用户。在生成页526的内容的过程中,对象变量528引用Wiki命令语境544。该命令语境包含对象变量546和内容548。对象变量546代表页的内容的存储器内(in-memory)版本。这些变量包括命令列表以及组成当前页的文本片段的列表。内容548代表用于操纵页内容的对象方法。
在页526中执行过程532的过程中,通过Wiki命令语境544标识来自命令550中的一组命令。Wiki命令语境544根据命令550生成一组命令实例。Wiki命令语境544对内容540进行解析,并且加载命令,以创建诸如片段552的片段的树结构。片段552还包含对象变量554和内容556。片段552为非呈递形式的页526的一部分。在这一例子中,Wiki命令语境544包含代表将包括在页中的命令的结构的片段。这些命令为可以由用户操纵的命令。当完成过程532时,把页526下发到发出请求的用户。保存数据中枢558,以供以后在交互中使用。另外,在这一例子中,当用户与页526中的部件进行交互时,数据中枢558被恢复,而且还包含过程与数据结构。数据中枢558中的过程用于标识:段552中的页的哪些命令为可以由数据中枢558接收的任何数据或命令的消费者。另外,数据中枢558还将把结果返回至客户机。把这些结果发送至位于客户机上的数据中枢。
现在,转向图6,根据本发明的说明性实施例,描述了针对Wiki应用的客户机与服务器上的部件。在这一例子中,客户机环境600为图3中的客户机环境300的更详细的说明。在这些说明性的实施例中的客户机环境600可以采用客户机Web浏览器或具有与诸如因特网的网络的连接的某些其它应用的形式。Wiki环境601运行在诸如图1中的服务器104的数据处理系统上。
在这一例子中,客户机环境600接收页602。页602包括多个部件,例如头标604、脚标606、左边距(left margin)608、右边距(right margin)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为Wiki命令,例如图4中的Wiki命令420。这些命令为用于通过页602所呈现的Wiki应用的命令。命令622、624、626、628、630以及632随数据中枢634一起提供用于页602中的动态内容。
数据中枢634为Wiki环境中的数据中枢对象,类似于图5中的数据中枢558。然而,数据中枢634为客户机侧数据中枢。数据中枢634包括用于在页602中的命令和Wiki环境601中的命令之间发送和接收事件对象的性质和方法集合。数据中枢634包括用于在页602中的命令和Wiki环境601中的命令之间发送和接收事件和/或数据的性质和方法集合。
事件对象为数据对象,其定义了在与诸如页602的Wiki页相关联的命令之间传输的事件。事件对象可以包括,但并不必需包括,事件数据。在这些例子中,事件为消息,指示发生了某件事情,例如,任务、程序、或者命令的有意义的出现或者发生。例如,事件可以包括接收用户输入、收集变元的最小所需集合、命令操作的完成、给定时间的出现、或者任何其它活动;输入或数据的接收,出现、发生;或者活动。
为了描述其中可以把Wiki应用呈现于用户的方式,给出了对页602的不同类型的内容的说明。然而,这一说明并不意味着对可用于Wiki应用的内容的类型与范围的限制。例如,页602可以包括图6中未加说明的其它附加的内容、命令和/或部件,而不背离本发明的说明性实施例的范围。
用户可以操纵页602中的内容,以使用Wiki应用和/或改变Wiki应用执行的方式。换句话说,用户可以通过操纵这些命令的图形表示,添加内容或者从页602去除内容诸如命令,以生成或修改针对页602的内容和/或功能。
在这一例子中,Wiki环境601为诸如图3中的Wiki环境302和图4中的Wiki环境400的Wiki环境。Wiki环境601包括呈命令树或者抽象语法树(abstract syntax tree)形式的命令640~650。在Wiki环境中更新命令640~650。命令640~650与命令634~632在实现上不同,但涉及类似的命令。例如,命令632与客户机环境相关联,并且由用户在客户机环境600中对其进行更新。在网络连接上使用AJAX 636通过异步JavaScript和可扩展标记语言在Wiki环境601中更新相应的命令650。
AJAX 636为一种Web开发技术,用于创建诸如Wiki页的交互式Web应用。AJAX 636与后台的相关宿主服务器交换少量的数据,以便每次用户对所请求页进行改变时不重新加载整个页。
AJAX 636旨在提高诸如页602的页的交互性、速度、响应以及可用性。尽管这些说明性实施例描述了经由AJAX或JSON交换数据但是,根据本发明的这些性实施例,可以使用给定部件集合之间达成一致的任何通信协议来交换数据。
Wiki环境601中的命令640、642、644、646、648以及650与数据中枢638进行交互。数据中枢638为服务器侧数据中枢,例如图5中的数据中枢558。在这一说明性的例子中,客户机环境600的数据中枢634和数据中枢638经由AJAX 640交换事件和/或数据。AJAX 636和640可以使用可扩展标记语言(XML)作为在客户机环境600和Wiki环境601之间传递数据的格式,而进行通信,然而,任何格式将可行,包括预先格式化的超文本标记语言(HTML)、普通文本以及JavaScript对象注释(JavaScript object notation,JSON)。JavaScript对象注释为一种轻便计算机数据交换格式。JSON为JavaScript的对象文字注释的子集,但其使用不要求JavaScript。
这些说明性实施例提供了一种针对应用Wiki的计算机实现的方法、装置以及计算机可用程序代码。Wiki应用为一种合作Web环境,其允许单个或多个用户有效地集成静态与交互的内容。Wiki页为Wiki应用中的页。本发明的说明性实施例允许用户容易地创建和管理Wiki页。用户可以通过拖放实况(live)内容,编辑Wiki页。实况内容为根据变化的信息更新的动态内容。例如,实况内容可以包括由链接于天气雷达站的服务器更新的、针对具体地理地点的天气图。
在页树视图中保留Wiki页。页树视图为包括页和子页的内容层次结构(hierarchy)。可以把页树视图称为Wiki空间、页空间、树、或者其它内容层次结构。视需要,本描述中的每一页既可以为内容提供者,也可为针对其它子页的容器。页树视图不同于其它文件结构,因为所有页均可以包括内容,并且同时被视为容器。根据赋予于每一页的名字,区分页树视图中的页。页包括节点和叶子节点。节点可以显示内容和用作文件夹或针对其它Wiki页的容器。叶子节点全然提供内容。
现在,转向图7,根据本发明的说明性实施例,描述了用于拖拽实况内容的示范性的显示屏幕。Wiki页700为诸如图6中的页602的页。可以按某种设计模式特别编辑Wiki页700。例如,用户可以检查指示正在被编辑Wiki页的相当容易实现(QED)的复选框。Wiki页700可以按设计模式显示选用区702。选用区702是用于合作操纵Web页的工具栏或者一组工具。例如,用户可以使用选用区702选择供在Wiki页700的主体704中显示的实况内容。主体704为可定制以及编辑以显示用户所指定内容的Wiki页700的一部分。
选用区702可以包括任何数目的图标706、708以及710。每一个图标为可用命令的图形表示。选用区702可用于显示内容,其可以包括命令、数据、页内容、Wiki设施、数据服务、定制化的列表以及任何数目的其它特征。
图标706可以为例如图标形式的到GoogleTM搜寻工具的实况链接。图标708可以为到GoogleTM地图(Google、Google搜寻、以及Google地图为Google公司在美国、在其它国家、或者在美国与其它国家中的注册商标)的实况链接。图标710可以为丰富网点总结或十分简单联合组织(syndication)(RSS)馈送。丰富网点总结为可扩展标记语言(XML)的协议和应用,其提供联合组织和聚积Web内容的开放方法。使用丰富网点总结,用户可以创建提供来自Web站点的标题、链接以及文章概要的数据馈送。用户可能不断地经由主体704中的消息聚积器把来自Web站点的更新内容传递给Wiki页700。消息聚积器为专门裁剪用于接收这些类型的馈送的一段软件。
在一个例子中,用户可以通过把图标708从选用区702拖至主体704,而在主体704中显示Google地图。用户还可以使用如将在图8中描述的属性编辑器,定制通过Wiki命令所显示的内容。可以编辑在指示现存Wiki命令的属性的诸如醒目标志(eyecatcher)712的页内容显示醒目标志中的现存Wiki命令。
现在,转向图8,根据本发明的说明性实施例,示出了用于对命令的属性进行编辑的显示屏幕。新式(modern)Wiki应用需要一种对Wiki“削减(markdown)”命令性质进行编辑的可视机制,其不要求用户对页加以编辑,而允许用户在无需不和谐(jarring)的页刷新和概念上的语境交换的情况下,修改命令设置。
应用Wiki减轻了用户必须知道或者学习超文本标记语言标记的负担。在这些例子中,应用Wiki引入了用于创建列表、表格、以及那些使用短字符序列、行位置以及空白的组合的其它超文本标记语言结构的简略语法(shorthandsyntax)。例如,在行的第一列中,与超文本标记语言中所要求的<OL><LI></LI></OL>标签相对,由单一的星号(*)后跟单个空格,定义列表项。把应用Wiki所引入的简略语法称为“削减”,以强调使用超文本标记语言和在Wiki环境中创建内容的差别。Wiki命令类支持用于编辑“削减”命令的可视属性编辑器的生成。
Wiki页800为诸如图7中的Wiki页700的Wiki页的部分视图。选用区802类似于图7中的选用区702。Wiki页800包含显示命名为存储器以及列表的醒目标志804和806的Wiki命令。
可以使用属性编辑器808,编辑显示醒目标志804和806的Wiki命令的属性。所述属性为醒目标志所代表的命令所使用的性质、数据、字段以及其它信息,以在图7中的Wiki页700上显示内容。
属性编辑器808允许用户定制实况内容所显示的信息。属性编辑器808由超文本标记语言和随Wiki页内容一起下载于浏览器客户机的JavaScript构成。例如,用户可以指定用于显示Google地图的具体的地址。类似地,用户可以进行查询,并且限制在Wiki页800中所显示的信息。
用户可以使用属性编辑器808输入针对Wiki命令的宽度与高度值,其允许确定Wiki命令的可视化表示的大小。另外,还可以使用属性编辑器808输入数据结构的缩放(scaling)因子、名字、最大和最小值,这些是某些其它例子。属性编辑器808用于把Wiki命令的可变点表面化(surface)于用户。
例如,当需要时,图5中的过程532可以为每个命令生成默认的属性编辑器。每一Wiki命令可以贡献(contribute)定制化的属性编辑器,以表面化Wiki命令的独特可变点。选择针对命令地醒目标志804或806,致使针对相关命令的属性编辑器得以显示。
现在,转向图9,根据本发明的说明性实施例,描述了页树视图。页树视图900是用于向用户可视地显示Wiki页的组织的可视存储结构。页树视图900示出了Wiki应用中的Wiki页的名字或标签(tag)。标签为用户赋予的标志,用于对Wiki的内容归类。这些例子中的每一个页为节点或叶子节点。
Wikispace 902为页树视图900的页树视图的基页(base page),并且可用于引用页树视图900的内容。页树视图900不同于其它文件系统和数据结构,因为Wikispace 902和包括测试904、测试906、顶层908以及Wiki 910的其它基页或节点既可以显示内容,也可以用作按文件夹或针对其它Wiki页的容器。图形指示符,例如“+”号,可以指示Wiki页为节点。Wikispace 902使用了平(flat)的层次结构,其中,由节点所代表的每一个页可以为容器和内容提供者。例如,Wikispace 902包括内容,但也可用于与包括HelloWorld 912、主页914以及菜单测试916的Wiki子页或叶子节点的链接。在这些例子中,可以作为内容提供者和页容器,显示页树视图900中的基页。
用户可以使用页树视图900导航(navigate)Wiki页。例如,通过点击Wiki页,显示该Wiki页的内容和/或子页。因此,用户能够通过选择页名,容易地导航Wiki。
现在,转向图10,根据本发明的说明性实施例,示出针对Wiki页的显示屏幕。Wiki页1000为诸如图6中的页602的页。用户可能已使用了诸如图7中的醒目标志708和选用区702的选用区中的醒目标志,把实况内容拖入Wiki页1000。
例如,商务旅行者可能先前已针对即将来临的商务旅行修改过Wiki页1000,以显示目的地列表1002。通过点击目的地列表1002中的每一地点,Wiki页显示该地址的国家地图1004、天气预报1006以及当地注意事项1008。定制化的信息允许用户针对商务旅行的天气以及其它情况做出计划,并且可视地描绘每次会议的地点。当地注意事项1008可以包括到针对所指定地理地点的正在发生的事件和新商店链接,向用户通知可能与商务会议相关的局部事件。
这些说明性实施例还提供了一种用于处理Web页供在Wiki环境中显示的计算机实现的方法、装置以及计算机可用程序代码。在呈递最终视图之前,所添加的部件能够与其它部件交互。使部件能够从页服务语境中发现新的性质与参数设置。把验证(validation)机制用于部件,以在呈递最终视图之前验证输入与报告错误。在页服务序列的生命周期内处理作为目标的事件。在单一的服务器上管理同一部件的多个版本。
现在,转向图11,根据本发明的说明性实施例,示出了抽象语法树的结构图。抽象语法树环境1100包括用于形成和处理抽象语法树1102的各种部件。
Wiki命令语境(WCC)1104是从诸如图6中的页602的Wiki页的标记语言创建抽象语法树1102的对象。Wiki命令语境1104为命令的抽象语法树的双亲。Wiki命令语境1104负责加载针对页或源片段的命令。抽象语法树1102由针对Wiki源的诸如图6中的命令640、642、644、646、648以及650的命令构成。树为一种数据结构,包括源或基,分支出去以包括叶子或节点。树中的互连的节点代表依赖于其它被互连的节点的命令。节点,例如节点1106~1110,代表抽象语法树1102中的不同的命令。
例如,节点1106名为Accordion,并且执行内部化由用户赋予Accordion的性质与变量,以及发行(emit)针对作为目标的客户机浏览器环境的Accordion的超文本标记语言片段所需的步骤。把节点1108命名为Template(模板),其是名为Accordion的节点1106的孩子。节点1106提供了用于在客户机浏览器环境中显示的在Accordion中标牌(tab)的名字。把节点1110命名为Forecast(预报),其为用于把天气预报插入Wiki页的命令。
数据中枢1112为诸如图6中的数据中枢638的数据中枢。数据中枢1112通过按预定的遍历次序遍历抽象语法树1102,并且援用(invoke)每节点处的具体的功能,而处理抽象语法树1102。例如,节点1114具有用于提供纬度与经度的功能。节点1114可以为提供指定地址的纬度与经度的Google地图命令。
取决于页的复杂度,Wiki命令语境(WCC)1104所代表的抽象语法树1102可以包括两种类型的孩子节点:第一类是先前所描述的那些孩子节点,第二类是那些其根为另一Wiki命令语境的其它抽象语法树。当处理那些生成也需要加以处理的其它Wiki源片段的统一资源标识符请求时,使用另一Wiki命令语境。
本发明的说明性实施例还提供了一种用于扩展Wiki环境能力的计算机实现的方法、装置以及计算机可用程序代码。Wiki是合作Web页,其允许单个或多个用户有效地集成静态的与交互的内容。面向对象的框架用于定义如何扩展对象,以容易地创建合作环境。Wiki环境需要支持在无需对核心运行时间部件进行改变的情况下,扩展核心环境的基本机制。
这些说明性实施例包括处理Wiki命令,以管理所部署的、包括任何数目Wiki命令的环境的客户机与服务器侧元件。Wiki环境中的核心处理引擎和基类的抽象集合用于处理Wiki命令类的具体实现,如进一步加以描述的。核心处理引擎支持核心运行时间部件的处理与生命周期管理,以扩展Wiki环境的能力。所述核心处理引擎为诸如图4中的Wiki引擎402的引擎。
现在,转向图12,根据本发明的说明性实施例,描述命令的方框图。Wiki命令为用于实现诸如图3中的Wiki环境302的Wiki的功能和过程的命令。图12描述了Wiki命令元数据接口和相关的命令1200。命令1200为诸如图5中的命令550的命令。
命令1200包括不同的命令种类,其可以包括目录1202、生命周期1204、属性编辑1206以及页处理1208。命令1200中仅示出了几个例子。例如,命令包括Get/setCategory 1210、getName 1212以及getDescription 1214。Get/setCategory 1210描述Wiki命令所属的种类。getName 1212为部件的简化的名字。getDescription 1214为Wiki命令的文本描述,旨在帮助用户理解命令。
目录1202还可以包括其它的命令,例如:
Figure A20071012866100221
getHelp,是当用户盘旋于页或选用区中的Wiki命令上时所呈现的帮助文本,
Figure A20071012866100231
getSample,返回用于插入命令的样本Wiki命令源,
Figure A20071012866100232
getIcon,返回针对选用区中的Wiki命令的要显示的图标,
Figure A20071012866100233
getDragContent,返回在初始拖离(drag off)针对Wiki命令的选用区期间所使用的Wiki源片段,以及
Figure A20071012866100234
getDropContent,返回当在初始部位(placement)上放下(drop)Wiki命令时所插入的Wiki源片段。
生命周期1204可以包括诸如wasSaved 1216、wasDeleted 1218以及wasCopied 1220的命令。在把命令保存在服务器环境中之后调用wasSaved1216。在这些例子中,当已经从服务器页环境中去除了命令时调用wasDeleted1218。wasDeleted 1218向Wiki命令提供了清除与给定的页上的Wiki命令相关的永久性资源的机制。当已经把包含给定Wiki命令的页拷贝至另一名字时,调用wasCopied 1220。wasCopied 1220向Wiki命令提供了把任何必要的永久性改变施用于新拷贝的页上的机制。
生命周期1204还可以包括其它的命令,例如:
Figure A20071012866100235
getVersion,返回Wiki命令的版本,
Figure A20071012866100236
getParameters,返回与Wiki命令相关的参数的列表,
Figure A20071012866100237
aboutToSave,当将要把命令保存在服务器环境中时,被调用,其向命令提供了执行为保持命令所需的任何活动的机会。
configure,当需要配置命令时,被调用e,
Figure A20071012866100239
get/setPluginData,在配置命令期间,保存/获取与Wiki命令相关的数据,
Figure A200710128661002310
wasUNdelete,当在先前把命令从某一给定页删除之后已经把命令放回该页中时,被调用,
Figure A200710128661002311
wasRenamed,当包含Wiki命令的页已经被重新命名时,被调用,
Figure A200710128661002312
aboutToExport,紧在把Wiki命令导出至Wiki的所保存的格式之前,被调用,以及
Figure A200710128661002313
wasImported,紧在把Wiki命令从Wiki保存格式导入之后,被调用。
属性编辑1206可以包括诸如generatePropertyEditor 1222和allowEdit1224的命令。在这些说明性的实施例中,核心引擎调用generatePropertyEditor1222,以准许命令生成客户机侧编辑视件(visual)。如果未实现generatePropertyEditor 1222,则为编辑Wiki命令的参数,生成默认的属性编辑器。属性编辑器是接口,其允许用户输入针对Wiki命令的参数、值、文本、变量以及其它数据。allowEdit 1224确定是否准许对Wiki命令进行编辑。
页处理1208可以包括诸如render 1226、drawEyeCatcher 1228、refreshOnUpdate 1230以及getTargetDIV 1232的命令。当Wiki命令需要将其本身显示在针对超文本标记语言的输出流中时,调用render 1226。当在页上描绘命令,以提供可以在客户机上点击来操纵Wiki命令的内容时,调用drawEyeCatcher 1228,这通常要援用关于所选择命令的属性编辑器。醒目标志用于追踪单(singleton)编辑能力。调用refreshOnUpdate 1230,以确定在已经使用属性编辑器更新了命令的变元之后是否应该刷新整个页。getTargetDIV1232返回要更新的超文本标记语言DIV的名字。DIV代表超文本标记语言文件中的划分(division)/区段(section)。在客户机浏览器上的DIV中显示每一个命令。DIV具有相关的标识,Wiki引擎将自动生成这一标识,或者命令可以通过实现getTargetDIV协议提供这一标识。
页处理1208还可以包括其它命令,例如:
Figure A20071012866100241
getDestinationDiv,当在页上重新呈递命令时,返回要更新的超文本标记语言/DIV的名字标识。呈递命令是按指定的方式再现或显示所编码的数据。例如,通过生成用于显示醒目标志的呈递在Wiki页中的超文本标记语言,呈递醒目标志。
Figure A20071012866100242
getArguments,返回传递于命令供处理的实际变元的列表。变元包含getParameters调用所返回的参数的‘实际’值,getParameters调用返回命令的形式变元列表。
refreshOnInsert,被调用来确定在已经在Wiki页上放置了命令之后是否应该刷新整个页。
Figure A20071012866100244
areArgmentsSet,返回值,该值指定是否已满足针对Wiki命令的所有输入变元以致命令可以‘激发(fire)’其执行模型动作的援用方法。
Figure A20071012866100245
init,被调用来初始化内部Wiki命令。
以上所描述的方法与命令,用于提供图31~43中的过程。
现在,转向图13,根据本发明的说明性实施例,描述示出属性编辑部件的图。属性编辑系统1300包括醒目标志1302、属性编辑器1304以及选择器编辑器1306。
醒目标志1302是所选择命令的图形表示。例如,醒目标志1302可以代表用于显示所指定地址的地图的GoogleTM地图。可以点击图标形式的醒目标志1302,以援用允许用户编辑所选择命令的属性编辑器1304。
属性编辑器1304用于建立命令的性质。例如,性质可以指出信息的类型、属性、参数、针对性质的捆绑信息,以及默认和可允许的值。例如,属性编辑器1304可允许用户指定地址以便GoogleTM地图生成所请求的地图。选择器编辑器1306是专门化的属性编辑器,其允许用户建立具体的性质元数据。例如,用户可能能够使用选择器编辑器1306指定编辑地址。当在属性编辑器1304中建立性质时,特定性质可以自动地打开选择器编辑器1306,用于针对属性编辑器1304中的性质或字段输入更特定的信息。
本发明的说明性实施例还提供了一种计算机实现的方法、装置以及计算机可用程序代码,用于在服务器侧数据中枢处处理从远程数据处理系统上的客户机侧数据中枢接收的Wiki页的请求。服务器侧数据中枢为当服务器接收到页请求时实例化的、服务器上的数据中枢对象实例。服务器侧数据中枢与具体的页实例相关联。于是,每次服务器从与所述页相关的客户机接收请求例如,修改或更新页时,可以取得和加载与具体的页相关的服务器侧数据中枢的实例,以处理该请求。
服务器侧数据中枢包括性质和方法集合。这一方法集合为数据中枢上的一或多个方法,它们用于从服务器上的生产者命令,把事件发送于与合作应用的实例相关的一组消费者命令。在这一例子中,这组消费者命令可以位于服务器侧上、客户机侧上、或者这两侧上。
消费者命令为如下命令,其需要接收或希望接收事件和/或数据,用于处理和/或执行该命令的功能。消费者命令向数据中枢登记以接收与给定题目相关的事件对象。
例如,搜寻部件需要或希望接收搜寻输入项目,以执行搜寻部件的搜寻功能。因此,搜寻部件为搜寻输入项目的消费者。从而,搜寻命令为与搜寻项目和可用题目相关的事件的消费者。
也可以把消费者命令称为监听者命令,因为消费者命令正在监听或等待与一或多个具体题目相关的事件。在以上的例子中,搜寻部件正在监听与可用搜寻项目相关的题目。
在这些例子中,消费者集合包括单个消费者的以及两或两个以上的消费者。
当在客户机处接收到所请求的页时,在客户机处创建客户机侧数据中枢。把此客户机侧数据中枢与诸如Wiki应用的合作应用的实例相关联。
通过路由在经由服务器侧数据中枢和/或客户机侧数据中枢的命令之间所传输的事件,在页请求的处理期间,对服务器侧数据中枢和相应的客户机侧数据中枢的利用,使得与所请求的页相关的Wiki命令能够更容易地进行交互。
根据本发明的这些说明性实施例,可以利用服务器侧数据中枢和/或客户机侧数据中枢,在任何使用事件处理机制的应用中的命令之间路由事件。事件处理机制为准许诸如Wiki命令的应用中的模块与应用中的其它模块进行通信的机制。例如,Web浏览器使用事件处理机制。另外,诸如电子邮件部件和新闻阅读器的Web应用也利用事件处理机制。
现在,转向图14,根据本发明的说明性实施例,描述了针对Wiki应用的客户机和服务器上的命令之间的数据流。服务器1400为诸如图1中的服务器104和106的服务器。服务器1400为诸如图3中的Wiki环境302、图4中的Wiki环境400以及图6中的Wiki环境601的Wiki环境的一部分。
数据中枢1402为诸如图5中的数据中枢558和图6中的数据中枢638的服务器侧数据中枢。当从客户机1408接收到对页的请求时,在服务器1400上创建数据中枢1402。这样,当从客户机侧数据中枢接收到请求时,实例化数据中枢1402。服务器侧数据中枢1402为具有性质和用于广播或路由Wiki环境中命令之间的事件的方法的数据中枢对象的实例。服务器侧数据中枢1402上的方法集合用于处理与从客户机1408上的用户接收的页请求相关联的事件与命令。
Wiki命令1404为存在于Wiki系统中的Wiki命令对象,诸如图4中的命令422、图5中的命令550以及图6中的命令640~650。Wiki命令1404允许用户把数据包括在页中和/或处理针对页的数据,或者与所请求的Wiki页相关的任何其它功能。在这一例子中,Wiki命令1404由Wiki页对象诸如图5中的Wiki页对象526的页处理回路处理。
数据中枢1402确定是否存在Wiki命令1404的变元参数所要求的所有所要求的数据和/或输入值。如果存在所有所要求的数据和/或输入值,则数据中枢1402触发Wiki命令1404上的invoke(援用)方法。该invoke方法触发Wiki命令1404,以把事件1406激发至数据中枢1402。事件1406为定义事件的事件对象。
在这一说明性的例子中,事件1406由服务器1400上的Wiki命令1404激发。然而,根据本发明的这些说明性实施例,事件1406也可以包括服务器侧数据中枢1402从客户机侧数据中枢1410接收的事件。在这样的情况下,事件1406将为由客户机上的命令所激发的事件,诸如事件1407,事件1407为客户机侧Wiki命令1412所激发的事件对象。根据本发明的另一说明性实施例,事件1407可以包括下述事件,该事件由客户机侧Wiki命令1412生成,并且被发送至客户机侧数据中枢1410以在客户机上进行处理,或者路由至服务器侧数据中枢以在服务器1400上进行处理。
当从Wiki命令1404接收到事件1406时,数据中枢1402把事件1406发送于事件队列,以进行处理。事件队列为缓冲器或者数据结构,用于在对事件对象进行处理之前存储事件对象。
在处理事件阶段期间,服务器侧数据中枢1402处理事件1406。在事件1406的处理期间,服务器侧数据中枢1402确定是否诸如Wiki命令1404的任何命令被登记为为事件1406的消费者命令。消费者命令为请求与给定事件题目相关的事件的命令。事件题目为与事件对象相关联的主题或论题。例如,作为用户输入搜索项目的结果而激发的事件对象将具有“搜索”或者“搜索可用”事件题目。
消费者命令向数据中枢登记为针对给定题目的消费者命令。于是,当数据中枢接收到针对该给定题目的事件对象时,数据中枢能够把该事件发送至针对该给定事件题目的登记的消费者命令集合。
所登记的消费者命令为已登记为给定题目的事件的消费者的命令。例如,显示命令聚积针对诸如事故的题目的数据的集合。用于在映射显示上显示的该命令报告将向数据中枢登记为针对题目“事故”的消费者命令。当数据中枢接收到针对事故的事件时,将把该事故事件对象发送至针对题目“事故”登记的所有消费者命令,包括该显示命令。一旦该显示命令接收到事故题目事件,则该显示命令将消费或使用该数据生成示出该事故数据的映像显示,或者更新先前所显示的映像,以显示新的事故数据。
数据中枢1410把事件1406发送于Wiki命令1412,以进行处理。数据中枢1410确定Wiki命令1412中是否存在激发Wiki命令1412所要求的给定变元/参数的所有所请求的数据和/或输入值。如果存在所有所要求的数据和/或输入值,则数据中枢1410触发Wiki命令1412中的invoke方法。响应于数据中枢1410调用Wiki命令1412上的invoke方法,Wiki命令1412向数据中枢1410发送或激发事件1407,以进行处理。当完成地处理了事件1407时,数据中枢1410将把事件1406发送于浏览器或客户机,以供显示。当事件处于用于在浏览器上显示的适当格式诸如超文本标记语言代码时,完成地处理了该事件。
这样,这些说明性实施例提供了用于处理对页的请求的计算机实现的方法、装置以及计算机可用程序代码。服务器侧数据中枢从远程数据处理系统上的客户机侧数据中枢接收对页的请求。把客户机侧数据中枢与合作应用的实例相关联。服务器侧数据中枢在初始页呈递过程期间使用方法集合处理请求。该方法集合用于把事件从服务器上的生产者命令发送于与合作应用相关的一组消费者命令。
现在,转向图15,根据本发明的说明性实施例,描述了说明初始页呈递过程期间服务器上的命令之间的数据流的图。数据中枢1500为服务器侧数据中枢,诸如图5中的数据中枢558和图6中的数据中枢638。在这一说明性例子中,以PHP:超文本预处理器(PHP),实现数据中枢1500。Wiki命令生产者1502为与服务器相关的命令。生产者为Wiki命令部件,其提供可以由另一Wiki部件使用或消费的数据。在这一说明性例子中,Wiki命令生产者1502登记为针对题目“汽车”的事件的生产者。为了把Wiki命令生产者1502登记为题目“汽车”的生产者,数据中枢1500把针对Wiki命令生产者1502的标识符添加于针对与题目“汽车”相关联的生产者标识符的对象变量。
Wiki命令消费者1506为与服务器相关联的命令。Wiki命令消费者1506向数据中枢1500登记为针对题目“汽车”1058的消费者。为了把Wiki命令消费者1506登记为题目“汽车”的消费者,数据中枢1500把针对Wiki命令消费者1506的标识符添加于数据中枢1500上的消费者对象变量中的消费者命令标识符的阵列。
Wiki页1510为对象,其具有与加载于Wiki环境中的给定所请求页相关联的处理回路。在初始化阶段期间,服务器调用init方法,以初始化与给定的所请求页相关联的所有命令,诸如Wiki命令生产者1502。当初始化时,命令向数据中枢登记为生产者命令诸如Wiki命令生产者1504,或者消费者命令诸如Wiki命令消费者1506。
当Wiki命令生产者1502具有准备好激发的数据和/或事件时,WikiWiki命令生产者1502取得数据和激发具有题目“汽车/可用”的事件。当Wiki命令生产者1502激发事件题目“汽车/可用”事件1512时,把该事件发送于数据中枢1500。数据中枢1500把题目“汽车/可用”事件1512添加于数据中枢1500中的事件队列1514。在处理了事件队列中的题目“汽车/可用”事件之后,把“汽车/可用”事件发送于针对事件题目“汽车”而登记的所有消费者。
Wiki页对象的Wiki页处理回路调用第一processEvents方法。在这一处理事件阶段期间,数据中枢处理服务器侧数据中枢上的事件队列中的事件,包括由Wiki命令生产者1502激发的“汽车/可用”事件对象。数据中枢1500从事件队列中取得事件“汽车/可用”。数据中枢1500关于登记为针对事件题目“汽车”的消费者的每一个命令调用callback(回调)方法,其中所述的消费者包括Wiki命令消费者1506。把事件作为callback方法的变元/参数,传递于Wiki命令消费者1506。消费者callback方法通过执行callback方法内部的代码,处理事件对象。
如果在初始化所有部件之后,但在呈递所请求的页之前,存在将加以执行的附加处理,则每一命令具有通过调用discover(发现)方法执行代码的机会。调用第二processEvents阶段1520,以处理在discover阶段期间可能激发的任何事件。
最后,Wiki页对象1510关于所有命令调用呈递阶段。在呈递阶段期间,所有命令应该具有它们所有可用的数据,以便可以生成超文本标记语言代码,并且将其发送至客户机,以在客户机浏览器处呈递作为所请求的页。如果Wiki消费者1506为生产者所生成的“汽车”数据的表显示,则呈递阶段可以生成如图16中所示的汽车表。
现在,参照图16,根据本发明的说明性实施例,示出了图示响应于来自用户的页请求所生成的Wiki页1600的图。如以上所讨论的,与页相关联的所有命令可以向数据中枢登记为生产者和消费者。当由生产者生产事件时,该事件由消费者使用来呈递超文本标记语言或者JavaScript,以呈递完整页或页片段。把超文本标记语言或者JavaScript发送至客户机浏览器,以加以显示。
于是,在Wiki页处理回路期间,所有的交互流过(ripple through)数据中枢。作为这些交互的结果,在呈递时,处置了所有的事件。因此,初始呈递的页诸如页1600充分描述了Wiki页的正确视图。换句话说,客户机不必激发事件以修改初始呈递的页来使页视图正确,因为通过服务器侧数据中枢处理了与从服务器加载新页相关联的所有事件。
当在服务器处处理针对页的初始请求时,服务器生成针对所请求页的超文本标记语言代码和/或JavaScript。当在客户机处接收到超文本标记语言代码和/或JavaScript时,在客户机处加载新页,以在客户机浏览器中加以显示。
在页加载过程期间,针对页的超文本标记语言代码和/或JavaScript代码创建客户机侧数据中枢对象。正如在服务器处在初始页处理回路期间向服务器侧数据中枢登记的服务器上的命令一样,客户机侧数据中枢对象向客户机侧数据中枢把客户机上的所有命令登记为生产者命令和消费者命令。
在这些例子中,如果在加载初始页之后在客户机处出现的命令交互可以被完全包含在客户机上并且在客户机上处理,则不把该命令交互发送于服务器。换句话说,Wiki命令在客户机上进行交互,以修改所显示的页,以便反映客户机处用户动作或其它事物所触发的附加的输入或事件。如果可以完全在客户机上处理部件交互,则不把客户机生成的事件发送至服务器。这一事件能够完全在客户机处加以处理。如果情况如此,则服务器不必涉及任何方式的事件的处理。在所描述的实施例中,术语“修改”包括更新页或者变更页,以反映新的数据和/或新的页内容。
这样,本发明的说明性实施例提供了一种用于计算机实现的方法、装置以及计算机可用程序代码,用于客户机侧数据中枢处理事件。客户机侧数据中枢接收针对给定题目的事件。由与客户机相关的生产者命令生成事件。客户机侧数据中枢处理事件,以标识一组针对给定题目的消费者命令。客户机侧数据中枢把事件发送至针对给定题目的一组消费者。客户机侧数据中枢从该组消费者中的一或多个消费者接收新的页内容,其中,使用新的页内容更新所显示的页,以形成更新的页。
现在,转向图17,根据本发明的说明性实施例,描述了图示在客户机浏览器处所显示的所呈递的页。在所呈递的页1700上,来自部件1702的搜寻输入已向客户机侧数据中枢登记为事件题目“搜寻/可用”的生产者。回应(echo)消费者部件1704已向客户机侧数据中枢登记为题目事件“搜寻/可用”的消费者。当搜寻部件激发“搜寻/可用”事件时,消费者部件1704作用来回应用户所键入搜寻部件1702的内容。
图18是图,说明了根据本发明的说明性实施例的、在客户机浏览器处加载了和显示了新页之后客户机侧数据中枢上各部件之间的数据流。数据中枢1800为客户机侧数据中枢,诸如图6中的数据中枢634和图14中的数据中枢1410。在页加载期间,在客户机上创建数据中枢1800。在这一说明性例子中,以JavaScript和超文本标记语言实现客户机侧数据中枢1800。
Wiki命令生产者1802为客户机上的命令,其提供可以由另一个Wiki命令消费的数据或者希望通知另一个部件:已发生了特定的事件。Wiki命令生产者1802向数据中枢1800登记1804为针对题目“搜寻/可用”的生产者。在这一例子中,Wiki命令生产者1802为图17中的搜寻部件1702。
Wiki命令消费者1806为客户机上的命令,其消费事件对象、消费数据、或者希望被通知事件。Wiki命令消费者1806向客户机侧数据中枢1800登记为针对事件题目“搜寻/可用”1808的消费者。在这一例子中,Wiki命令消费者1806为图17中的回应消费者部件1704。Wiki命令消费者1806为服务器上的相应Wiki命令对象的客户机版本。客户机上的Wiki命令消费者1806包括服务器上的Wiki命令对象的所有数据,但其不包含服务器上的相应Wiki命令中所发现的所有方法。
当在输入了搜寻项目诸如图17中所示的“Wiki”搜寻项目之后用户按下“go”按钮时,Wiki命令生产者1802激发“搜寻/可用”事件。Wiki命令生产者1802创建事件对象,把数据附接于该事件对象,然后通过调用数据中枢1800上的fireEvent方法,激发该事件对象1810,以把事件发送于数据中枢1800。与在processEvents阶段期间把事件在数据中枢上排队并且处理事件的服务器侧数据中枢不同,客户机侧数据中枢1800不把事件发送于事件队列。取而代之,客户机侧数据中枢1800立即处理事件,并且把事件发送于针对该事件登记的消费者集合。
在这一说明性例子中,由数据中枢1800调用回应部件callback 1812。Wiki命令消费者1806使用JavaScript修改所呈递的页诸如图17中的页1700,以把文本“搜寻项目:Wiki”插入所显示的页中。用于由Wiki命令消费者1806动态更新所呈递的页的内容的JavaScript的示范性的说明包括如下内容;
Var divId=document.Get ElementById(‘echoDivId’);
divId.innerHTML=“搜寻项目:”+event.getValue();
然而,根据本发明的说明性实施例,Wiki命令消费者1806可以使用任何已知的或可用的修改页的方法,包括,但不局限于文档对象模型(DOM)操纵,来修改所呈递的页。
但是,如果交互要求服务器被涉及到事件的处理中,则把事件发送至服务器。很可能客户机上所激发的事件将要求把该事件发送至服务器侧数据中枢,因为数据或者生存在服务器上,或者由服务器取得。
换句话说,在于客户机处显示了页之后,从用户接收新的事件或者新的数据。该事件可能要求全部或部分地在服务器处进行处理。如果情况如此,则客户机在更新所显示的页之前,把事件发送至服务器。
客户机和服务器上的数据中枢对象可使Wiki部件与命令能够在客户机上交互、在服务器上交互、以及使用基于题目的事件机制有效地连线/连接部件。当用户交互的结果要求服务器被访问以执行某些在客户机上不可能的操作或处理时,客户机侧数据中枢把事件发送至服务器侧数据中枢。
例如,如果服务器拥有或可以访问给定用户交互所需的数据诸如数据库表,而客户机对其不拥有或不可访问,则把事件发送服务器。另外,如果需要服务器取得用户交互所需的数据,例如数据反馈,则把事件发送至服务器。在这些情况下,把事件发送至服务器,以进行处置/处理。一旦完成了服务器上的事件的处置/处理,则服务器把所更新的页内容发送至客户机,以修改在客户机处所显示的页。
例如,搜寻部件为接受来自用户的输入的部件。根据用户所输入的文本,把搜寻文本发送至服务器。服务器进行搜寻。服务器使用表部件呈递搜寻的结果。把服务器上的表部件所生成的所呈递的表返回于客户机,以加以显示。
本发明的说明性实施例还提供了一种用于事件的数据中枢处理的计算机实现的方法、装置以及计算机可用程序代码。客户机侧数据中枢接收与当前所显示的页相关联的给定题目的事件。客户机侧数据中枢把事件数据发送至服务器侧数据中枢,以在服务器上处理事件。
响应于接收与页相关联的事件,服务器侧数据中枢把针对给定题目的事件添加于服务器侧数据中枢上的事件队列。服务器侧数据中枢处理事件队列中的事件。标识与该事件相关的给定题目的消费者命令集合。消费者命令为接收针对给定题目的事件的命令。服务器侧数据中枢把事件发送至针对给定题目的消费者命令集合。消费者命令集合中的一或多个消费者处理事件,以呈递针对该页的页内容。然后,服务器侧数据中枢把处理事件的结果发送回客户机侧数据中枢。
客户机侧数据中枢从服务器侧数据中枢接收事件处理的结果。处理事件的结果包括新的页内容。在客户机浏览器处使用新的页内容更新当前所显示的页,以形成更新的页。
接下来,参照图19A和19B,根据本发明的说明性实施例,示出说明在页更新期间在客户机侧数据中枢和服务器侧数据中枢之间的数据流。当第一次加载Wiki页时,处理服务器侧命令,以生成发送于客户机以向用户显示的初始页呈递,如图8~9中所示。在这一说明性例子中,当第一次加载页时,创建服务器侧数据中枢1900。Wiki命令生产者1902为搜寻部件。
在初始化阶段期间,Wiki命令生产者1902向数据中枢1900初始化和登记1904为事件题目“搜寻/可用”和“搜寻/被点击的”的生产者。Wiki命令生产者1902搜寻部件还登记为针对由客户机生成的“搜寻/被点击的”事件题目的消费者。在这一方式下,Wiki部件的客户机表示可以与服务器侧部件进行通信,或者调用服务器侧部件上的方法。
Wiki命令消费者1906为列表部件。Wiki命令消费者1906向数据中枢1900初始化和登记1908为“搜寻/可用”事件题目的消费者。在第一processEvents阶段期间,在服务器侧数据中枢上调用processEvents方法。数据中枢1900调用Wiki命令生产者1902上的invoke方法。作为响应,Wiki命令生产者1902执行搜寻,并且生成包括在“搜寻/可用”事件对象中的数据。Wiki命令生产者1902激发事件对象“搜寻/可用”,以指示搜寻数据准备好。
数据中枢1900调用Wiki命令消费者1906列表部件上的callback方法,以把“搜寻/可用”事件对象发送至Wiki命令消费者1906。然后,执行discover和第二processEvents阶段。最后,在呈递阶段期间,服务器侧数据中枢1900在与所请求的页相关的所有命令上调用render。Wiki命令生产者1902呈递超文本标记语言和JavaScript,以显示搜寻表格。Wiki命令消费者1906列表部件——目前作为生产者部件——呈递超文本标记语言和JavaScript,以显示所述表。把所呈递的部件的结果与其余的超文本标记语言页相组合,并且将它们发送至客户机,以加以显示。在浏览器加载页的同时,JavaScript代码创建客户机侧数据中枢1910,并且向客户机侧数据中枢1910登记所有生产者1912和消费者1914。这为初始页呈递。
一旦已经初始显示了页,则用户交互可以导致对一或多个部件的呈递的改变。例如,当用户输入搜寻项目,并且按下“go”时,改变数据的用户交互出现。客户机侧搜寻部件Wiki命令生产者1916以题目“搜寻/被点击的”激发事件1918。把搜索短语作为数据附接于事件对象。客户机侧数据中枢1910接收事件对象,并且将其发送至登记为针对事件题目“搜寻”的消费者的客户机上的任何监听者。与在服务器侧数据中枢中不同,客户机侧数据中枢不令事件在事件队列中排队。
客户机侧数据中枢1910确定是否应该把事件发送至与服务器侧数据中枢相关的服务器上的消费者命令。如果应该把事件发送至该服务器上的消费者命令,则客户机侧数据中枢通过经由AJAX、JSON或任何其它已知的或可用的远程方法援用手段,调用processClientEvent方法1920,把事件发送至所述服务器。
服务器侧数据中枢1900把所接收的事件添加于事件队列1922。服务器侧数据中枢1900处理事件队列中的事件,其中之一为从客户机所接收的“搜寻/被点击的”事件。服务器侧数据中枢1900把“搜寻/被点击的”事件发送至Wiki命令生产者1902搜寻部件,其被登记为针对事件题目“搜寻/被点击的”的消费者1924。Wiki命令生产者1902搜寻部件进行搜寻,并且生成/产生搜寻数据。Wiki命令生产者1902创建具有题目“搜寻/可用”的事件对象,并且把所生成的搜寻数据附接于事件对象。
服务器侧数据中枢1900把“搜寻/可用”事件对象添加于事件队列。由于在processEvents阶段中,服务器侧数据中枢1900依然在处理事件,所以服务器侧数据中枢1900立即把“搜寻/可用”事件对象从事件队列中去除,并且进行处理。然后,服务器侧数据中枢1900把“搜寻/可用”事件对象发送于Wiki命令消费者1906,因为Wiki命令消费者1906被登记为针对“搜寻/可用”题目的消费者。
Wiki命令消费者1906保存来自“搜寻/可用”事件对象的新的数据。服务器侧数据中枢1900调用在从客户机侧数据中枢1910所接收的原始事件“搜寻/被点击的”的处理的过程中所涉及的所有部件上的render方法1928。Wiki命令消费者1906列表部件render(呈递)方法使用超文本标记语言和JavaScript建造新的列表。Wiki命令消费者1906把新列表内容返回至服务器侧数据中枢1900。服务器侧数据中枢1900从所涉及的所有部件/命令,包括Wiki命令消费者1906,收集新的呈递,并且捆绑这些新的呈递物,以返回至客户机侧数据中枢1910。客户机侧数据中枢接收processClientEvent方法的结果1930,并且使用新页内容更新呈递在客户机上的命令1932。
接下来,图20为图,说明根据本发明的说明性实施例的、在页更新期间在服务器侧数据中枢和客户机侧数据中枢之间的消息流。当客户机侧生产者部件激发具有与在(消息1)处的事件的名字相连结的题目“被点击的”的事件时,所述消息流开始。在消息2.1处,客户机侧数据中枢接收事件,并且将其发送至客户机上的任何监听者
客户机侧数据中枢确定是否应该把事件发送至服务器上的监听者(消息2.2)。在这些说明性的例子中,监听者为登记为针对给定事件题目的消费者的命令或部件。如果应该把事件发送至服务器上的监听者,则客户机侧数据中枢通过调用processClientEvent或者通过另一种远程方法援用手段把事件发送至服务器(消息2.3)。服务器侧数据中枢把所接收的事件添加于事件队列(消息3)。
在消息4.1处,服务器侧数据中枢处理队列中的事件,其中之一为来自客户机的事件。服务器侧数据中枢把“被点击的”事件发送至登记为监听者的相应消费者(消息4.2)。
部件执行事件所希望的动作(消息5.1)。服务器侧数据中枢按相同的方式对待所有事件,而不管该事件是从客户机还是从服务器接收的。部件创建指示其结果可用的新的“可用的”事件(消息5.2)。服务器侧数据中枢把“可用的”事件添加于队列(消息6)。
服务器侧数据中枢处理“可用的”事件,并且把该事件发送至服务器上的一组消费者(消息7)。消费者部件使用来自“可用的”事件对象的数据。服务器侧数据中枢调用所有部件上的render方法(消息8.1)。所有部件都以超文本标记语言和JavaScript把新的呈递物返回至服务器侧数据中枢(消息8.2)。服务器侧数据中枢把从所有所涉及的部件所收集的呈递返回至客户机侧数据中枢(消息9)。客户机侧数据中枢接收服务器对事件的处理结果。客户机把这一结果发送至客户机上的监听者(消息10),以把页更新呈递在客户机浏览器上。
在可选的实施例中,也可以在其中服务器侧数据中枢根据本发明的说明性实施例进行操作、而不从客户机侧数据中枢接收事件的系统中使能处理页请求和实现命令之间的交互。在其它例子中,可以在其中客户机为PAD、蜂窝电话、GPS导航仪,或者任何不支持JavaScript的其它客户机设备的系统中实现处理页请求。
图21说明了根据本发明的说明性实施例的服务器侧数据中枢对象。在所描述的例子中,数据中枢2100为数据中枢对象,诸如图5中的数据中枢558、图6中的数据中枢638以及图7中的数据中枢702。在这一说明性的例子中,数据中枢2100为以PHP实现的数据中枢对象。
针对用户所请求的Wiki页的每一个实例,创建数据中枢诸如数据中枢2100。页实例用于引用具体的页视图以及页的相关的数据中枢实例。当把与给定页相关的客户机上的请求或事件发送至服务器时,服务器加载所指定的与给定页相关的数据中枢实例。
换句话说,针对客户机所请求的Wiki页的每一实例,在服务器上创建数据中枢的实例。在把页实例加载和显示在客户机上之后,不再需要客户机上针对该页的数据中枢实例。把数据中枢实例保存在存储器存储设备诸如图1中的存储器108中。当用户输入关于该页的新输入或者请求动作时,通过重新加载与具体页视图相关的数据中枢的先前顺序化(serialize)的实例,在服务器上重新创建针对该具体页视图的Wiki环境。所保存和所重新加载的数据中枢实例,反映了客户机浏览器上的具体页的当前状态。数据中枢2100包括性质/对象变量以及方法集合。
所述方法集合包括5个种类或类别的方法。方法的种类如下:数据中枢管理2102、生产者与消费者2104、题目2106、事件处理2108、以及命令管理2110。在这些说明性的例子中,方法为用于执行与诸如数据中枢2100的一或多个对象相关的动作或过程的规程、函数、或者例程。
数据中枢2100的方法集合包括方法接口,用于方法执行各种功能,例如,保存数据中枢实例、取得/重新加载数据中枢实例、添加命令、添加生产者、去除生产者等。例如,方法接口的数据中枢管理2102集合包括方法接口“公共静态函数init(页实例)”,用于方法从诸如图1中的存储器108的数据存储器中取得所存储的实例。
为了能够在Wiki环境和客户机环境中的命令之间传送事件,数据中枢2100还调用数据中枢题目对象2112和数据中枢事件对象2114上的方法。数据中枢题目对象2112主要为下述数据对象,该数据对象定义消费者命令可以订购的题目。在这些说明性的例子中,消费者为命令、部件或者对象,其要求和/或请求来自用户、另一命令、另一部件和/或另一对象的数据、事件或者输入,以执行该命令/部件的具体功能。在这些说明性的例子中,生产者为命令、部件或者对象,其从用户、另一命令、另一部件和/或另一对象提供数据、事件或者输出。
数据中枢事件对象2114为定义下述数据中枢事件的数据对象,所述数据中枢事件由生产者加以创建,并且被发送于针对与事件对象相关的给定事件题目的消费者。
图22为图,说明了根据本发明的说明性实施例而描述的客户机侧数据中枢对象。数据中枢2200为数据中枢对象,诸如图6中的数据中枢634和图14中的数据中枢1410,例如,在这一说明性例子中,数据中枢2200为以JavaScript实现的客户机侧数据中枢对象。
数据中枢2200为能够使Wiki部件与服务器上的其它Wiki部件以及客户机上的其它Wiki部件交互的客户机数据中枢。数据中枢2200还使得Wiki部件能够把客户机上所生成的事件发送至服务器,以进行处理。
数据中枢2200包括性质和方法集合。在这一说明性例子中,所述方法集合包括4个种类的方法。所述方法种类如下:生产者与消费者2202、题目2204、事件处理2206以及命令管理2208。
客户机侧数据中枢2200也调用客户机侧数据中枢题目对象2210和客户机侧数据中枢事件对象2212上的方法,以便实现Wiki环境和客户机环境中的命令之间的事件的传送。数据中枢题目对象2210为诸如图21中的数据中枢题目对象2112的数据中枢题目对象。客户机侧数据中枢事件对象2212为诸如图21中的数据中枢事件对象2114的数据中枢事件对象。
在本发明的一或多个实施例中,Wiki页的布置通常为静态的。而且,Wiki页布置的静态特性,以及以后必须单独改变页集合中的每一个页的布置的要求,使得编辑Wiki页或者Wiki子页集合的布置以便它们全都能共享同一具体的布置十分耗费时间。Wiki页布置是页,其示出用于通过所有部件全部就位创作完整的Wiki页的页部件之汇集。回过头来参照图6,页600描述了页部件的例子,例如头标604、脚标606、左边距608、右边距610、菜单612以及主体614。Wiki页为Wiki应用中的页。因此,将令人期望的是使得Wiki页布置是动态地可配置的,并且在Wiki页中定义,以致用户可以像创建新的Wiki页那样简单地创建新的Wiki页布置。还将令人期望的是使得相关的Wiki页的集合共享相同的Wiki布置页。
本发明的说明性实施例提供用于把Wiki页内容嵌入Wiki布置页的主体中。Wiki布置页为定义针对Wiki页的页布置的Wiki页。另外,还可以把特定布置与Wiki页相关联。用户可以通过简单地创建新的Wiki页,并且对新创建的Wiki页的内容进行编辑,而创建新的Wiki布置页。新创建的Wiki页的每一页部件的默认的内容由按命令向其提供内容的页部件命名的Wiki命令提供。Wiki命令为用于实现Wiki应用的功能和/或过程的命令。例如,在本发明的说明性实施例中,Wiki命令被命名为头标、脚标、菜单、左边距以及右边距。
用户可以通过使用HTML页流,把来自这些Wiki命令的内容包括在用户所希望的Wiki页上的任何位置中。HTML页流为浏览器在对包含页源的HTML标签作出反应的过程中如何对Wiki页的内容进行定位。例如,Web页的源中的HTML<TABLE>标签致使浏览器呈递表格显示,该表格显示被划分成纵向自顶向下流动的行与列。于是,用户可以采用与用于任何其它Wiki页的方案相同的方案,来编辑Wiki布置页。用户可以把其它静态HTML内容和其它动态Wiki命令包括新创建的Wiki页中,如用户认为适当的那样。这样,本发明的说明性实施例允许用户创建共享公共外观与布置的页,所述公共外观与布置例如为那些出现在头标中的内容,例如公司的标志(logo)或图像,以及菜单所出现的地方。另外,本发明的说明性实施例还允许用户按与用户操作即创建与编辑Wiki页所熟悉的方式一致的简单的方式,创建gai公共外观。
无论何时用户通过键入通用资源定位符请求Wiki页时,都检查Wiki页表,以确定是否存在与该页或者子页的集合相关的布置页名。如果布置页与所请求的Wiki页相关联,则呈递Wiki页,其中把布置信息添加以及包裹在所请求的Wiki页周围,从而形成组合的页。
在本发明的说明性实施例中,把特殊的模板变量包括在Wiki布置页中。当使用新的Wiki布置页时,由目标Wiki页的内容取代该特殊的模板变量。在这些例子中,模板变量为串(string)变量。当命名该特殊的模板变量时,用户希望尽量避免与新请求的页上的其它文本冲突。因此,该特殊模板变量的名字通常为一种不可能自然出现的模式。在本发明的说明性实施例中,把该特殊的模板变量称为%_BODY_%。该特殊的模板变量位于Wiki布置页的主体字段中。主体字段为Wiki布置页对象的对象变量,例如图5中的对象变量528。主体字段包括Wiki页的原始的、未呈递的内容。
本发明的说明性实施例提供用于Wiki页从祖先Wiki页那里继承Wiki页的布置。每一个Wiki页具有作为该Wiki页的祖先的与该Wiki页相关联的Wiki页的列表。祖先Wiki页为那些出现在页命名层次结构中较高层上的Wiki页。例如,如果页命名为“LevelOne/levelTwo”以及存在命名为“LevelOne”的Wiki页,则把命名为“LevelOne”的Wiki页视为Wiki页“LevelOne/levelTwo”的祖先。把祖先Wiki页集合的列表存储在Wiki页对象中的字段中。祖先Wiki页集合可以包含一或多个祖先Wiki页。在本发明的说明性实施例中,把该字段称为路径字段。使用某查询,其以按相反的层次结构次序发现包含Wiki页布置指定符的祖先Wiki页的列表中的第一Wiki页。在本发明的说明性实施例中,针对诸如图5中的数据库524的数据库中的Wiki_pages表,检查祖先页的列表。Wiki_pages表包括表项的列表。每一个表项包含Wiki页和与该具体Wiki页相关的任何Wiki布置页。把祖先Wiki页的列表中的每一个Wiki页与Wiki_pages表中的表项进行比较。一旦发现与祖先Wiki页的列表中的Wiki页匹配的、具有相关的Wiki布置页的表项,则把该具体的布置页选择用作将继承的目标Wiki页。
接下来,图23为方框图,说明了根据本发明的说明性实施例把Wiki页内容嵌入Wiki布置页的主体中的过程。可以由Wiki引擎诸如图4中的Wiki引擎402,实现图23中的该过程。当前页对象2302为诸如图5中的Wiki页526的Wiki页对象。主体2310为该Wiki页的主体字段,其为Wiki页对象的对象变量诸如图5中的对象变量528。布置页对象2304包括页部件头标2322、菜单2324、右边距2326、左边距2328、脚标2330、以及主体2320。把布置页对象2304中的页部件包含在布置页对象2304的主体字段中,其为布置页对象的对象变量诸如图5中的对象变量528。把当前页对象2302的主体字段的内容,即主体2310放入布置页对象2304的主体部件,即主体2320中。然后,把包括页部件头标2322、菜单2324、右边距2326、左边距2328、脚标2330、以及主体2320的布置页对象2304的主体字段的内容放入当前页对象2302的主体字段,即主体2310中。
然后,把当前页对象2302作为组合的页2306加以呈递。组合的页2306为将当前页对象2302和布置页对象2304组合的结果。组合的页2306包括来自布置页对象2304的布置页部件头标2322、菜单2324、右边距2326、左边距2328以及脚标2330,以及主体2310所代表的当前页对象2302的主体字段的内容。
在传统的Wiki应用中,当前尚不存在使得Wiki布置页以下述方式动态地可配置的方法:可以有条件地显示或隐藏Wiki页布置的具体页部件。Wiki页布置是这样的页:示出了用于通过所有部件全部就位创作完整的Wiki页的页部件之汇集。Wiki页为Wiki应用中的页。
本发明的说明性实施例提供用于可编程地隐藏与显示Wiki页布置部件。把Wiki布置页划分成一组页部件。这些页部件称为头标、菜单、左、右、主体以及脚标部件。图6描述了页布置部件的例子,例如头标604、脚标606、左边距608、右边距610、菜单612以及主体614。由Wiki命令生成每一部件的内容。Wiki命令为用于实现Wiki应用的功能和/或过程的命令。在本发明的说明性实施例中,Wiki命令具有与那些它们针对其生成内容的页部件相同的名字。Wiki页包含具有所嵌入的Wiki命令标记的简单的HTML标记。当呈递页时,Wiki命令讯问Wiki页设置,其控制页部件是否将显示Wiki命令所生成的内容。
在本发明的说明性实施例中,Wiki页设置被实现为复选框,其当用户编辑Wiki页时可由用户编辑。通过选中(check)和不选中(un-check)复选框,用户控制各个页部件、以及页评论、附件与电子邮件的可视性。这些设置被保存在Wiki_pages表中,Wiki_pages表为诸如图5中的数据库524的数据库的一部分,在作为针对其显示逻辑可以检查的位屏蔽的“部件”列中。页表中的表项包括ID(标识)、account(账户)、tag(标签)、time(时间)、body(主体)、ownerID(拥有者标识)、modified_by(由...修改)、isLatest(是最近的)、layout(布置)、islayout(是布置)、isEditing(是正在编辑)、commentOn(注释)、section(区段)、path(路径)、attributes(性质)(attrib)以及errors(错误)。位屏蔽为二进制数,其中,每一位代表针对不同变量的“是”或“否”值(1或0)。通过使用快速逐位操作,可以确定或者改变具体变量的值,因此,位屏蔽为存储这样的变量的紧致与有效的机制。
现在,转向图24,图24为方框图,根据本发明的说明性实施例,描述了用于确定页部件内容可视性的复选框。可视性设置2402为显示区,用户可以通过其控制各个页布置部件的可视性。可视性设置2402可以作为Wiki页的一部分内容加以实现。在本发明的替代性说明实施例中,把可视性设置2402作为客户机浏览器上的菜单选项加以实现。主体2406包括复选框2408。复选框2408包括头标、菜单、左、右、主体和脚标布置页部件,以及针对评论、附件与电子邮件的复选框。通过选中或未选中复选框2048,用户可以控制所命名的布置页部件的内容以及页评论、附件与电子邮件应用的可视性。在本发明的说明性实施例中,选中这些框,致使所命名的布置页部件的内容以及页评论、附件与电子邮件显示在客户机浏览器中。在这样的实现中,可视性设置2402的顶部将包括单词显示(show)或可视(visible),或者具有等效含义的某些其它项目。在图24中,顶部2404包括单词显示(show),指示:选中复选框将致使属于布置页区段的内容显示在客户机浏览器中。
在本发明的替代性说明性实施例中,选中可视性设置2402中的复选框使得相应的布置页部件的内容在客户机浏览器隐藏中。在这样的实现中,顶部区域,顶部2404,将包含指示该实现的术语,例如隐藏等。
在本发明的说明性实施例中,把复选框2408的选中和未选中的结果作为位屏蔽(bit mask)存储在数据库中。在呈递页以显示的过程期间,显示逻辑检查该位屏蔽,以确定将把哪些内容显示在客户机浏览器中。
现在,转向图25,根据本发明的说明性实施例,描述了用于创建Wiki页的过程的流程图。图25中的过程用于创建Wiki页诸如图6中的Wiki页602。图25中的过程开始于接收用于创建新的Wiki页的用户输入(过程块2502)。在过程块2502中,用户可以使用客户机浏览器,从菜单中选择新的页命令,以提供用户输入。
接下来,所述过程提示用户输入针对新的Wiki页的名字(过程块2504)。在一个例子中,页名可以包括遵循CamelCase规则的字母与数字字符。Wiki的页名还可以包括‘/’字符,指示层次结构中的划分或层级。例如,新的Wiki页可以为图9中的测试904。
然后,所述过程建立编辑请求统一资源定位符(URL),并且向服务器发送相应的超文本传送协议(HTTP)请求(过程块2506)。编辑请求可以由客户机浏览器上的JavaScript函数建立,并且可以指定新的页动作和新的页名。
接下来,所述过程加载适当的编辑器并且以超文本传送协议答复把把页服务供应(serve)给客户机浏览器(过程块2508)。可以由图5中的Wiki控制器500实现过程块2508。
然后,所述过程接收用户的改变,并且向服务器提交超文本传送协议形式提交(过程块2510)。过程块2510可以响应于用户在客户机浏览器中编辑Wiki页并且提交要保存的内容而出现。
接下来,所述过程利用所提交的内容创建和保存Wiki页(过程块2512),此后,该过程终止。在过程块2512中,Wiki控制器处置页超文本传送协议请求,并且可以使用createPage和save方法,以实例化Wiki页对象,并且然后保存Wiki页对象。Wiki页对象诸如图5中的Wiki对象508,在诸如图5中的数据库524的Wiki页数据库表中创建行,以表示新的Wiki页。
现在,转向图26,根据本发明的说明性实施例,描述了用于显示页的过程的流程图。所述过程开始于接收用户指定的Wiki页的统一资源定位符(URL),并且向服务器发送超文本传送协议请求(过程块2602)。过程块2602可以由图3中的客户机环境300中的客户机浏览器接收。
然后,所述过程处置请求、实例化关于Wiki页的对象、处理Wiki页、以及作为超文本传送协议答复把Wiki页的内容呈递于客户机浏览器(过程块2604),此后,所述过程终止。可以通过图5中的Wiki控制器500实现过程块2604。Wiki控制器可以调用Wiki对象上的showPage方法。showPage方法对维持Wiki页数据库表中具体行的Wiki页内容的Wiki页对象实例化。然后,Wiki控制器调用Wiki页对象上的处理方法,其处理Wiki页,并且把页的内容呈递于客户机浏览器。
现在,转向图27,根据本发明的说明性实施例,描述了用于生成页树视图的过程的流程图。可以使用图27中的过程创建图9中的页树视图900。可以通过图5中的命令550中的PageTreeCommand实现图27中的过程。
所述过程开始于PageTreeCommand读取Wiki页数据库表中的所有的行,并且抽取页名列值(过程块2702)。页名也可以为标签。标签为用于对Wiki页的内容归类的页名或标号。数据库可以为诸如图5中的数据库524的数据库。
接下来,PageTreeCommand关于页名值进行迭代,以建立页树视图(过程块2704)。在过程块2704期间,把页的层次结构分组为节点和叶子节点,以形成可视树结构。节点既为容器,也为内容提供者,而叶子节点仅为内容提供者。例如,如果页名以‘/’字符结束,则把该页作为容器和内容提供者加以对待,并且使用诸如图9中的测试904的表示容纳装置的适当的图标加以表示。开始于包括‘/’的该名字的所有的Wiki页名视为该页的子孙。如果Wiki页名的其余部分包含‘/’,则也把该Wiki页视为容器或内容提供者。如果Wiki页名的其余部分不包含‘/’,则把该Wiki页视为叶子节点,并且使用诸如图9中的helloworld 912的适当的图标加以表示。任何数目的不同的指示符,例如‘/’,可用于指定页为节点或者叶子节点。
然后,PageTreeCommand返回页树视图的超文本标记语言表示(过程块2706),此后,所述过程终止。把页树视图的超文本标记语言表示显示在客户机浏览器上,供用户在导航Wiki页的过程中使用。
现在,转向图28,根据本发明的说明性实施例,描述了用于拖拽实况内容的过程的流程图。本发明的说明性实施例允许把动态内容拖拽至Wiki页,并且当把动态内容拖拽于所述页时,还提供了内容的样本。使用XMLHttpRequest,远程地援引Wiki部件,并且在XMLHttpResponse中返回内容作为拖拽视件。请求为从浏览器客户机发送至Web服务器的数据。答复为作为对(响应)所接收的请求数据的反应,从Web服务器发送至浏览器客户机所发送的数据。超文本传送协议为一种定义发送至Web服务器与从该Web服务器所发送的请求和答复的内容和特定格式的国际标准。
XMLHttpRequest/Response为支持可扩展标记语言数据内容和具体答复格式的超文本传送协议请求/答复的进一步的规范。可以使用图7中的Wiki页700实现图28中的过程。
所述过程开始于接收用于执行拖放操作的用户输入,以及援用JavaScript函数,该JavaScript函数把XMLHttpRequest发送至服务器而请求所选择Wiki部件的样本输出(过程块2802)。通过用户把诸如醒目标志708的图标从Wiki页700的选用区702拖拽至主体704,可以生成2802的用户输入,Wiki页700的选用区702、主体704、以及醒目标志708均在图7中。可以由图3中的客户机环境300中的客户机浏览器接收过程块2802的过程。
然后,所述过程处置XMLHttpRequest、创建针对所选择的Wiki部件的Wiki命令子类的实例、并且调用用于取得所拖拽内容的方法(过程块2804)。在过程块2804期间,图5中的Wiki控制器500可以处置XMLHttpRequest,并且把该请求路由至AJAX格式化器,该AJAX格式化器在调用Wiki命令对象实例上的诸如getDragContent的方法之前,创建Wiki命令子类的实例。AJAX格式化器为诸如图4中的请求处置器404的请求处置器的一部分,并且将其视为图5中的Wiki控制器500的扩展。如先前所描述的。图5中的路由器502对进来的请求进行译码,然后把该请求路由至正确的请求处置器。AJAX格式化器为请求处置器之一。
接下来,所述过程在把XMLHttpResponse中的所呈递的输出返回至客户机浏览器之前,从Wiki对象取得当前Wik页实例,并且调用render方法(过程块2806)。过程块2806的过程可以由AJAX格式化器实现,并且可以把getDragContent的调用的结果传递于诸如renderFragment的方法。
接下来,所述过程处理XMLHttpResponse,并且抽取和显示超文本标记语言拖拽内容(过程块2808),此后,所述过程终止。通过客户机浏览器上的异步JavaScript代码执行过程块2808的过程。JavaScript代码可以使用使拖拽内容看来半透明的层叠式样式表(CSS)类型。一旦处理、抽取以及显示了答复,可以把所述过程的控制递交于拖拽支持。
拖拽支持由对鼠标器移动事件答复的事件驱动的JavaScript代码组成。在用户压下鼠标器按钮,并且移动鼠标器时,浏览器JavaScript运行时间激发鼠标器移动事件。拖拽支持实现了鼠标器移动事件处置器(handler)JavaScript函数,其被援用来处置鼠标器移动事件。拖拽支持使用浏览器的JavaScript文档对象模型(document object model,DOM)应用编程接口(API)功能,以确定鼠标器光标的当前位置。然后,拖拽支持使用文档对象模型应用编程接口功能设置所拖拽内容的位置,例如,从AJAX请求返回至getDragContent的半透明的视件。接下来,重复所述过程,只要用户保持鼠标器按钮的压下状态,以及继续移动鼠标器。当用户释放鼠标器按钮时,浏览器的JavaScript运行时间激发鼠标器抬起事件。放(drop)支持实现了鼠标器抬起事件处置器JavaScript函数,其被援用来处置鼠标器抬起事件。放支持使用浏览器的JavaScript文档对象模型应用编程接口功能,以确定鼠标器光标的当前位置。然后,放支持把XMLHttpRequest发送至服务器,以使内容插入Wiki页。
现在,转向图29,根据本发明的说明性实施例,描述了用于组合Wiki页的内容的过程的流程图。本发明的这些说明性实施例的应用Wiki需要一种对各种页上所创建的内容进行合成的功能强大的、一致的方法。经由一种“削减”语法,把Wiki部件包括在Wiki页源中,“削减”语法由下列内容组成:两个‘{’字符,后面紧跟Wiki部件名,再跟空白、再跟‘nane=“value”’语法中由可选空格分隔的变元。例如{{ImportPage Page=“HomePage”/}},其中,‘ImportPage’为Wiki部件的名字。可以使用与Wiki部件相同的Wiki“削减”语法,把任何Wiki页的内容包括在另一个页中。为了把名为“HomePage”的Wiki页的内容包括在当前页中,Wiki用户需要仅键入{{ImportPage/}},并且HomePage内容被内嵌扩展。
可以关于诸如图10中的Wiki页1000的合成内容,实现图29中的过程。所述过程开始于将Wiki页源解析为代表静态文本内容和Wiki部件的解析片段对象(过程块2902)。由Wiki命令语境对象诸如图5中的Wiki命令语境544实现过程块2902的过程。在过程块2902期间,把页解析成以称为抽象语法树(AST)的树结构组织的解析片段,其为Wiki页内容的存储器中的内部表示。此时,接下来的步骤中的操作可以通过遍历所述树并且对树节点执行操作,而操纵页内容。
然后,所述过程调用load plugin(加载插件)方法,该load plugin方法对Wiki页上的Wiki部件的列表进行迭代(过程块2904)。针对每一Wiki部件,调用诸如loadplugins的方法,以对实现每一Wiki部件的功能的适当的Wiki命令子类实例化。过程块2904为页内容的存储器内的表示的创建的进一步的细化,并且为过渡的过程。
接下来,所述过程调用Wiki对象的load command(加载命令)方法,以执行Wiki命令类加载。如果所述load command方法不能够发现适当的Wiki命令类,则该方法抛出异常(过程块2906)。过程块2906的load plugin方法可以为loadplugin。过程块2906通过把支持命令对象与Wiki部件解析片段相关联,完成Wiki页的存储器内表示的创建。
然后,所述过程捕捉异常,并且调用Wiki对象的page exists(页存在)方法,以确定所命名的Wiki部件是否实际为Wiki页。把有效页名加载到导入页部件中(过程块2908)。在过程块2908中,如果诸如PageExists的方法返回有效页,则Wiki命令语境调用loadPlugin方法,以加载在Wiki页名中传递的导入页部件。导入页部件用于嵌入所命名的页的内容。
接下来,所述过程把导入页部件添加于Wiki命令语境部件列表(过程块2910)。然后,在呈递期间,所述过程把导入页部件扩展至所命名的Wiki页的内容(过程块2912),随后过程终止。在过程块2912中,所述过程把importPage命令实例添加于部件的列表。
现在,转向图30,根据本发明的说明性实施例,示出用于编辑命令的过程的流程图。可以在诸如图8中的Wiki页800的页上实现图30中的过程。所述过程开始于响应对旨在编辑Wiki页的用户输入的接收,显示Wiki部件的选用区(过程块3002)。在过程块3002中,用户可以通过选择相当容易实现的复选框提供用户输入。所述选用区为诸如图8中的选用区802的选用区。诸如Wiki页800的页可以包括任何数目的醒目标志,这些醒目标志向用户提供了可以对部件进行选择和编辑的可视暗示。过程块3002可以由图3中的客户机环境300中的客户机浏览器接收。
然后,所述过程援用JavaScript函数,其把XMLHttpRequest发送至服务器,以响应用户对醒目标志的选择,取得针对所选择的Wiki部件的属性编辑器(过程块3004)。所述醒目标志可以为诸如图7中的醒目标志708的Google地图图标。
接下来,所述过程处置请求,并且把处理过程委托于AJAX格式化器。AJAX格式化器创建Wiki命令语境对象,并且调用相关的load plugin方法,而请求加载属性编辑器Wiki部件(过程块3006)。由图5中的Wiki控制器500执行过程块3006。
然后,所述过程调用在所选择Wiki部件名字中传递的属性编辑器部件的draw(绘制)方法。在XMLHttpResponse中,把draw方法的结果返回至客户机(过程块3008)。
接下来,所述过程处理XMLHttpResponse,其包括针对所选择的部件的属性编辑器的超文本标记语言和JavaScript,并且使属性编辑器可见(过程块3010)。异步实现所述处理,并且可以使用层叠式样式表(CSS)使属性编辑器可见。过程块3010的过程可由图5中的Wiki控制器500中的AJAX格式化器加以实现。
然后,所述过程接收属性编辑器中的用户输入,并且向服务器发布XMLHttpRequest,以更新所选择Wiki部件的特性(过程块3012)。由属性编辑器和相应的客户机浏览器执行过程块3012。
接下来,所述过程处置请求,并且把处理过程委托于AJAX格式化器。AJAX格式化器创建Wiki命令语境对象,并且调用相关的load plugin方法,而请求加载更新命令Wiki部件(过程块3014),然后,所述过程调用在所选择Wiki部件名字中传递的更新命令部件的draw方法。更新命令部件更新服务器上的Wiki部件源“削减”,并且返回指示成功或失败的XMLHttpResponse(过程块3016),此后,所述过程终止。过程块3016的过程可以由图5中的Wiki控制器500中的AJAX格式化器实现。
因此,本发明的说明性实施例提供了一种针对应用Wiki的计算机实现的方法、装置以及计算机可用程序代码。本发明的这些说明性实施例允许用户容易地创建与管理Wiki页。用户可以通过拖放实况内容而编辑Wiki页。如用户请求那样,可以把Wiki页组合,并且可以使用属性编辑器对其进行编辑。把Wiki页保存在包括节点和叶子节点的页树视图中,以导航Wiki。
现在,转向图31,根据本发明的说明性实施例,描述了用于呈递Wiki命令的过程的流程图。可以由图4中的Wiki引擎404中实现图31中的过程。Wiki页可以包括若干Wiki命令。每一个Wiki命令也可以包括其它的Wiki命令。图31中的过程开始于Wiki引擎关于Wiki命令援用render方法(过程块3102)。Wiki引擎可以为诸如图4中的Wiki引擎402的Wiki引擎。render方法可以为诸如图12中的render 1226的页处理方法。
接下来,所述过程调用open(打开)方法(过程块3104)。过程块3104的open方法向Wiki命令提供了开始显示所呈递的内容的机制。例如,命令可以生成超文本标记语言的‘打开’片段,例如,‘<SPAN>Forecast Command’。将使用close(关闭)方法生成SPAN的关闭片段。然后,所述过程确定Wiki命令是否准许编辑(过程块3106)。Wiki命令覆盖(override)allowEdit的设置,以确定命令是否准许对命令的内容进行编辑。“真”值表示可以对命令进行编辑。如果Wiki命令准许进行编辑,则所述过程生成醒目标志(过程块3108)。
如果Wiki命令不准许编辑,则所述过程调用renderBody(过程块3110)。renderBody向命令提供了呈递或发行相应超文本标记语言内容的机会。接下来,renderBody显示醒目标志,然后关于任何存在的孩子中的每个调用render(过程块3112)。例如,在过程块3112中,可以使用draw方法显示醒目标志。Wiki命令可以形成层次结构,即Wiki命令可以包含其它Wiki命令。因此,Wiki命令形成了命令树。孩子为所包含或所嵌入的Wiki命令的第一代。接下来,所述过程援用close方法(过程块3114),此后,过程终止。
现在,转向图32,根据本发明的说明性实施例,描述了用于属性编辑的预备过程的流程图。图32中的过程用于对Wiki命令的属性进行编辑。所述过程开始于呈递命令(过程块3202)。在诸如图31中的过程的呈递过程中呈递命令。然后,所述过程生成默认的属性编辑器,并且在所生成的页上隐藏属性编辑器(过程块3204),此后,所述过程终止。在大多数时间,用户将不与属性编辑器进行交互,因此属性编辑器的默认状态是隐藏,直至用户需要时。如果命令选择不实现其自身,则在过程块3204中生成默认的属性编辑器。命令可以通过覆盖generatePropertyEditor协议实现属性编辑器。
现在,转向图33,根据本发明的说明性实施例,描述了用于属性编辑的过程的流程图。图33中的过程可以出现在图32的过程之后。首先,所述过程从用户接收用于触发属性编辑器的信号,以关于所选择的命令援用属性编辑器(过程块3302)。例如,在过程块3302中,用户可以点击触发属性编辑器的Wiki命令的醒目标志。
接下来,所述过程标识针对客户机侧属性编辑器子系统的所选择的命令(过程块3304)。Wiki环境包括JavaScript基子系统(base subsystem),该JavaScript基子系统通过追踪在所生成的醒目标志上的鼠标器点击,追踪所选择的部件。醒目标志上的点击动作标识了所选择的命令。可以由诸如图13中的醒目标志1302的醒目标志完成过程块3304。
然后,所述过程生成AJAX援用,以要求服务器侧命令代表呈递客户机侧属性编辑器(过程块3306)。可以由诸如图13中的属性编辑器1304的属性编辑器执行过程块3306。在过程块3306的执行期间,AJAX调用援用Wiki命令处理器的服务器统一资源标识符,其把页加载到请求的对象变量中所标识的服务器中。统一资源标识符还包括新对象变量的集合,这一新对象变量集合代表针对Wiki命令的输入值的新值。然后,所述引擎更新Wiki命令的输入值,并且要求Wiki命令根据新值更新相应的可视表示。可由诸如图12中的generatePropertyEditor(生成属性编辑器)1222的命令启动过程块3306。
接下来,所述过程选择属性编辑器(过程块3308)。在过程块3308中,所选择的Wiki命令可以通过覆盖generatePropertyEditor方法,选择提供具体化的属性编辑器,或者继承默认的实现。作为选择,Wiki命令可以提供其自己的属性编辑器,其自己的属性编辑器由编辑Wiki命令的参数、属性以及性质所需的超文本标记语言组成。在过程块3308中,可以根据所选择的命令的性质选择属性编辑器。
接下来,属性编辑器接收用户交互,然后提交对Wiki命令的参数的更新(过程块3310)。接下来,属性编辑器生成基于AJAX的请求,该请求指示服务器页处理器更新给定的页上所选择Wiki命令的参数列表(过程块3312)。然后,命令处理器定位命令、实例化命令、以及把命令的值设置为从客户机所传递的新值(过程块3314)。接下来,命令处理器询问命令是否应该通过援用refreshOnUpdate方法更新整个页(过程块3316)。由图4中的命令处理器406实现过程块3316。如果命令指示应该更新整个页,则把整个页重新显示在客户机上(过程块3318),此后,所述过程终止。如果命令指示不需要更新整个页,则命令呈递其自身,并且在客户机超文本标记语言文档上的getTargetDIV区域中显示新的内容(过程块3320),此后,所述过程终止。
作为过程块3320的例子,用户可以使用属性编辑器更新可以实现以下的例子中所描述的过程的Forcast Wiki命令的属性值。用户使用属性编辑器修改邮政区码特性。属性编辑器生成更新命令请求,并且把命令发送于服务器。服务器接收请求、加载包含Forcast命令的页、把新的邮政区码放入页中、保存更新的页、以及询问Forcast命令该命令是否需要刷新页。Forcast命令回答“否”,因此服务器要求Forcast命令使用从属性编辑器所发送的输入值的新值呈递其自身。把所生成的超文本标记语言片段发送回客户机,并且放入由getTargetDIV协议所标识的超文本标记语言元素中。在诸如图31的过程的过程中,所述命令可以呈递其自身。
现在,转向图34,根据本发明的说明性实施例,示出选择属性编辑器的过程的流程图。图34中的过程为图33中的过程块3308的更详细的描述。所述过程开始于默认的属性编辑器调用getParameters(获取参数),以确定与所选择的命令相关的参数的列表与类型(过程块3402)。接下来,所述过程针对所返回的每一参数生成客户机侧编辑器(过程块3404)。所述参数列表提供了所返回的参数的名字、帮助串以及可能值。
然后,所述过程向客户机传递聚积的内容以在客户机属性编辑器中呈递(过程块3406),此后,所述过程终止。聚积的内容为从针对具体命令的属性编辑器所接收的信息。例如,聚积的内容包括包含在过程块3402和3404中的、针对被显示来示出属性编辑器的命令的每一段元数据与参数。在诸如图33中的过程块3306的步骤期间,可以在客户机属性编辑器中呈递聚积的内容。
图35~36为Wiki页的生命周期期间所使用的页生命周期过程。现在,转向图35,根据本发明的说明性实施例,示出用于删除页的过程的流程图。所述过程开始于页被标记删除(过程块3502)。出于旧的内容、不相关性或者任何其它原因,用户可以对页进行标记。在过程块3502中,把页标记为“删除的”。并不实际把页从数据库中去除。接下来,通知页上的每一命令:已去除了命令拥有页(过程块3504),此后,所述过程终止。可以使用诸如图12中的wasDeleted 1218的方法,通知每一命令。过程块3504用于清除与给定页上的Wiki命令相关的永久性资源。
现在,转向图36,根据本发明的说明性实施例,描述了用于修订页的过程的流程图。所述过程开始于创建新的空页(过程块3602)。接下来,所述过程克隆(clone)现存页到新页(过程块3604)。然后,所述过程通知页上的每一命令aboutToSave(将要保存)(过程块3606)。aboutToSave可以为诸如图12中的生命周期1204的生命周期命令。
然后,把页保存在数据库中(过程块3608)。接下来,所述过程调用wasDeleted(被删除了)方法,以通知页:已把其从页中删除,即通过不再为页的一部分的方式从页中删除(过程块3610)。针对每一不再为页的一部分的命令,执行过程块3610。然后,所述过程通知页上的每一命令页wasSaved(被保存)(过程块3612),此后,所述过程终止。过程块3612可以使用诸如图12中的wasSaved 1216的方法。
现在,转向图37,根据本发明的说明性实施例,描述了用于拷贝页的过程的流程图。所述过程可以开始于创建新的空页(过程块3702)。接下来,所述过程克隆现存页到新页(过程块3704)。然后,所述过程针对页上的每一命令调用wasCopied(被拷贝)方法(过程块3706)。可以使用诸如图12中的wasCopied 1220的方法,实现过程块3706。
接下来,所述过程保存所克隆的页、关于页上的每一命令援用wasSaved(过程块3708),此后,所述过程终止。
现在,转向图38,根据本发明的说明性实施例,描述了对页重新命名的过程的流程图。图38中的过程开始于加载原始页(过程块3802)。接下来,所述过程更新页的标签名,以针对该页所包含的所有孩子页反映该页的新名字(过程块3804)。然后,所述过程调用wasRenamed(被重命名),以通知Wiki命令:已针对页上的每一Wiki命令对其重新命名(过程块3806),此后,所述过程终止。
现在,转向图39,根据本发明的说明性实施例,描述了取消对页的删除的过程的流程图。图39中的过程开始于通过把isLatest(是最近的)标志设置为“真”,而把页从失活(stale)状态移改(remove)为活跃状态(过程块3902)。接下来,所述过程通知页上的每一命令该页wasUNdeleted(被取消删除)(过程块3904),此后,所述过程终止。当在先前已从给定页中删除之后把命令放回该页中时,调用wasUNdeleted。
现在,转向图40,根据本发明的说明性实施例,示出了用于选用区建造的过程的流程图。Wiki环境提供了安装在Wiki中的可用命令的选用区。选用区提供了一种用于显示Wiki环境中可用Wiki命令的可视机制。把选用区定义到由getCategory(获取种类)协议定义的种类。使用图40中的过程,针对Wiki中的每一命令生成选用区。
首先,所述过程确定命令是否支持编辑(过程块4002)。如果Wiki支持编辑,则所述过程援用getDropContent(获取放内容),getDropContent返回要插入于与给定Wiki命令相关的页的默认的Wiki标记(过程块4004),此后,所述过程终止。可以响应于Wiki命令被拖出选用区,并且放置在页上,而执行过程块4004。
如果在过程块4002中所述过程确定命令不支持编辑,则所述过程取得(retrieve)命令的种类(过程块4006)。由Wiki环境中的命令定义所述种类。示范性的种类包括‘数据服务’以及‘页内容’。把同一种类中的每一命令显示在选用区视图上的同一标签(tab)中。接下来,所述过程取得名字(过程块4008)。可以使用诸如图12中的getName 1212的方法取得名字。然后,所述过程取得描述(过程块4010)。可以使用诸如图12中所示的getDescription 1214的方法取得描述。接下来,所述过程取得图标(过程块4012)。可以使用诸如getIcon的方法取得图标。然后,所述过程取得拖拽内容,并且针对每一命令把这些元素放置在选用区上(过程块4014)。可以使用诸如getDragContent的方法取得拖拽内容。
命令可以显示表达对命令的使用的唯一的图标或者醒目标志。getIcon协议用于取得当呈递时显示命令的图标的超文本标记语言段。许多时候,命令可能希望为用户提供不同的超文本标记语言段,拖出选用区的内容,即那些在把部件首次被拖至页中,以向页插入新命令时放入页中的内容。可以通过覆盖getDragContent方法,指定从选用区实际所拖的内容。
然后,所述过程返回到过程块4004,并且援用getDropContent,getDropContent返回与给定Wiki命令相关的将插入页的默认的Wiki标记,此后,所述过程终止。
现在,转向图41,根据本发明的说明性实施例,描述用于进行配置的过程的流程图。驻留在Wiki环境中的Wiki命令有时要求进行配置。例如,GoogleMap命令要求与应用编程接口一起使用的密钥(key)。
图41中的过程用于使命令能够对其自身进行配置,并且维持与某一具体的Wiki命令相关的配置数据的集合。图41中的过程开始于显示总体目录信息(过程块4102)。接下来,所述过程援用configure(配置)方法(过程块4104)。configure方法允许命令生成用于对与Wiki内的Wiki命令相关的数据进行编辑的超文本标记语言视图。然后,所述过程援用get/setPluginData方法(过程块4106),此后,所述过程终止。get/setPluginData方法用于取得和存储那些影响Wiki网点的Wiki命令数据。例如,命令数据包括引用命令所需的初始化数据,例如登记密钥。
现在,转向图42,根据本发明的说明性实施例,描述了用于导出的过程的流程图。Wiki支持完整的Wiki或者Wiki的子集的导入与导出。导出格式包括所导出的页的列表和页内容,包括命令与附件。Wiki引擎援用图42中的过程,以帮助页集合的导出。页集合为一或多个Wiki页。
图42中的过程开始于导出包括页名的总的页信息(过程块4202)。接下来,所述过程针对页上的每一Wiki命令援用aboutToExport(将要导出)(过程块4204)。然后,所述过程调用getVersion(获取版本)方法,并且将其作为输出的一部分加以存储(过程块4206),如果在过程块4204中所调用的aboutToExport返回数据,则将其作为顺序化的PHP对象保存在过程块4206中的输出流中。
接下来,所述过程导出与页相关的命令(过程块4208),此后,所述过程终止。可以把评论附接于每一Wiki页,其代表用户对每一页的评论。评论用作在Wiki中进行合作的机制。例如,专利代理人可以询问发明者在Wiki页中如何使用评论。
现在,转向图43,根据本发明的说明性实施例,描述了用于导入的过程的流程图。Wiki引擎援用图43中的过程,导入页上的每一Wiki命令。
图43中的过程开始于导入包括页名的总体页信息(过程块4302)。接下来,所述过程确定命令是否保存了数据(过程块4304)。例如,所述过程确定命令是否在诸如图42中的过程块4206的步骤中保存了数据。如果命令保存了数据,则所述过程将数据去串行化(unserialize)(过程块4306)。默认的实现确保所保存的版本名与所安装的Wiki命令版本的名字相匹配。然后,所述过程使用去串行化的数据援用wasImported(被导入)(过程块4308),此后,所述过程终止。如果在过程块4304中未保存数据,则所述过程返回新页(过程块4310),此后,所述过程终止。
于是,本发明的说明性实施例还提供了用于扩展Wiki环境的能力的计算机实现的方法、装置以及计算机可用程序代码。面向对象的框架用于定义如何扩展对象,以容易地创建合作环境。对Wiki命令类进行处理,以有效地管理所部署的环境,从而有助于可重用性、适应性以及易用性。
现在,转向图44,根据本发明的说明性实施例,描述了用于取得和解析树的过程的流程图。所述树为由这些说明性实施例所使用的核心处理数据结构。所述树可以为诸如图11中的抽象语法树1102的抽象语法树。由诸如图11中的Wiki命令语境1104的Wiki命令语境实现图44中的过程。Wiki命令语境取得页,并且将其解析成抽象语法树(过程块4402),此后,所述过程终止。由Wiki加载Wiki页。Wiki页实例化创建所述树的Wiki命令语境。
现在,转向图45,根据本发明的说明性实施例,描述了用于处理在Wiki中显示的Web页的过程。可以由Wiki引擎,或者更具体地讲,由命令处理器,例如由图4中的Wiki引擎402和命令处理器406,实现图45中的过程。图45中的过程开始于处理引擎访问抽象语法树中的每一节点,以关于抽象语法树中所存在的命令援用初始化方法(过程块4502)。可以把所述初始化方法命名为init。init发现抽象语法树的每一节点中的命令,并且使这些命令可用于其它命令。从而,这些命令可与其它命令,包括其它等效的命令,进行通信。在过程块4502期间,命令负责初始化命令的内部数据结构、发表所提供的题目、以及订购数据中枢上所感兴趣的题目。题目代表发表者和订购者之间感兴趣的领域。例如,发表者/订购者环境中重要的题目为‘数据/可用’。题目的其它例子包括‘地址’和‘latlong’。在过程块4502期间,命令可以将下述事件放入队列中,该事件需要在使用init方法援用了所有命令之后被处理。事件通信状态从一个状态变化到另一个状态。事件刺激(stimulate)通信,以实现状态变化。
对事件进行排队,以便可以按次序有顺序地处理事件以及在单线程的执行环境诸如JavaScript的客户机中不丢失事件。对事件进行排队使得核心执行环境能够确保在分遣事件之前所有部件被适当地初始化,并且准备好处理事件。命令可以执行本发明的说明性实施例的每一阶段,并且可以覆盖默认的实现。
接下来,命令处理器关于数据中枢援用processEvents,以传递任何排队的事件(过程块4504)。发表和订购模型规定:订购者向数据中枢登记所关注事件,以便从数据中枢接收这些事件。发表者触发在数据中枢上排队的事件。在processEvents阶段期间,数据中枢处理每一排队的事件,以及确定所关注的订购者,并且援用订购者,以便传递事件。排队的事件为那些在过程块4502中放置在队列中的事件。然后,命令处理器访问抽象语法树中的每一节点,以关于存在于抽象语法树中的命令援用discover(发现)方法(过程块4506)。
discover方法定位与命令相关的信息源,以在命令之间进行更详细的交互。在过程块4506期间,生产者、消费者、或者控制器命令可以使用数据中枢定位彼此,并且可以取代数据中枢,建立相互间的直接事件连接。在discover阶段期间,命令可以选择如上述通过数据中枢间接地进行交互或者定位其它命令。在处理的发现阶段期间,命令可以针对发表者、订购者以及题目询问(interrogate)数据中枢。如果需要的话,命令还可以绕开(bypass)以上所建立的间接通信方法,直接进行通信。这一能力可使事件更有效地得以处理,并且消除了对数据中枢作为通信接口的需求。此外,命令可以从数据中枢中去除自身。命令可以将下述事件加入队列或放入队列,该事件在使用初始化方法援用了所有命令之后需要被处理。
接下来,命令处理器关于数据中枢援用processEvents,以传递任何排队的事件(过程块4508)。排队的事件为那些在过程块4506中进入队列的事件。接下来,命令处理器访问抽象语法树中的每一节点,以关于存在于抽象语法树中的命令援用render(呈递)方法(过程块4510),此后,所述过程终止。在过程块4510期间,命令呈递针对页的可视与不可视的内容。例如,可视内容可以包括列表数据的表显示。不可视内容可以包括搜寻数据列表并且不具有可视内容的SearchList(搜索列表)命令。在过程块4510期间,也呈递诸如页的文本片段的非命令节点。在图45中的步骤中的任何步骤期间,命令可以额外地处理其它段的页源片断,这是通过在页源片段上递归地援用图45中的过程实现的。页源片段为所有非命令内容。页源片段捕获页上各命令之间的所有非命令内容。
现在,转向图46,图46根据本发明的说明性实施例,描述处理事件的流程图。由诸如图11中的数据中枢1112的数据中枢执行图46中的处理步骤。图46为对图45中的过程块4504的更详细的解释。
所述过程开始于数据中枢令事件出队列(过程块4602)。接下来,数据中枢把事件传递给所登记的订购者(过程块4604)。所登记的订购者通常为命令,但作为选择,也可以为独立(stand-alone)的功能单元。在初始化期间,登记所登记的订购者,在这一期间命令发表、订购或者登记对所有其它命令的兴趣。然后,数据中枢把传递于所登记的订购者的任何作为结果得到的事件放入队列中(过程块4606)。过程块4606的事件为那些在过程块4604中传递于所登记的订购者的事件。
接下来,数据中枢关于其输入值已由数据中枢的数据传递机制履行(fulfil)的命令触发invoke方法(过程块4608),此后,所述过程终止。命令提供一组执行它们的功能的输入值。输入值可以为静态的或动态的。当输入值为动态的时,Wiki引擎追踪何时数据变得可用,即用作向命令的输入。当输入变得可用时,将其传递于命令,从而变为“已履行”。
因此,本发明的说明性实施例还提供了用于处理Wiki环境中加以显示的Web页的计算机实现的方法、装置以及计算机可用程序代码。新添加的部件能够在呈递最终视图之前,以抽象语法树的形式与其它部件进行交互。使得部件能够根据呈抽象语法树的节点的形式的页服务语境,发现新的性质与参数设置。处理和验证机制被用于部件在呈递最终视图之前验证输入和报告错误。在页服务序列的生命周期内,处理作为目标的事件。可以在单个服务器上管理同一部件的多个版本。
现在,转向图47,根据本发明的说明性实施例,示出了当实例化服务器侧数据中枢对象时的操作的流程图。所述过程由图4中的Wiki引擎402加以实现。
所述过程开始于接收来自客户机的加载新页的请求(过程块4702)。当服务器接收到该加载新页的请求时,所述过程根据由服务器侧Wiki数据中枢类变量和方法指定的性质与方法,创建与所请求的新页相关联的客户机侧数据中枢对象的实例(过程块4704)。所述过程向服务器侧数据中枢对象登记服务器上的所有部件(过程块4706),此后,所述过程终止。
现在,转向图48,根据本发明的说明性实施例,示出了当实例化客户机侧数据中枢对象时出现的操作的流程图。所述过程由诸如图2中的客户机200中的处理单元206的客户机上的处理单元实现。
所述过程开始于加载从服务器所接收的新页(过程块4802)。当客户机上的处理单元加载针对所述页的超文本语言或者JavaScript时,所述过程根据由客户机侧Wiki数据中枢类变量和方法指定的性质与方法,创建与所请求的新页相关联的客户机侧数据中枢对象的实例(过程块4804)。所述过程向客户机侧数据中枢对象登记客户机上的所有部件(过程块4806),此后,所述过程终止。
现在,转向图49,根据本发明的说明性实施例,示出了当服务器侧数据中枢从客户机侧数据中枢接收处理事件的请求时发生的操作的流程图。由诸如图5中的数据中枢558和图6中的数据中枢638的服务器上的数据中枢实现所述数据中枢。
所述数据中枢对象开始于从客户机侧数据中枢接收页请求和/或事件(过程块4902)。所述数据中枢对象使用方法集合处理请求/事件(过程块4904)。由与客户机相关的生产者命令生成请求/事件。所述方法集合可以为一组数据中枢对象的方法、一组数据中枢题目对象的方法、数据中枢事件对象;或者与数据中枢对象、数据中枢题目对象、和/或数据中枢事件对象相关的方法的任何组合。所述数据中枢对象把所处理的事件发送至一组消费者命令(过程块4906),此后,所述过程终止。
现在,转向图50,根据本发明的说明性实施例,示出了当生产者命令处理事件时发生的操作的流程图。在这一说明性的例子中,所述过程由诸如图14中的Wiki命令对象1404和1412的命令对象实现。
所述过程开始于作为关于命令调用init方法的结果,命令初始化时(过程块5002)。由数据中枢调用初始化命令的init方法。命令向数据中枢登记为针对给定事件题目例如题目A的生产者(过程块5004)。命令取得数据(过程块5006)。在这一说明性的例子中,取得数据可以包括从用户那里接收输入,以及从数据库或其它数据存储设备取得数据。命令向数据中枢激发针对题目A的事件(过程块5008),此后,所述过程终止。
现在,转向图51,根据本发明的说明性实施例,示出了当消费者命令处理事件时发生的操作的流程图。在这一说明性的例子中,所述过程由诸如图14中的Wiki命令对象1404和1412的命令对象实现。
所述过程开始于消费者命令响应于数据中枢关于所有命令调用初始化方法而初始化(过程块5102)。所述命令向数据中枢登记为针对诸如题目A的给定事件题目的消费者命令(过程块5104)。当数据中枢关于消费者命令调用callback方法时,所述命令从数据中枢接收针对题目A的事件(过程块5106)。所述命令处理事件(过程块5108)。响应于数据中枢关于所述命令调用render方法,所述命令呈递成为超文本语言或JavaScript的处理结果(过程块5110)。最后,所述命令把所呈递的结果发送至数据中枢(过程块5112),此后,所述过程终止。
现在,转向图52,根据本发明的说明性实施例,示出了当客户机侧数据中枢接收事件时发生的操作的流程图。在这一说明性的例子中,所述过程由客户机侧数据中枢诸如图6中的数据中枢634、图14中的数据中枢1412以及图19A中的数据中枢1910实现。
所述过程开始于客户机侧数据中枢从用户和/或部件诸如生产者部件接收事件时(过程块5202)。客户机侧数据中枢立即处理事件(过程块5204)。在这一步骤中,客户机侧数据中枢确定一或多个命令是否已登记为针对与事件对象相关的给定题目的消费者。如果一或多个命令已登记为针对给定题目的消费者,则客户机侧数据中枢关于所登记的消费者集合中调用cailback方法(过程块5212),以把事件发送至所登记的消费者,此后,所述过程终止。
现在,转向图53,根据本发明的说明性实施例,示出了当服务器侧数据中枢处理事件时发生的操作的流程图。在这一说明性的例子中,所述过程由服务器侧数据中枢诸如图6中的数据中枢638、图14中的数据中枢1404以及图15中的数据中枢1500实现。所述过程开始于服务器侧数据中枢关于与所述服务器相关的所有命令调用初始化“init()”方法时(过程块5302)。
服务器侧数据中枢接收作为针对给定题目事件的消费者的命令的登记(过程块5304)。服务器侧数据中枢接收针对给定事件题目的事件(过程块5306)。事件可以包括数据。可以从用户输入或者从另一个命令接收事件(过程块5308)。服务器侧数据中枢把事件添加于事件队列(过程块5310)。
在processEvents方法阶段期间,服务器侧数据中枢处理事件队列中的事件。服务器侧数据中枢关于针对给定题目所登记的所有消费者命令调用callback方法。服务器侧数据中枢调用callback方法,以把事件发送至针对与所述事件相关的事件题目所登记的消费者(过程块5316)。
服务器侧数据中枢确定是否针对正在被处理的给定事件题目接收到新的事件(过程块5318)。如果接收到新的事件,则服务器侧数据中枢把事件添加于事件队列(过程块5310),以在下一processEvents阶段期间进行处理。返回至过程块5318,如果没有接收到新的事件数据,则服务器侧数据中枢关于处理事件过程中所涉及的所有命令调用render方法(过程块5320)。服务器侧数据中枢收集从处理事件的过程中所涉及的所有命令所接收的所有呈递的结果,并且把内容发送至客户机,以加以显示(过程块5322),此后,所述过程终止。返回至客户机的内容是以超文本语言或JavaScript返回的,以在客户机浏览器上显示。
现在,转向图54,根据本发明的说明性实施例,示出当客户机侧数据中枢确定是否把事件发送至服务器,以进行处理时发生的操作的流程图。在这一说明性的例子中,所述过程由客户机侧数据中枢诸如图6中的数据中枢634、图14中的数据中枢1412以及图19A中的数据中枢1910实现。
所述过程开始于客户机侧数据中枢接收由生产者命令激发的事件时(过程块5402)。客户机侧数据中枢把事件发送至向所述数据中枢登记为与事件相关的事件题目的消费者的、客户机上的任何命令(过程块5404)。客户机侧数据中枢确定是否应该把事件发送至服务器侧数据中枢(过程块5406)。如果客户机侧数据中枢确定不应该把事件发送至服务器侧数据中枢,则客户机侧数据中枢在客户机上处理事件(过程块5408)。如果客户机侧数据中枢确定应该把事件发送至服务器,则客户机侧数据中枢调用processClientEvent(处理客户机事件)方法,以把事件发送至服务器侧数据中枢,以进行处理(过程块5410)。客户机侧数据中枢从服务器侧数据中枢接收processClientEvent的结果(过程块5412)。客户机侧数据中枢使用来自服务器的processClientEvent的结果中所接收的新Wiki页内容更新客户机上所显示的Wiki页(过程块5414),此后,所述过程终止。
现在,转向图55,根据本发明的说明性实施例,示出了当作为processClientEvent方法调用的结果服务器侧数据中枢从客户机侧数据中枢接收事件时发生的操作的流程图。在这一说明性的例子中,所述过程由服务器侧数据中枢诸如图6中的数据中枢638、图14中的数据中枢1404以及图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)。服务器侧数据中枢捆绑(bundle)来自所有命令的呈递,并把这些呈递发送至客户机数据中枢(过程块5522),此后,所述过程终止。
本发明的说明性实施例还提供了用于事件激发的变元(argument)检测的一种计算机实现的方法、装置以及计算机可用程序代码。事件激发涉及把事件发送至数据中枢,以进行处理的过程。
所述过程聚积来自一组源的变元数据,以形成聚积数据集合。所述过程生成用于激发事件的最小充分变元(minimum sufficient argument)的列表,以形成最小变元集合。所述过程把聚积数据集合与该最小变元集合比较,以确定该最小变元集合是否可用。响应于确定该最小变元集合可用,所述过程触发命令激发事件。
现在,转向图56,根据本发明的说明性实施例,示出了当Wiki变元对象执行最小充分变元过程时发生的操作的流程图。在这一说明性的例子中,所述过程由Wiki命令对象诸如图14中的Wiki命令1404或者Wiki命令1412实现。
所述过程开始于Wiki变元对象聚积来自一组源的变元数据时(过程块5602)。Wiki变元对象根据形成变元集合的所声明的参数准则,生成最小充分变元集合(过程块5604)。Wiki变元对象把聚积变元数据集合与最小变元集合比较(过程块5606)。Wiki变元对象确定是否存在充分的变元(过程块5608)。如果Wiki变元对象确定存在充分的变元,则Wiki变元对象激发dateAvailable(数据可用)事件,指示所要求的数据可用于激发事件(过程块5610),此后,所述过程终止。
如果Wiki变元对象确定不存在充分的变元,则Wiki变元对象确定是否已经接收了新的数据(过程块5612)。如果已经接收了新的数据,则所述过程返回至过程块5604,其中Wiki变元生成新的聚积数据集合,以确定现在是否存在充分的变元。如果没有接收新的数据,则此后所述过程终止。
现在,转向图57,根据本发明的说明性实施例,描述了当Wiki变元对象确定是否设置了命令的最少所需变元时发生的areArgments set(设置了参数)方法的过程的流程图。在这一说明性的例子中,所述过程由Wiki命令对象诸如图14中的Wiki命令1404或者Wiki命令1412实现。
所述过程开始于接收来自对象的用于激发事件的调用,该事件要求在激发变元之前存在变元值的最小充分集合(过程块5702)。所述过程把所需变元的列表生成为变元列表(过程块5704)。接下来,所述过程确定变元的列表中是否存在尚未检查的更多的变元(过程块5706)。换句话说,所述过程通过确定变元列表中哪一个变元为1列表中下一个将被检查的变元,标识下一个将被检查或处理的变元。所述过程通过确定变元是否可用与有效,检查列表中的下一个变元,迭代这一过程,直至已就可用性和有效性检查了列表中的所有变元。如果列表不包含任何额外的未处理或未检查的变元,则所述过程向调用者对象返回布尔值“真”(过程块5710),此后,所述过程终止。
返回至过程块5706,如果列表包含下一个未处理或未检查的变元,则所述过程确定是否设置了变元列表中的该下一个变元(过程块5708)。所述过程从未处理的变元的列表中去除下一个变元(过程块5706)。如果在过程块5708处所述过程确定设置了变元,则所述过程返回至过程块5706,以继续处理列表,直至已经检查了变元列表中的所有变元。如果所述过程确定未设置该变元,则所述方法向调用者返回布尔值“假”(过程块5712),此后,所述过程终止。
现在,转向图58,根据本发明的说明性实施例,示出了用于检测是否应该激发变元/可用事件的setCheckArgument(设置检查变元)方法的过程的流程图。在这一说明性的例子中,所述过程由Wiki命令对象诸如图14中的Wiki命令1404或Wiki命令1412实现。
所述过程开始于确定是否设置了标识符变元(过程块5802)。标识符变元为属于数据中枢命令的默认的变元。标识符变元用于在事件存在于数据中枢中的整个期间唯一地标识该事件。如果所述过程确定未设置标识符变元,则此后,所述过程终止。
返回至过程块5802,如果设置了标识符变元,则所述过程确定要求在激发所标识的事件之前存在的所有变元是否可用(过程块5806)。所述过程通过检查标志进行这一确定,其确定在先前所定义的所要求的变元的集合中的所有变元是否可用。如果所述过程确定所要求的变元集合中先前定义的变元不可用,则所述过程调用areArgumentsSet方法(过程块5808)。如果所述过程从areArgumentsSet接收到“假”的返回值,则此后,所述过程终止。
现在,转向步骤5808,如果变元设置过程返回“真”值,则所述过程创建数据可用事件对象(过程块5810)。数据可用事件对象指示要求在激发所标识的事件之前存在的所有变元都存在。所述过程激发数据可用事件对象,以触发与所标识的事件相关的命令,以激发所标识的事件(过程块5812)。
返回到过程块5806,如果所述过程确定areArgumentsSet方法返回“真”,如图57中的过程块5708中所示,则所述过程创建数据可用事件对象(过程块5810)。接下来,所述过程关于数据中枢对象调用fireEvent(激发事件)方法,其中以数据可用对象作为该方法的变元,以激发事件对象(过程块5812)。fireEvent方法把事件传递于任何监听过程。此后,所述过程终止。
图59为流程图,图示根据本发明的说明性实施例的、定义Wiki页的Wiki页布置的操作。在过程块5912~5920中特别强调针对Wiki页继承Wiki页布置的操作。图59中的操作可以由Wiki引擎诸如图4中的Wiki引擎402,更具体地,可以由Wiki控制器诸如图5中的Wiki控制器500实现。所述操作开始于Wiki引擎接收显示页的请求时(过程块5902)。所述请求通常为由远程客户机浏览器发出的HTTP请求。Wiki控制器对象处置请求。Wiki控制器对象开始呈递与布置页相组合的所请求的页的过程(过程块5904)。
在本发明的说明性实施例中,通过调用Wiki对象诸如图5中的Wiki对象508的showPage(显示页)方法,援用呈递所请求的页的过程。showPage方法取得所请求的Wiki页,并且呈递可以在客户机浏览器中显示的所请求的Wiki页的HTML版本。Wiki对象担当针对用于为新请求的Wiki页生成内容的所有对象和字段的储存库。作为页呈递过程的一部分,援用第一子过程(过程块5906)。第一子过程执行创建所请求的页的数据模型所需的数据操纵。在本发明的说明性实施例中,所请求的Wiki页的数据模型为Wiki页对象诸如图5中的Wiki页526。在本发明的说明性实施例中,第一子过程为processPage(处理页)方法,其由showPage方法调用。
第一子过程援用第二子过程(过程块5908)。第二子过程的目的在于加载与作为当前请求的主题的Wiki页相关的Wiki布置页。在本发明的说明性实施例中,第二子过程为loadLayout(加载布置)方法。
第二子过程确定所请求的Wiki页的数据模型的布置字段是否包含Wiki布置页名(过程块5910)。在本发明的说明性实施例中,布置字段为Wiki页对象的对象变量,诸如图5中的页526的对象变量528。如果第二子过程确定布置字段不包含针对当前所请求的Wiki页的Wiki布置页名(过程块5910的“no”输出),则第二子过程确定当前所请求的Wiki页是否具有祖先Wiki页(过程块5912)。祖先Wiki页为那些出现在页命名层次结构中的较高层上的Wiki页。例如,如果把Wiki页命名为“LevelOne/LevelTwo”,并且存在命名为“LevelOne的Wiki页,则把命名为“LevelOne”的Wiki页视为Wiki页“LevelOne/LevelTwo”的祖先。在本发明的另一说明性实施例中,第二子过程通过检查Wiki页对象的路径字段,确定当前所请求的Wiki页是否具有祖先Wiki页。如果路径字段包含Wiki页的名字,则确定当前所请求的Wiki页具有祖先Wiki页。
如果第二子过程确定当前所请求的Wiki页具有祖先Wiki页(过程块5912的“yes”输出),则第二子过程取得路径,把路径加载于阵列中,并且反转该阵列的次序,以致于最近祖先首先出现(过程块5914)。在页名层次结构中,最近祖先为紧出现在最后段之前的名字段。例如,如果把页命名为“LevelOne/LevelTwo/LevelThree”,则该页的最近祖先页为名为“LevelTwo”的页。该页的最远祖先页为名为“LevelOne”的页。接下来,第二子过程确定Wiki_page表中的行,或表项,是否与路径阵列中的页标识之一相匹配(过程块5916)。Wiki_page表为包括Wiki页对象的对象变量的数据库中的表。在本发明的说明性实施例中,页表中的表项,或行,包括标识(ID)、account(账户)、tag(标签)、time(时间)、body(主体)、Owner identity(ownerID)(拥有者标识)、modified_by(由...修改)、isLastest(是最近的)、layout(布置)、isLayout(是布置)、isEditing(是正在编辑)、commentOn(注释)、path(路径)、attributes(性质)(attrib)以及error(错误)字段。
如果第二子过程确定存在匹配(过程块5916的“是”输出),则第二子过程加载作为匹配所返回的Wiki布置页(过程块5918)。把在Wiki_page表中发现具有匹配表项的祖先页称为匹配的祖先页。在本发明的说明性实施例中,第二子过程通过援用第三子过程加载从查询作为匹配所返回的Wiki布置页,该第三子过程加载作为匹配所返回的Wiki布置页。在本发明的另一个说明性实施例中,第三子过程为Wiki对象的loadPage方法。接下来,操作转向过程块5924。
如果第二子过程确定不存在匹配(过程块5916的“否”输出),则第二子过程加载默认的布置页(过程块5920)。在本发明的说明性实施例中,调用Wiki对象的loadPage方法,以加载默认的布置页。然后,操作转向过程块5924。
如果第二子过程确定当前所请求的Wiki页不具有祖先Wiki页(过程块5912的“否”输出),则第二子过程加载默认的布置页(过程块5920)。在本发明的说明性实施例中,调用Wiki对象的loadPage方法,以加载默认的布置页。然后,操作转向过程块5924。
如果第二子过程确定针对当前针对所请求的Wiki页设置了布置字段(过程块5910的“是”输出),则第二子过程加载在该布置字段中所命名的布置页(过程块5922)。在本发明的说明性实施例中,调用Wiki对象的loadPage方法,以加载所命名的布置页。
接下来,第二子过程向第一子过程返回布置Wiki页对象(过程块5924)。在本发明的说明性实施例中,第二子过程经由第三子过程向第一子过程返回布置Wiki页对象。第一子过程把当前所请求的Wiki页的Wiki页对象的主体字段的内容放入页部件“主体”中,页部件“主体”为Wiki布置页对象的主体字段的一部分(过程块5926)。主体字段为诸如图5中的页526的对象变量528的Wiki页对象的对象变量。在本发明的说明性实施例中,第一子过程通过用当前所请求的Wiki页的Wiki页对象的主体字段取代Wiki布置页对象中的特殊模板变量,而把当前所请求的Wiki页的Wiki页对象的主体字段的内容放入Wiki布置页对象的主体字段中。在本发明的说明性实施例中,特殊模板变量为串变量。在本发明的另一个说明性实施例中,第一子过程通过串替换,用当前所请求的Wiki页的主体取代特殊模板变量。
接下来,用Wiki布置页对象的主体字段取代当前所请求的页的Wiki页对象的主体字段(过程块5928)。Wiki布置页对象的主体字段包括页部件头标、菜单、右边距、左边距、脚标、以及主体。在客户机浏览器中呈递页的处理如常继续(过程块5930),然后,操作结束。因此,当在客户机浏览器中呈递时,当前所请求的Wiki页包括包裹(wrap)在相关Wiki布置页中的当前所请求的Wiki页的原始内容。
于是,本发明的说明性实施例提供了把Wiki页内容嵌入布置页的主体中的方法。此外,可以把具体的层与Wiki页相关联。用户可以通过简单地创建新Wiki页以及对新创建的Wiki页的内容进行编辑,而创建新Wiki布置页。由按命令向其提供内容的区段命名的Wiki命令,提供新创建的Wiki页的每一区段的默认的内容。用户可以通过使用HTML页流,把来自这些Wiki命令的内容包括在用户所希望的页上的任何位置。用户可以把其它静态HTML内容和其它动态Wiki命令包括在新创建的Wiki页中,如用户看起来适当那样。
另外,本发明的这些说明性实施例提供用于Wiki页从祖先页继承Wiki页的布置的方法。每一个Wiki页具有作为该Wiki页的祖先页的、与该Wiki页相关的页的列表。把祖先页的列表存储在Wiki对象的字段中。在本发明的说明性实施例中,把该字段称为路径字段。使用查询,该查询按反向层次结构次序在包含Wiki页布置指定符(specifier)的祖先列表中找出第一Wiki页。然后选择指定的布置页,用于待继承的目标页。
图60为根据本发明的说明性实施例的、呈递Wiki页的操作的流程图。可以由Wiki引擎诸如图4中的Wiki引擎402,更具体地,由Wiki控制器诸如图5中的Wiki控制器500实现图60中的操作。所述操作开始于Wiki引擎接收显示Wiki页的请求时(过程块6002),所述请求通常为远程客户机浏览器所发出的HTTP请求。Wiki控制器对象处置所述请求。Wiki控制器对象开始呈递与Wiki布置页相组合的、所请求的Wiki页的过程(过程块6004)。
在本发明的说明性实施例中,通过调用诸如图5中的Wiki对象508的Wiki对象的showPage方法,援用呈递所请求的Wiki页的过程。showPage方法取得所请求的Wiki页,并且呈递所请求的Wiki页的HTML版本,其可以在客户机浏览器中显示。Wiki对象担当用于生成新的所请求的Wiki页的内容的所有对象与字段的储存库。接下来,Wiki引擎测试存储在诸如图5中的Wiki页526的所请求的Wiki页的、被称为部件字段的字段中的位掩码的位掩码设置(过程块6006)。部件字段位掩码包括相应于Wiki页中的每个页部件诸如头标、菜单、脚标等的位。如果针对给定页部件的位或设置具有值1,则允许布置页中的相应的页部件Wiki命令把Wiki命令所生成的内容贡献于Wiki页。如果针对给定页部件的比特或设置具有值0,则不允许布置页中的相应的页部件Wiki命令把Wiki命令将生成的内容贡献于Wiki页。
接下来,所述操作把所请求的Wiki页与相关的Wiki布置页组合(过程块6008),从而形成组合的页。在本发明的说明性实施例中,为了确定与所请求的Wiki页相关的Wiki布置页,对页表进行检查,以确定与所请求的Wiki页相关的具体Wiki布置页。在本发明的说明性实施例中,把页表称为Wiki_page表。如果所请求的Wiki页不具有页表中与该Wiki页相关的具体Wiki布置页,则把默认的Wiki布置页与所请求的Wiki页相关联与相组合。
因此,本发明的这些说明性实施例提供用于编程地(programmatically)隐藏和显示Wiki页布置区段。把Wiki页设置实现为当用户编辑Wiki页时可由用户编辑的复选框。通过选中和未选中复选框,用户控制各种页部件以及页评论、附件和电子邮件的可视性。
现在,转向图61,图61根据本发明的说明性实施例,描述了服务器侧数据中枢对象类的类定义。服务器侧数据中枢对象诸如图21中的服务器侧数据中枢对象2100具有由诸如代码6102中的类变量的Wiki数据中枢类定义所定义的性质与对象变量。
这一说明性的Wiki数据中枢类定义提供了Wiki命令对象阵列6104、消费者标识符阵列6106、以及生产者标识符阵列6108。于是,每次针对给定的页实例实例化服务器侧数据中枢时,由诸如上面所示的Wiki数据中枢类定义的Wiki数据中枢类定义来定义针对该服务器侧数据中枢实例的数据中枢性质。
现在,转向图62,图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,图64图示了根据本发明的说明性实施例,针对事件处理方法的类的方法接口集合。事件处理方法集合6400为针对诸如图21中的事件处理2108的服务器侧数据中枢上的事件处理方法的方法接口。例如,代码6402为用于激发事件的方法。代码6404为用于处理服务器上的事件的方法。代码6406为用于处理被指定于服务器的客户机事件的方法。可以成批地把多个事件发送于服务器。
现在,转向图65,根据本发明的说明性实施例,示出了针对命令管理方法的类的方法接口集合。命令管理方法集合6500为针对服务器侧数据中枢上的命令管理方法诸如图21中的命令管理2110的方法接口。例如,代码6502为用于针对命令设置变元的方法。这改变了源中的变元。代码6504为用于从页源中删除命令的方法。
现在,转向图66,根据本发明的说明性实施例,描述了客户机侧数据中枢对象类的类定义。由Wiki客户机侧数据中枢的Wiki数据中枢类定义来定义数据中枢性质与对象变量,如代码6600中所示。代码6602为针对消费者标识符的对象变量。代码6604为针对题目的对象变量。代码6606为针对事件的对象变量。
现在,转向图67,根据本发明的说明性实施例,示出了生产者与消费者方法的类的方法接口集合。生产者与消费者方法集合6700为客户机侧数据中枢上的生产者与消费者方法接口,诸如图22中的生产者与消费者2202。例如,代码6702为用于添加消费者命令的方法。代码6702为用于去除消费者命令的方法。
现在,转向图68,根据本发明的说明性实施例,描述了针对题目方法的类的方法接口集合的图示。题目方法集合6800为针对客户机侧数据中枢上的题目方法诸如图22中的题目2204的方法接口。例如,代码6802为用于添加可用于其它消费者命令的题目的方法。代码6804为用于得到可用题目列表的方法。
现在,转向图69,根据本发明的说明性实施例,描述了针对事件处理方法的类的方法接口集合的图示。事件处理方法集合6900为针对客户机侧数据中枢上的事件处理方法诸如图22中的事件处理2206的方法接口。例如,代码6902为一种用于激发所有排队的事件的方法。代码6904为激发事件的方法。代码6906为一种向服务器发送事件,以执行的方法。
现在,转向图70,根据本发明的说明性实施例,示出了针对命令管理方法的类的方法接口集合。命令管理方法集合7000为针对客户机侧数据中枢上的命令管理方法诸如图22中的命令管理2208的方法接口。例如,代码7002为用于添加Wiki命令的方法。代码7004为用于删除命令的方法。
数据中枢对象定义了消费者可以订购的题目,以及生产者命令可以发表或激发的题目。例如,搜寻部件为订购搜寻题目的消费者。当用户接口从用户接收搜寻项目时,用户接口激发针对所述搜寻题目的事件。换句话说,用户接口为发表消费者搜寻部件所订购的题目的生产者。
现在,转向图71,根据本发明的说明性实施例,描述了数据中枢题目对象的类的对象变量与方法接口的集合。对象变量7100定义了题目对象的性质。所述方法集合为针对客户机侧数据中枢或服务器侧数据中枢上的数据中枢题目对象诸如图21中的数据中枢题目对象2112和图22中的数据中枢题目对象2210的方法接口。在本发明的说明性实施例中,与服务器相关的数据中枢题目对象和与客户机相关的数据中枢题目对象具有相同的对象变量与方法。
现在,转向图72,根据本发明的说明性实施例,描述了数据中枢事件对象的类的类定义与方法接口的图示。类定义7200定义了事件对象的性质。例如,代码7202定义了针对题目的对象变量。所有对象变量均具有题目对象变量中的题目值。代码7204定义了针对值的对象变量。事件对象可以具有在对象变量值中存储的数据。然而,并非所有事件对象都包括数据。
在本发明的说明性的实施例中,所述方法集合为针对数据中枢事件对象诸如图21中的数据中枢事件对象2114和图22中的数据中枢对象2212的方法接口。与服务器相关的数据中枢事件和与客户机的数据中枢事件对象具有相同的对象变量与方法。
数据中枢对象、数据中枢题目对象和/或数据中枢事件对象可以包括未在这些说明性实施例中描述的额外的方法,而不背离本发明的说明性实施例的范围。另外,在根据本发明的这些说明性实施例的数据中枢对象、数据中枢题目对象、和/或数据中枢事件对象的方法集合中,可以不存在与数据中枢对象、数据中枢题目对象、和/或数据中枢事件相关的一或多个方法。
在基于事件的Wiki部件模型中,某些Wiki部件要求在部件可以答复或者激发事件对象之前存在变元值的最小充分集合。这些最小充分变元可以来自多个、异类(disparate)的源。因此,本发明的说明性实施例的方面提供了最小充分变元检测方案,其聚集来自潜在多个源的变元数据,并且把变元集合与所声明的参数准则进行匹配,以便仅当存在满足所声明/所定义的参数准则的最小充分变元,才激发“数据可用”事件。
Wiki变元对象为与Wiki命令诸如图14中的Wiki命令1404和Wiki命令1412相关的对象。Wiki变元对象具有“avail(效用)”属性,指示激发命令所需的变元是否已经设置以及有效。
图73是根据本发明的说明性实施例的、针对Wiki变元对象的类定义的图示。由关于命令对象诸如图14中的Wiki命令对象1404和1412的Wiki变元对象,执行用于检测是否激发变元/可用事件的算法。代码7302为对象变量,指示变元对象是否有效。代码7304为变元对象,指示变元是否被设置以及有效。
现在,转向图74,根据本发明的说明性实施例,示出了针对检测是否激发变元/可用事件的算法的伪代码。
在这一例子中,代码7400针对如下算法,该算法确定用于激发数据中枢事件对象的最少所需变元集合中的每一变元是否可用。在代码7402处检查每一变元,以确定可用变量是否为空(null)。如果算法指示所述集合中的每一变元可用,则代码7406确定变元是否为可用并且被设置。如果变元可用并且被设置,则代码7408激发与变元集合相关的新的数据中枢事件对象。
因此,本发明的说明性实施例的方面提供了服务器侧数据中枢对象和相应的客户机侧数据中枢对象,以在Wiki环境和客户机环境中的命令之间传播或路由事件对象。数据中枢对象的利用使得在与给定Wiki页相关的事件的处理期间命令能够更容易地交互。
应该注意的是,尽管以上详细地描述的本发明的说明性实施例是关于Wiki环境中的Wiki应用而描述的,然而,上述本发明的说明性实施例并不局限于Wiki环境中的Wiki应用。在本说明书中作为例子的Wiki环境中的Wiki应用的使用绝不旨在对本发明的范围加以任何的限制。对于本领域普通技术人员而言,显然上述本发明的说明性实施例同样适用于任何可由一组用户通过接口访问的共享环境。另外,尽管就JavaScript语言解释了上述说明性实施例的某些方面,然而,在本说明书中作为例子的对JavaScript语言的使用绝不旨在对本发明的范围加以任何的限制。本领域普通技术人员将意识到,可以使用任何面向对象的脚本语言实现上述说明性实施例。
各附图中的流程图和方框图说明了根据本发明的各种实施例的方法、装置以及计算机程序产品的可能的实现的体系结构、功能以及操作。在这一方面,流程图或方框图中的每一个框,可以代表模块、段或者代码的一部分,其包括用于实现一或多个指定逻辑功能的一或多条指令。还应该加以注意的是,在某些替代性的实现中,所述框中所提到的功能,可以不按图中所提到的次序实现。例如,相继示出的两个框实际上可以实质上并发地执行,或者取决于所涉及的功能,有时可以按相反的次序执行所述框。
本发明可以呈完全硬件实施、完全软件实施或者既包含硬件元件,也包括软件元件的形式。在优选的实施例中,按软件形式实现本发明,其包括,但不局限于固件、驻留软件、微代码等。
而且,本发明还可以呈可从计算机可用或者计算机可读媒体访问的计算机程序产品的形式,提供可由或者可以结合计算机或者任何指令执行系统使用的程序代码。就本说明书的目的而言,计算机可用或者计算机可读媒体可以为任何实际的装置,其可包括、存储、通信、传播、或者输送由或者结合指令执行系统、装置、或设备使用的程序。
所述媒体可以为电子、磁、光、电磁、红外、或者半导体系统(或者装置或者设备)或者传播媒体。计算机可读媒体的例子包括半导体或者固态存储器、磁带、可拆卸计算机盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘以及光盘。光盘的当前的例子包括紧致盘-只读存储器(CD-ROM)、紧致盘-读/写存储器(CD-R/W)以及DVD。
适合于存储和/或执行程序代码的数据处理系统将包括至少一个直接或者通过系统总线间接耦合于存储器元件的处理器。存储器元件可以包括在程序代码的实际执行期间所使用的局部存储器、大容量存储器、超高速缓冲存储器,其为至少某些程序代码提供临时存储,以减少执行期间必须从大容量存储器取得代码的次数。
输入/输出或I/O设备(包括,但不局限于键盘、显示器、定位设备等),可以直接或者通过居间的I/O控制器耦合于所述系统。
也可以把网络适配器耦合于所述系统,以使所述数据处理系统能够通过居间的专用或公共网络耦合于其它数据处理系统或者远程打印机、或者存储设备。调制解调器、电缆调制解调器以及Ethernet(以太网)卡仅为当前可用类型的网络适配器的一些。
已出于说明和描述的目的给出了本发明的描述,然而该描述并不旨在是穷尽的也不旨在把本发明限制于所公开的形式。本领域中的普通技术人员将会明显意识到对本发明的诸多修改与本发明的诸多变通形式。所选择和所描述的实施例,旨在对本发明的原理、实际应用进行充分的解释,以及旨在使本领域中的其他普通技术人员也能够理解针对那些适合于所考虑的具体应用的、具有各种修改的不同的实施例的本发明。

Claims (17)

1.一种用于配置针对合作网页的命令的计算机实现的方法,该计算机实现的方法包括:
响应于接收在该合作网页上选择所选择命令的图形表示的用户输入,援用针对所选择命令的接口,其中所述接口允许对所选择命令的属性进行编辑;
响应于在接口中接收具体的用户输入,使用该具体的用户输入更新所选择命令,以形成更新的命令;以及
根据该更新的命令而更新该合作网页。
2.根据权利要求1所述的计算机实现的方法,其中,所述接收、更新、以及援用步骤由处理引擎执行。
3.根据权利要求1所述的计算机实现的方法,其中,所选择命令的图形表示为醒目标志。
4.根据权利要求1所述的计算机实现的方法,其中,所述接口为属性编辑器。
5.根据权利要求1所述的计算机实现的方法,其中,所述援用步骤包括:
显示作为所述接口的属性编辑器,以接收用户输入。
6.根据权利要求1所述的计算机实现的方法,还包括:
呈递所选择命令;以及
生成在该合作网页上隐藏的默认的属性编辑器。
7.根据权利要求6所述的计算机实现的方法,其中,所述呈递步骤还包括:
响应于准许编辑的所选择命令,生成所选择命令的图形表示;
显示所选择命令的图形表示;以及
呈递所选择命令的每一任何孩子命令。
8.根据权利要求1所述的计算机实现的方法,其中,所述用户输入包括参数与值。
9.根据权利要求1所述的计算机实现的方法,其中,基于AJAX请求显示所述接口,其中,基于该AJAX请求更新参数与值。
10.根据权利要求1所述的计算机实现的方法,其中,所述更新该合作网页的步骤包括:
确定是否要更新该合作网页的全部;以及
在客户机上重现显示该合作网页的全部。
11.根据权利要求1所述的计算机实现的方法,还包括:
响应于更新该合作网页的一部分的确定,呈递所选择命令,并且显示该合作网页的一部分中的新内容。
12.根据权利要求1所述的计算机实现的方法,还步骤包括:
选择属性编辑器。
13.根据权利要求12所述的计算机实现的方法,其中,所述选择步骤还包括:
确定与所选择命令相关的参数与参数类型的列表;
针对所返回的每一参数,生成客户机侧编辑器;
把所聚积的内容传递给客户机,以在属性编辑器中呈递。
14.根据权利要求1所述的计算机实现的方法,其中,可以把所选择的命令用于下列操作任何之一:修订该合作网页、拷贝该合作网页、删除该合作网页、重新命名该合作网页、拷贝该合作网页、修订该合作网页、解除对该合作网页的删除、针对该合作网页构造选用区、从该合作网页导入内容、以及从该合作网页导出内容。
15.根据权利要求1所述的计算机实现的方法,还包括:
生成多个命令的图形表示的选用区;以及
配置所选择命令,以编辑与所述命令相关的数据。
16.一种数据处理系统,包括:
总线系统;
连接于总线系统的通信系统;
连接于总线系统的存储器,其中,存储器包括指令集合;以及
连接于总线系统的处理单元,其中,处理单元响应于接收在合作网页上选择所选择命令的图形表示的用户输入,执行指令集合,以援用针对所选择命令的接口,其中,所述接口允许对所选择命令的属性进行编辑;响应于在该接口中接收具体的用户输入,使用该具体的用户输入更新所选择命令,以形成更新的命令;以及根据该更新的命令而更新该合作网页。
17.根据权利要求16所述的系统,其中,把多个命令中的每一个与用于更新所述多个命令中的每一个的属性接口相关联。
CNA2007101286612A 2006-07-07 2007-07-09 配置针对合作网页的命令的方法与系统 Pending CN101101603A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/482,496 US20080010609A1 (en) 2006-07-07 2006-07-07 Method for extending the capabilities of a Wiki environment
US11/482,496 2006-07-07

Publications (1)

Publication Number Publication Date
CN101101603A true CN101101603A (zh) 2008-01-09

Family

ID=38920441

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2007101286612A Pending CN101101603A (zh) 2006-07-07 2007-07-09 配置针对合作网页的命令的方法与系统

Country Status (2)

Country Link
US (1) US20080010609A1 (zh)
CN (1) CN101101603A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102571731A (zh) * 2010-12-31 2012-07-11 德讯科技股份有限公司 一种面向对象的ajax框架模型系统及其处理方法
CN104133686A (zh) * 2014-08-06 2014-11-05 浪潮通用软件有限公司 一种可快速模块化配置的web界面构建方法
CN105389323A (zh) * 2014-08-29 2016-03-09 三星电子株式会社 选择网页上的区域的方法及其电子设备
WO2016092412A1 (en) * 2014-12-12 2016-06-16 International Business Machines Corporation Generation of mapping definitions for content management system
CN106257445A (zh) * 2015-06-17 2016-12-28 中兴通讯股份有限公司 字段的显示方法及装置
CN109375922A (zh) * 2018-09-26 2019-02-22 深圳壹账通智能科技有限公司 一种接口文档的自动生成方法及终端设备
CN109753349A (zh) * 2018-12-17 2019-05-14 江苏晓创教育科技有限公司 一种基于普通文本工作流调度和命令执行引擎的实训平台

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8196039B2 (en) 2006-07-07 2012-06-05 International Business Machines Corporation Relevant term extraction and classification for Wiki content
US8775930B2 (en) 2006-07-07 2014-07-08 International Business Machines Corporation Generic frequency weighted visualization component
US8560956B2 (en) * 2006-07-07 2013-10-15 International Business Machines Corporation Processing model of an application wiki
US8219900B2 (en) 2006-07-07 2012-07-10 International Business Machines Corporation Programmatically hiding and displaying Wiki page layout sections
US8683342B2 (en) * 2007-02-28 2014-03-25 Red Hat, Inc. Automatic selection of online content for sharing
US20080270915A1 (en) * 2007-04-30 2008-10-30 Avadis Tevanian Community-Based Security Information Generator
US20080319757A1 (en) * 2007-06-20 2008-12-25 International Business Machines Corporation Speech processing system based upon a representational state transfer (rest) architecture that uses web 2.0 concepts for speech resource interfaces
US9311420B2 (en) * 2007-06-20 2016-04-12 International Business Machines Corporation Customizing web 2.0 application behavior based on relationships between a content creator and a content requester
US8151200B2 (en) 2007-11-15 2012-04-03 Target Brands, Inc. Sensitive information handling on a collaboration system
US8584020B2 (en) 2007-12-28 2013-11-12 Microsoft Corporation User-defined application models
US20090217179A1 (en) * 2008-02-21 2009-08-27 Albert Mons System and method for knowledge navigation and discovery utilizing a graphical user interface
WO2010011372A1 (en) * 2008-03-26 2010-01-28 Knewco, Inc. System and method for knowledge navigation and discovery utilizing a graphical user interface
US20100037168A1 (en) * 2008-07-10 2010-02-11 Nile Thayne Systems and methods for webpage design
US20100023557A1 (en) * 2008-07-28 2010-01-28 Novell, Inc. System and method to extend a file manager user interface
EP2340515A4 (en) * 2008-09-08 2013-11-13 Greg Waite COMPUTERIZED SYSTEM AND METHOD FOR OFFERING A COMMUNITY AND COLLABORATIVE PLATFORM CENTERED ON KNOWLEDGE TRANSFER, EXPERTISE, INNOVATION, TANGIBLE GOODS, INTANGIBLE GOODS AND INFORMATION GOODS
US20100162096A1 (en) * 2008-12-23 2010-06-24 Micorsoft Corpration Techniques for Utilizing Dynamic Components with Wikis
US8631046B2 (en) 2009-01-07 2014-01-14 Oracle International Corporation Generic ontology based semantic business policy engine
US8768960B2 (en) * 2009-01-20 2014-07-01 Microsoft Corporation Enhancing keyword advertising using online encyclopedia semantics
US9143355B2 (en) 2009-02-23 2015-09-22 International Business Machines Corporation Dynamic bridge for object transfer
US9672478B2 (en) 2009-02-26 2017-06-06 Oracle International Corporation Techniques for semantic business policy composition
US20100251143A1 (en) * 2009-03-27 2010-09-30 The Ransom Group, Inc. Method, system and computer program for creating and editing a website
US8312171B2 (en) * 2009-03-27 2012-11-13 Oracle International Corp. Generic preventative user interface controls
US20100257457A1 (en) * 2009-04-07 2010-10-07 De Goes John A Real-time content collaboration
US9524345B1 (en) 2009-08-31 2016-12-20 Richard VanderDrift Enhancing content using linked context
US9639707B1 (en) 2010-01-14 2017-05-02 Richard W. VanderDrift Secure data storage and communication for network computing
US8949236B2 (en) 2010-02-26 2015-02-03 Oracle International Corporation Techniques for analyzing data from multiple sources
US9400958B2 (en) 2010-06-30 2016-07-26 Oracle International Corporation Techniques for display of information related to policies
US8307277B2 (en) * 2010-09-10 2012-11-06 Facebook, Inc. Efficient event delegation in browser scripts
US8972873B2 (en) 2010-11-30 2015-03-03 International Business Machines Corporation Multi-environment widget assembly, generation, and operation
US8898096B2 (en) 2011-05-31 2014-11-25 Oracle International Corporation Application configuration generation
US8954309B2 (en) 2011-05-31 2015-02-10 Oracle International Corporation Techniques for application tuning
US20120324377A1 (en) * 2011-06-15 2012-12-20 Microsoft Corporation User interface extensibility for web application development tool
FR2980287A1 (fr) * 2011-09-19 2013-03-22 Myriad Group Ag Procede d'annotation d'un document web, programme d'ordinateur et dispositif electronique associes
KR101703168B1 (ko) * 2011-12-27 2017-02-07 한국전자통신연구원 사용자간 관계를 이용한 위키 기반 정보 제공 시스템 및 정보 검색 방법
CN102520966B (zh) * 2011-12-28 2014-03-19 东软集团股份有限公司 一种代码提示方法和装置
US20140337472A1 (en) 2012-12-13 2014-11-13 Level 3 Communications, Llc Beacon Services in a Content Delivery Framework
US10701148B2 (en) 2012-12-13 2020-06-30 Level 3 Communications, Llc Content delivery framework having storage services
US10652087B2 (en) 2012-12-13 2020-05-12 Level 3 Communications, Llc Content delivery framework having fill services
US9634918B2 (en) 2012-12-13 2017-04-25 Level 3 Communications, Llc Invalidation sequencing in a content delivery framework
US10701149B2 (en) 2012-12-13 2020-06-30 Level 3 Communications, Llc Content delivery framework having origin services
US10791050B2 (en) 2012-12-13 2020-09-29 Level 3 Communications, Llc Geographic location determination in a content delivery framework
US9628345B2 (en) 2012-12-13 2017-04-18 Level 3 Communications, Llc Framework supporting content delivery with collector services network
US9965449B2 (en) * 2014-03-17 2018-05-08 Ca, Inc. Providing product with integrated wiki module
US11063431B2 (en) * 2014-07-04 2021-07-13 Apparent Labs Llc Hierarchical and distributed power grid control
RU2634221C2 (ru) * 2015-09-23 2017-10-24 Общество С Ограниченной Ответственностью "Яндекс" Способ и устройство для отрисовки представления электронного документа на экране
CN105760211A (zh) * 2016-01-18 2016-07-13 浪潮(北京)电子信息产业有限公司 一种虚拟机的克隆方法及系统
US11870805B2 (en) 2019-04-08 2024-01-09 California Manufacturing Technology Consulting Systems and methods that perform filtering, linking, and rendering
CN111273934B (zh) * 2020-02-21 2023-08-01 北京百度网讯科技有限公司 页面更新的方法及装置

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4853843A (en) * 1987-12-18 1989-08-01 Tektronix, Inc. System for merging virtual partitions of a distributed database
US6233600B1 (en) * 1997-07-15 2001-05-15 Eroom Technology, Inc. Method and system for providing a networked collaborative work environment
US6216140B1 (en) * 1997-09-17 2001-04-10 Hewlett-Packard Company Methodology for the efficient management of hierarchically organized information
US6278449B1 (en) * 1998-09-03 2001-08-21 Sony Corporation Apparatus and method for designating information to be retrieved over a computer network
US20010051907A1 (en) * 1998-12-08 2001-12-13 Srihari Kumar Interactive financial portfolio tracking interface
US6615224B1 (en) * 1999-02-23 2003-09-02 Lewis B. Davis High-performance UNIX file undelete
US6446091B1 (en) * 1999-07-29 2002-09-03 Compaq Information Technologies Group, L.P. Method and apparatus for undeleting files in a computer system
US6697825B1 (en) * 1999-11-05 2004-02-24 Decentrix Inc. Method and apparatus for generating and modifying multiple instances of element of a web site
US7007232B1 (en) * 2000-04-07 2006-02-28 Neoplasia Press, Inc. System and method for facilitating the pre-publication peer review process
WO2001081829A1 (en) * 2000-04-27 2001-11-01 Brio Technology, Inc. Method and apparatus for processing jobs on an enterprise-wide computer system
US6327628B1 (en) * 2000-05-19 2001-12-04 Epicentric, Inc. Portal server that provides a customizable user Interface for access to computer networks
US6973483B2 (en) * 2000-09-30 2005-12-06 Microsoft Corporation System and method for using dynamic web components to automatically customize web pages
US20020078057A1 (en) * 2000-12-20 2002-06-20 Wang John Y. Lookup table approach for dynamically duplicating websites
US20020138331A1 (en) * 2001-02-05 2002-09-26 Hosea Devin F. Method and system for web page personalization
US6760047B2 (en) * 2001-02-26 2004-07-06 Microsoft Corporation Method for flagging and relating information in a computer system
US20030046639A1 (en) * 2001-05-09 2003-03-06 Core Ipr Limited Method and systems for facilitating creation, presentation, exchange, and management of documents to facilitate business transactions
US20020188632A1 (en) * 2001-06-06 2002-12-12 Ming-Shing Su Table editor for web pages
US8001490B2 (en) * 2001-07-10 2011-08-16 Nvidia International, Inc. System, method and computer program product for a content publisher for wireless devices
WO2003036521A1 (en) * 2001-10-24 2003-05-01 Bea Systems, Inc. Data synchronization
US20030167315A1 (en) * 2002-02-01 2003-09-04 Softwerc Technologies, Inc. Fast creation of custom internet portals using thin clients
AU2003221486A1 (en) * 2002-03-28 2003-10-13 International Business Machines Corporation System and method for hierarchical layout specialization
US20030195896A1 (en) * 2002-04-15 2003-10-16 Suda Aruna Rohra Method and apparatus for managing imported or exported data
US20040003097A1 (en) * 2002-05-17 2004-01-01 Brian Willis Content delivery system
US7370276B2 (en) * 2002-05-17 2008-05-06 Sap Aktiengesellschaft Interface for collecting user preferences
US20040070605A1 (en) * 2002-10-11 2004-04-15 Chien-Chung Huang Method and system for customizing personal page
US8028237B2 (en) * 2002-12-02 2011-09-27 Sap Aktiengesellschaft Portal-based desktop
US7676542B2 (en) * 2002-12-02 2010-03-09 Sap Ag Establishing a collaboration environment
EP1569150A1 (en) * 2004-02-27 2005-08-31 Koninklijke KPN N.V. Method and system for storing and presenting personal information
US20060095835A1 (en) * 2004-11-01 2006-05-04 William Kennedy System and method for the modular generation of markup language
US20070050446A1 (en) * 2005-02-01 2007-03-01 Moore James F Managing network-accessible resources
US7584268B2 (en) * 2005-02-01 2009-09-01 Google Inc. Collaborative web page authoring
US8185643B2 (en) * 2005-11-17 2012-05-22 Oracle International Corporation System and method for providing security in a communities framework
US7971148B2 (en) * 2006-05-02 2011-06-28 The Regents Of The University Of California Web-page-based system for designing database driven web applications

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102571731A (zh) * 2010-12-31 2012-07-11 德讯科技股份有限公司 一种面向对象的ajax框架模型系统及其处理方法
CN102571731B (zh) * 2010-12-31 2014-10-22 德讯科技股份有限公司 一种面向对象的ajax框架模型系统及其处理方法
CN104133686A (zh) * 2014-08-06 2014-11-05 浪潮通用软件有限公司 一种可快速模块化配置的web界面构建方法
CN104133686B (zh) * 2014-08-06 2017-06-27 浪潮通用软件有限公司 一种可快速模块化配置的web界面构建方法
CN105389323A (zh) * 2014-08-29 2016-03-09 三星电子株式会社 选择网页上的区域的方法及其电子设备
WO2016092412A1 (en) * 2014-12-12 2016-06-16 International Business Machines Corporation Generation of mapping definitions for content management system
US9798773B2 (en) 2014-12-12 2017-10-24 International Business Machines Corporation Generation of mapping definitions for content management system
US10223415B2 (en) 2014-12-12 2019-03-05 International Business Machines Corporation Generation of mapping definitions for content management system
CN106257445A (zh) * 2015-06-17 2016-12-28 中兴通讯股份有限公司 字段的显示方法及装置
CN109375922A (zh) * 2018-09-26 2019-02-22 深圳壹账通智能科技有限公司 一种接口文档的自动生成方法及终端设备
CN109753349A (zh) * 2018-12-17 2019-05-14 江苏晓创教育科技有限公司 一种基于普通文本工作流调度和命令执行引擎的实训平台

Also Published As

Publication number Publication date
US20080010609A1 (en) 2008-01-10

Similar Documents

Publication Publication Date Title
CN101114299B (zh) 编程地隐藏和显示WiKi页面布置部分的方法和数据处理系统
CN101101603A (zh) 配置针对合作网页的命令的方法与系统
CN101101604A (zh) 使用浏览器操纵内容的命令的方法与系统
CN101490674A (zh) 用于使用维基网页来定义维基网页布置的方法
CN101484894B (zh) 继承维基页面的维基页面布局的方法
US7954052B2 (en) Method for processing a web page for display in a wiki environment
US20080010338A1 (en) Method and apparatus for client and server interaction
Di Lorenzo et al. Data integration in mashups
Mann Java Server Faces in Action
US20080065769A1 (en) Method and apparatus for argument detection for event firing
US7237002B1 (en) System and method for dynamic browser management of web site
US7930364B2 (en) Persistence of inter-application communication patterns and behavior under user control
Brambilla et al. Designing web applications with WebML and WebRatio
US20080010345A1 (en) Method and apparatus for data hub objects
Frischmuth et al. Ontowiki–an authoring, publication and visualization interface for the data web
Ito et al. A visual environment for dynamic web application composition
US20080010386A1 (en) Method and apparatus for client wiring model
JPH11167584A (ja) ページ遷移方法及びその実施装置並びにその処理プログラムとデータを記録した媒体
US20080010388A1 (en) Method and apparatus for server wiring model
Lemmens et al. Enhancing Geo‐Service Chaining through Deep Service Descriptions
Paz Beginning ASP. NET MVC 4
Di Iorio et al. Ontology-driven generation of wiki content and interfaces
Chan et al. Practical CakePHP Projects
de Souza Bomfim et al. Design and implementation of linked data applications using shdm and synth
Yu et al. Jena: a framework for development on the Semantic Web

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20080109