多承租人协作审阅服务的制作方法

文档序号:6495634阅读:158来源:国知局
多承租人协作审阅服务的制作方法
【专利摘要】促进对审阅目标人工产物集合的协作审阅的多承租者协作审阅服务。该服务是多承租者的,因为该服务提供跨该审阅服务支持的多个承租者可用的通用功能和基础结构。此外,审阅服务是可扩展的,因为该服务提供使承租者专用的功能可在其中被合并到该审阅服务中的可扩展性点。对于这些承租者中的一个或多个中的每一个,相应的审阅目标人工产物集合被分发成使得该目标集合的承租者可访问子集被维护成可由相应的承租者唯一地访问,并使得该审阅目标人工产物集合的集中服务子集被维护成远离相应的承租者。
【专利说明】多承租人协作审阅服务
[0001]背景
[0002]计算机系统和服务已经使人们生活、工作和做生意的方式彻底改革。这样的系统和服务的操作大部分由计算机软件来指引。计算机软件通常由编写源代码(即,计算机程序)的计算机编程员来生成。该源代码最终在执行时间之前和/或在执行之时被编译或解释成机器可读的代码。
[0003]随着这样的计算系统和服务的功能的增加,计算机程序已变得越来越复杂。许多计算机程序过于复杂,以至无法由任何一个人来创作。因此,计算机程序通常由各计算机编程员的团队协作创作。为了促进对计算机程序的协作创作,存在各种有用的常规协作创作程序。例如,这样的工具通常准许该团队从代码的一个版本移动到下一个版本,直到代码的最终版本被实现。
[0004]除了对创作变得更复杂外,对于代码的每一个版本,软件都应该被仔细审阅。因此,协作审阅程序也存在。因此,当协作创作程序准许为了从代码的一个版本移动到代码的下一版本而作出改变时,协作审阅程序允许详细地审阅代码的每一个版本,以便理解和计划在下一创作阶段应作出的改变。
[0005]概述
[0006]在此描述的至少一个实施例涉及多承租者协作审阅服务,该服务执行一种用于促进对审阅目标人工产物集合的协作审阅的方法,该审阅目标人工产物集合包括审阅的主目标分量。作为示例,主目标分量可以是源代码文档。该服务是多承租者的,因为该服务提供跨审阅服务支持的多个承租者可用的通用功能。此外,审阅服务是可扩展的,因为它提供承租者专用的功能可在其中被合并到该审阅服务中的可扩展性点。对于这些承租者中的一个或多个中的每一个,相应的审阅目标人工产物集合被分发为使得审阅目标人工产物集合的承租者可访问子集被维护为可由相应的承租者唯一地访问,并使得审阅目标人工产物集合的集中服务子集被维护成远离相应的承租者。
[0007]在一个实施例中,这一审阅目标人工产物集合的分发被进行以保留承租者的机密性,使得承租者专用的敏感数据保留为仅该承租者可访问,而较不敏感或不敏感的数据可远离承租者,可能在审阅服务本地。在某些实施例中,当对审阅目标人工产物集合作出某些类型的改变(例如,可能将评论添加到讨论线程)时,承租者的其他成员中的至少一些被实时通知。因此,描述了多承租者协作和可扩展审阅服务。
[0008]提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的选择的概念。本概述并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助判定所要求保护的主题的范围。
[0009]附图简述
[0010]为了描述能够获得上述和其它优点和特征的方式,各实施例的更具体的描述将通过参考各附图来呈现。可以理解,这些附图只描绘了示例实施例,并且因此不被认为是对其范围的限制,将通过使用附图并利用附加特征和细节来描述和解释各实施例,在附图中:
[0011]图1示出了可以用来利用此处所描述的各实施例的示例计算系统;[0012]图2示出了包括使用审阅目标人工产物集合来促进对主目标分量的协作审阅的多承租者协作审阅服务的协作环境;
[0013]图3示出了被呈现以示出支持每一承租者的各种数据的审阅目标人工产物集合;
[0014]图4示出了用于促进对主目标分量的协作审阅的方法的流程图;
[0015]图5示出了使审阅服务对修改通知作出响应以促进对客户机的选择性实时更新的方法的流程图;
[0016]图6示出了用于使用协作性多承租者审阅服务来促进对主目标分量的承租者唯一协作审阅的方法的流程图;
[0017]图7示出了图2的协作环境的一个非常具体的实施例;
[0018]图8示出了示出差异视图的示例用户界面,在该差异视图中修订改变被示为代码装饰;以及
[0019]图9示出了除了现在讨论线程装饰修饰了代码以外与图8的用户界面都相似的示例用户界面,并且该用户界面用于示出响应于来自审阅服务的更新通知可如何利用讨论线程来更新客户机侧应用。
[0020]详细描述
[0021]根据此处描述的各实施例,描述了多承租者协作审阅服务。对于多个承租者中的每一个,该服务促进对至少一个审阅目标人工产物集合的协作审阅。每一审阅目标人工产物集合包括接受审阅的主目标分量。作为示例,主目标分量可以是源代码文档。此外,审阅服务是可扩展的,因为它提供承租者专用的功能可在其中被合并到该审阅服务中的可扩展性点。因此,虽然可存在所有承租者可用的通用功能,但承租者仍被准许针对每一承租者的唯一体验。对于承租者中的一个或多个中的每一个,相应的审阅目标人工产物集合被分发为使得审阅目标人工产物集合的承租者可访问子集可由相应的承租者唯一地访问,并使得审阅目标人工产物集合的集中服务子集被维护成远离相应的承租者。这种分发可以被进行来保留承租者的机密性。首先,将参考图1来描述关于计算系统的一些介绍性讨论。然后,将参考图2至7来描述协作审阅服务的各实施例。最后,将参考图8和图9来描述示例客户机侧体验。
[0022]首先,参考图1来描述关于计算系统的介绍性讨论。计算系统现在越来越多地采取多种多样的形式。例如,计算系统可以是手持式设备、电器、膝上型计算机、台式计算机、大型机、分布式计算系统或甚至常规上不被认为是计算系统的设备。在本说明书以及权利要求书中,术语“计算系统”被广义地定义为包括任何设备或系统(或其组合),该设备或系统包含至少一个物理有形的处理器以及其上能含有可由处理器执行的计算机可执行指令的物理有形的存储器。存储器可以采取任何形式,并可以取决于计算系统的特性和形式。
[0023]计算系统可以分布在网络环境中,并可包括多个组分计算系统。例如,服务(诸如,web服务)通常是分布在网络上的计算系统。服务的示例是在此描述的审阅服务。
[0024]如图1所示,在其最基本的配置中,计算系统100通常包括至少一个处理单元102和存储器104。存储器104可以是物理系统存储器,该物理系统存储器可以是易失性、非易失性、或两者的某种组合。术语“存储器”在此也可用来指诸如物理存储介质等非易失性大容量存储。如果计算系统是分布式的,则处理、存储器和/或存储能力也可以是分布式的。如此处所使用的那样,术语“模块”或“组件”可以指在计算系统上执行的软件对象或例程。此处所描述的不同组件、模块、引擎,以及服务可以实现为在计算系统上执行的对象或进程(例如,作为分开的线程)。
[0025]在随后的描述中,参考由一个或多个计算系统执行的动作描述了各实施例。如果这样的动作是以软件实现的,则执行动作的相关联计算系统的一个或多个处理器响应于已经执行了计算机可执行指令来引导计算系统的操作。这样的操作的示例涉及对数据的操纵。计算机可执行指令(以及被操纵的数据)可以存储在计算系统100的存储器104中。
[0026]计算系统100还可包含允许计算系统100例如通过网络110与其他计算系统通信的通信信道108。计算系统还可以包括显示器112,显示器可显示计算系统的用户可以与之接口的一个或多个用户界面。例如,如果计算系统100是客户机计算系统,则用户可以使用显示器112与该计算系统交互。显示器可以例如向客户机显示审阅目标人工产物集合的部分。在客户机计算系统上允许的应用在此也被称为“客户机侧应用”。在审阅应用的上下文中,客户机侧应用可负责显示审阅目标人工产物集合的部分、从审阅服务接收关于审阅目标人工产物集合的更新、解释用户输入、以及向审阅服务通知某些类型的用户输入等等。
[0027]这里描述的各实施例可包括或利用专用或通用计算机,该专用或通用计算机包括诸如例如一个或多个处理器和系统存储器等计算机硬件,如以下更详细讨论的。这里描述的各实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是可由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。承载计算机可执行指令的计算机可读介质是传输介质。因此,作为示例而非限制,本发明的各实施例可包括至少两种明显不同种类的计算机可读介质:计算机存储介质和传输介质。
[0028]计算机存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。
[0029]“网络”被定义成允许在计算机系统和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链路。当信息通过网络或另一个通信连接(硬连线、无线、或者硬连线或无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可包括可用于携带计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的网络和/或数据链路。上述的组合也应被包括在计算机可读介质的范围内。
[0030]此外,在到达各种计算机系统组件之后,计算机可执行指令或数据结构形式的程序代码装置可从传输介质自动转移到计算机存储介质(或者相反)。例如,通过网络或数据链路接收到的计算机可执行指令或数据结构可被缓存在网络接口模块(例如,“NIC”)内的RAM中,然后最终被传输到计算机系统RAM和/或计算机系统处的较不易失性的计算机存储介质。因而,应当理解,计算机存储介质可被包括在还利用(或甚至主要利用)传输介质的计算机系统组件中。
[0031]计算机可执行指令例如包括,当在处理器处执行时使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。计算机可执行指令例如可以是二进制代码、诸如汇编语言之类的中间格式指令或者甚至是源代码。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特征或动作。更具体而言,上述特征和动作是作为实现权利要求的示例形式而公开的。
[0032]本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网络计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机等等。本发明也可在其中通过网络链接(或者通过硬连线数据链路、无线数据链路,或者通过硬连线和无线数据链路的组合)的本地和远程计算机系统两者都执行任务的分布式系统环境中实施。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备二者中。
[0033]图2示出了协作环境200,该协作环境200包括促进对主目标分量的协作审阅的多承租者协作审阅服务201。审阅服务201可以由一个计算系统或多个交互的计算系统来执行。这样的计算系统可以例如被结构化成如以上针对图1的计算系统100所描述的那样。审阅服务201可以是使用计算机程序产品来执行的软件方案,该计算机程序产品具有其上具有计算机可执行指令的一个或多个计算机可读存储介质,计算机可执行指令被结构化成使得在由计算系统的处理器执行时,使得计算系统操作审阅服务或审阅服务的其部分。
[0034]审阅服务201是多承租者的,每一承租者具有协作地审阅一个或多个相应的主目标分量的成员。例如,一个承租者可以协作地审阅软件包的一个分量,另一个承租者可以协作地审阅该软件包的另一分量,并以此类推。也就是说,使用此后描述的机制来在各承租者间保留机密性。因此,一个承租者可以来自一个公司,而另一承租者可以来自处理完全无关的项目的另一公司。此外,由于每一承租者的主目标分量可以是不同的,因此各个承租者可以处理不同种类的主目标分量。例如,一个承租者可处理源代码文本,而另一承租者可处理设计文档,而又一承租者可处理文字处理文档。
[0035]在图2的示例中,审阅服务201被示为服务于三个承租者211、212和213。然而,省略号214表示审阅服务201可以表示少至一个承租者,多至数千个承租者,或更多,而没有理论上限。然而,优选地存在至少两个承租者,以充分利用协作审阅服务201的多承租者及可扩展性特征。
[0036]在图2所示的这个示例中,存在如虚线框所表示的承租者211的三个成员221、222和223。另外,存在如点线框所表示的承租者212的三个成员223、224和225。注意成员223是两个承租者211和212的成员,因为有时候某成员可以在两个不同的团队中工作。最后,存在如间断的点划线框所表示的承租者213的两个成员226和227。
[0037]成员可以是作为与承租者相对应的团队的成员的人类,在这种情况下,成员可以使用客户机计算机(可能包括客户机侧应用)来与审阅服务对接。或者,成员可以是由具有能够(并被正确地授权)执行审阅的人工智能的计算系统来执行的自动化分析过程。在一个示例中,假设创作者已发布了源代码文件的一次迭代(或一个版本)。还假设该源代码具有未被引用的变量或有着不匹配标准命名约定的名称的变量。注释功能(自动化分析过程的示例)可寻找到未被引用的变量、执行某一计算来判定该变量应该被注释、并将某一评论添加到与该变量相对应的讨论线程中。
[0038]图2中示出的成员资格当然只是示例。承租者可以具有任何数量的成员,并且有时成员资格动态地改变。例如,如果承租者与正在处理一条源代码的软件开发团队相对应,则该团队的新雇员将被添加为那个相应承租者的成员。[0039]每一承租者211到213分别具有其自己的数据存储231到233。尽管这些数据存储231到233可能分别在各自相应的承租者211到213的本地,但不必一定如此。尽管如此,不管数据存储在何处,数据存储231到233都可由相应的团队211到213唯一地访问。在本说明书和权利要求书中,相应数据存储是相应承租者“唯一可访问的”,因为不作为该承租者的成员的各实体没有被给予对该相应数据存储的访问,除非具有该承租者的特定许可。审阅服务通过将最敏感的承租者数据保持在相应的承租者数据存储(此后被称为“承租者可访问的数据”或“承租者可访问的子集”)上来在各承租者间维护高机密性级别,并可将较不敏感的数据或完全不敏感的数据维护在远离该承租者并且审阅服务201更可访问的位置(此后被称为“集中服务数据”或“集中服务子集”)。例如,这样的较不敏感或不敏感的数据可被维护在审阅服务201可访问的数据存储260处。然而,即使位于数据存储260处的数据较不敏感,审阅服务201仍可将安全性施加于对这样的数据的访问,以提供保护,使得这样的数据仅被提供给拥有该数据的相应承租者。.[0040]审阅服务201包括表示跨全部承租者211到213通用的一个或多个功能的通用功能202。例如,假设承租者211到213各自对应于一软件开发团队,并且每个承租者的主目标分量是源代码文本。通用功能可包括将应用的功能,而不管开发团队如何。或许这些是可能不管承租者的偏好如何都对各软件开发团队有用的功能。作为示例,通用功能202可包括改变跟踪功能、版本化功能、通知功能、讨论线程功能、统计功能等等。
[0041]例如,统计功能可跟踪诸如以下统计:1)多少成员以及哪些成员正积极地从事审阅主目标分量;2)自从任何人或特定成员对该主目标分量进行评论以来过去了多少时间,3)谁在该主目标分量上签了字,4)各成员开始审阅的时间直到他们在主目标分量上签字的时间之间的平均时间长度;5)审阅服务接收到审阅目标人工产物集合的改变的通知(参考图3来描述)的时间到这个改变被分发给承租者的其他成员的时间之间的平均时间,及6)用于服务于特定承租者的处理、存储器和其他资源,等等。审阅服务201也可以使用向它提供的信息来执行任何其他所需的统计。
[0042]审阅服务是多承租者的并跨多个承租者提供通用功能的事实允许多个承租者使用该审阅服务,而不是迫使每一承租者寻找他自己的协作审阅机制。每一承租者的体验仍与其他承租者的体验分开,使得每一承租者看起来该审阅服务仅在帮助它。因此,审阅服务是为多个承租者促进协作审阅的有效方式。
[0043]审阅服务201还包括可以被合并到该审阅服务中的承租者专用功能240。这些承租者专用功能240可各自仅适用于承租者211到213的一个子集。在简单示例中,承租者专用功能240包括三个承租者专用功能241到243,但是省略号244表示可存在承租者专用功能的其他成员。任何给定承租者可具有适用于它的一个或多个承租者专用功能。在某些情况下,可存在仅使通用功能202适用,而不具有承租者专用功能的承租者。作为特定示例,或许承租者专用功能241可能仅适用于承租者211,承租者专用功能242可能仅适用于承租者212,并且承租者专用功能243可能仅适用于承租者213。
[0044]承租者专用功能是可能并非跨承租者211到213中的全部适用的功能,但可专门适用于该团队的目标和偏好。作为示例,一个团队可能使用签字,而其他团队可能不使用签字。在这种情况下,签字功能可以适用于承租者211,但不适用于承租者212和213。另一示例是策略功能。例如,一个承租者可能需要两个签字来将审阅标记为完成,而另一个承租者可能仅需要一个签字。即使两个承租者可使用相同的策略功能,它们可具有不同的配置或阈值。另一承租者可能对在比较主目标分量的各版本时如何示出修订具有某些偏好。一个承租者可能偏好以一种方式(例如,突出显示的黄色)示出所添加的文本,而另一承租者可能偏好另一种机制(例如,下划线)。这些偏好也可以被表达为承租者专用功能的一部分。在一个实施例中,承租者专用功能241到243各自是分层结构化的文档,诸如可扩展标记语言(XML)文档。然而,承租者专用功能可另选地是插件代码,或者是审阅服务201所识别出的任何其他机制。
[0045]如之前所提到的,服务器侧功能240被提供来促进承租者专用功能。还可存在与通用功能202和/或与承租者专用功能240协作来为每一承租者提供进一步定制的客户机侧功能。
[0046]审阅服务201提供承租者211到213可使用来与审阅服务201进行通信的应用编程接口 250。例如,一个特定示例是承租者211到213可以出于修改适用于该相应承租者的承租者专用功能240的目的而与审阅服务201进行通信。例如,承租者可以将某承租者专用功能添加到承租者专用功能240中,或者可能修改或替换承租者专用功能之一。承租者还可以设置用户偏好、定制或设置通用功能202所提供的其他配置数据。
[0047]图3示出了被呈现以示出支持每一承租者的协作体验的各个分量的审阅目标人工产物集合300。因此,由于每一承租者具有不同的主目标分量,因此每一承租者将使用不同的审阅目标人工产物集合300。审阅目标人工产物集合300包括所创作的数据310。所创作的数据包括主目标分量311,但还包括对主目标分量311进行评论的次分量312。
[0048]主目标分量311实际上是协作的主题。主目标分量311可以包括文本、图像、图标、或任何其他可呈现的分量、或其组合。例如,主目标分量可以是文本文档,诸如源代码文档、设计文档、或某一其他类型的文字处理文档。
[0049]所创作的数据的次分量312是支持对主目标分量312的协作审阅的所创作的数据(例如,其他文本)。作为示例,次分量312可以是对应于主目标分量311的区域的讨论线程。该区域可以是主目标分量311的文字、部分行、任何数量的行、或任何其他部分。
[0050]更具体的,假设主目标分量311是源代码文本,则可存在突出显示包括与分支语句的条件应该是什么有关的某些讨论的分支语句的线程。可存在对该讨论线程的多个贡献者,其中该承租者的多个成员参加了该问题。
[0051]在源代码的另一部分,可存在某变量的整型声明。针对该声明可存在关于以下内容的相应讨论线程:该整型声明是否实际上应该是浮点型声明的问题以及对其中那个变量采用分数值可能更准确的某些情形的讨论。因此,通过使用这样的讨论线程,多个思路可以聚集起来考虑主目标分量中的非常聚焦的问题。在一个实施例中,这样的讨论线程被充分实时地更新。这允许统一并高效地收集团队成员的针对主目标分量的各个部分的思想。
[0052]某些讨论线程可以是面向设计的。例如,可能审阅者已对标识出的类是否为内聚的和/或该标识出的类是否可能不必要地耦合到特定分量进行了评论。
[0053]某些讨论线程可以是面向逻辑的。例如,审阅者可以对在特定参数值(例如,负值)被传递到标识出的方法的情况下代码执行的某些结果(例如,系统将崩溃)进行评论。
[0054]某些讨论线程可以是面向风格的。例如,审阅者可以评论如果将以某种方式修改代码的话,该代码的标识出部分可以更好阅读。[0055]某些讨论线程可以是普遍的,或可给出某种类型的建设性反馈。例如,审阅者可以向对某标识出代码区域的修正给予赞扬,或者可能会以简短的通知来赞扬某代码区域编写得有多好。
[0056]审阅目标人工产物集合300还包括元数据320,该元数据320是针对主目标分量311的承租者专用元数据或是针对其他管理性承租者专用事件的承租者专用元数据。这样的元数据320的类型不限于但可以是例如签字数据、成员状态数据、承租者成员资格数据、偏好数据、以及诸如创建日期和大小之类的主目标分量信息等等。例如,成员状态数据可以包括对主目标分量的审阅的状态,诸如(但不限于):审阅者是否已开始该审阅、是否处于审阅过程中、是否正在等待创作者、或者是否已在该审阅上签字。
[0057]如之前所提到的,审阅服务201通过在承租者的数据存储(例如,承租者211的数据存储231)和审阅服务器201的数据存储260之间合适地分发审阅目标人工产物集合300来维护每一承租者的机密性。承租者本身可指定准许哪些数据驻留在何处,或者他们认为哪些数据太过敏感而不能存储在审阅服务处,以作为其偏好的一部分。例如,可能所创作的数据310中一些位于承租者处,且所创作的数据310的一些位于审阅服务处。
[0058]在一个实施例中,大部分或全部主目标分量311保留在承租者数据存储中,而所创作的数据310的其他次分量312 (诸如,讨论线程数据)可被远程地存储在审阅服务数据存储260处。此外,可能元数据320也可被存储在审阅服务数据存储260处。元数据320还可包括审阅服务201可用来合适地向承租者通知改变使得客户机接口可因此被更新的其他指针或引用。
[0059]这样的指针和引用在审阅服务201本身可能不具有主目标分量的副本,但仍可能需要将成员正在使用的客户机引导到合适的位置时尤其有用。例如,虽然审阅服务可能实际上不具有接受审阅的源代码文档的副本,但审阅服务可具有讨论线程的副本,并可具有那个讨论线程与源代码文本中的特定地址(例如,行号、列号范围)的相关性。作为另一示例,如果客户机想要比较主目标分量的两个版本,则审阅服务可能能够将客户机引导到这两个版本的合适存储位置。
[0060]图4示出了用于促进对主目标分量的协作审阅的方法400的流程图;方法400包括提供跨审阅服务所支持的多个承租者可用的通用功能(动作401)。参考图2,这样的主要功能可以是例如通用功能202。方法400还包括提供使承租者专用的功能可其中被合并到审阅服务中的可扩展性点(动作402)。参考图2,可扩展性点可以是将允许承租者专用的功能对审阅服务201可用的API250或任何其他机制。审阅服务随后使用通用功能和承租者专用的功能来执行实时审阅服务(动作403)。
[0061]在至少一些情况下,“实时”审阅服务使得承租者的至少一些成员中的每一个在改变已发生于所创作数据的主目标分量或次分量时被更新。作为示例,假设承租者成员将评论添加到针对主目标分量的一部分的讨论线程中。审阅服务可以标识出这已发生,并作出决策以立即向承租者的(正在创作和/或审阅主目标分量的)每一个成员通知该改变。这样,承租者的每一相关审阅成员在审阅服务一能够通知他就可以看见该新评论。在某些情况下,这可花费少至几秒钟或甚至几分之一秒,甚至可能造成通过该审阅服务保持集中于主目标分量的特定部分的实时双向对话。在客户机机器上,那个讨论线程可以在视觉上和与该讨论线程有关的主目标分量的相应部分相关联。[0062]假设审阅者使呈现该变化的客户机侧应用打开,则该通知可以直接向客户机应用作出。然而,另选地或另外地,还可通过电子邮件来传送该改变,由此甚至允许向没有使客户机侧应用打开的那些审阅者通知该改变。然而,在此描述的原理并不限制审阅者被通知的方式,也不限制以特定方式被通知的审阅者的数量。
[0063]图5示出了供审阅服务对修改通知作出响应以促进跨承租者上的各审阅者的客户机机器的选择性实时更新的方法500的流程图。通过这个方法,审阅服务被配置成在承租者专用的元数据320和所创作的数据310中的一个被更新时,更新相应承租者的至少一些成员。
[0064]审阅服务接收更新与承租者相对应的目标审阅人工产物集合的通知(动作501)。审阅服务随后在适当时更新承租者专用的元数据或集中服务数据(动作502)。为了做到这一点,审阅服务201可以执行通用功能202中的一个或多个,并还可以执行适用于相应承租者的任何承租者专用的功能240。
[0065]例如,假设客户机接收到针对源代码文档的特定部分的评论被附加到现有讨论线程的通知(此后称为“评论示例通知”)。审阅服务将由此更新存储在审阅服务处的线程讨论。作为第二示例,假设客户机接收到通知(此后被称为“签名示例通知”)。在该情况下,审阅服务将更新与源代码文档相对应的元数据以反映新的签名状态。
[0066]审阅服务随后判定是否要向相应承租者的成员实时通知改变(决策框503)。如果要要进行这样的实时通知(决策框503中为“是”),则承租者的相关成员(例如,协作审阅相应的主目标分量的那些人)被这样通知(动作504)。该通知的形式可包括将有助于客户机机器将更新呈现给成员的任何信息。对这个通知的制定可以响应于审阅服务201执行通用功能202中的一个或多个和/或与该承租者相对应的承租者专用功能240中的一个或多个而被执行。
[0067]在评论示例通知中,可向审阅团队的每一成员通知讨论线程中的更新。将通知返回给客户机可使得客户机以合适的方式反映该通知。例如,在这个情况下,当用户导航到主目标分量的与该讨论线程相对应的部分时,该讨论线程可表现为其中的新评论被在视觉上强调。在这个或其他情况下,另一视觉化可出现在客户机上以使得每一审阅者知道新的评论被添加到了与主目标分量相关联的讨论线程中。
[0068]在签名示例通知中,签名可以是重要事件,因为它指示承租者的团队成员认为主目标分量处于最终形式。由此,可能向每一团队成员都通知了这个特定事件。可使得客户机机器反映该签名状态。
[0069]如果审阅服务判定这样的通知都不应被实时作出(决策框503中为“否”),则审阅服务可以判定是否应该发生通知(决策框505)。如果将存在通知,只是不是实时通知(决策框505中为“是”),则可将该通知排队以供稍后递送(动作506)。或者,当存在通知时,该通知即将但还未被排队,并且该通知被发送给客户机侧应用,或者可通过电子邮件来发送。在这个实施例中,审阅者将要么使客户机侧应用被打开,要么将只看见电子邮件通知,在该情况下将不存在对该通知的单独排队的需要。相反,如果也根本不存在对任何通知的需要(决策框505中为“否”),则不采取另外的动作(动作507)。用于判定何时发送通知以及将什么包括在该通知中的准则可以由承租者来设置,以定制体验和/或支持承租者专用的功能。对是否通知承租者的其他成员、要通知哪些成员、以及应将什么包括在该通知中的判定可以通过执行通用方法202中的一个或多个和/或承租者专用的方法240中的一个或多个来判定。
[0070]图6示出了用于使用协作性多承租者审阅服务来促进对主目标分量的承租者唯一的协作审阅的方法600的流程图。如前所述,应用编程接口 250或另一机制可被用来修改承租者专用的功能240。应用编程接口 250还可被用来设置承租者或用户偏好或定制设置。在(例如,通过应用编程接口 250)接收到修改承租者专用的功能的指令(动作601)后,审阅服务自动地修改承租者专用的功能(动作602)。这样的修改可以例如包括将某承租者专用的功能添加到各承租者专用的功能中,或者可能修改或替换承租者专用的功能。
[0071]因此,已描述了允许将承租者的协作审阅体验即划分成访问数据和也划分成总体功能体验的多承租者协作审阅系统。为了效率,多承租者因此可以由还跨所有这些承租者(或这些承租者的至少大部分)提供通用功能的单个审阅服务来服务。
[0072]图7示出了图2的协作环境201的一个非常具体的实施例700。在此,包括客户机711到715的客户机710是证明在此描述的原理不限于特定客户机类型的各种不同类型的客户机。在图7的示例情况下,客户机711是当用户在链接上点击时安装应用的独立图形用户界面客户机,客户机712是命令行审阅客户机,客户机713是命令行项目客户机,客户机714是专用于协作服务的应用专用客户机,且客户机715是另一自定义客户机。
[0073]数据存储720表示本地承租者存储,该存储可以使用访问控制技术来控制。除了图2中的承租者专用的功能240所表示的服务扩展外,还存在在客户机侧并由客户机侧扩展731、732和733来表示的可扩展性。虽然并非必要,但客户机710还可以具有对用于存储配置信息的ACTIVE D丨RECTORY ? 740的访问权。另选地或另外地,Active Directory可被用来查找审阅者或创作者信息。图7的各服务扩展750表示图2的承租者专用的功能240的各示例。在这个情况下,服务扩展750包括将基于控制板的用户界面控制提供给客户机的控制板服务751。控制板服务751具有对数据库752的访问权。控制板服务751是用户可利用来查看什么待决审阅需要其注意/输入的客户机端点。
[0074]图7的服务760是图2的审阅服务201的示例。在这种情况下,审阅服务的通用功能包括发现服务761、审阅服务762和项目服务763。服务760具有对项目配置文件771和审阅元数据772的访问权。在一个实施例中,服务760和服务扩展750是使用W IN DOWS ?通信基础(WCF)来创作的。来自服务760的电子邮件通知可以经由电子邮件服务器来作出。
[0075]图8和图9示出了表示客户机侧应用的用户界面的示例用户界面。这些示例证明在被通知对目标审阅人工产物集合的更新时的示例客户机体验。在该所示情况下,主目标分量是源代码文档,该源代码文档的行906到929被示出。应理解,这些只是示例,图8和图9现将被更详细地描述。
[0076]图8示出了差异视图用户界面800,该差异视图用户界面800包括代码视图区域801,该代码视图区域801示出了对在此被称为“原始版本”和“修订版本”的代码的多个版本进行比较的差异视图。用户界面800还包括文件选择区域802、审阅者状态区域803、和评论视图区域804。文件选择区域802列出了可被审阅的若干代码文件,其中文件821被选择。所选择的代码文件821被显示在代码视图区域801中。由于(如最经常会出现的情况那样)接受审阅的代码比代码视图区域中可以显示的代码大得多,代码视图区域801具有若干导航帮助。例如,代码视图区域801具有垂直滚动条815和水平滚动条816,无论何时代码的垂直范围或水平范围分别超出代码视图区域801中所示出的垂直范围或水平范围时,垂直滚动条815和水平滚动条816可被激活而处于使用中。代码视图区域801还具有表示可查看代码在该代码的整个范围内的当前垂直位置的位置参考指示符817和818。具体地,参考指示符817表示该可查看代码在该代码的原始版本内的位置,而参考指示符818表示该查看代码在该代码的修订版本内的位置。
[0077]对差异视图的使用允许审阅者快速地查明代码的不同版本之间的差异,使得其可以更深入的关注在各版本间作出的特定改变。在此描述的原理并不限于对代码的各版本之间的差异的可视化方式或实际的可视化本身。然而,对颜色的使用是可用于对区别进行可视化的无限多种方式之一
[0078]换言之,在本专利申请中避免使用颜色。相反,用朝向右的散列框来标记的各区域被用来代替图8中的红色突出显示(但是将参考图8而在此将这些区域仍称为是“用红色突出显示的”)。此外,用朝向左的散列框来标记的各区域被用来代替图8中的黄色突出显示(但是将参考图8而将这些区域仍称为是“用黄色突出显示的”)。图8中用下划线标记的各区域被用来代替图8中的绿色突出显示(但将参考图8而将这些区域仍称为是“用绿色突出显示的”)。用各点标记出的各区域被用来代替图8中的粉色突出显示(但将参考图8而将这些区域仍称为是“用粉色突出显示的”)。
[0079]参考图8,代码视图区域比较在此被称为原始版本和修订版本的代码的两个版本。完全用红色来突出显示(在图8中具有朝向右的散列标记)的各行是与参考版本相比,在当前版本中已被整个地移除的各行。具有红色部分(右散列的)和粉色部分(图8中用点标出的)两者的各行是其中作出了各移除的各个行,但其中红色部分(右散列的)是被移除的特定部分。完全用绿色来突出显示的(图8中带下划线的)各行是与参考版本相比,在当前版本中已被整个地添加的各行,但是在图8中不存在这样的行的示例。具有黄色部分(左散列的)和绿色部分(带下划线的)两者的各行是其中作出了各添加的各个行,但其中绿色部分(左散列的)是被添加的特定部分。
[0080]差异视图用户界面800还示出了审阅者状态区域803和评论区域804。审阅者状态区域803允许审阅者选择控件831来指示审阅者已在代码的当前版本上签字。控件832允许审阅者收回在该代码上的之前签字。控件833准许审阅者与审阅团队中的其他人发即时消息。
[0081]评论区域804准许关于被显示在代码视图区域801中的各评论的不同视图。然而,由于不存在显示在图8中的代码视图区域801中的评论,同样不存在显示在图8的评论区域804中的评论。
[0082]因此,图8示出了差异视图用户界面800,该差异视图用户界面包括对所显示的代码的各版本进行比较的修订标记或某些其他可视化。
[0083]图9示出了与图8的用户界面800类似的差异视图用户界面900。事实上,除了现在评论已被添加代码中且与该代码的特定部分(在这种情况下,为代码的行912)相关联之外,差异视图用户界面900可以是与图8的差异视图用户界面相同的用户界面。评论装饰901包括讨论线程,该讨论线程可包括来自多个评论者的评论。就是这个讨论线程在审阅计算系统通知客户机侧应用新评论已被添加到讨论线程中时可被更新。评论装饰901还可以包括指示评论装饰的状态(在这个情况下,为讨论线程的状态)的可视化(在这个情况下为下拉框902)。作为另一示例,状态可视化可指示评论装饰的强度。在为图9中的线程状态下拉框902的情况下,活动状态指示该线程已被审阅者创建,但该讨论线程的主题尚未被创作者提出。待处理状态指示创作者同意审阅者,但尚未应用修正。已解决状态指示创作者已经修正了该问题,或者回答了审阅者的问题。“不会修正”状态指示创作者不同意讨论线程的建议,因此创作者提供了对其观点的解释,并将该线程标记为“不会修正”。已关闭状态指示创作者和审阅者确认了修正。
[0084]图9中的评论区域804’与图8的评论区域804相比在其内容上略微不同。评论区域804’现在具有关于代码视图区域801’中的全部所显示评论的不同视图。
[0085]因此,已描述了多承租者协作审阅服务和协作环境。本发明可具体化为其它具体形式而不背离其精神或本质特征。所描述的实施例在所有方面都应被认为仅是说明性而非限制性的。因此,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变应被权利要求书的范围所涵盖。
【权利要求】
1.一种计算机程序产品,该计算机程序产品包括其上具有计算机可执行指令的一个或多个计算机存储介质,所述计算机可执行指令被结构化成使得在由计算系统的一个或多个处理器来执行时,致使所述计算系统操作多承租者协作审阅服务,该多承租者协作审阅服务执行一种用于促进审阅目标人工产物集合的协作审阅的方法,所述方法包括: 提供跨所述审阅服务所支持的多个承租者可用的多个通用功能的动作; 提供使承租者专用的功能能在其中被合并到所述审阅服务中的可扩展性点的动作, 其中,对于所述多个承租者中的至少一个中的每一个,相应的审阅目标人工产物集合被分发成使得所述审阅目标人工产物集合的承租者可访问子集被维护成可由相应的承租者唯一地访问,并使得所述审阅目标人工产物集合的集中服务子集被维护成远离相应的承租者,其中每一个承租者的审阅目标人工产物集合包括主目标分量和对所述主目标分量进行评论的次分量。
2.如权利要求1所述的计算机程序产品,其特征在于,所述主目标分量包括源代码文档。
3.如权利要求1所述的计算机程序产品,其特征在于,所述计算机可执行的指令被结构化成使得所述审阅目标人工产物集合的所述集中服务子集位于所述审阅服务的本地。
4.如权利要求1所述的计算机程序产品,其特征在于,所述计算机可执行指令被结构化成使得所述主目标分量全部被包括在所述审阅目标人工产物集合的所述承租者可访问子集中。
5.如权利要求1所述的计算机程序产品,其特征在于,所述主目标分量包括文本文档。
6.如权利要求1所述的计算机程序产品,其特征在于,所述主目标分量包括图像。
7.如权利要求1所述的计算机程序产品,其特征在于,所述次分量包括线程数据,所述线程数据包括多个讨论线程,每一讨论线程对所述主目标分量的相应部分进行评论。
8.如权利要求1所述的计算机程序产品,其特征在于,所述审阅服务提供所述审阅服务和承租者可通过其进行通信的应用编程接口。
9.如权利要求1所述的计算机程序产品,其特征在于,所述审阅服务还被配置成在所述主目标分量或者与所述主目标分量相对应的次分量中的一个或多个被更新时,更新相应承租者的各成员中的至少一些成员。
10.一种用于使用多承租者协作审阅服务来促进对主目标分量的协作审阅的方法,所述方法包括: 提供多个协作功能的动作,所述多个协作功能包括跨多个承租者通用的通用功能以及各自仅专用于所述多个承租者的一个子集的承租者专用的功能; 接收修改所述承租者专用的功能的指令的动作;以及 修改所述承租者专用的指令的动作。
【文档编号】G06F9/44GK103608772SQ201280030174
【公开日】2014年2月26日 申请日期:2012年6月18日 优先权日:2011年6月20日
【发明者】C·H·罗伯茨, M·A·库克, V·W·H·博克特 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1