專利名稱:向外部系統(tǒng)提供文檔儲(chǔ)存庫(kù)事件的通知的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及向外部系統(tǒng)提供文檔儲(chǔ)存庫(kù)事件的通知。
背景技術(shù):
文檔儲(chǔ)存庫(kù)對(duì)于組織內(nèi)的生產(chǎn)率和協(xié)作來(lái)說(shuō)經(jīng)常是重要的中樞。結(jié)果,通常需要將諸如業(yè)務(wù)線(“L0B”)系統(tǒng)之類的其它外部系統(tǒng)與文檔儲(chǔ)存庫(kù)中存儲(chǔ)的資源進(jìn)行集成。一些方案允許組織將來(lái)自外部系統(tǒng)的數(shù)據(jù)合并到它們的文檔儲(chǔ)存庫(kù)中,從而允許它們更容易地將在外部系統(tǒng)存儲(chǔ)的數(shù)據(jù)合并到儲(chǔ)存庫(kù)中。其它方案展示萬(wàn)維網(wǎng)(“web”或“Web”(網(wǎng)))服務(wù),該萬(wàn)維網(wǎng)服務(wù)允許外部系統(tǒng)從文檔儲(chǔ)存庫(kù)檢索信息以在所述外部系統(tǒng)內(nèi)使用。然而,這些能力中的任何一個(gè)都不可能對(duì)外部系統(tǒng)直接告知在文檔儲(chǔ)存庫(kù)內(nèi)發(fā)生的事件,諸如對(duì)文檔或列表所作的變化。這使得難以合并在由外部系統(tǒng)管理的業(yè)務(wù)處理中的文檔儲(chǔ)存庫(kù)內(nèi)保持的數(shù)據(jù)或文檔。一些文檔儲(chǔ)存庫(kù)系統(tǒng)支持響應(yīng)于特定事件的發(fā)生而允許自定義第三方代碼被執(zhí)行的功能。該功能通常通過(guò)允許文檔儲(chǔ)存庫(kù)管理者將自定義代碼部署到運(yùn)行該文檔儲(chǔ)存庫(kù)的實(shí)際服務(wù)器來(lái)啟用。然而,這樣做可使在許多情況下的管理變得困難或驚人地昂貴。另夕卜,在主機(jī)和/或多承租人文檔儲(chǔ)存庫(kù)中,該方法可更加具有挑戰(zhàn)性,這是因?yàn)椋仨毞乐棺远x代碼對(duì)主機(jī)系統(tǒng)進(jìn)行昂貴或損壞性的操作,或必須防止自定義代碼訪問(wèn)多承租文檔儲(chǔ)存庫(kù)的其它承租人的數(shù)據(jù)。解決這些問(wèn)題的一種方法是在“沙箱”中運(yùn)行自定義代碼,該“沙箱”將自定義代碼限制在安全且隔離的執(zhí)行環(huán)境。然而,在許多情況下,這種限制不僅防止了代碼執(zhí)行昂貴或惡意的操作,還妨礙了代碼執(zhí)行一些對(duì)于實(shí)現(xiàn)自定義代碼的期望目標(biāo)為必需的操作。結(jié)果,可能難以或不可能以允許自定義代碼在這種沙箱內(nèi)有效執(zhí)行的方式來(lái)實(shí)現(xiàn)自定義代碼。本文中所做出的公開正是針對(duì)這些以及其他考慮事項(xiàng)而呈現(xiàn)的。
發(fā)明內(nèi)容
本文描述了用于向其它外部系統(tǒng)提供文檔儲(chǔ)存庫(kù)系統(tǒng)內(nèi)發(fā)生的事件的通知的概念和技術(shù)。通過(guò)對(duì)本文所揭示的技術(shù)的實(shí)現(xiàn),在文檔儲(chǔ)存庫(kù)內(nèi)發(fā)生的事件的通知可被提供給外部系統(tǒng),而不需要向運(yùn)行該文檔儲(chǔ)存庫(kù)的服務(wù)器部署自定義第三方代碼,也不需要在沙箱中執(zhí)行自定義代碼。根據(jù)本文所提出的一方面,提供一種文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng),其包括用于向遠(yuǎn)程事件接收器提供事件的通知的功能。在該文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)外部的計(jì)算機(jī)系統(tǒng)(諸如由第三方擁有、操作或管理的計(jì)算機(jī)系統(tǒng))上執(zhí)行該遠(yuǎn)程事件接收器。為了接收事件的通知,所述遠(yuǎn)程事件接收器向所述文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)注冊(cè)。該遠(yuǎn)程事件接收器可聲明性地注冊(cè),諸如通過(guò)使用可擴(kuò)展標(biāo)記語(yǔ)言(“XML”)文檔來(lái)注冊(cè),該文檔規(guī)定了關(guān)于每個(gè)遠(yuǎn)程事件服務(wù)器的細(xì)節(jié)以及它們想要為其注冊(cè)的通知類型,或可通過(guò)所述文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)所展示的對(duì)象模型來(lái)編程方式地注冊(cè)。其它機(jī)制也可用于針對(duì)通知對(duì)遠(yuǎn)程事件接收器進(jìn)行注冊(cè)。該遠(yuǎn)程事件接收器可注冊(cè)以接收與相關(guān)于文檔儲(chǔ)存庫(kù)的內(nèi)容和/或該文檔儲(chǔ)存庫(kù)的結(jié)構(gòu)而發(fā)生的事件有關(guān)的通知。例如,遠(yuǎn)程事件接收器可針對(duì)以下(并非限制于以下)事件的通知進(jìn)行注冊(cè)文檔儲(chǔ)存庫(kù)中文檔的創(chuàng)建、更新和刪除;該儲(chǔ)存庫(kù)中項(xiàng)目或文檔的登出、登入、取消登出;在該儲(chǔ)存庫(kù)中的項(xiàng)目上附加文件或從該項(xiàng)目移除附件;移動(dòng)該儲(chǔ)存庫(kù)中的項(xiàng)目或文檔;添加、更新或移除該文檔儲(chǔ)存庫(kù)中的元數(shù)據(jù)字段;添加或移除該文檔儲(chǔ)存庫(kù)中的列表和庫(kù);以及在該文檔儲(chǔ)存庫(kù)內(nèi)添加或移除更大的容器,諸如網(wǎng)站和站點(diǎn)集合。該遠(yuǎn)程事件接收器還可注冊(cè)以接收關(guān)于文檔儲(chǔ)存庫(kù)的內(nèi)容、結(jié)構(gòu)或操作發(fā)生的其它類型事件的通知。根據(jù)不同的實(shí)施例,所述遠(yuǎn)程事件接收器可注冊(cè)以同步或異步地接收通知。針對(duì)同步通知進(jìn)行注冊(cè)的遠(yuǎn)程事件接收器在本文中可被稱為“同步遠(yuǎn)程事件接收器”。針對(duì)異步通知進(jìn)行注冊(cè)的遠(yuǎn)程事件接收器在本文中可被稱為“異步遠(yuǎn)程事件接收器”。所述文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)將向同步遠(yuǎn)程事件接收器發(fā)送通知,并隨后在向下一個(gè)遠(yuǎn)程事件接收器提供通知之前等待響應(yīng)。以此方式,同步遠(yuǎn)程事件接收器以串行的形式被有效地呼叫。所述文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)不等待來(lái)自異步遠(yuǎn)程事件接收器的響應(yīng)。以此方式,異步遠(yuǎn)程事件接收器可以并行的形式被呼叫。遠(yuǎn)程事件接收器還可注冊(cè)以在事件發(fā)生前或事件發(fā)生后接收關(guān)于事件的通知。針對(duì)事件發(fā)生前的事件通知進(jìn)行注冊(cè)的遠(yuǎn)程事件接收器在本文中可被稱為“事件前遠(yuǎn)程事件接收器”。針對(duì)事件發(fā)生后的通知進(jìn)行注冊(cè)的遠(yuǎn)程事件接收器在本文中可被稱為“事件后遠(yuǎn)程事件接收器”。在一個(gè)實(shí)施例中,每個(gè)遠(yuǎn)程事件接收器還具有相關(guān)聯(lián)的序列號(hào)。該序列號(hào)指示關(guān)于相同事件注冊(cè)的遠(yuǎn)程事件接收器應(yīng)該接收事件的通知的順序。在文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)上執(zhí)行的本地事件接收器也可具有相關(guān)聯(lián)的序列號(hào)且可以序列順序與遠(yuǎn)程事件接收器進(jìn)行呼叫。當(dāng)文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)確定將發(fā)生事件,該文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)確定是否已注冊(cè)了事件前遠(yuǎn)程事件接收器以接收事件的通知。如果有,則文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)向事件前遠(yuǎn)程事件接收器產(chǎn)生呼叫。該呼叫包括根據(jù)預(yù)先定義的模式格式化的數(shù)據(jù)并提供要發(fā)生事件的通知。該呼叫還可包括與事件相關(guān)聯(lián)的特性,諸如定義事件之前在文檔儲(chǔ)存庫(kù)中項(xiàng)目各方面的“之前”特性,和/或包括定義在事件已完成之后的項(xiàng)目各方面的特性的“之后”特性。該呼叫可實(shí)現(xiàn)為web服務(wù)呼叫或以其它方式實(shí)現(xiàn)。如果有任何事件前遠(yuǎn)程事件接收器已針對(duì)同步通知進(jìn)行注冊(cè),則文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)在呼叫下一個(gè)遠(yuǎn)程事件接收器之前等待來(lái)自遠(yuǎn)程事件接收器的響應(yīng)(諸如web服務(wù)響應(yīng))。在該響應(yīng)中,同步事件前遠(yuǎn)程事件接收器可指示應(yīng)取消所述事件,此情況下刪除事件而不提供額外通知,或可修改與該事件相關(guān)聯(lián)的之后特性。如果同步事件前遠(yuǎn)程事件接收器不提供響應(yīng),則文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)可能根據(jù)實(shí)施例取消或繼續(xù)所述事件。一旦所有的事件前遠(yuǎn)程事件接收器已被通知了所述事件,則與該事件相關(guān)聯(lián)的所有特性將保持且該事件完成。一旦該事件完成了,則文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)確定是否有任何事件后遠(yuǎn)程事件接收器已被注冊(cè)。如果有,則文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)以序列號(hào)順序向事件后遠(yuǎn)程事件接收器產(chǎn)生呼叫。同步事件后遠(yuǎn)程事件接收器不被允許取消事件,也不被允許修改與事件相關(guān)聯(lián)的之后特性,因?yàn)樵撌录呀?jīng)發(fā)生了且該之后特性已經(jīng)被提交了。本發(fā)明內(nèi)容并不旨在標(biāo)識(shí)所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在使用本發(fā)明內(nèi)容來(lái)限制所要求保護(hù)的主題的范圍。此外,所要求保護(hù)的主題不限于解決在本公開的任一部分中所提及的任何或所有缺點(diǎn)的實(shí)現(xiàn)。
圖1是一網(wǎng)絡(luò)示意圖,其示出了在本文所公開的不同實(shí)施例中所使用的文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)和第三方計(jì)算系統(tǒng);圖2是一數(shù)據(jù)結(jié)構(gòu)圖,其示出了本文所公開的數(shù)個(gè)機(jī)制的各個(gè)方面,通過(guò)所述機(jī)制,在第三方計(jì)算系統(tǒng)上執(zhí)行的遠(yuǎn)程事件接收器可注冊(cè)以接收在文檔儲(chǔ)存庫(kù)系統(tǒng)內(nèi)發(fā)生的事件的通知;圖3是一數(shù)據(jù)結(jié)構(gòu)圖,其示出了在本文公開的實(shí)施例中使用的遠(yuǎn)程事件特性數(shù)據(jù)結(jié)構(gòu);圖4是一數(shù)據(jù)結(jié)構(gòu)圖,其示出了在本文公開的實(shí)施例中使用的遠(yuǎn)程事件結(jié)果數(shù)據(jù)結(jié)構(gòu);圖5A-5B是流程圖,其示出了本文所公開的一個(gè)例程的各個(gè)方面,該例程根據(jù)本文所公開的一個(gè)實(shí)施例向一個(gè)或多個(gè)遠(yuǎn)程事件接收器提供儲(chǔ)存庫(kù)事件的通知;圖6是一流程圖,其示出了根據(jù)本文所公開的一個(gè)實(shí)施例的一個(gè)例程的各個(gè)方面,該例程用于注冊(cè)遠(yuǎn)程事件接收器以及用于在遠(yuǎn)程事件接收器處理儲(chǔ)存庫(kù)事件的通知;以及圖7是一計(jì)算機(jī)體系結(jié)構(gòu)圖,其示出了用于能夠?qū)崿F(xiàn)本文所提出的各種實(shí)施例的計(jì)算系統(tǒng)的說(shuō)明性計(jì)算機(jī)硬件和軟件體系結(jié)構(gòu)。
具體實(shí)施例方式以下詳細(xì)的描述涉及用于向外部系統(tǒng)提供在文檔儲(chǔ)存庫(kù)內(nèi)發(fā)生的事件的通知的概念和技術(shù)。如上面所簡(jiǎn)要討論地,通過(guò)使用本文所公開的技術(shù),在文檔儲(chǔ)存庫(kù)系統(tǒng)內(nèi)發(fā)生的事件的通知可被提供給外部系統(tǒng),而不需要在文檔儲(chǔ)存庫(kù)系統(tǒng)上執(zhí)行第三方代碼。關(guān)于這些特征和其他特征的更多細(xì)節(jié)將在以下參考圖1-7來(lái)提供。盡管在結(jié)合計(jì)算機(jī)系統(tǒng)上的操作系統(tǒng)和多種程序的執(zhí)行而執(zhí)行的程序模塊的一般上下文中呈現(xiàn)了本文中所描述的主題,但本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,其他實(shí)現(xiàn)可結(jié)合其他類型的程序模塊來(lái)執(zhí)行。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、組件、數(shù)據(jù)結(jié)構(gòu)、以及其他類型的結(jié)構(gòu)。另外,本領(lǐng)域技術(shù)人員將理解,可用其他計(jì)算機(jī)系統(tǒng)配置來(lái)實(shí)施本文中所描述的主題,這些計(jì)算機(jī)系統(tǒng)配置包括手持式設(shè)備、多處理器系統(tǒng)、基于微處理器或可編程的消費(fèi)電子產(chǎn)品、小型計(jì)算機(jī)、大型計(jì)算機(jī)等。在以下詳細(xì)描述中,參考形成詳細(xì)描述的一部分并為例示具體實(shí)施例或示例而示出的附圖?,F(xiàn)在參考附圖,將描述用于向外部系統(tǒng)提供文檔儲(chǔ)存庫(kù)系統(tǒng)內(nèi)發(fā)生的事件的通知的計(jì)算系統(tǒng)和方法的各方面,其中貫穿若干附圖中相同的標(biāo)號(hào)表示相同的元素。圖1是一網(wǎng)絡(luò)示意圖,其示出了在本文所公開的不同實(shí)施例中所使用的文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)102和第三方計(jì)算系統(tǒng)108。具體地,圖1示出了環(huán)境100,其包括文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)102。文檔儲(chǔ)存庫(kù)系統(tǒng)102是被配置為執(zhí)行文檔儲(chǔ)存庫(kù)應(yīng)用程序104的一個(gè)或多個(gè)計(jì)算系統(tǒng)。文檔儲(chǔ)存庫(kù)應(yīng)用程序104提供用于創(chuàng)建并使用文檔儲(chǔ)存庫(kù)的功能。如本領(lǐng)域中所公知地,文檔儲(chǔ)存庫(kù)提供用于在該文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)102的各用戶之間存儲(chǔ)、訪問(wèn)及共享文檔和可能的其他類型的項(xiàng)目的功能。在這個(gè)方面,文檔儲(chǔ)存庫(kù)應(yīng)用程序104可提供功能用于允許文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)102的用戶創(chuàng)建、更新及刪除在文檔儲(chǔ)存庫(kù)中的文檔和其它類型的項(xiàng)目。用戶還可被允許從文檔儲(chǔ)存庫(kù)應(yīng)用程序104提供的文檔儲(chǔ)存庫(kù)對(duì)項(xiàng)目或文檔進(jìn)行登出、登入或取消登出。用戶還可被允許對(duì)文檔儲(chǔ)存庫(kù)中的項(xiàng)目附加文件或從文檔儲(chǔ)存庫(kù)中的項(xiàng)目移除附件、移動(dòng)文檔儲(chǔ)存庫(kù)中的項(xiàng)目或文檔、以及添加、更新或移除文檔儲(chǔ)存庫(kù)中的元數(shù)據(jù)字段。用戶還可添加或移除文檔儲(chǔ)存庫(kù)中的列表或庫(kù),并且添加或移除更大的容器,諸如由文檔儲(chǔ)存庫(kù)應(yīng)用程序104提供的網(wǎng)站和站點(diǎn)集合。如本文中將更詳細(xì)描述地,文檔儲(chǔ)存庫(kù)應(yīng)用程序104被配置為提供正如上面所描述的多種類型事件的通知。文檔儲(chǔ)存庫(kù)應(yīng)用程序104還可提供在文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)102發(fā)生的、關(guān)于文檔儲(chǔ)存庫(kù)應(yīng)用程序104所提供的文檔儲(chǔ)存庫(kù)的其它類型事件的通知。根據(jù)各個(gè)實(shí)施例,文檔儲(chǔ)存庫(kù)應(yīng)用程序104被配置為向遠(yuǎn)程事件接收器106提供事件的通知。遠(yuǎn)程事件接收器106是在文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)102外部的計(jì)算系統(tǒng)(諸如第三方計(jì)算系統(tǒng)108)上執(zhí)行的軟件元件。第三方計(jì)算系統(tǒng)108可由除操作文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)102的實(shí)體以外的實(shí)體擁有、操作或控制。為了提供如本文所描述的通知,文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)102可通過(guò)一個(gè)或多個(gè)網(wǎng)絡(luò)114連接至第三方計(jì)算系統(tǒng)108。所述網(wǎng)絡(luò)可以是局域網(wǎng)、廣域網(wǎng)或其它類型的可在文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)102和第三方計(jì)算系統(tǒng)108之間進(jìn)行數(shù)據(jù)通信的網(wǎng)絡(luò)。應(yīng)該理解,雖然圖1僅示出了單獨(dú)一個(gè)網(wǎng)絡(luò)114,但可利用許多這樣的網(wǎng)絡(luò)來(lái)在文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)102和第三方計(jì)算系統(tǒng)108之間創(chuàng)建合適的數(shù)據(jù)通信。為了接收在文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)102發(fā)生的事件的通知,每個(gè)遠(yuǎn)程事件接收器106必須向文檔儲(chǔ)存庫(kù)應(yīng)用程序104注冊(cè)。在一個(gè)實(shí)施例中,執(zhí)行遠(yuǎn)程事件接收器注冊(cè)模塊110,以向文檔儲(chǔ)存庫(kù)應(yīng)用程序104注冊(cè)遠(yuǎn)程事件接收器106。根據(jù)各個(gè)實(shí)施例,遠(yuǎn)程事件接收器106可聲明性地注冊(cè),諸如通過(guò)使用XML文檔來(lái)注冊(cè),該文檔規(guī)定了關(guān)于遠(yuǎn)程事件接收器106和其想要為之注冊(cè)的通知的類型的細(xì)節(jié)。在其它實(shí)施例中,遠(yuǎn)程事件接收器注冊(cè)模塊110通過(guò)文檔儲(chǔ)存庫(kù)應(yīng)用程序104展示的對(duì)象模型來(lái)編程方式地注冊(cè)遠(yuǎn)程事件接收器 106。根據(jù)各個(gè)實(shí)施例,遠(yuǎn)程事件接收器106可注冊(cè)以接收與相關(guān)于文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)102提供的文檔儲(chǔ)存庫(kù)的內(nèi)容和/或文檔儲(chǔ)存庫(kù)的結(jié)構(gòu)所發(fā)生的事件有關(guān)的通知。如上面所討論地,遠(yuǎn)程事件接收器106可針對(duì)以下(并非限制于以下)事件的通知進(jìn)行注冊(cè)文檔儲(chǔ)存庫(kù)中文檔的創(chuàng)建、更新和刪除;該儲(chǔ)存庫(kù)中項(xiàng)目或文檔的登出、登入、取消登出;在該儲(chǔ)存庫(kù)中的項(xiàng)目上附加文件或從該項(xiàng)目移除附件;移動(dòng)該儲(chǔ)存庫(kù)中的項(xiàng)目或文檔;添力口、更新或移除該文檔儲(chǔ)存庫(kù)中的元數(shù)據(jù)字段;添加或移除該文檔儲(chǔ)存庫(kù)中的列表和庫(kù);以及在該文檔儲(chǔ)存庫(kù)內(nèi)添加或移除更大的容器,諸如網(wǎng)站和站點(diǎn)集合。遠(yuǎn)程事件接收器106還可注冊(cè)以接收關(guān)于文檔儲(chǔ)存庫(kù)的內(nèi)容、結(jié)構(gòu)或操作所發(fā)生的其它類型事件的通知。
同樣如上面所簡(jiǎn)要描述地,遠(yuǎn)程事件接收器106可注冊(cè)以同步或異步地接收通知。如將在下文中更詳細(xì)描述地,在文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)102內(nèi)執(zhí)行的遠(yuǎn)程事件接收器呼叫器112將向同步遠(yuǎn)程事件接收器106發(fā)送通知,并隨后在向另一個(gè)遠(yuǎn)程事件接收器提供通知之前等待響應(yīng)。如果遠(yuǎn)程事件接收器106針對(duì)異步通知進(jìn)行注冊(cè),則遠(yuǎn)程事件接收器呼叫器112在呼叫另一個(gè)遠(yuǎn)程事件接收器之前將不會(huì)等待來(lái)自遠(yuǎn)程事件接收器106的響應(yīng)。遠(yuǎn)程事件接收器106還可注冊(cè)以接收事件發(fā)生前或事件發(fā)生后的通知。同步事件前遠(yuǎn)程事件接收器也可被允許取消事件的發(fā)生或改變與該事件相關(guān)聯(lián)的特性。關(guān)于此功能的更多細(xì)節(jié)將在以下提供。當(dāng)遠(yuǎn)程事件接收器106向文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)102注冊(cè)時(shí),還規(guī)定了序列號(hào)。如上面所簡(jiǎn)要討論地,該序列號(hào)指示針對(duì)相同事件的通知進(jìn)行注冊(cè)的遠(yuǎn)程事件接收器106應(yīng)該接收通知的順序。雖然在圖1中未示出,可在文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)102上執(zhí)行本地事件接收器。該本地事件接收器還可包括序列號(hào),利用該序列號(hào)與遠(yuǎn)程事件接收器106彼此按序地執(zhí)行本地事件接收器。將在以下參考圖2提供關(guān)于遠(yuǎn)程事件接收器106向文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)102注冊(cè)的附加細(xì)節(jié)?!┻h(yuǎn)程事件接收器106已向文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)102針對(duì)事件的通知進(jìn)行了注冊(cè),則遠(yuǎn)程事件接收器106有資格開始接收通知。當(dāng)文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)102確定將要發(fā)生事件,文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)102確定是否已注冊(cè)了事件前遠(yuǎn)程事件接收器106以接收事件的通知。如果有,則遠(yuǎn)程事件接收器呼叫器112向注冊(cè)的事件前遠(yuǎn)程事件接收器106產(chǎn)生呼叫。在一個(gè)實(shí)施例中,該呼叫為至遠(yuǎn)程事件接收器106的Web服務(wù)呼叫116,其包括遠(yuǎn)程事件特性118。遠(yuǎn)程事件特性118定義與事件相關(guān)聯(lián)的各種特性,諸如定義事件之前在文檔儲(chǔ)存庫(kù)中項(xiàng)目或文檔的各方面的之前特性,和/或包括定義在事件已完成之后的項(xiàng)目或文檔的各方面的特性的之后特性。關(guān)于遠(yuǎn)程事件特性118的更多細(xì)節(jié)將在以下參考圖3來(lái)提供。在一個(gè)實(shí)施例中,利用簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(“SOAP”)來(lái)實(shí)現(xiàn)Web服務(wù)呼叫116。然而,應(yīng)該理解,也可利用其它類型的Web服務(wù)呼叫。還應(yīng)該理解,在其它實(shí)施例中,可利用其它類型的網(wǎng)絡(luò)消息和協(xié)議來(lái)向遠(yuǎn)程事件接收器106提供遠(yuǎn)程事件特性118。如果遠(yuǎn)程事件接收器106已針對(duì)異步通知進(jìn)行了注冊(cè),則遠(yuǎn)程事件接收器呼叫器112將等待來(lái)自遠(yuǎn)程事件接收器106的Web服務(wù)響應(yīng)120。在遠(yuǎn)程事件接收器呼叫器112等待Web服務(wù)響應(yīng)120的同時(shí),沒有額外的遠(yuǎn)程事件接收器106將被呼叫。如圖1中所示,Web服務(wù)響應(yīng)120包括遠(yuǎn)程事件結(jié)果122。遠(yuǎn)程事件結(jié)果122是根據(jù)預(yù)先定義的模式格式化的數(shù)據(jù),其向文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)102指示事件應(yīng)該被允許繼續(xù)還是應(yīng)該被取消。另外,遠(yuǎn)程事件結(jié)果122可指示與事件相關(guān)聯(lián)的應(yīng)被修改的特性。例如,遠(yuǎn)程事件結(jié)果122可規(guī)定事件的改變的之后特性,該特性應(yīng)該由文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)102所保持。如果同步事件前遠(yuǎn)程事件接收器106不提供響應(yīng)120,則根據(jù)本文所公開的各個(gè)實(shí)施例,文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)102可選擇取消或繼續(xù)所述事件。關(guān)于遠(yuǎn)程事件結(jié)果122的更多細(xì)節(jié)將在以下參考圖4來(lái)提供。一旦所有注冊(cè)的事件前遠(yuǎn)程事件接收器106已被呼叫,則與該事件相關(guān)聯(lián)的之后特性(包括由同步遠(yuǎn)程事件接收器106修改的任何特性)被保持,且允許該事件完成。一旦該事件完成,則文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)102確定是否有任何事件后遠(yuǎn)程事件接收器已被注冊(cè)。如果有,則遠(yuǎn)程事件接收器呼叫器112以序列號(hào)的順序向事件后遠(yuǎn)程事件接收器106產(chǎn)生呼叫。如上面所簡(jiǎn)要提到地,同步事件后遠(yuǎn)程事件接收器不被允許取消事件,也不被允許修改與事件相關(guān)聯(lián)的之后特性,因?yàn)樵撌录呀?jīng)完成了。關(guān)于參考圖1如上所述的過(guò)程的其他細(xì)節(jié)將在以下參考圖2-6來(lái)提供。圖2是一數(shù)據(jù)結(jié)構(gòu)圖,其示出了本文所公開的數(shù)個(gè)機(jī)制的各個(gè)方面,通過(guò)所述機(jī)制,在第三方計(jì)算系統(tǒng)108上執(zhí)行的遠(yuǎn)程事件接收器106可注冊(cè)以接收在文檔儲(chǔ)存庫(kù)系統(tǒng)102內(nèi)發(fā)生的事件的通知。例如,根據(jù)本文所公開的各個(gè)實(shí)施例,文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)102可提供聲明性的用于注冊(cè)遠(yuǎn)程事件接收器106的對(duì)象模型、Web服務(wù)和基于應(yīng)用編程界面的機(jī)制。在圖2中示出了這些機(jī)制中的若干個(gè)。應(yīng)該理解,不管用于注冊(cè)遠(yuǎn)程事件接收器106的機(jī)制如何,在注冊(cè)時(shí)都提供某個(gè)信息。例如,根據(jù)各個(gè)實(shí)施例,提供關(guān)于如下的信息每個(gè)遠(yuǎn)程事件接收器106想要被通知的事件、當(dāng)事件發(fā)生時(shí)要被呼叫的遠(yuǎn)程事件接收器106的網(wǎng)絡(luò)地址、注冊(cè)的范圍(諸如特定對(duì)象實(shí)例的身份)或遠(yuǎn)程事件接收器106想要為之接收事件的文檔儲(chǔ)存庫(kù)內(nèi)的范圍、應(yīng)該同步還是異步提供通知的指示、以及當(dāng)針對(duì)同一個(gè)事件注冊(cè)多個(gè)接收器時(shí)指示遠(yuǎn)程事件接收器106想要接收所述事件的優(yōu)先權(quán)。根據(jù)一個(gè)實(shí)施例,在遠(yuǎn)程事件接收器注冊(cè)XML文件202中提供如上所述的信息,該遠(yuǎn)程事件接收器注冊(cè)XML文件202可被聲明性地定義并被提供給文檔儲(chǔ)存庫(kù)應(yīng)用程序104。在其它實(shí)施例中,該信息由遠(yuǎn)程事件接收器注冊(cè)模塊110通過(guò)文檔儲(chǔ)存庫(kù)應(yīng)用程序104所提供的事件接收器注冊(cè)對(duì)象模型206來(lái)提供。也可利用其它的機(jī)制來(lái)向文檔儲(chǔ)存庫(kù)應(yīng)用程序104提供上述的信息,以便針對(duì)通知對(duì)遠(yuǎn)程事件接收器106進(jìn)行注冊(cè)。圖2中所示的用于聲明性地注冊(cè)一個(gè)實(shí)施例中的遠(yuǎn)程事件接收器106的遠(yuǎn)程事件接收器注冊(cè)XML202包括數(shù)個(gè)元素204A-204F。元素204A被用于規(guī)定正被注冊(cè)的遠(yuǎn)程事件接收器106的名稱。元素204B被用于規(guī)定正被注冊(cè)的遠(yuǎn)程事件接收器106的類型。如上面所簡(jiǎn)要討論地,事件類型元素204B可被用于針對(duì)在事件發(fā)生之前的通知進(jìn)行注冊(cè)或針對(duì)在事件發(fā)生之后的通知進(jìn)行注冊(cè)。例如,事件類型元素204B的值“項(xiàng)目更新中”注冊(cè)遠(yuǎn)程事件接收器106,從而接收恰在更新文檔儲(chǔ)存庫(kù)中的項(xiàng)目之前的通知。類似地,值“項(xiàng)目已更新”注冊(cè)遠(yuǎn)程事件接收器106,從而接收在項(xiàng)目已在文檔儲(chǔ)存庫(kù)中更新之后的通知??蔀槭录愋驮?04B規(guī)定類似的值,從而關(guān)于在文檔儲(chǔ)存庫(kù)中添加、更新、刪除、登入、登出和取消登出項(xiàng)目之前或之后的通知注冊(cè)遠(yuǎn)程事件接收器106。也可為事件類型元素204B規(guī)定值,以接收在為項(xiàng)目添加或刪除附件之前或之后和/或當(dāng)移動(dòng)文檔儲(chǔ)存庫(kù)中的文件時(shí)的通知。也可為事件類型元素204B規(guī)定值,以接收在添加、更新或刪除列表事件之前或之后、或在添加或刪除列表之前或之后的通知。也可為事件類型元素204B規(guī)定值,以接收在刪除、移動(dòng)或添加站點(diǎn)或Web之前或之后的通知。應(yīng)該理解,上述事件類型元素204B的值僅僅是示例性的,還可為事件類型元素204B規(guī)定其它的值以接收其它類型事件的通知。如上面所討論地,遠(yuǎn)程事件接收器106可針對(duì)文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)102內(nèi)發(fā)生的事件的同步或異步通知進(jìn)行注冊(cè)。利用同步類型元素204C來(lái)規(guī)定遠(yuǎn)程事件接收器106應(yīng)該被同步通知還是異步通知。還如上所述地,遠(yuǎn)程事件接收器106可以序列號(hào)的順序被呼口4??稍谛蛄刑?hào)元素204D中規(guī)定特定遠(yuǎn)程事件接收器106的序列號(hào)。利用遠(yuǎn)程事件接收器地址元素204E來(lái)規(guī)定當(dāng)由事件類型元素204B規(guī)定的事件發(fā)生時(shí)將被呼叫的遠(yuǎn)程事件接收器106的網(wǎng)絡(luò)地址??墒褂媒y(tǒng)一資源定位符(“URL”)、實(shí)際網(wǎng)絡(luò)地址或以另一種方式來(lái)規(guī)定該網(wǎng)絡(luò)地址。利用范圍元素204F來(lái)規(guī)定將要被提供通知的注冊(cè)的范圍。例如,在一個(gè)實(shí)施例中,利用范圍元素204F來(lái)規(guī)定遠(yuǎn)程事件接收器106想要為之接收通知的文檔儲(chǔ)存庫(kù)內(nèi)的特定對(duì)象實(shí)例或范圍。應(yīng)該理解,上述遠(yuǎn)程事件接收器注冊(cè)XML202的內(nèi)容僅僅是示例性的,在遠(yuǎn)程事件接收器106的注冊(cè)期間也可向文檔儲(chǔ)存庫(kù)應(yīng)用程序104提供其它數(shù)據(jù)。還應(yīng)理解,還可利用除本文所述機(jī)制以外的其它機(jī)制來(lái)向文檔儲(chǔ)存庫(kù)應(yīng)用程序104注冊(cè)遠(yuǎn)程事件接收器106。圖3是一數(shù)據(jù)結(jié)構(gòu)圖,其示出了在本文公開的實(shí)施例中使用的遠(yuǎn)程事件特性數(shù)據(jù)結(jié)構(gòu)118的配置。如上面參考圖1所簡(jiǎn)要描述地,文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)102被配置為通過(guò)對(duì)遠(yuǎn)程事件接收器106進(jìn)行Web服務(wù)呼叫116來(lái)向遠(yuǎn)程事件接收器106通知事件的發(fā)生。還如上面所簡(jiǎn)要討論地,Web服務(wù)呼叫116包括本文所公開的一個(gè)實(shí)施例中的遠(yuǎn)程事件特性118。圖3示出了用于本文所公開的一個(gè)實(shí)施例中的遠(yuǎn)程事件特性118的一個(gè)實(shí)例模式。如圖3中所示,遠(yuǎn)程事件特性118包括事件類型元素302A。遠(yuǎn)程事件特性118還將根據(jù)已發(fā)生或?qū)⒁l(fā)生的事件的類型包括項(xiàng)目事件特性302B、列表事件特性302C或Web事件特性302D中的一個(gè)。當(dāng)事件相關(guān)于項(xiàng)目將提供項(xiàng)目事件特性302B,當(dāng)事件相關(guān)于列表將提供列表事件特性302C,以及當(dāng)事件相關(guān)于Web將提供Web事件特性302D。事件類型元素302A規(guī)定了已發(fā)生事件的類型。例如,可提供值310A用于指示在前事件已發(fā)生,或可提供值310B用于指示在后事件已發(fā)生。例如,諸如前文所述的那些關(guān)于事件類型元素204B的值可在元素302A中被規(guī)定。項(xiàng)目事件特性302B可包括之前特性320A和之后特性320B。如上面所簡(jiǎn)要討論地,之前特性320A定義在已進(jìn)行通知的事件之前在文檔儲(chǔ)存庫(kù)中的項(xiàng)目的各個(gè)方面。例如,之前特性320A可規(guī)定在對(duì)文檔進(jìn)行修改之前與文檔相關(guān)聯(lián)的特性。之后特性320B定義在事件已完成之后的項(xiàng)目的各個(gè)方面。例如,之后特性320B可規(guī)定在對(duì)文檔的修改已發(fā)生之后與文檔相關(guān)聯(lián)的特性將是什么。如以下將更詳細(xì)描述地,同步事件前遠(yuǎn)程事件接收器106可規(guī)定一組修改的之后特性320B并向文檔儲(chǔ)存庫(kù)應(yīng)用程序104返回該特性。列表標(biāo)識(shí)符元素320C標(biāo)識(shí)已為之產(chǎn)生通知的項(xiàng)目為其成員的列表。列表項(xiàng)目標(biāo)識(shí)符元素320D標(biāo)識(shí)已接收通知的項(xiàng)目。列表標(biāo)題元素320E提供已為之產(chǎn)生通知的項(xiàng)目所在的列表的標(biāo)題。以下參考表I提供項(xiàng)目事件特性元素302B的一個(gè)示例性模式。應(yīng)該理解,該模式僅僅是示例性的,還可利用其它的數(shù)據(jù)結(jié)構(gòu)。
權(quán)利要求
1.一種用于提供在文檔儲(chǔ)存庫(kù)內(nèi)發(fā)生的事件的通知的計(jì)算機(jī)實(shí)現(xiàn)的方法,該方法包括執(zhí)行以下計(jì)算機(jī)實(shí)現(xiàn)的操作 確定在文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)(102)內(nèi)將發(fā)生事件; 響應(yīng)于確定將發(fā)生事件,確定是否一個(gè)或多個(gè)遠(yuǎn)程事件接收器(106)已針對(duì)所述事件發(fā)生之前的事件的通知進(jìn)行了注冊(cè); 響應(yīng)于確定一個(gè)或多個(gè)遠(yuǎn)程事件接收器(106)已經(jīng)針對(duì)所述事件發(fā)生之前的事件通知進(jìn)行了注冊(cè),向已針對(duì)所述事件發(fā)生之前的事件通知進(jìn)行注冊(cè)的所述遠(yuǎn)程事件接收器(106)產(chǎn)生web服務(wù)呼叫(116),該web服務(wù)呼叫(116)提供將發(fā)生所述事件的通知;確定所述事件已發(fā)生; 響應(yīng)于確定所述事件已發(fā)生,確定是否一個(gè)或多個(gè)遠(yuǎn)程事件接收器(106)已經(jīng)針對(duì)所述事件發(fā)生之后的事件通知進(jìn)行了注冊(cè);以及 響應(yīng)于確定一個(gè)或多個(gè)遠(yuǎn)程事件接收器(106)已經(jīng)針對(duì)所述事件發(fā)生之后的事件通知進(jìn)行了注冊(cè),向已針對(duì)所述事件發(fā)生之后的事件通知進(jìn)行注冊(cè)的所述遠(yuǎn)程事件接收器(106)產(chǎn)生web服務(wù)呼叫(116),該web服務(wù)呼叫(116)提供所述事件已發(fā)生的通知。
2.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,所述一個(gè)或多個(gè)遠(yuǎn)程事件接收器中的每一個(gè)都具有相關(guān)聯(lián)的序列號(hào),且其中以序列號(hào)的順序?qū)λ鲞h(yuǎn)程事件接收器進(jìn)行所述web服務(wù)呼叫。
3.如權(quán)利要求2所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,所述一個(gè)或多個(gè)遠(yuǎn)程事件接收器中的每一個(gè)都向所述文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)注冊(cè),以同步或異步地接收所述通知。
4.如權(quán)利要求3所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,所述一個(gè)或多個(gè)遠(yuǎn)程事件接收器中的每一個(gè)都被進(jìn)一步向所述文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)注冊(cè),以在所述事件發(fā)生之前或在所述事件發(fā)生之后接收所述通知。
5.如權(quán)利要求4所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,還包括 對(duì)于每一個(gè)已注冊(cè)以同步地和在所述事件發(fā)生之前接收通知的遠(yuǎn)程事件接收器,在對(duì)下一個(gè)遠(yuǎn)程事件接收器產(chǎn)生通知之前確定是否已響應(yīng)于對(duì)所述遠(yuǎn)程事件接收器的web服務(wù)呼叫而從所述遠(yuǎn)程事件接收器接收web服務(wù)響應(yīng); 響應(yīng)于從所述遠(yuǎn)程事件接收器接收web服務(wù)響應(yīng),確定所述web服務(wù)響應(yīng)是否指示所述事件應(yīng)被取消;以及 響應(yīng)于確定所述事件應(yīng)被取消,取消所述事件并且不向任何額外的遠(yuǎn)程事件接收器提供所述事件的通知。
6.一種其上存儲(chǔ)有計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可執(zhí)行指令在由計(jì)算機(jī)執(zhí)行時(shí)致使所述計(jì)算機(jī) 注冊(cè)事件前遠(yuǎn)程事件接收器(106),以在事件發(fā)生之前接收在文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)(102)所發(fā)生的事件的通知; 注冊(cè)事件后遠(yuǎn)程事件接收器(106),以在事件發(fā)生之后接收在所述文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)(102)所發(fā)生的所述事件的通知; 確定所述事件將發(fā)生; 響應(yīng)于確定所述事件將發(fā)生,向所述事件前遠(yuǎn)程事件接收器(106)產(chǎn)生web服務(wù)呼叫(116)以提供所述事件將發(fā)生的通知;確定所述事件已經(jīng)發(fā)生;以及 響應(yīng)于確定所述事件已經(jīng)發(fā)生,向所述事件后遠(yuǎn)程事件接收器(106)產(chǎn)生web服務(wù)呼叫(116)以提供所述事件已經(jīng)發(fā)生的通知。
7.如權(quán)利要求6所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,所述web服務(wù)呼叫包括與所述事件相關(guān)聯(lián)的之前特性和之后特性。
8.如權(quán)利要求7所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,所述事件前遠(yuǎn)程事件接收器包括同步的事件前遠(yuǎn)程事件接收器。
9.一種文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng),被配置為提供在該文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)內(nèi)發(fā)生的事件的通知,所述文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)包括 一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng),其被配置為執(zhí)行遠(yuǎn)程事件接收器呼叫器,該遠(yuǎn)程事件接收器呼叫器被配置為向一個(gè)或多個(gè)注冊(cè)的同步或異步遠(yuǎn)程事件接收器提供在所述文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)發(fā)生的事件的通知,所述遠(yuǎn)程事件接收器在所述文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)外部的計(jì)算機(jī)系統(tǒng)上執(zhí)行。
10.如權(quán)利要求9所述的系統(tǒng),其特征在于,所述遠(yuǎn)程事件接收器包括事件前遠(yuǎn)程事件接收器和事件后接收器。
全文摘要
本發(fā)明涉及向外部系統(tǒng)提供文檔儲(chǔ)存庫(kù)事件的通知。遠(yuǎn)程事件接收器可向文檔儲(chǔ)存庫(kù)計(jì)算系統(tǒng)注冊(cè),以接收在文檔儲(chǔ)存庫(kù)發(fā)生的事件的通知。該遠(yuǎn)程事件接收器可注冊(cè)以同步地接收通知,由此該遠(yuǎn)程事件接收器可向事件發(fā)生之前的通知提供響應(yīng),或異步地接收通知,由此該遠(yuǎn)程事件接收器不提供響應(yīng)。同步遠(yuǎn)程事件接收器還可響應(yīng)于通知規(guī)定應(yīng)該取消所述事件或規(guī)定應(yīng)該被改變的特性。遠(yuǎn)程事件接收器可以是接收事件發(fā)生前的通知的事件前接收器或接收事件后的通知的事件后接收器。當(dāng)在文檔儲(chǔ)存庫(kù)將發(fā)生事件時(shí),向事件前遠(yuǎn)程事件接收器提供通知。一旦事件已發(fā)生,則向事件后遠(yuǎn)程事件接收器提供通知。
文檔編號(hào)G06F17/30GK103034699SQ20121051774
公開日2013年4月10日 申請(qǐng)日期2012年12月5日 優(yōu)先權(quán)日2011年12月6日
發(fā)明者R·M·霍華德, J·C·常, 朱韶峰, N·科哈芮斯瓦蘭, E·艾登 申請(qǐng)人:微軟公司