在线绘画的协作编辑的制作方法

文档序号:6433973阅读:159来源:国知局
专利名称:在线绘画的协作编辑的制作方法
技术领域
本申请涉及在线绘画的编辑,更具体地,本申请涉及网页的画布中的在线绘画的协作编辑。
背景技术
社交网络服务提供了帮助人们与他们的社交网络中的其它人进行通信的站点。人们趋向于在社交网络服务中主要使用文本来通信。然而,当使用绘画进行通信时经常会更加方便和愉快。不幸地是,在社交网络服务中使用绘画进行通信并不是很方便。例如,一些社交网络服务允许人们更新会话并将绘画发送给其他人。然而,这些绘画并不能由绘画的接收者进行编辑。而且,这些绘画典型地是静态图像,例如JPG或GIF文件。在另一实例中, 一些社交网络服务允许用户在聊天或即时消息会话期间合作绘画,但这样的绘画并不存留在该通信会话以外的范围。

发明内容
网页包含画布。该画布包含了绘画,该绘画可以由客户机设备的用户和使用其它客户机设备打开包括画布的网页的其它用户在网页中进行编辑。当网页在客户机设备上打开时,在用户和其他用户对绘画做出编辑的近似时间,动态更新绘画以反映由用户和其他用户对绘画做出的编辑。所述绘画被存储在服务器系统上,这样当用户关闭网页时,其他用户可以继续编辑该绘画。当用户重新打开该网页时,画布包含了当其他用户编辑时的绘画。提供本概述以介绍概念的选择。这些概念在以下详细描述中进一步描述。本概述并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。


图1是示出示例系统的框图。图2是说明客户机设备的示例细节的框图。图3示出了示例浏览器窗口。图4是说明服务器系统的示例细节的框图。图5是说明由客户机设备执行的示例操作的第一部分的流程图。图6是说明由客户机设备执行的示例操作的第二部分的流程图。图7是说明由客户机设备执行的示例操作的第三部分的流程图。图8是说明由服务器系统执行的示例操作的第一部分的流程图。图9是说明由服务器系统执行的示例操作的第二部分的流程图。图10是示出示例的浏览器窗口的示例屏幕。图11是示出当在状态更新区域中显示画布时的网页的示例屏幕。图12是示出在已经将画布加入到网页之后的示例网页的示例屏幕。
图13是示出示例计算设备的框图。
具体实施例方式图1是示出示例系统100的框图。系统100包括客户机设备102A到102N(统称为“客户机设备102”)。客户机设备102是计算设备,例如个人计算机和手持设备。用户 104A到104N(统称为“用户104”)是使用这些客户机设备102的人。系统100还包括服务器系统106。服务器系统106是包括了一个或多个计算设备的系统。客户机设备102能够通过网络108与服务器系统106通信。网络108是通信网络, 例如因特网或局域网。网络108可包括有线和/或无线电信链路。服务器系统106主存社交网络服务。社交网络服务包括聚焦于建立并反映人们之间的社交网络的社交网络站点。客户机设备102通过网络108与服务器系统106通信以允许用户104访问社交网络服务。如在此文档中所述,用户104使用客户机设备102来打开社交网络站点中的网页。 网页包含画布。画布包括在网页中的一个区域,在该区域中用户104可以合作创建绘画。绘画可以包括各种元素,例如直线、曲线、矩形、圆、文本、箭头、图像等等。而且,在一些实施例中,绘画可以包括图片元素。图片元素是在该绘画中的位像。画布还可以包括使得用户104能将元素加入绘画中的屏幕上的工具。例如,画布可以包括使得用户104能将圆、矩形、线、文本和其他类型的元素加入绘画中的屏幕上的工具。当在客户机设备102上打开网页时,客户机设备102在用户104对绘画进行改变的近似相同的时间、动态更新所述绘画以反映由用户104对绘画做出的改变。这样,如果在两个或更多的客户机设备102上打开网页时,这些客户机设备的用户可以在他们做出改变时就看到对绘画的这些改变。例如,如果在客户机设备102A和客户机设备102B上打开网页且用户104B对绘画做出改变,则用户104A能够在用户104B正在进行改变的近似相同的时间看到所述改变。随后,一些或所有的用户104能够关闭该网页。当用户104关闭网页时,绘画的内容并不会丢失。而是将绘画的状态保留,这样当用户104重新打开该网页时,用户104能够继续编辑该绘画,而不需要从头开始。用户104中的各个用户可以编辑绘画而不需要在用户104的其他用户的客户机设备102上打开网页。例如,用户104的第一用户可以是仅有的打开网页的用户。在这个示例中,第一用户可以编辑绘画并随后将网页关闭。当第一用户关闭网页时,绘画的内容(即绘画中的元素和这些元素的属性)处于第一状态。在本示例中,用户104的第二用户在第一用户已经关闭绘画后打开网页。当第二用户打开网页时,该绘画反映了第一用户所做出的改变。在这个示例中,第二用户可以随后对绘画做出进一步的改变。随后,第一用户重新打开该网页。当第一用户重新打开该网页时,绘画的内容处于第二状态。该第二状态是由第二用户对绘画的改变而产生的,而这时所述网页在第一用户的客户机设备上已关闭。图2是说明客户机设备102A的示例细节的框图。应该理解客户机设备102的其他客户机设备可以具有与图2的示例中的客户机设备102A所说明的细节相类似的细节。在一些实施例中,客户机设备102A和用户104A的下述描述同样可应用于客户机设备102和用户104中的其他客户机设备和用户。
客户机设备102A是计算设备。在各个实施例中,客户机设备102A可以是各种类型的计算设备。例如,客户机设备102A可以是个人计算机、膝上计算机、手持计算机、上网本计算机、智能电话、平板计算机、车载计算机、电视机顶盒、视频游戏控制台、手持视频游戏设备或另一类型的计算设备。如在图2的示例中所述,客户机设备102A包括网络接口 200。网络接口 200使得客户机设备102A能够通过网络108与其他计算设备通信。客户机设备102A还提供了浏览器202。浏览器202是使得用户104A通过通信网络打开诸如网页的文档的软件应用程序。 在一些实施例中,当客户机设备102A的处理单元执行存储在一个或多个计算机存储介质上的某些计算机可执行指令时,客户机设备102A提供所述浏览器202。示例类型的浏览器包括微软⑧的 INTERNET EXPLORER web浏览器、MozillaFirefox web 浏览器、Google 的 Chrome web浏览器、苹果的&ifari web浏览器、RIM的BlackBerry web浏览器以及Opera web浏览器等等。浏览器202从用户104A接收输入以打开由服务器系统106主存的网站。作为响应,浏览器202使得网络接口 200将网页请求204发送给服务器系统106。网页请求204是浏览器202对表示所请求的网页的数据的一种请求。在各种实施例中,网页请求204以各种方式被格式化。例如,在一些实施例中,网页请求204被格式化为超文本传输协议(HTTP) 请求。随后,浏览器202通过网络接口 200接收网页响应206。网页响应206包含表示所请求的网页的数据。当浏览器202接收网页响应206时,浏览器202处理表示网页的数据以准备网页供显示。当浏览器202处理表示网页的数据时,浏览器202确定该网页是否包括画布。如果浏览器202确定该网页包括画布,浏览器202启动客户机画布模块208。客户机画布模块 208管理所述画布。为了管理画布,客户机画布模块208维持客户机模型210。客户机模型210包括表示画布中绘画的数据。在各种实施例中,客户机模型210以各种方式表示绘画。例如,客户机模型210可以包括表示绘画的XML元素的层次。在该示例中,XML元素的层次符合开放办公室(Open Off ice) XML (ECMA-376)标准或另一标准中规定的DrawingML格式。在本示例中,XML元素的层次可以包括整体表示绘画的XML元素。在该XML元素中是其它表示绘画中各个元素的XML元素。绘画中各个元素包括线、矩形、文本、圆等。每个XML元素包括规定了元素的属性的各属性。在浏览器202打开网页之后,客户机画布模块208从用户104A接收输入以编辑绘画。例如,客户机画布模块208可以接收将元素加入到绘画中、修改绘画中现有元素的属性、从绘画中删除现有元素的输入。响应于这种输入,客户机画布模块208更新客户机模型 210以反映由所述输入指示的改变。而且,客户机画布模块208更新所述网页中的画布,这样,绘画反映了由所述输入指示的改变。另外,当客户机画布模块208从用户104A接收对绘画做出改变的输入时,客户机画布模块208使得网络接口 200将客户机消息212发送给服务器系统106。客户机消息212 指定了对绘画的改变。例如,如果输入是从绘画中删除元素,客户机消息指示已经从该绘画中删除了该元素。通过这种方式,服务器系统106能跟得上客户机设备102处的绘画的状态。
在各种实施例中,网页请求212以各种方式被格式化。例如,在客户机模型210包括表示绘画的XML元素层次的实施例中,客户机消息212通过指定对客户机模型210中的一个或多个XML元素的改变来指定对绘画的改变。客户机画布模块208还从服务器系统106接收服务器消息214。服务器消息214 指定了由其他用户对绘画做出的改变。客户机画布模块208更新客户机模型210以反映在服务器消息214中指定的改变。通过这种方式,客户机画布模块208能跟得上服务器系统 106处的绘画的状态。另外,客户机画布模块208动态地更新显示给用户104A的绘画以反映在服务器消息214中指定的改变。在各种实施例中,服务器消息214以各种方式被格式化。例如,在客户机模型210 包括表示绘画的XML元素层次的实施例中,服务器消息214通过指定对客户机模型210中的一个或多个XML元素的改变来指定对绘画的改变。因为多个用户可以同时编辑绘画,就会产生冲突的改变。例如,用户104中的一个用户(例如用户104A)可能尝试删除一个特定的元素,而用户104中的另一个用户(例如用户104B)则尝试修改该特定元素的一个或多个属性。因此,在用户104A做出的改变和用户 104B做出的改变之间存在冲突。为了避免这样的冲突,绘画中的元素典型地是不能被修改或删除的,除非用户104首先选择这些元素。无论何时用户104选择绘画中的元素,客户机设备102都将锁定请求发送给服务器系统106。锁定请求指定了所选择的元素。当服务器系统106接收了指定绘画中特定元素的锁定请求,服务器系统106锁定该特定元素,这样, 在该特定元素被选择时没有其他的用户可以修改或删除该元素。通过这种方式,当第二用户已经选择了给定元素时,服务器系统106防止了第一用户对该给定元素的修改或删除, 反之亦然。如在图2中的示例中所述,客户机设备102A还提供了剪贴板216和应用程序218。 在一些实施例中,客户机设备102A通过执行计算机可执行指令提供了剪贴板216和应用程序218。应用程序218使得用户104A能够编辑文档。在各种实施例中,应用程序218能够是多个不同类型的应用程序。例如,应用程序218可以是字处理应用程序(例如微软 的 Word)、幻灯片演示应用程序(例如微软 &PowerPoint )、记事本应用程序(例如微软 &OneNote )、电子邮件应用程序(例如微软 &Outlook )、图表编辑应用程序 (例如微软 )或使用户104A能够编辑文档的另一类型的应用程序。用户104A能够在网页在浏览器202中打开时,将副本输入提供给浏览器202。在各种实施例中,用户104A可以以各种方式将副本输入提供给浏览器202。例如,用户104A 可以选择绘画并随后按下键盘上的键组合(例如control-c)。在另一示例中,当用户104A 在画布上右键点击时,浏览器202显示弹出菜单。在该示例中,通过从弹出菜单中选择副本命令,用户104A将副本输入提供给浏览器202。响应于接收到所述副本输入,浏览器202将客户机模型210复制到剪贴板216。随后,用户104A将绘画粘贴入在应用程序218中打开的文档中。当用户104A将绘画粘贴入文档中时,应用程序218将客户机模型210合并入文档模型。文档模型包括表示该文档的数据。例如,客户机模型210和文档模型可以包括XML元素的层次。在该示例中,应用程序 218将客户机模型210中的XML元素的层次合并入文档模型中的XML元素的层次中。在用户104A将绘画粘贴入文档之后,用户104A可以继续编辑绘画,而绘画在文档中。
在一些实施例中,用户104A可以将副本输入提供给应用程序218。副本输入指令应用程序218复制应用程序218中打开的文档中的绘画。作为响应,应用程序218将绘画的模型复制到剪贴板216。例如,在文档模型包括XML元素的层次时,应用程序218将表示绘画的XML元素复制入剪贴板216。随后,用户104A可以指令浏览器202将绘画从剪贴板 216粘贴入浏览器202中打开的网页中的画布。例如,当XML元素的层次表示绘画时,浏览器202可以将XML元素的该层次提供给客户机画布模块208作为用于绘画的客户机模型。在一些实施例中,用户104A能够复制并粘贴绘画中的一些元素。为了这样做,用户104A选择在网页中显示的绘画内的一个或多个单独的元素。随后,用户104A将副本输入提供给浏览器202。作为响应,浏览器202在剪贴板216中生成新的模型。该新的模型表示了绘画中的所选择的元素,而不是绘画中未被选择的元素。用户104A可以随后将粘贴输入提供给应用程序218。作为响应,应用程序218将该新的模型合并入应用程序218中打开的文档的文档模型中。通过这种方式,文档包括了由新的模型(即所选择的元素)所表示的绘画。在将应用程序218打开的文档的绘画中的单独的元素复制并粘贴到浏览器202打开的网页中的绘画中时,会出现类似的处理。图3示出了示例浏览器窗口 300。浏览器窗口 300是由浏览器202显示的窗口。 浏览器窗口 300包括导航控件302。导航控件302使用户104A能够控制导航。浏览器窗口 300还包括网页304。在图3的示例中,网页304包括文本块306。除了文本块306之外,网页包括画布308。画布308包括绘画310。系统310包括一组元素 312。画布308还包括绘画控件314A到314F(统称为“绘画控件314”)。为了将元素加入到绘画310,用户104A选择绘画控件314中的一个。随后,用户104A使用输入设备来做出为元素建议位置和/或形状的手势。例如,为了画一条线,用户104A选择绘画控件314A。 在该示例中,随后,当光标322位于绘画310内的线应该开始的点时,用户104A按下按键, 并且当光标322位于绘画310内的线应该结束的点时松开按键。在另一示例中,为了将文本加入到绘画310,用户104A选择绘画控件314D。在本示例中,当光标322位于绘画310 内的出现文本框的一个角的点时,用户104A按下按键,并且当光标322位于绘画310内的出现文本框的对角上的一个相对角的点时,松开按键。在该示例中,用户104A可以使用键盘或其他输入设备来将文本输入文本框中。在各种实施例中,用户104A以各种方式选择绘画310中的元素。例如,用户104A 可以通过将光标322定位在元素之上并按下按键来选择绘画310中的元素。在另一个示例中,用户104A可以通过重复地按特定的键盘按键(例如“tab”)来选择绘画310中的元素。 在该示例中,每次用户104A按下特定键盘按键时就会选择绘画310中的不同的元素。在另一个示例中,在触敏显示器上显示浏览器窗口 300。在该示例中,用户可以通过触摸触敏显示器上的元素来选择绘画310中的元素。当元素处于选中状态时,用户104可以删除该元素。在各种实施例中,用户104A执行各种动作来删除元素。例如,用户104A可以通过按下键盘按键(例如“删除”或“退格”) 来删除元素。在另一示例中,用户104A可以通过选择屏幕上控件(未示出)来删除元素。当元素处于选中状态时,用户104A可以修改该元素的一个或多个属性。用户104A 可以通过执行不同的动作来修改该元素的不同的属性。例如,用户104A可以通过使用光标322来将元素拖到期望的位置来修改元素的位置。在另一个示例中,用户104A可以通过打开画布308中的色彩选择面板并选择期望的颜色来修改元素的线颜色。在一些实施例中,网页304是社交网络站点的一部分。例如,网页304可以是用户 104A的社交网络档案页面。社交网络档案页面是包含有关用户的个人信息的网页。该用户的社交网络档案页面可以作为该用户身份的电子代表。在另一示例中,网页304可以是社交网络站点中的一组用户的网页。在又另一个示例中,网页304可以是在社交网络站点中的链接到群组网页或用户档案页面的网页。画布308还包括共享控件316。当用户104选择共享控件316时,浏览器202显示联系人列表。联系人列表是由用户104A指定的具有与用户104A直接社交连接的人的列表。用户104A从联系人列表中选择人员。服务器系统106邀请选中的人来查看和/或编辑绘画310。例如,服务器系统106可以将电子邮件消息或文本消息发送给选中的人以邀请该选中的人来查看和/或编辑绘画310。在图3的示例中,画布308还包括许可控件318。当用户104A选择许可控件318 时,浏览器202显示许可界面。许可界面使用户104A能够选择哪些其他人员能够查看和 /或编辑绘画310。在各种实施例中,许可界面可以包括各种信息并以各种方式被格式化。 例如,服务器系统106可以将用户104A的社交网络联系人的列表发送给客户机设备102A。 用户104A的社交网络联系人是由用户104A指定的具有与用户104A直接社交连接的人员。 在该示例中,用户104A可以使用复选框或其他类型的控件来指定这些人中的哪些人被授权查看和/或编辑绘画310。在另一示例中,许可界面可以列出是用户104A的工作同事的人员。在用户104A选择一个或多个人员来查看和/或编辑绘画之后,浏览器202将许可消息发送给服务器系统106。许可消息指示哪些用户被授权查看和/或编辑绘画。另外,画布包括复制控件320。当用户104A选择复制控件320时,浏览器202将绘画310的客户机模型210 (或表示绘画310中的选中元素的模型)复制到剪贴板216。图4是说明服务器系统106的示例细节的框图。如上所述,服务器系统106包括一个或多个计算设备。在各个实施例中,服务器系统106可以是各种类型的计算设备。例如,服务器系统106可以包括独立服务器设备、刀片服务器设备、个人计算机、路由器、交换机、桥接、集线器、防火墙设备、负载平衡器、存储设备和其他类型的计算设备。如在图4的示例中所述,服务器系统106提供web服务器400和服务器画布模块 402。在一些实施例中,当服务器系统106上的一个或多个计算设备执行计算机可执行指令时,服务器系统106提供web服务器400和服务器画布模块402。服务器系统106还存储了数据库404。在各种实施例中,服务器系统106中的一个或多个计算设备存储数据库404。web服务器400从客户机设备102处接收网页请求406。网页请求406是打开由服务器系统106主存的网页的请求。在各种实施例中,网页请求406以各种方式被格式化。 例如,在一些实施例中,网页请求406被格式化为超文本传输协议(HTTP)请求。web服务器400发送网页响应408作为对网页请求406的响应。网页响应408包含表示该网页的数据。而且,当web服务器400从客户机设备102A接收网页请求且所请求的网页包括画布时,服务器画布模块402将客户机设备102A加入到订阅列表410。订阅列表410列出已经打开包括该画布的网页的一些客户机设备102。
随后,web服务器400从客户机设备102接收客户机消息412。客户机消息412指明了由客户机设备102的用户对画布中的绘画做出的改变。例如,客户机消息412可以指明将元素加入到绘画、选择绘画中的元素等等。当web服务器400接收客户机消息412时, 服务器画布模块402更新数据库404中的服务器模型414。服务器模型414包含了表示绘画的数据。服务器画布模块402更新服务器模型414以反映由客户机消息412指示的对绘画的改变。例如,服务器模型414可以包括表示绘画的XML元素层次。在该示例中,客户机消息412中的一个可以指示用户104A已经从绘画中删除了给定的元素。在本示例中,服务器画布模块402更新服务器模型414中的XML元素层次以移除表示给定元素的XML元素。当服务器画布模块402更新服务器模型414以反映对绘画的改变时,服务器画布模块402将服务器消息416发送给订阅列表410中列出的每个客户机设备。服务器消息 416指明了对绘画的改变。在各个实施例中,服务器消息416可以以各种方式指明对绘画的状态的改变。例如,如果服务器画布模块402删除了表示绘画中给定元素的XML元素,则服务器消息416指明了已经从服务器模型414删除了该XML元素。通过处理服务器消息416, 客户机设备102可以跟得上由其他客户机设备102做出的对绘画的改变。图5是说明由客户机设备102A执行的示例操作500的流程图。虽然,本文档描述了操作500可由客户机设备102A来执行,但客户机设备102中任意一个都能执行所述操作 500。如图5的示例中所述,当浏览器202确定从用户104A接收到输入时(502),操作 500开始。如果没有从用户接收到输入(502处为“否”),操作500前进到图7中标记为“C” 的圆。如果从用户104A接收到输入(502处为“是”),浏览器202确定该输入是否是导航输入(504)。导航输入是指令浏览器202打开网页的输入。在各个实施例中,浏览器202可以接收各种类型的导航输入。例如,当用户104A选择后退按键、前进按键、重载按键、在导航栏中输入新地址、点击超链接或提供指令浏览器202打开网页的另一类输入时,浏览器202 可以接收导航输入。如果输入是导航输入(504处为“是”),浏览器202将网页请求发送给服务器系统106 (506)。网页请求是打开网页的请求。随后,浏览器202从服务器系统106 接收网页响应(508)。网页响应包括表示该网页的数据。随后,浏览器202呈现该网页,以便将网页显示给用户104A(510)。在呈现所述网页之后,操作500重启。另一方面,如果输入不是导航输入(504处为“否”),客户机画布模块208确定输入是否是画布创建输入(512)。画布创建输入指示用户104A想要在网页中包括画布。在各种实施例中,用户104A可以以各种方式将画布创建输入提供给浏览器202。例如,在一些实施例中,页面可以包括控件,当选择控件时,向浏览器202提供画布创建输入。如果输入是画布创建输入(512处是“是”),客户机画布模块208将包含画布创建请求的客户机消息发送给服务器系统106(514)。画布创建请求指令服务器系统106在网页中创建新的画布。 在一些实施例中,客户机画布模块208可以将画布创建请求自动发送给服务器系统106,而不需要来自用户的输入。例如,当加载网页时,客户机画布模块208可以将画布创建请求发送给服务器系统106。在将画布创建请求发送给服务器系统106之后,操作500重启。如果输入不是画布创建输入(512处是“否”),客户机画布模块208确定该输入是否是许可输入(516)。许可输入是来自用户104A的为画布设定许可的输入。为画布设定许可的输入支配了哪些其他用户被授权查看和/或编辑画布。在各个实施例中,用户104A以各种方式提供许可输入。例如,客户机设备102A可以将社交网络服务的用户列表显示给用户104A。用户104A可以通过从社交网络服务的用户之中选择用户来提供所述许可输入。 在该示例中,没有被选中的用户就没有被授权来编辑绘画。如果输入是许可输入(516处是“是”),客户机画布模块208将包括许可消息的客户机消息发送给服务器系统106 (518)。许可消息指令服务器系统106设定或更新画布的许可。在发送所述客户机消息之后,操作500重启。如果输入不是许可输入(516处是“否”), 客户机画布模块208执行图6中从标记为“B”的圆处开始的操作500的一部分。图6是说明操作500的第二部分的流程图。在标记为“B”的圆之后,客户机画布模块208确定所述输入是否是元素选择输入(600)。元素选择输入是来自用户104A的选择绘画中现有元素的输入。如果客户机画布模块208确定输入是元素选择输入(600处是 “是”),则客户机画布模块208将包括锁定请求的客户机消息发送给服务器系统106 (602)。 随后,客户机画布模块208从服务器系统106接收包括锁定响应的服务器消息(604)。锁定响应消息指示服务器系统106是否给予客户机画布模块208对现有元素的锁定。因此,当客户机画布模块208从服务器系统106处接收锁定响应消息时,客户机画布模块208使用锁定响应消息来确定服务器系统106是否给予客户机画布模块208对现有元素的锁定(606)。 如果服务器系统106已经给予客户机画布模块208对现有元素的锁定(606处是“是”),客户机画布模块208更新客户机模型210以指示客户机画布模块208具有对现有元素的锁定 (608)。在客户机画布模块208在步骤608处更新客户机模型之后或在客户机画布模块208 确定服务器系统106没有给予客户机画布模块208对现有元素的锁定(606处是“否”)之后,操作500在图7中标记为“C”的圆继续。如果输入不是元素选择输入(600处是“否”),客户机画布模块208确定该输入是否是元素解除选择输入(610)。元素解除选择输入是解除选择的绘画中给定元素的输入。在各个实施例中,用户104A可以以各种方式提供元素解除选择输入。例如,用户104A可以通过选择画布的不含有元素的部分或通过选择绘画中的另一元素来提供元素解除选择输入。 如果输入是元素解除选择输入(610处是“是”),客户机画布模块208更新客户机模型210 以指示由元素解除选择输入所指定的给定元素不再被选择(612)。另外,客户机画布模块 208将包括有解锁请求的客户机消息发送给服务器系统106 (614)。解锁请求向服务器系统 106指示客户机画布模块208不再需要对给定元素的锁定。在客户机画布模块208在步骤 614中发送客户机消息之后,操作在图7中标记为“C”的圆继续。如果输入不是元素解除选择输入(610处是“否”),客户机画布模块208确定该输入是否是元素添加输入(616)。元素添加输入是将新元素加入到绘画中的输入。如果输入是元素添加输入(616处是“是”),客户机画布模块208更新客户机模型210以包括由元素添加输入所指定的新元素(618)。随后,客户机画布模块208将包括添加元素请求的客户机消息发送给服务器系统106 (620)。添加元素请求指明了新元素。在客户机画布模块208 在步骤620中发送客户机消息之后,操作500在图7中标记为“C”的圆继续。如果输入不是元素添加输入(616处是“否”),客户机画布模块208确定该输入是否是元素修改输入(622)。元素修改输入是对绘画中已经存在的给定元素的一个或多个属性进行修改的输入。如果输入是元素修改输入(622处是“是”),客户机画布模块208更新客户机模型210以修改给定元素的一个或多个属性(6M)。随后,客户机画布模块208将包括修改元素请求的客户机消息发送给服务器系统106 (626)。修改元素请求指示对给定元素的属性的改变。在客户机画布模块208在步骤626中发送客户机消息之后,操作500在图 7中标记为“C”的圆继续。如果输入不是元素修改输入(622处是“否”),客户机画布模块208确定该输入是否是元素删除输入(6 )。元素删除输入是删除绘画中一个或多个元素的输入。如果输入是元素删除输入(6 处是“是”),客户机画布模块208更新客户机模型210以删除所述一个或多个元素(630)。随后,客户机画布模块208将包括删除元素请求的客户机消息发送给服务器系统106(63 。删除元素请求指示已经从绘画中删除了所述一个或多个元素。在客户机画布模块208在步骤632中发送客户机消息之后,操作500在图7中标记为“C”的圆继续。图7是说明操作500的第三部分的流程图。如在图7中所示,操作500在标记为 “C”的圆继续。最初,客户机画布模块208确定客户机设备102A是否已经接收到服务器消息(700)。服务器消息是由服务器系统106发送给客户机设备102A的消息。如果客户机画布模块208确定客户机设备102A已经接收到服务器消息(在700处是“是”),客户机画布模块208确定服务器消息是否包括锁定消息(702)。锁定消息指示服务器系统106已经锁定了服务器模型414中的给定元素。如果服务器消息包括锁定消息(在702处是“是”), 客户机画布模块208更新客户机模型210以指示锁定了给定元素(704)。如果服务器消息没有包括锁定消息(在702处是“否”),客户机画布模块208确定该服务器消息是否包括解锁消息(706)。解锁消息指示服务器系统已经解锁了给定元素。 如果服务器消息包括解锁消息(在706处是“是”),客户机画布模块208更新客户机模型 210以指示给定元素被解锁(708)。如果服务器消息没有包括解锁消息(在706处是“否”),客户机画布模块208确定该服务器消息是否包括元素添加消息(710)。元素添加消息指示服务器系统106已经向绘画添加了新元素。如果服务器消息包括元素添加消息(在710处是“是”),客户机画布模块208更新客户机模型210以包括所述新元素(712)。如果服务器消息没有包括元素添加消息(在710处是“否”),客户机画布模块208 确定该服务器消息是否包括元素修改消息(714)。元素修改消息指示已经修改了绘画中的元素的一个或多个属性。例如,元素修改消息可以指示已经修改了绘画中现有的元素的线颜色、位置、大小、线宽度、填充颜色、字体或其他属性。如果服务器消息包括元素修改消息 (在714处是“是”),客户机画布模块208就更新客户机模型210以如在元素修改消息中指定的那样修改现有元素的属性(716)。如果服务器消息没有包括元素修改消息(在714处是“否”),则客户机画布模块 208确定该服务器消息是否包括元素删除消息(718)。元素删除消息指示了已经从绘画中删除了元素。如果服务器消息包括元素删除消息(在718处是“是”),客户机画布模块208 就更新客户机模型210以删除元素删除消息所指定的元素(720)。如果客户机画布模块208确定没有接收到服务器消息(在700处是“否”)或在执行了步骤704、708、712、716或720中的一个步骤之后,客户机绘画模块208呈现来自客户机模型210的绘画(722)。通过这种方式,显示给用户104A的绘画反映了客户机模型210。在呈现了来自客户机模型210的绘画之后,客户机画布模块208确定是否已经发生了网页关闭事件(7M)。网页关闭事件在当用户104A导航离开浏览器202中的该网页时、在用户104A关闭了包含该网页的浏览器窗口时、或在用户104A使得该网页不再在浏览器窗口中打开时发生。响应于确定已经发生了网页关闭事件(在7M处是“是”),客户机画布模块208向服务器系统106发送包含网页关闭指示符的客户机消息(726)。网页关闭指示符向服务器系统106指示了网页不再在客户机设备102A上打开。在步骤726中将客户机消息发送给服务器系统106之后或在确定没有发生网页关闭事件(在7M处是“否”) 之后,操作500重启。图8是说明由服务器系统106执行的示例操作800的第一部分的流程图。如在图 8的示例中所示,当web服务器400确定服务器系统106已经从客户机设备102之一中接收了消息(802)时开始操作800。出于简单解释说明的目的,图8和9的讨论假设了服务器系统106从客户机设备102接收了消息。如果服务器系统106没有从客户机设备102中的任意一个处接收到消息(在802处是“否”),则服务器画布模块402等待从客户机设备102 中的一个处接收到消息(804)。另一方面,如果服务器系统106已经从客户机设备102A处接收到消息(在802处是“是”),服务器系统106确定该消息是否包括网页请求(806)。网页请求包括打开网页的请求。如果消息包括网页请求(在806处是“是”),web服务器400确定该网页是否包括画布(808)。如果该网页包括画布(在808处是“是”),则服务器画布模块402将客户机设备102A加入到订阅列表410中(810)。在服务器画布模块402将客户机设备102A加入到订阅列表410中之后或在确定该网页不包括画布(在808处是“否”)之后,web服务器400 将网页响应发送给客户机设备102A(812)。网页响应包括表示该网页的数据。在将网页响应发送给客户机设备102A之后,操作800重启。如果该消息不包括网页请求(在806处是“否”),服务器画布模块402确定该消息是否是包括有画布创建请求的客户机消息(814)。画布创建请求指令服务器画布系统402 在网页中创建新的画布。如果该客户机消息包括画布创建请求(在814处是“是”),服务器画布模块402在数据库404中创建新模型(816)。所述新模型包括表示在新的画布中的绘画的数据。服务器画布模块402随后将客户机设备102A加入到订阅列表410中(818)。 接着,服务器画布模块402将表示新画布的数据发送给客户机设备102A(819)。在各种实施例中,表示新画布的数据以各种方式被格式化。例如,在一些实施例中,表示新画布的数据被格式化为一组XML元素并使用AJAX技术被发送给客户机设备102A。在将表示新画布的数据发送给客户机设备102A之后,操作800重启。如果该客户机消息不包括画布创建请求(在814处是“否”),服务器画布模块402 确定该客户机消息是否是包括有许可请求(820)。许可请求指令服务器画布模块402设定或更新对画布的许可。对画布的许可支配了哪些用户被授权查看和/或编辑画布。如果客户机消息包括许可消息(在820处是“是”),服务器画布模块402确定用户104A是否被授权设定画布的许可(822)。如果授权用户104A设定画布的许可(在822处是“是”),服务器画布模块402如在许可消息中指示的那样更新画布的许可(拟4)。在更新了画布的许可之后或在确定定用户没有被授权设定画布的许可(在822处是“否”)之后,操作800重启。如果客户机消息没有包括许可消息(在820处是“否”),服务器画布模块402确定该客户机消息是否包括邀请消息(拟6)。邀请消息指令服务器画布模块402将邀请发送给指定的用户。该邀请邀请了指定的用户查看和/或编辑绘画。如果客户机消息包括邀请消息(在拟6处是“是”),服务器画布模块402将邀请发送给指定用户(拟8)。在发送所述邀请之后,操作800重启。如果客户机消息没有包括邀请消息(在拟6处是“否”),服务器画布模块402确定该客户机消息是否包括网页关闭指示符(830)。如果该客户机消息包括网页关闭指示符 (在830处是“是”),服务器画布模型402将客户机设备102A从订阅列表410中移除(832)。 通过这种方式,当包含画布的网页没有打开时,客户机设备102A不接收有关画布的服务器消息。在从订阅列表410移除客户机设备102A之后,操作800重启。另一方面,如果客户机消息不包括网页关闭指示符(在830是“否”),服务器画布模块402执行图9中的操作 800的该部分。图9是说明操作800的第二部分的流程图。如果该客户机消息不包括网页关闭指示符(在830处是“否”),服务器画布模块402确定该客户机消息是否是包括锁定请求 (900)。锁定请求指令了服务器画布模块402锁定服务器模型414中的元素。如果该客户机消息包括锁定请求(在900处是“是”),服务器画布模块402确定服务器模型414是否指示了已经对锁定请求所指定的元素进行锁定(90 如果对指定的元素已经存在锁定,另一用户已经选择了该元素并且还没有解除选择该元素。因此,如果对指定的元素存在锁定 (在902处是“是”),服务器画布模块402将锁定拒绝响应发送给客户机设备102A(904)。 该锁定拒绝响应指示服务器系统不能将锁定提供给客户机设备102A。另一方面,如果对指定的元素已经有锁定(在902处是“否”),服务器画布模块402更新服务器模型414以指示客户机设备102A具有对指定元素的锁定(906)。服务器画布模块402随后将服务器消息发送给订阅列表410中列出的其他客户机设备(908)。服务器消息包括锁定消息。锁定消息指示了服务器系统106已经锁定了指定的元素。服务器画布模块402随后将锁定授予响应发送给客户机设备102A(909)。该锁定授予响应指示服务器系统106将对指定元素的锁定提供给客户机设备102A。如果客户机消息不包括锁定请求(在900处是“否”),服务器画布模块402确定该客户机消息是否包括解锁请求(910)。解锁请求指示了客户机设备102A不再需要对指定元素的锁定。如果客户机消息包括解锁请求(在910处是“是”),服务器画布模块402确定客户机设备102A是否具有对指定元素的锁定。如果客户机设备102A具有对指定元素的锁定(在912处是“是”),服务器画布模块402更新该服务器模型414以移除对指定元素的锁定(914)。服务器画布模块402随后将服务器消息发送给订阅列表410中列出的其他客户机设备(915)。每个服务器消息包括解锁消息。解锁消息指示了服务器系统106已经解锁了指定的元素。在更新了服务器模型414之后或在确定客户机设备102A不具有对指定元素的锁定(在912处是“否”)之后,操作800重启。如果客户机消息没有包括解锁消息(在910处是“否”),服务器画布模块402确定该客户机消息是否包括添加元素请求(916)。添加元素请求指定了要添加给服务器画布模块402的元素。如果客户机消息包括添加元素请求(在916处是“是”),客户机画布模块402更新服务器模型414以将指定的元素加入到服务器模型414 (918)。服务器画布模块 402随后将服务器消息发送给订阅列表410中列出的其他客户机设备(920)。每个服务器消息包括元素添加消息。元素添加消息指示指定的元素已经被加入到绘画。操作800随后重启。如果该客户机消息不包括添加元素请求(在916处是“否”),服务器画布模块402 确定该客户机消息是否包括修改元素请求(922)。修改元素请求指示对绘画中元素的一个或多个属性的改变.如果客户机消息包括修改元素请求(在922处是“是”),服务器画布模块402确定客户机设备102A是否具有对指定元素的锁定(924)。如果客户机设备102A 具有对指定元素的锁定(在拟4处是“是”),服务器画布模块402更新该服务器模型414 以如修改元素请求所指示的那样修改指定元素的属性(拟6)。服务器画布模块402随后将服务器消息发送给订阅列表410中列出的其他客户机设备(拟8)。每个服务器消息包括元素修改消息。元素修改消息指示已经修改了元素的一个或多个属性。在步骤拟8发送了服务器消息之后或在确定客户机设备102A不具有对指定元素的锁定(在拟4处是“否”)之后,操作800重启。如果该客户机消息不包括修改元素请求(在922处是“否”),服务器画布模块402 确定该客户机消息是否包括删除元素请求(930)。删除元素请求指示已经从绘画中删除了所述一个或多个元素。如果客户机消息包括删除元素请求(在930处是“是”),服务器画布模块402确定客户机设备102A是否具有对指定元素的锁定(93 。如果客户机设备102A 具有对指定元素的锁定(在932处是“是”),服务器画布模块402更新该服务器模型414以删除指定元素(934)。服务器画布模块402随后将服务器消息发送给订阅列表410中列出的其他客户机设备(936)。每个服务器消息包括元素删除消息。元素删除消息指示指定的元素已经被删除.在发送了服务器消息之后或在确定客户机设备102A不具有对指定元素的锁定(在932处是“否”)之后,操作800重启。图10是示出示例的浏览器窗口 1000的示例屏幕说明.浏览器窗口 1000是由浏览器202显示的窗口。浏览器窗口 1000包括导航控件1002。导航控件1002使用户104A 能够控制导航。浏览器窗口 1000还包括网页1004。在图10的示例中,网页1004是名为 "John Smith”的用户的社交网络档案页。网页1004包含有关用户的个人信息,例如用户的图片、用户喜欢的音乐和用户的家乡。网页1004还包括来自其他用户的有关该用户的评论。另外,网页1004包括状态更新区域1006。状态更新区域1006包括文本区域1008。 用户可以将文本输入文本区域1008。将输入文本区域1008的文本张贴到网页1004上。另外,可以将输入文本区域1008的文本复制到在社交方面与该用户相连的人们的页面。而且,状态更新区域1006包括图片控件1010。当用户选择图片控件1010时,用户可以选择一个图像文件以附加到输入文本区域1008的文本。而且,状态更新区域1006包括视频控件1012。当用户选择视频控件1012时,用户可以选择一个视频文件以附加到输入文本区域1008的文本。状态更新区域1006还包括绘画控件1014。<当用户选择绘画控件1014时,画布出现在状态更新区域1006中。图11是示出当在状态更新区域1006中显示画布1016时的网页1004的示例屏幕说明。当画布1016处于状态更新区域1006中时,用户可以编辑画布 1016中的绘画。用户随后选择提交控件1018来将画布1016加入到网页1004上。图12是示出在已经将画布1016加入到网页914之后的网页1004的示例屏幕说明。用户“John Smith”可以编辑画布1016中的绘画。另外,打开该网页1004的其他用户可以编辑画布1016中的绘画。图13是示出示例计算设备1300的框图。在一些实施例中,客户机设备102和/或服务器系统106是使用一个或多个计算设备(例如计算设备1300)来实现的。应该理解, 在其他实施例中,客户机设备102和/或服务器系统106是使用具有硬件组件的计算设备来实现的,所述硬件组件与图13的示例中所说明的那些硬件组件并不相同。在不同的实施例中,计算设备可以以不同的方式来实现。例如,在图13中的示例中,计算设备1300包括存储器1302、处理系统1304、辅助存储设备1306、网络接口卡1308、 视频接口 1310、显示单元1312、外部组件接口 1314以及通信媒介1316。在其他实施例中, 计算设备是使用更多或更少的硬件组件来实现的。例如,在另一示范实施例中,计算设备不包括视频接口、显示单元、外部存储设备或输入设备。此处所使用的术语计算机可读介质可包括计算机存储介质。计算机存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块、或其他数据的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。存储器1302包括一个或多个能够存储数据和/或指令的计算机存储介质。如在本文档中所使用,计算机存储介质是一种存储计算设备可读的数据和/或软件指令的设备或工厂制品。在不同的实施例中,存储器1302以不同的方式实现。例如,在各种实施例中,存储器1302是使用各种类型的计算机存储介质来实现的。示例类型的计算机存储介质包括,但不局限于,动态随机存取存储器(DRAM)、双重数据率同步动态随机存取存储器(DDR SDRAM)、减少等待时间的DRAM、DDR2 SDRAM,DDR3 SDRAM,Rambus RAM、固态存储器、闪存、只读存储器(ROM)、电可擦除可编程ROM 和存储数据的其他类型的设备和/或工厂制品。此处所使用的术语计算机可读介质还可包括通信媒介。通信媒介可由诸如载波或其他传输机制的已调制数据信号中的计算机可读指令、数据结构、程序模块、或其他数据来体现,并且包括任何信息传递介质。术语“已调制数据信号”可描述具有以对该信号中的信息编码的方式设定或者改变的一个或多个特征的信号。作为示例而非限制,通信媒介可包括诸如有线网络或直接线连接的有线介质,以及诸如声学、射频(RF)、红外线和其他无线介质的无线介质。处理系统1304包括选择性地执行软件指令的一个或多个物理集成电路。在各种实施例中,处理系统1304以各种方式实现。例如,处理系统1304可以以一个或多个处理核的形式来实现。在本示例中,处理系统1304可以包括一个或多个^itel Core 2微处理器。 在另一示例中,处理系统1304可以包括一个或多个单独的微处理器。在还有一个示例实施例中,处理系统1304可以包括提供专用功能的ASIC。在又另一个示例中,处理系统1304可通过使用ASIC和通过执行软件指令来提供专用功能。在另一个示例中,处理系统1304是 ARM7处理器。在不同的实施例中,处理系统1304以不同的指令集来执行软件指令。例如, 处理单元1304执行指令集中的软件指令,所述指令集诸如x86指令集、POWER指令集、RISC 指令集、SPARC指令集、IA-64指令集、MIPS指令集,和/或其他指令集。辅助存储设备1306包括一个或多个计算机存储介质。辅助存储设备1306存储了所述处理系统1304不能直接访问的数据和软件指令。换句话说,处理系统1304执行I/O 操作以从辅助存储设备1306处检索数据和/或软件指令。在各种实施例中,辅助存储设备 1306由各种类型的计算机可读数据存储介质来实现。例如,辅助存储设备1306可以由一
17个或多个磁盘、磁带驱动器、CD-ROM盘、DVD-ROM盘、蓝光盘、固态存储设备、柏努利录音带 (Bernoulli cartridges)和/或其他类型的计算机可读数据存储介质来实现。网络接口卡1308使得计算设备1300将数据发送给通信网络,和从通信网络接收数据。在不同的实施例中,网络接口卡1308以不同的方式实现。例如,在各种实施例中, 网络接口 1308可以是以太网接口、令牌环网络接口、光纤网络接口、无线网络接口(例如, WiFi、WiMax等)、或另一类型的网络接口来实现的。视频接口 1310使计算设备1300将视频信息输出给显示单元1312。在不同的实施例中,视频接口 1310以不同的方式实现。例如,在一个示范实施例中,视频接口 1310被集成到计算设备1300的主板上。在另一个示范实施例中,视频接口 1310是视频扩展卡。在各种实施例中,显示设备1312可以是阴极射线管显示器、IXD显示面板、等离子屏幕显示面板、触敏显示面板、LED屏幕、投影仪或另一类型的显示单元。在各种实施例中,视频接口以各种方式与显示单元1312通信。例如,视频接口 1310可以通过通用串行总线(USB)连接器、VGA连接器、数字可视接口(DVI)连接器、S视频连接器、高清多媒体接口(HDMI)接口、 显示端口连接器或另一类型的连接来与显示单元1312通信。外部组件接口 1314使计算设备1300能够与外部设备通信。在不同的实施例中, 外部组件接口 1314以不同的方式实现。例如,外部组件接口 1314可以是USB接口、火线接口、串行端口接口、并行端口接口、PS/2接口和/或允许计算设备1300与外部设备通信的另一类型的接口。在不同的实施例中,外部组件接口 1314使计算设备1300能够与不同的外部组件通信。例如,外部组件接口 1314可以使得计算设备1300与外部存储设备、输入设备、扬声器、电话充电插座、调制解调器、媒体播放对接底座、其他计算设备、扫描仪、数码相机、指纹读取器和可以连接到计算设备1300的其他设备进行通信。示例类型的外部存储设备包括,但不局限于,磁带设备、闪存模块、磁盘驱动器、光盘驱动器、闪存单元、zip盘驱动器、自动换碟机以及包括一个或多个计算机存储介质的其他类型的设备。示例类型的输入设备包括,但不局限于,键盘、轨迹球、笔输入设备、按键式拨号盘、麦克风、操纵杆、触敏显示屏以及将用户输入提供给计算设备1300的其他类型的设备。通信媒介1316方便了在计算设备1300的硬件组件之间的通信。在不同的实施例中,通信媒介1316方便了在计算设备1300的不同组件之间的通信。例如,在图13的示例中,通信媒介1316方便了在存储器1302、处理系统1304、辅助存储设备1306、网络接口卡 1308、视频接口 1310以及外部组件接口 1314之间的通信。在计算设备1300的不同的实现中,通信媒介1316可以以不同的方式来实现.例如,在计算设备1300的不同的实现中,通信媒介1316可作为PCI总线、PCI Express总线、加速图形端口 (AGP)总线、Infiniband互连、串行高级技术附件(ATA)互连、并行ATA互连、光纤通道互连、USB总线、小型计算系统接口(SCSI)接口,或其他类型的通信媒介来实现。存储器1302存储了各种类型的数据和/或软件指令。例如,在图13的示例中,存储器1302存储了基本输入/输出系统(BIOS) 1324以及操作系统13沈。BIOS 1324包括当由处理系统1304执行时使得计算设备1300启动的一组软件指令。计算系统13 包括当由处理系统1304执行时使得计算设备1300提供操作系统的一组软件指令,所述操作系统协调计算设备1300的活动和资源的共享。上述各实施例仅作为说明提供,并且不应被解释为限制。本领域的技术人员将容易地识别出可能不遵循在此说明并描述的示例实施例和应用而做出的各种修改和变化。例如,在图中示出的操作仅仅是示例。在各种实施例中,类似的操作可以包括比在图中所示出的那些步骤更多或更少的步骤。而且,在其他实施例中,类似的操作可以包括与在图中所示出的那些操作步骤不相同的顺序的步骤。
权利要求
1.一种用于与绘画进行通信的方法(500),所述方法包括由客户机第一次打开网页,所述网页包含了画布,所述画布包含了可由所述客户机设备的用户或使用其他客户机设备打开包括所述画布的网页的其他用户在所述网页中进行编辑的绘画(510);当所述网页在所述客户机设备上打开并没有重新加载该网页时,在所述用户和所述其他用户对绘画做出的编辑的近似时间,由所述客户机设备动态更新所述绘画以反映由所述用户和所述其他用户对绘画做出的编辑(618,6 ,630,722);关闭所述网页,其中当所述客户机设备关闭该网页时,所述绘画的内容处于第一状态 (726);以及由所述客户机设备第二次打开所述网页,其中当所述客户机设备第二次打开所述网页时,所述绘画保持可由用户编辑,并且所述绘画的内容处于第二状态,其中,所述第二状态是通过在所述网页在客户机设备上关闭时由其他用户对所述第一状态的编辑产生的 (510)。
2.如权利要求1所述的方法,其特征在于,还包括响应于所述用户对所述绘画做出第一改变,由所述客户机设备将客户机消息发送给服务器系统,所述客户机消息指定了对所述绘画做出的第一改变(620,6 ,632);以及由所述客户机设备从所述服务器系统接收服务器消息,所述服务器消息指定了第二改变,所述第二改变是由所述其他用户之一做出的(710,714,718)。
3.如权利要求2所述的方法,其特征在于, 其中所述方法还包括由所述客户机设备存储客户机模型,所述客户机模型包括表示所述绘画的XML元素; 响应于所述用户对所述绘画做出的第一改变(616,622,628)更新所述客户机模型 (618,624,630);以及响应于接收到所述服务器消息(710,714,718)更新所述客户机模型(712,716,718); 其中,所述客户机消息通过指定对所述客户机模型中的一个或多个XML元素的改变而指定了对所述绘画的所述第一改变;以及其中,所述服务器消息通过指定对所述客户机模型中的一个或多个XML元素的改变而指定了所述第二改变。
4.如权利要求1所述的方法,其特征在于, 其中,所述网页是社交网络站点的一部分;其中所述方法还包括由所述客户机设备接收从所述社交网络站点的用户中选择所述其他用户的输入(516);以及其中,所述社交网络站点的那些没有被选择的用户没有被授权编辑所述绘画。
5.如权利要求1所述的方法,其特征在于,还包括 将所述绘画从所述网页中复制到剪贴板;以及将所述绘画从所述剪贴板粘贴到文档,其中,在将所述绘画粘贴到所述文档中之后,所述绘画保持可编辑的,其中,所述文档是下述类型之一字处理文档、幻灯片文档、记事本文档、电子邮件消息以及图表编辑文档。
6.如权利要求1所述的方法,其特征在于,还包括由所述客户机设备接收选择所述绘画中的一个元素的输入(600);以及由所述客户机设备使所述用户在仅当没有其他用户已经选择该元素的情况下能够修改或删除所述元素。
7.如权利要求6所述的方法,其特征在于, 其中所述方法还包括响应于接收到选择所述元素的输入(600),将锁定请求发送到服务器系统(602); 由所述客户机设备从所述服务器系统接收锁定响应(604); 由所述客户机设备接收解除选择所述元素的输入(610);以及响应于接收解除选择所述元素的输入,由所述客户机设备将解锁请求发送给所述服务器系统(614);其中,所述客户机设备允许所述用户在锁定响应指示服务器系统给予所述客户机设备对所述元素的锁定时能够修改或删除所述元素(608),所述服务器系统在当没有其他用户已经选择所述元素时,给予所述客户机设备对所述元素的锁定;以及其中,所述客户机设备不允许所述用户在锁定响应指示服务器系统没有给予所述客户机设备对所述元素的锁定时修改所述元素,所述客户机设备不允许所述用户在锁定响应指示服务器系统没有给予所述客户机设备对所述元素的锁定时删除所述元素,所述服务器系统在当有其他用户已经选择所述元素时,不给予所述客户机设备对所述元素的锁定。
8.一种方法(800),包括存储包括表示绘画的数据的服务器模型; 由服务器系统从第一客户机设备接收第一网页请求(806);响应于所述第一网页请求,由所述服务器系统将第一网页响应发送给所述第一客户机设备,所述第一网页响应包括表示包含画布的网页的数据,所述画布包含所述绘画,其中, 所述绘画在所述网页中是可由第一用户进行编辑的,所述第一用户使用所述第一客户机设备(81 ;由服务器系统从第二客户机设备接收第二网页请求(806);由所述服务器系统将第二网页响应发送给所述第二客户机设备,所述第二网页响应包括表示所述网页的数据,其中,所述绘画在所述网页中是可由第二用户进行编辑的,所述第二用户使用所述第二客户机设备(812);从所述第一客户机设备和第二客户机设备接收客户机消息,所述客户机消息指定了由所述第一用户和第二用户对所述绘画做出的改变(916、922、930); 响应于所述客户机消息更新所述服务器模型以反映对所述绘画的改变(918,拟6,934); 由所述服务器系统向所述第一客户机设备发送指定对所述绘画的所述改变的服务器消息(920,928,936);由所述服务器系统向所述第二客户机设备发送指定对所述绘画的改变的另外的服务器消息(920,928,936);当所述第一客户机设备和第二客户机设备之一或两者都关闭所述网页时,继续存储所述服务器模型;由服务器系统从第一客户机设备接收第三网页请求(806);以及响应于所述第三网页请求,通过所述服务器系统将第三网页响应发送给所述第一客户机设备,所述第三网页响应包括表示所述网页的数据,其中,所述绘画反映了所述服务器模型(8⑵。
9.如权利要求8所述的方法,其特征在于,所述网页是社交网络站点的一部分,所述网页是所述第一用户的社交网络档案页面。
10.一种计算设备(102A),包括 处理单元(1304);以及一组存储有计算机可执行指令的计算机存储介质,当由所述处理单元执行所述计算机可执行指令时,使得所述计算设备第一次打开网页(304),所述网页是所述计算设备(102A)的用户(104A)的社交网络档案页面,所述网页包含画布(308),所述画布包含了可由所述用户或使用其他客户机设备 (102N)打开包括所述画布的网页的其他用户在所述网页中进行编辑的绘画(310); 存储包括了表示所述绘画的XML元素的客户机模型O10); 当所述网页在所述客户机设备上打开并且不重新加载所述网页时 接收选择所述绘画中元素的输入;仅当没有所述其他用户已经选择该元素的情况下,允许所述用户修改或删除所述元ο响应于所述用户对所述绘画做出第一改变,更新所述客户机模型; 响应于所述用户对所述绘画做出第一改变,将客户机消息(212)发送给服务器系统 (106),所述客户机消息通过指定对所述客户机模型中的一个或多个XML元素的改变指定了对所述绘画的第一改变;从所述服务器系统接收服务器消息014),所述服务器消息通过指定对所述客户机模型中的一个或多个XML元素的改变指定了对所述绘画的第二改变,所述第二改变由其他用户之一做出;响应于接收所述服务器消息,更新所述客户机模型;关闭所述网页,其中当所述客户机设备关闭该网页时,所述绘画的内容处于的第一状态中;以及第二次打开所述网页,其中当所述计算设备第二次打开所述网页时,所述绘画保持可由用户编辑,并且所述绘画的内容处于第二状态,其中,所述第二状态是通过在所述网页在所述计算设备上关闭时由其他用户对所述第一状态的编辑产生的。
全文摘要
本申请涉及在线绘画的协作编辑。网页包含画布。该画布包含了绘画,该绘画可以由客户机设备的用户和使用其它客户机设备打开包括画布的网页的其它用户在网页中进行编辑。当网页在客户机设备上打开时,在用户和其他用户对绘画做出编辑的近似时间,动态更新绘画以反映由用户和其他用户对绘画做出的编辑。所述绘画被存储在服务器系统上,这样当用户关闭网页时,其他用户可以继续编辑该绘画。当用户重新打开该网页时,画布包含了当其他用户编辑时的绘画。
文档编号G06F17/30GK102508840SQ201110285368
公开日2012年6月20日 申请日期2011年9月6日 优先权日2010年9月9日
发明者B·阿尔布雷克特, S·萨伊尼 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1