專利名稱:托管的計算機環(huán)境中的虛擬對象間接化的制作方法
技術(shù)領(lǐng)域:
本申請涉及電子內(nèi)容的基于網(wǎng)絡(luò)的遞送。
背景技術(shù):
宏是可以在一個或多個計算機應(yīng)用內(nèi)部執(zhí)行、以便提供與那些應(yīng)用的增強且自動的交互性的指令集,其中宏的至少一部分代表在其他情況下可能由應(yīng)用的用戶手動采取的步驟。例如,宏可以編寫為根據(jù)電子表格應(yīng)用中的某些數(shù)字計算值以及將該值拷貝到桌面計算機上的相關(guān)文字處理應(yīng)用。用戶可以向該宏指派“熱鍵”組合,使得該宏可以由用戶通過簡單地按下熱鍵組合來運行。作為另一示例,宏也可以編寫為引起某些電子消息(例如, 來自配偶、客戶或老板的電子消息)在重要性方面得到提升,使得其能夠更容易地被計算設(shè)備的用戶看到。一個熟悉的基于宏的系統(tǒng)是用于MICROSOFT OFFICE生產(chǎn)套件的應(yīng)用的 Visual Basic。
發(fā)明內(nèi)容
本申請討論了用于在托管的計算系統(tǒng)(也稱為“云”)中創(chuàng)建和使用宏的系統(tǒng)和技術(shù)。宏可以存儲在宏服務(wù)器子系統(tǒng)中,并可從宏服務(wù)器子系統(tǒng)執(zhí)行,而不是從客戶端設(shè)備執(zhí)行,由此允許宏容易地在用戶之間共享,因為所有合格的用戶可以從很多地方訪問到宏, 只要用戶可以聯(lián)網(wǎng)并提供自己的憑證即可。此外,宏可以容易地訪問多個應(yīng)用和服務(wù),無論是托管的計算系統(tǒng)提供的,還是與托管的計算機系統(tǒng)分離的第三方系統(tǒng)提供的。這種服務(wù)可以包括提供關(guān)于各種用戶位置的信息(例如,通過用戶移動設(shè)備上的GPS確定的信息) 的服務(wù);提供新聞和天氣供給的服務(wù);以及其他這種服務(wù)。應(yīng)用可以包括例如電子郵件和其他消息收發(fā)應(yīng)用、生產(chǎn)力應(yīng)用(諸如,電子表格和文字處理器)、地圖應(yīng)用和可以在單個呈現(xiàn)中一起呈現(xiàn)的各種應(yīng)用的混搭(其可以由用戶訪問,甚至可以由用戶開發(fā),以便提供來自宏的定制輸出)??梢越?jīng)由使用web瀏覽器顯示的一個或多個web頁面來向用戶呈現(xiàn)應(yīng)用。該系統(tǒng)和技術(shù)也可以提供宏的記錄,其中用戶可以啟用宏記錄器,以及該記錄器可以追蹤用戶在計算機上的動作以及將這些動作變成宏代碼,使得在用戶運行該宏時的稍后時間,可以自動地重復(fù)這些動作。在多個不同的應(yīng)用將由宏進行控制以及多個服務(wù)將由宏進行訪問的情況下,可以提供服務(wù)接口,使得宏程序員可以使用單個宏語言來與所有各種服務(wù)和應(yīng)用通信。服務(wù)接口可以將命令、參數(shù)、指令、數(shù)據(jù)和其他項目從一個語言轉(zhuǎn)譯成另一語言,反之亦然,以便用作保護程序員的抽象層的形式。接口可以通過生成宏需要與之通信的每個服務(wù)的對象并定義用于每個對象的訪問方法來進行操作。可以向?qū)ο筇峁┌踩b器,以阻止惡意的或隨意的代碼不必要地訪問系統(tǒng)資源;以及向?qū)ο筇峁┡漕~強制實施層,其避免對宏的過度使用或者對服務(wù)的過度訪問(例如,經(jīng)由病毒、僵尸網(wǎng)絡(luò)或類似機制)。宏可以訪問的第三方服務(wù)可以包括SOAP服務(wù)或其他類似服務(wù),其可以從與提供該服務(wù)的域分離的域進行訪問,并且提供用于通過因特網(wǎng)共享信息的已知機制。例如,第三方服務(wù)提供者可以編纂最新的天氣數(shù)據(jù),以及可以使該數(shù)據(jù)在經(jīng)請求的情況下可用于其他服務(wù)。在第一方面中,一種管理計算機宏的計算機實現(xiàn)的方法。該方法包括標識存儲在托管的計算機系統(tǒng)處的宏;通過遍歷所述宏中的命令行來執(zhí)行所述宏;以及標識響應(yīng)于宏的多個不同服務(wù)的一個服務(wù)。該方法還包括將所述宏中的命令從與所述宏以其創(chuàng)建的宏語言相關(guān)聯(lián)的格式轉(zhuǎn)換成與所述多個不同服務(wù)的被標識的一個服務(wù)相關(guān)聯(lián)的命令格式,以及在將從多個不同服務(wù)的所述一個服務(wù)接收的信息轉(zhuǎn)換成所述宏或與所述宏對應(yīng)的應(yīng)用可使用的格式之后,向所述宏或與所述宏對應(yīng)的所述應(yīng)用提供所述信息。實現(xiàn)可以包括以下特征中的任一、全部或都不包括。宏可以從調(diào)用該宏并且包括用于該宏的路徑和名稱的URL標識。該方法可以進一步包括提供從多個不同服務(wù)的所述一個服務(wù)接收的信息包括通過偽裝的對象來提供所述信息,其中所述偽裝的對象隱藏用于從所述多個不同服務(wù)的至少一個服務(wù)獲取所述信息的對象的特征。該方法還可以包括確定來自與所述執(zhí)行宏對應(yīng)的用戶對所述多個服務(wù)的一個服務(wù)的調(diào)用是否超過確定水平,以及如果所述調(diào)用超過所述配額,則阻止所述宏的執(zhí)行。確定來自與所述執(zhí)行宏對應(yīng)的用戶對所述多個服務(wù)的一個服務(wù)的調(diào)用是否超過確定水平包括將所述宏包裝在配額包裝器中,所述配額包裝器作為所述宏與一個或多個對象之間的適配器進行操作,并且實現(xiàn)對所述宏的使用限制。在某些方面中,該方法還可以包括接收托管的計算機系統(tǒng)上的事件的通知,其中所述事件獨立于所述托管的計算機系統(tǒng)上的用戶狀態(tài);將所述事件與所述宏相關(guān)聯(lián)以及將所述用戶的賬戶與所述托管的計算機系統(tǒng)相關(guān)聯(lián);以及在所述用戶的賬戶上執(zhí)行所述宏。 該方法還可以包括將所述宏中的命令從與所述宏以其創(chuàng)建的宏語言相關(guān)聯(lián)的格式轉(zhuǎn)換成與所述多個不同服務(wù)的被標識的一個服務(wù)相關(guān)聯(lián)的命令格式包括向存儲在所述托管的計算機系統(tǒng)上的轉(zhuǎn)譯表應(yīng)用所述宏的部分。該方法還可以包括將所述宏中的命令從與所述宏以其創(chuàng)建的所述語言相關(guān)聯(lián)的格式轉(zhuǎn)換成與應(yīng)用相關(guān)聯(lián)的命令格式,以使用所述宏來控制所述應(yīng)用。該方法還可以包括向所述用戶傳輸消息,以向所述用戶通知所述應(yīng)用的操作。所述消息選自包括電子郵件消息、電話語音消息和文本消息的群組。 在其他方面中,多個不同服務(wù)的一個服務(wù)可以選自包括位置服務(wù)、電子郵件服務(wù)和SOAP服務(wù)的群組。該方法還可以包括將所述宏中的所述命令從與所述宏以其創(chuàng)建的所述宏語言相關(guān)聯(lián)的格式轉(zhuǎn)換成與所述多個不同服務(wù)的被標識的一個服務(wù)相關(guān)聯(lián)的命令格式包括使用Java對象來將訪問方法包裝至所述服務(wù)。 在另一實現(xiàn)中,一種使用系統(tǒng)來管理計算機宏的計算機實現(xiàn)的系統(tǒng),所述系統(tǒng)包括多個托管的應(yīng)用,其可從托管的計算機系統(tǒng)進行操作;宏數(shù)據(jù)存儲庫,其存儲多個宏, 每個宏被指派至所述托管的計算機系統(tǒng)上的用戶的賬戶,以及每個宏定義待由所述多個托管的應(yīng)用的至少一個應(yīng)用執(zhí)行的一系列動作;以及處理器,用于執(zhí)行服務(wù)接口,當(dāng)所述服務(wù)接口被執(zhí)行時,其定義用于所述系統(tǒng)可訪問的多個服務(wù)的每一個服務(wù)的一個或多個對象, 其中所述一個或多個對象的每一個對象將來自第一語言的所述多個宏的通信轉(zhuǎn)譯成與所述第一語言不同的第二語言的所述多個服務(wù)的一個或多個服務(wù)。實現(xiàn)可以包括以下特征的任一、全部或都不包括。該系統(tǒng)可以包括事件處理器,其被編程以接收在所述多個托管的應(yīng)用處發(fā)生的事件的通知,以及響應(yīng)于接收到所述事件的通知,引起所述多個宏的執(zhí)行。對象的每一個對象包裝訪問方法,其定義用于與所述多個服務(wù)的一個服務(wù)進行通信的通信機制。該系統(tǒng)可以進一步包括一個或多個安全包裝器,其作為執(zhí)行宏與所述一個或多個對象之間的適配器進行操作,并且在不具有用戶關(guān)于所述宏的肯定指示的情況下防止宏的運行。所述系統(tǒng)還可以包括一個或多個配額強制實施層,其被編程以防止高于確定水平的所述多個宏的一個或多個的執(zhí)行。所述確定的水平由在時段中代表特定用戶的賬戶的宏的執(zhí)行數(shù)量所定義。在又一實現(xiàn)中,用于管理計算機宏的計算機實現(xiàn)的系統(tǒng)包括多個托管的應(yīng)用,其可從所述托管的計算機系統(tǒng)操作;宏數(shù)據(jù)存儲庫,其存儲多個宏,每個宏被指派至所述托管的計算機系統(tǒng)上的用戶的賬戶,以及每個宏定義待由所述多個托管的應(yīng)用的至少一個應(yīng)用執(zhí)行的一系列動作;以及用于執(zhí)行第一格式的所述宏的一個或多個宏,以及將來自所述執(zhí)行的信息轉(zhuǎn)譯成響應(yīng)于來自所述宏的調(diào)用而提供與所述第一格式不同的第二格式的信息的一個或多個服務(wù)的裝置。在附圖和下文的描述中給出了一個或多個實施方式的細節(jié)。從描述和附圖以及權(quán)利要求,其他特征和優(yōu)勢將變得明顯。
圖1是示出用于允許在托管的計算機系統(tǒng)中針對宏進行通用編程的結(jié)構(gòu)的概念圖。圖2是能夠操作共享宏的托管的計算機系統(tǒng)的示意圖。圖3A是用于向用戶提供第三方數(shù)據(jù)對象的過程的流程圖。圖;3B是用于管理計算機宏的過程的流程圖。圖4A是用于執(zhí)行由運行在web頁面上的應(yīng)用啟用的宏的過程的流程圖。圖4B是用于記錄和執(zhí)行托管的系統(tǒng)上的宏的過程的泳道流程圖。圖5示出了用于宏系統(tǒng)中的對象的示例結(jié)構(gòu)。圖6示出了宏構(gòu)建系統(tǒng)的示例截屏。圖7示出了可以用于執(zhí)行在此申請中討論的動作的通用計算機設(shè)備的示例。在各附圖中,相同的附圖標記指示相同的元素。
具體實施例方式圖1是示出用于允許在托管的計算機系統(tǒng)100中針對宏進行通用編程的結(jié)構(gòu)的概念圖。這種操作可以與在客戶端設(shè)備或針對單個客戶端設(shè)備的服務(wù)器(例如,經(jīng)由遠程桌面連接服務(wù)或VPN)上發(fā)生的宏執(zhí)行形成對比,因為除了其他之外,在托管的系統(tǒng)上進行的宏執(zhí)行支持從各種客戶端(諸如桌面計算機、上網(wǎng)本計算機)對宏的執(zhí)行,或者公眾可用的計算機(諸如,網(wǎng)吧中的計算機)對宏的執(zhí)行。而且,這種宏可以容易地通過下述操作而在用戶之間共享第一用戶定義對宏的訪問限制,該訪問限制允許其他用戶(例如,與最初用戶來自相同域的、對該系統(tǒng)進行訪問的用戶)在使用其自己的應(yīng)用時運行宏。以及這種宏甚至可以在用戶不在線時針對該用戶執(zhí)行(諸如在對用戶和用戶的計算機而言的外部輸入觸發(fā)宏執(zhí)行的開始時)。此外,當(dāng)托管的系統(tǒng)具有彼此有關(guān)的多個注冊用戶時(例如,他們都為同一業(yè)務(wù)組織工作),在托管的系統(tǒng)中運行的宏可以產(chǎn)生跨與多個這種用戶對應(yīng)的數(shù)據(jù)存儲和/或應(yīng)用的復(fù)雜工作流。在這種系統(tǒng)中,當(dāng)宏可以訪問來自多個不同服務(wù)(包括與托管的系統(tǒng)的提供者不同的第三方所提供的服務(wù))的信息時,以及當(dāng)宏可以與托管的系統(tǒng)中的多個不同應(yīng)用(諸如消息收發(fā)應(yīng)用和業(yè)務(wù)生產(chǎn)力應(yīng)用)一起工作時,宏尤其有用。然而,這種多樣化的服務(wù)和應(yīng)用可能具有多樣化的通信結(jié)構(gòu)和協(xié)議。結(jié)果,與系統(tǒng)100相關(guān)聯(lián)的宏服務(wù)器子系統(tǒng)可以在宏運行時解譯成不同的格式,使得宏創(chuàng)建者可以使用單個宏語言訪問很多資源。例如,可以針對暴露給宏創(chuàng)建者的不同服務(wù)定義對象模型,這些服務(wù)諸如是操縱電子表格和日歷, 取回web內(nèi)容,發(fā)送電子郵件,訪問其日歷,轉(zhuǎn)譯文本等。對象模型可以使用例如Java對象來代表。每個Java對象可以將訪問方法包裝至底層服務(wù)??梢允褂眠h程過程調(diào)用來與第一方資源(即,提供宏服務(wù)器子系統(tǒng)的相同組織所提供的資源)進行通信,而可以使用諸如 SOAP或類似服務(wù)形式的web內(nèi)容取回來與第三方資源(由其他組織提供的那些資源,諸如經(jīng)由與用戶通過其訪問托管的計算機系統(tǒng)的域不同的域提供的)進行通信。在服務(wù)接口可用的情況下,宏創(chuàng)建者可以產(chǎn)生宏,而無需知道或精通用于各種其他服務(wù)的提供的服務(wù)架構(gòu)。實際上,宏服務(wù)器子系統(tǒng)可以充當(dāng)應(yīng)用服務(wù)器(或服務(wù)提供者) 與宏之間的抽象層(例如,服務(wù)接口)。以這種方式,用戶可以使用簡單且易于實現(xiàn)的命令集和語言來與應(yīng)用服務(wù)器(或另一資源提供者)通信,并且本身不需要關(guān)心在其他情況下為了直接與應(yīng)用服務(wù)器(或其他服務(wù)提供者)通信而需要進行的潛在更困難交互。例如, 宏服務(wù)器子系統(tǒng)可以轉(zhuǎn)譯用于控制應(yīng)用服務(wù)器上的服務(wù)或應(yīng)用的操作的控制命令,并且還可以在用戶與托管在應(yīng)用服務(wù)器(或第三方提供者的服務(wù)器)上的服務(wù)或應(yīng)用之間來回傳遞數(shù)據(jù),也許對數(shù)據(jù)進行了修改,也許沒有進行修改。在一個示例中,用戶可以實現(xiàn)調(diào)用多個服務(wù)的宏,而無需直接訪問專屬于該服務(wù)的內(nèi)部指令調(diào)用。至此,以及現(xiàn)在更具體地參考圖1,示出了使用一個或多個宏104a-104d來與客戶端計算設(shè)備通信的服務(wù)器系統(tǒng)和服務(wù)接口 102。宏104可以通過多種機制來提供數(shù)據(jù)和服務(wù),其中一個這種機制直接與系統(tǒng)內(nèi)部的抽象數(shù)據(jù)和服務(wù)相關(guān)聯(lián),而另一機制與該系統(tǒng)外部的抽象數(shù)據(jù)和第三方服務(wù)相關(guān)聯(lián)。第三方服務(wù)可以包括SOAP服務(wù)或可以從與提供服務(wù)的域分離的域進行訪問以及提供一個或多個已知機制用于通過因特網(wǎng)來共享信息(例如,在API中發(fā)布)的其他類似外部服務(wù)。例如,第三方服務(wù)提供者可以編纂最新的天氣數(shù)據(jù),以及可以使該數(shù)據(jù)在經(jīng)請求的情況下可用于其他服務(wù)。服務(wù)接口 102可以存儲數(shù)據(jù)對象,諸如Java對象106a和106b或者第三方數(shù)據(jù)對象。Java對象106a和106b可以代表可以針對暴露給最終用戶的不同服務(wù)進行定義的模型, 這些服務(wù)諸如操縱電子表格、取回web內(nèi)容、發(fā)送電子郵件、訪問其日歷、上載日志帖子、轉(zhuǎn)譯文本等。每個Java對象106a和106b分別具有訪問方法108a和108b,其可以由宏104使用以便利用存儲在Java對象106a和106b中的服務(wù)或功能性。服務(wù)接口 102可以有助于確保用戶可以經(jīng)由訪問方法108獲得在托管的計算系統(tǒng)100中提供的服務(wù)和應(yīng)用的無縫訪問,而無需系統(tǒng)100向用戶暴露內(nèi)部服務(wù)。每個Java對象可以將訪問方法包裝至底層服務(wù)。訪問方法可以由內(nèi)部直接網(wǎng)絡(luò)調(diào)用(針對電子表格和轉(zhuǎn)譯)、GData(針對日歷應(yīng)用)、內(nèi)部郵件服務(wù)(針對電子郵件)和其他訪問方法(針對web內(nèi)容取回)代表。這些服務(wù)中的很多服務(wù)不需要直接暴露給最終用戶。服務(wù)接口 102可以保護服務(wù)免于直接暴露給最終用戶。例如,服務(wù)接口 102可以在底層數(shù)據(jù)對象周圍提供“包裝器”或“裝飾器”,以消除將內(nèi)部服務(wù)暴露給最終用戶的風(fēng)險。包裝器代表軟件層,其充當(dāng)宏與Java對象(諸如Java對象106a或106b)之間的適配器。在某些實現(xiàn)中,包裝器可以有助于確保將訪問權(quán)提供給數(shù)據(jù)對象,而無論這些數(shù)據(jù)對象最初被設(shè)計成在哪些應(yīng)用或服務(wù)中運行。而且,包裝器可以支持針對特定數(shù)據(jù)對象的通用訪問不可用的設(shè)備、應(yīng)用、服務(wù)或其他數(shù)據(jù)的使用。在某些實現(xiàn)中,包裝器可以向提供者和/或最終用戶提供安全層。例如,服務(wù)接口 102包括可以包裝Java對象106a的安全層110a。安全層IlOa是圍繞宏代碼本身,例如以便在用戶未采取積極動作的情況下不允許該宏代碼運行的附加代碼。在某些實現(xiàn)中,該動作可以是用戶選擇屏上控件(標記為“0K”),或者以某些其他方式批準該宏。在提供這種批準之前,可以向用戶示出警告,以說明該宏可能影響到的服務(wù)或其他資源,以及也可以給予用戶定義允許宏影響的資源子集的能力,而防止宏影響其他資源。服務(wù)接口 102還包括日志記錄層11 和11 ,其可以捕獲用戶調(diào)用并提供用戶會話的轉(zhuǎn)錄(transcript)。日志記錄層11 和11 可以記錄作為執(zhí)行宏的部分進行的每個操作、操作的持續(xù)時間、操作中的錯誤的普遍程度,以及以其請求操作的用戶的源語言或區(qū)域。服務(wù)接口 102還包括配額強制實施層114a和114b,其可以保護服務(wù)提供者以防止服務(wù)濫用以及保護用戶以防止垃圾郵件。例如,配額強制實施層114a_114b可以通過使用可能有助于找到這種批量賬戶創(chuàng)建的垃圾郵件打分程序來檢測特定賬戶是否是批量設(shè)立以用垃圾郵件干擾服務(wù)的。系統(tǒng)100可以使用配額強制實施層114a-114b來檢測短時間內(nèi)是否請求或執(zhí)行了大量的活動,因為垃圾郵件制造者通常會這樣做。此外,配額強制實施層114a-114b可以通過對用戶的活動進行限速來防御濫用。例如,系統(tǒng)100可以使用配額強制實施層114a-114b來限制每分鐘可以進行的API調(diào)用數(shù)量。具體地,系統(tǒng)100可以提供用于執(zhí)行指令計數(shù)的機制,其中回調(diào)被安裝在腳本引擎中,以及除非消耗了預(yù)定最大數(shù)量的指令調(diào)用,否則調(diào)用將增大指令計數(shù)器。如果達到最大指令調(diào)用水平,則系統(tǒng)100拋出錯誤消息,并且可以終止服務(wù)的執(zhí)行。在通常水平,安全層llOa-llOb、日志記錄層112a_112b和配額強制實施層 114a-l 14b可以在層中以一致且統(tǒng)一的方式應(yīng)用至底層可編程對象106a和106b。因為配額和安全是統(tǒng)一應(yīng)用的,并且不是針對多個服務(wù)各異的,所以在這種示例中,程序員出錯(以及作為結(jié)果的安全違規(guī))的機會可以減少。在某些實現(xiàn)中,層110-114(例如,包裝器)都可以使用共享的代碼來調(diào)用可位于服務(wù)器上的Java客戶端。安全層IlOa-IlOb可以以各種方式保護最終用戶,諸如避免其受到特洛伊木馬、釣魚攻擊或其他惡意代碼的攻擊。在某些實現(xiàn)中,安全層IlOa可以在向用戶遞送對話框之后構(gòu)建。在這種示例中,包括在對話框中的消息可以將宏標識為潛在不受信的宏,并且可以進一步標識如果宏被執(zhí)行將可以發(fā)生什么。例如,宏可以諸如通過將惡意代碼插入文件或者執(zhí)行代碼以實施惡意動作,而試圖俘獲計算機各種方面的控制權(quán)。向用戶呈現(xiàn)的對話框可以在某些實現(xiàn)中標識特定于該宏的、潛在有害動作的列表,該列表基于宏的掃描。掃描宏可以例如有助于至少部分基于宏中的文本串或者與已經(jīng)是惡意的過去的宏的內(nèi)容對應(yīng)的其他信息,來標識特定的潛在有害效果。用戶可以批準或不批準該宏可以具有的訪問權(quán)。用戶的批準可以用于構(gòu)建如上所述的、基于能力 (capability)的安全層,諸如允許宏具有讀特權(quán),但不允許宏更新某些文件。在這種情況下,用戶給予宏的并反映在安全層中的特權(quán)或權(quán)限可以限于用戶已經(jīng)批準的那些類型的動作。在某些實現(xiàn)中,用于生成安全層的過程可以檢測試圖誤導(dǎo)用于檢測惡意代碼的機制的惡意代碼。例如,替代在宏中編碼“delete (刪除)”,可以串接子串“de”和“l(fā)ete”,以試圖掩蓋真實刪除操作的意圖(例如,"delete")。在操作中,服務(wù)接口 102可以利用可執(zhí)行對配額服務(wù)器的調(diào)用的配額強制實施層 114a-114b來包裝各種編程的已包裝對象的關(guān)鍵方法。配額服務(wù)器可以存儲配置文件、包裝器、日志文件和其他包裝器信息。配額服務(wù)器可以允許短期和長期配額限制二者的配置。 例如,服務(wù)接口 102可以強制實施在特定時段期間(諸如,一天、若干小時或用戶注冊系統(tǒng)的整個時段)的啟用的最大數(shù)目。這種方式可以允許出現(xiàn)活動的突發(fā),但是可以避免反復(fù)無常的腳本在短時間內(nèi)用盡用戶一天的整個配額。在某些實現(xiàn)中,經(jīng)由混淆(obfuscated)的用戶ID來向配額服務(wù)器標識用戶,其中混淆是由標識服務(wù)器的混淆器和程序特定鍵值(key)執(zhí)行的。配額服務(wù)器允許針對每個用戶的過載(override),從而特定用戶可以請求并被給予附加的容量。配額限制可以應(yīng)用至觸發(fā)的用戶而不是執(zhí)行宏或宏所有者,因為給定的宏(例如,文檔批準系統(tǒng))可能具有成百乃至上千的用戶。在某些實現(xiàn)中,服務(wù)接口 102可以針對不同的特定客戶應(yīng)用不同的配額配置。例如,如果用戶是特定web客戶端服務(wù)的成員,則在使用該服務(wù)時該用戶可以被給予比不是成員的用戶高的配額。而且,來自特定域的用戶可以被給予比來自其他域的用戶高的配額。 而且,結(jié)合上文,每個用戶可以針對不同宏具有不同的配額水平。例如,特定用戶可被給予與基準相關(guān)的“基本”水平,例如,基準為100的情況下,用戶可被評定為50,這意味著用戶收到平均用戶的配額的一半。特定宏可以具有與基準或絕對指派相關(guān)的類似指派。例如,宏可以被指派每天40次執(zhí)行的基準,使得以上列出的用戶每天能夠執(zhí)行該宏20次(50/100, 或0. 5,乘以40)。在一個特定示例中,系統(tǒng)100可以提供限制每天發(fā)送的電子郵件數(shù)量的配額強制實施層。類似地,配額強制實施層114a-114b可以通過在達到預(yù)定閾值之后阻止“創(chuàng)建事件”調(diào)用,來限制特定用戶可以創(chuàng)建的日歷事件的數(shù)量。在又一示例中,系統(tǒng)100可以對存儲器對象分配進行計數(shù)以進一步限制存儲器使用,以及防止惡意的或較差構(gòu)建的宏分配太多大的存儲器對象。其他配額強制實施規(guī)則也可以由系統(tǒng)100實現(xiàn)。在某些實現(xiàn)中,包裝器110a-114b也保護了服務(wù)提供者。例如,服務(wù)接口 102可以包括類快門(shutter)接口,以防止腳本訪問禁止的Java對象。具體地,服務(wù)接口 102可以采用類快門接口來過濾腳本和宏可見的Java類。在這種示例中,顯式或隱式地向類快門傳遞用戶代碼試圖加載的任何類的合格類名稱。類快門接口通常在且僅在具有給定名稱的 Java類或Java對象被授權(quán)暴露給腳本或宏的情況下,返回為真的布爾值。此外,服務(wù)接口 102限制腳本引擎、安全包裝器110、日志記錄層112、配額強制實施層114、程序節(jié)(bean) 和諸如string、float等的Java原語類可用的Java類。這可以防止用戶訪問環(huán)境變量或其他java對象。在某些實現(xiàn)中,類快門可能本質(zhì)上是封閉的,并且可以通過僅使用類和數(shù)據(jù)內(nèi)容的預(yù)定義白名單來進行操作。例如,未顯式地出現(xiàn)在白名單上的任何類可被拒絕,并且不能使用外卡(wildcard)。白名單可以包括編程的bean、Java原語或其他批準的數(shù)據(jù)內(nèi)容。訪問方法108a和108b代表程序員用于向及從服務(wù)或應(yīng)用傳輸數(shù)據(jù)的API。訪問方法108a-108b可以包括通信協(xié)議,宏104a-104d可以掛鉤至(hook into)該通信協(xié)議,以容易地訪問多個應(yīng)用和服務(wù)。應(yīng)用可以廣泛變化,并且可以包括電子郵件、生產(chǎn)力應(yīng)用(諸如電子表格和文字處理器)、地圖應(yīng)用和可以在單個web頁面上一起呈現(xiàn)的各種應(yīng)用的組合。應(yīng)用可以由用戶訪問或開發(fā)以提供來自宏104的定制輸出。系統(tǒng)100可以從標準web瀏覽器進行訪問。在某些實現(xiàn)中,訪問方法108a和108b 可以針對特定用戶拒絕服務(wù)或訪問。例如,訪問方法108a可以拒絕對Java對象106a的訪問,如果消耗了配額最大值的話。托管的計算機系統(tǒng)100還包括程序應(yīng)用116和118。應(yīng)用116和118可以包括用戶(例如,經(jīng)由宏)可以致其運行或執(zhí)行的任何應(yīng)用,諸如電子郵件應(yīng)用、電子表格應(yīng)用、文字處理應(yīng)用、照片共享應(yīng)用、演示文稿包、財務(wù)規(guī)劃應(yīng)用或應(yīng)用的組合。在某些情況下,用戶可以通過選擇要運行的應(yīng)用,諸如通過雙擊桌面上的或應(yīng)用的下拉菜單中的應(yīng)用名稱,來顯式地開始應(yīng)用。其他應(yīng)用可以隱式地開始,諸如在用戶點擊電子郵件附件(例如,文本文件或電子表格),或者在用戶點擊不知名的文件時,任何一個都可以諸如基于文件的擴展名或其他定義的關(guān)聯(lián)來自動開始與該文件關(guān)聯(lián)的對應(yīng)應(yīng)用的執(zhí)行。如果應(yīng)用由用戶可能已經(jīng)開始運行的執(zhí)行宏調(diào)用的話,則應(yīng)用也可以開始。在開始或執(zhí)行應(yīng)用的又一示例中,事件可以獨立于系統(tǒng)100的當(dāng)前狀態(tài)或用戶的動作而發(fā)生,諸如在用戶的賬戶中接收到了電子郵件消息,這可以開始或恢復(fù)某些應(yīng)用的執(zhí)行。例如,事件(例如,接收的電子郵件消息)可以觸發(fā)宏(例如,以便更新電子表格,添加標題欄)。托管的計算機系統(tǒng)100還包括服務(wù)(諸如SOAP服務(wù)120),諸如從第三方通過因特網(wǎng)可得的、用于向這種服務(wù)的請求者傳遞信息的服務(wù)。服務(wù)接口 102可以經(jīng)由網(wǎng)絡(luò)122來提供對SOAP服務(wù)120的訪問。SOAP服務(wù)是平臺獨立的web服務(wù),其可以用來交換結(jié)構(gòu)化數(shù)據(jù)。SOAP服務(wù)120的框架可以形成web服務(wù)協(xié)議棧的基礎(chǔ)層,提供可以基于其構(gòu)建web服務(wù)的基本消息收發(fā)框架。SOAP服務(wù)架構(gòu)通常包括針對消息格式、消息交換模式(MEP)、底層傳輸協(xié)議綁定、消息處理模型和協(xié)議可擴展性的若干規(guī)范層。服務(wù)接口 102可以通過抽象出服務(wù)規(guī)范的一個或多個層來訪問SOAP服務(wù)或其他第三方服務(wù),使得用戶可以在不了解服務(wù)規(guī)范的情況下訪問服務(wù)。具體地,服務(wù)接口 102通過創(chuàng)建掛鉤至原始服務(wù)120的虛擬SOAP服務(wù)IM來提供SOAP服務(wù)120。在一個示例中,鉤子(hook)可以采用位于虛擬SOAP服務(wù)IM中的動態(tài)代理對象1 的形式。動態(tài)代理對象1 可以例如提供在“java. lang. reflect”包中。具體地,包可以提供數(shù)組類,其包含用于創(chuàng)建和操縱數(shù)組對象的靜態(tài)方法;和代理類,其支持實現(xiàn)特定接口的代理類的動態(tài)創(chuàng)建。代理類的實現(xiàn)由實現(xiàn)“InvocationHandler”接口的所提供對象提供。“hvocationHandler” 接口可以使用參數(shù)來啟用對象或方法-第一參數(shù)是動態(tài)代理對象128,第二參數(shù)是代表來自該代理實現(xiàn)的接口的方法的方法對象,以及第三參數(shù)是傳遞給接口方法的參數(shù)數(shù)組。啟用方法返回對象結(jié)果,其包含返回至調(diào)用代理接口方法的代碼的結(jié)果。服務(wù)接口 102可以使用服務(wù)的描述來創(chuàng)建虛擬SOAP服務(wù)124。描述可以容易地被訪問,因為web服務(wù)是典型的在web上可得的、通常以機器可讀方式提供服務(wù)的這種描述的公共服務(wù)。服務(wù)接口 102可以使用這些描述來創(chuàng)建虛擬SOAP服務(wù)124。系統(tǒng)100可以通過使用Java反射和動態(tài)代理創(chuàng)建具體編程對象的幻象(illusion)來創(chuàng)建動態(tài)SOAP服務(wù) API。也可以使用其他方法來實現(xiàn)此目的,諸如通過使用Java字節(jié)碼生成,或者使用不同編程語言的特征。SOAP服務(wù)120通常由web服務(wù)描述語言(WSDL)進行定義。系統(tǒng)100可以創(chuàng)建 SOAP bean,其獲取WSDL,并返回填充有用于該服務(wù)的頂層方法的Javascript對象。此外, 系統(tǒng)100可以提供這樣的方法,其將產(chǎn)生服務(wù)的簡單存檔,包括服務(wù)獲取了哪些對象、填充哪些字段等。作為具體示例,國家天氣服務(wù)(NWS)提供用于獲取天氣細節(jié)的web服務(wù)。用戶可以通過系統(tǒng)100鍵入NWS的已知公開URL的地址,并且使用這種服務(wù)來接收針對個人天氣更新的訪問。結(jié)果是動態(tài)生成的編程對象(例如,Java對象106a),用戶可以使用該對象來在其腳本中進行調(diào)用。具體地,用戶可以創(chuàng)建NWS bean,其使用以下偽碼來聯(lián)系NWS的SOAP API var service =SoapApp. getffsdl (‘ http://www.weather.gov/WeatherService.wsdl');var weather = service. getCurrentffeather({zipCode ‘ 10003‘ });var temp = weather, temperature ;在上述示例中,系統(tǒng)可以使用動態(tài)代理對象1 和Javascript對象-屬性的映射腳本來在Javascript實現(xiàn)和Java實現(xiàn)之間移動。由于XML和Javascript典型地不是打字鍵入的,所以系統(tǒng)100可以完全忽略Java類的生成。具體地,系統(tǒng)100可以使用WSDL來生成哪些對象類型具有特定字段類型以及哪些方法取得哪些參量以及返回特定值類型的“語法”。由此,事實上,第三方服務(wù)對象或SOAP bean成為用于將WSDL (例如,經(jīng)由fastnet獲得的)變成對象圖的機器。系統(tǒng)100繼而可以創(chuàng)建函數(shù)調(diào)用,其導(dǎo)致針對SOAP服務(wù)120或其他第三方服務(wù)的http/fastnet請求。系統(tǒng)100可以在XML(S0AP調(diào)用期望的)和屬性的映射(Javascript代碼提供并接收的)之間進行整理(marshal)。命令映射可以用于從用戶在生成宏時使用的公共宏語言生成待發(fā)送至各種服務(wù)或應(yīng)用的命令。例如,可以針對以下制定規(guī)則獲取宏語言的命令或命令群組,以及將命令轉(zhuǎn)譯成目標語言(以及針對數(shù)據(jù)或命令,反之亦然)。在使用多個不同服務(wù)或應(yīng)用的情況下,可以使用多個不同的規(guī)則集或其他命令映射機制,其中每個服務(wù)或應(yīng)用可以具有指派給它以用于在它與宏語言之間進行轉(zhuǎn)譯的映射。在某些情況下,系統(tǒng)100可以支持多個宏語言。在這種情況下,可以在每個宏語言和每個服務(wù)或應(yīng)用語言之間提供映射機制。備選地,命令和其他數(shù)據(jù)可以在再次轉(zhuǎn)換成下一成分之前,轉(zhuǎn)換成中間通用形式。在存在許多宏語言M和許多服務(wù)或應(yīng)用(N)時,這種方式可能是有益的,使得僅需要M+N個轉(zhuǎn)譯器而不是MXN個轉(zhuǎn)譯器。通常,通過提供服務(wù)或應(yīng)用的抽象版本,宏服務(wù)器子系統(tǒng)結(jié)合服務(wù)接口 102(與托管的計算系統(tǒng)100相關(guān)聯(lián))可以允許編寫宏代碼的用戶以統(tǒng)一且一致的方式來編寫宏。服務(wù)或應(yīng)用的抽象版本通常由其描述進行定義。該描述可以用來創(chuàng)建虛擬服務(wù),在多個用戶使用一個或多個宏104調(diào)用該服務(wù)后便可以立即訪問之。這向終端用戶提供了編程和啟用服務(wù)或應(yīng)用功能性的簡單方法。圖2是能夠操作共享宏的托管的計算機系統(tǒng)200的示意圖。通常,系統(tǒng)200提供了各種組件,其示出了宏可以由用戶創(chuàng)建、并在托管的系統(tǒng)上保存、共享、訪問以及執(zhí)行的一個示例方式。在此系統(tǒng)200中,宏服務(wù)器子系統(tǒng)202提供以持久方式將宏代碼保存在腳本信息存儲數(shù)據(jù)存儲庫206中的位置,其中保存的信息可以包括宏庫名稱、腳本內(nèi)容和宏所有者的標識符(例如,使用混淆的用戶ID或其他標識符)。在宏運行時,可以向宏服務(wù)器子系統(tǒng)202發(fā)送命令以執(zhí)行給定宏。代碼繼而可以從腳本信息存儲數(shù)據(jù)存儲庫206檢索,以及可以在腳本引擎或腳本執(zhí)行器208中創(chuàng)建實例??梢詷?gòu)建代表用于不同服務(wù)器側(cè)應(yīng)用的編程API的Java對象,并且Java對象可以包裝在基于能力的安全包裝器中,以及變成程序員可見的經(jīng)包裝的服務(wù)(或“bean”)。經(jīng)包裝的服務(wù)210可以包括所有的相關(guān)服務(wù),宏服務(wù)器子系統(tǒng)202可以例如向與宏執(zhí)行有關(guān)的經(jīng)包裝的服務(wù)的消費者供應(yīng)這些服務(wù)。經(jīng)包裝的服務(wù)210可以是被打包以可以容易地傳遞的其他對象集合的任何相關(guān)對象。經(jīng)包裝的服務(wù)可以包括暴露與后端服務(wù)交互的公有方法的Java業(yè)務(wù)代表。公有方法可以包括在封包中或者用于封裝方法、類、串、電子表格、應(yīng)用編程接口(API)、和各種計算機語言(例如,Java等)提供的其他工具的其他機制中。公有方法可以暴露例如可以用來定義和執(zhí)行宏的資源(或使其公有)。公有方法的某些實現(xiàn)細節(jié)可以保持私有,這可以提供信息隱藏和抽象的適當(dāng)水平。公有方法可以跨若干不同類型的對象而看起來類似,從而向宏用戶暴露些許一致的外觀和感覺,并且由此提供了多態(tài)性的水平。結(jié)果,經(jīng)包裝的服務(wù)的集合可以促進用戶在面向?qū)ο蟮氖录?qū)動環(huán)境中對宏的使用。這些經(jīng)包裝的服務(wù)或bean在此示例系統(tǒng)200中附接至針對每個屬性(property) (例如,電子表格、日歷等)具有公有成員的頂層Java對象。此頂層Java對象連同標準的預(yù)定標簽一起插入至腳本執(zhí)行器的環(huán)境范圍中。在某些實現(xiàn)中,腳本執(zhí)行器將公有成員(以及僅公有成員)反射至腳本編制環(huán)境。因此,當(dāng)用戶的Javakript代碼執(zhí)行
權(quán)利要求
1.一種管理計算機宏的計算機實現(xiàn)的方法,包括標識存儲在托管的計算機系統(tǒng)處的宏;通過遍歷所述宏中的命令行來執(zhí)行所述宏;標識響應(yīng)于宏的多個不同服務(wù)的一個服務(wù);將所述宏中的命令從與所述宏以其創(chuàng)建的宏語言相關(guān)聯(lián)的格式轉(zhuǎn)換成與所述多個不同服務(wù)的被標識的一個服務(wù)相關(guān)聯(lián)的命令格式;以及在將從多個不同服務(wù)的所述一個服務(wù)接收的信息轉(zhuǎn)換成所述宏或與所述宏對應(yīng)的應(yīng)用可使用的格式之后,向所述宏或與所述宏對應(yīng)的所述應(yīng)用提供所述信息。
2.根據(jù)權(quán)利要求1所述的方法,其中所述宏是從調(diào)用所述宏以及包括用于所述宏的路徑和名稱的URL標識的。
3.根據(jù)權(quán)利要求1所述的方法,其中提供從多個不同服務(wù)的所述一個服務(wù)接收的信息包括通過偽裝的對象來提供所述信息,其中所述偽裝的對象隱藏用于從所述多個不同服務(wù)的至少一個服務(wù)獲取所述信息的對象的特征。
4.根據(jù)權(quán)利要求1所述的方法,進一步包括確定與執(zhí)行宏對應(yīng)的用戶對所述多個服務(wù)的所述一個服務(wù)的調(diào)用是否超過確定水平,以及如果所述調(diào)用超過預(yù)定水平,則阻止所述宏的執(zhí)行。
5.根據(jù)權(quán)利要求4所述的方法,其中確定與所述執(zhí)行宏對應(yīng)的用戶對所述多個服務(wù)的所述一個服務(wù)的調(diào)用是否超過確定水平包括將所述宏包裝在配額包裝器中,所述配額包裝器作為所述宏與一個或多個對象之間的適配器進行操作,并且實現(xiàn)對所述宏的使用限制。
6.根據(jù)權(quán)利要求1所述的方法,進一步包括接收托管的計算機系統(tǒng)上的事件的通知, 其中所述事件獨立于所述托管的計算機系統(tǒng)上的用戶狀態(tài);將所述事件與所述宏相關(guān)聯(lián)以及將所述用戶的賬戶與所述托管的計算機系統(tǒng)相關(guān)聯(lián);以及在所述用戶的賬戶上執(zhí)行所述宏ο
7.根據(jù)權(quán)利要求1所述的方法,其中將所述宏中的命令從與所述宏以其創(chuàng)建的宏語言相關(guān)聯(lián)的格式轉(zhuǎn)換成與所述多個不同服務(wù)的被標識的一個服務(wù)相關(guān)聯(lián)的命令格式包括向存儲在所述托管的計算機系統(tǒng)上的轉(zhuǎn)譯表應(yīng)用所述宏的部分。
8.根據(jù)權(quán)利要求1所述的方法,將所述宏中的命令從與所述宏以其創(chuàng)建的所述語言相關(guān)聯(lián)的格式轉(zhuǎn)換成與應(yīng)用相關(guān)聯(lián)的命令格式,以使用所述宏來控制所述應(yīng)用。
9.根據(jù)權(quán)利要求8所述的方法,進一步包括向所述用戶傳輸消息,以向所述用戶通知所述應(yīng)用的操作。
10.根據(jù)權(quán)利要求9所述的方法,其中所述消息選自包括電子郵件消息、電話語音消息和文本消息的群組。
11.根據(jù)權(quán)利要求1所述的方法,其中多個不同服務(wù)的所述一個服務(wù)選自包括位置服務(wù)、電子郵件服務(wù)和SOAP服務(wù)的群組。
12.根據(jù)權(quán)利要求1所述的方法,其中將所述宏中的所述命令從與所述宏以其創(chuàng)建的所述宏語言相關(guān)聯(lián)的所述格式轉(zhuǎn)換成與所述多個不同服務(wù)的被標識的一個服務(wù)相關(guān)聯(lián)的所述命令格式包括使用Java對象來將訪問方法包裝至所述服務(wù)。
13.一種用于管理計算機宏的計算機實現(xiàn)的系統(tǒng),所述系統(tǒng)包括多個托管的應(yīng)用,其可從所述托管的計算機系統(tǒng)進行操作;宏數(shù)據(jù)存儲庫,其存儲多個宏,每個宏被指派至所述托管的計算機系統(tǒng)上的用戶的賬戶,以及每個宏定義待由所述多個托管的應(yīng)用的至少一個應(yīng)用執(zhí)行的一系列動作;以及處理器,用于執(zhí)行服務(wù)接口,當(dāng)所述服務(wù)接口被執(zhí)行時,其定義用于所述系統(tǒng)可訪問的多個服務(wù)的每一個服務(wù)的一個或多個對象,其中所述一個或多個對象的每一個將來自第一語言的所述多個宏的通信轉(zhuǎn)譯成與所述第一語言不同的第二語言的所述多個服務(wù)的一個或多個服務(wù)。
14.根據(jù)權(quán)利要求13的系統(tǒng),進一步包括事件處理器,其被編程以接收在所述多個托管的應(yīng)用處發(fā)生的事件的通知,以及響應(yīng)于接收到所述事件的通知,引起所述多個宏的執(zhí)行。
15.根據(jù)權(quán)利要求13的系統(tǒng),其中所述一個或多個對象的每一個包裝訪問方法,所述訪問方法定義用于與所述多個服務(wù)的一個服務(wù)進行通信的通信機制。
16.根據(jù)權(quán)利要求13的系統(tǒng),進一步包括一個或多個安全包裝器,其作為執(zhí)行宏與所述一個或多個對象之間的適配器進行操作,并且在不具有關(guān)于所述宏的肯定用戶指示的情況下防止宏的運行。
17.根據(jù)權(quán)利要求13的系統(tǒng),進一步包括一個或多個配額強制實施層,其被編程以防止高于確定水平的所述多個宏的一個或多個宏的執(zhí)行。
18.根據(jù)權(quán)利要求17的系統(tǒng),其中所述確定水平由在時段中代表特定用戶的賬戶的宏的執(zhí)行數(shù)量所定義。
19.一種用于管理計算機宏的計算機實現(xiàn)的系統(tǒng),包括多個托管的應(yīng)用,其可從所述托管的計算機系統(tǒng)操作;宏數(shù)據(jù)存儲庫,其存儲多個宏,每個宏被指派至所述托管的計算機系統(tǒng)上的用戶的賬戶,以及每個宏定義待由所述多個托管的應(yīng)用的至少一個應(yīng)用執(zhí)行的一系列動作;以及用于執(zhí)行第一格式的所述宏的一個或多個宏,以及將來自所述執(zhí)行的信息轉(zhuǎn)譯成響應(yīng)于來自所述宏的調(diào)用而提供與所述第一格式不同的第二格式的信息的一個或多個服務(wù)的裝置
全文摘要
討論了一種管理計算機宏的計算機實現(xiàn)的方法。該方法包括標識存儲在托管的計算機系統(tǒng)處的宏;通過遍歷所述宏中的命令行來執(zhí)行所述宏;以及標識響應(yīng)于宏的多個不同服務(wù)的一個服務(wù)。該方法還包括將所述宏中的命令從與所述宏以其創(chuàng)建的宏語言相關(guān)聯(lián)的格式轉(zhuǎn)換成與所述多個不同服務(wù)的被標識的一個服務(wù)相關(guān)聯(lián)的命令格式,以及在將從多個不同服務(wù)的所述一個服務(wù)接收的信息轉(zhuǎn)換成所述宏或與所述宏對應(yīng)的應(yīng)用可使用的格式之后,向所述宏或與所述宏對應(yīng)的所述應(yīng)用提供所述信息。
文檔編號G06F9/30GK102549559SQ201080041735
公開日2012年7月4日 申請日期2010年8月13日 優(yōu)先權(quán)日2009年8月13日
發(fā)明者F·克霍斯羅維沙希, H·G·菲羅, M·W·哈姆 申請人:谷歌公司