欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

JSON樣式表語言變換的制作方法

文檔序號:12512688閱讀:317來源:國知局
JSON樣式表語言變換的制作方法與工藝

JSON是一種使用人類可讀的文本來傳輸由屬性-值對組成的數據對象的開放標準格式。它主要用來在服務器和Web應用之間傳輸數據,作為XML的替代方案。盡管最初是從JavaScript腳本語言派生的,但JSON是一種與語言無關(language-independent)的數據格式。用于解析和生成JSON數據的代碼很容易以各種編程語言提供。

目前在企業(yè)級,JSON數據格式已經獲得了很大的關注,因為它比其它基于web的數據格式更靈活和更容易使用。它是移動世界中高度優(yōu)選的數據格式。JSON被推廣作為對其它數據格式的低開銷替代方案,這些其它格式在其通常使用的現實世界情景中廣泛支持創(chuàng)建、讀取和解碼。除了XML以外,其它示例還可以包括OGDL、YAML和CSV。

為了變換JSON數據,在市場上可以獲得許多轉換API。然而,這些API不是用戶友好的,因為它們可能需要用戶學習另一種語言來定義變換。通常,用戶最終編寫自己的語法來這樣做。一些API甚至將JSON轉換為XML、應用變換、并且然后轉換回JSON。這導致大量的開銷處理。

相應地,所期望的是解決與JSON變換相關的問題,其中一些問題可能在本文中討論。此外,所期望的是減少與JSON變換語言相關的缺點,其中一些缺點可能在本文中討論。



技術實現要素:

本公開的以下部分至少為了提供對主題的基本理解的目的而呈現在本公開中發(fā)現的一個或多個創(chuàng)新、實施例和/或示例的簡化概要。本概要不試圖提供任何特定實施例或示例的詳盡概述。此外,本概要不意在識別實施例或示例的關鍵/緊要元件或描繪本公開的主題的范圍。相應地,本概要的一個目的可以是以簡化形式呈現在本公開內找到的一些創(chuàng)新、實施例和/或示例,作為稍后呈現的更詳細描述的序言。

提供了用于使用其它JSON對象來指定JSON對象的變換的系統(tǒng)和方法。接收使用JavaScript對象標記(JavaScript Object Notation)指定的第一對象。第一對象包括一個或多個屬性的集合,其中每個屬性具有預定的JSON數據類型并具有至少一個值。還接收使用JavaScript對象標記指定的第二對象。第二對象包括一個或多個屬性的集合,每個屬性與第一對象的屬性的集合中的至少一個屬性對應并具有定義一個或多個變換的至少一個值。基于使用第二對象變換第一對象而生成使用JavaScript對象標記指定的第三對象。

在一個實施例中,一種用于變換JSON數據的方法包括在計算機處接收使用JavaScript對象標記指定的第一對象。第一對象可以具有一個或多個屬性的集合,其中每個屬性具有預定的JSON數據類型并具有至少一個值。接收使用JavaScript對象標記指定的第二對象,第二對象具有一個或多個屬性的集合,每個屬性與第一對象的屬性的集合中的至少一個屬性對應并且具有定義一個或多個變換的至少一個值。第一對象基于第二對象被變換為使用JavaScript對象標記指定的第三對象。

在某些實施例中,在計算機處接收第二對象包括接收使用JavaScript對象標記指定的、具有名稱與第一對象的屬性的名稱對應的屬性的對象。接收具有名稱與第一對象的屬性的名稱對應的屬性的對象可以包括接收與第一對象的屬性具有相同名稱的屬性。接收具有名稱與第一對象的屬性的名稱對應的屬性的對象可以包括接收具有對第一對象的屬性的名稱進行引用的值的屬性。

在進一步的實施例中,在計算機處接收第二對象可以包括接收使用JavaScript對象標記指定的對象的屬性,其中該屬性具有指定要應用到第一對象的屬性的名稱或第一對象的屬性的值的操作的值。在計算機處接收第二對象可以包括接收使用JavaScript對象標記指定的對象的屬性,其中該屬性具有指定第三對象的與第一對象的屬性的變換對應的屬性的數據類型的值。在計算機處接收第二對象可以包括接收使用JavaScript對象標記指定的對象的屬性,其中該屬性具有指定對第一對象的一個或多個屬性的修改的值。

在各種實施例中,在計算機處接收第二對象可以包括接收使用JavaScript對象標記指定的對象的屬性,其中該屬性具有定義一個或多個測試的值,該一個或多個測試定義一個或多個變換是否可應用到第一對象??梢躁P于第一對象的一個或多個屬性來定義一個或多個測試。一個或多個測試的肯定評估(positive evaluation)可以被確定并用來執(zhí)行一個或多個變換。由計算機執(zhí)行一個或多個變換可以包括重命名第一對象的屬性、關于第一對象的屬性的值執(zhí)行一個或多個數值操作、關于第一對象的屬性的值執(zhí)行一個或多個字符串操作、將一個或多個屬性添加到第一對象的屬性(該屬性也是對象),或者從第一對象的屬性(該屬性也是對象)中移除一個或多個屬性。

在一個實施例中,非臨時性計算機可讀介質存儲或嵌有可由計算機系統(tǒng)的處理器執(zhí)行的、用于變換JSON數據的計算機程序產品。非臨時性計算機可讀介質可以包括:用于接收使用JavaScript對象標記指定的第一對象的代碼,第一對象具有一個或多個屬性的集合,每個屬性具有預定的JSON數據類型并具有至少一個值;用于接收使用JavaScript對象標記指定的第二對象的代碼,第二對象具有一個或多個屬性的集合,每個屬性與第一對象的屬性的集合中的至少一個屬性對應并具有定義一個或多個變換的至少一個值;以及用于基于第二對象將第一對象變換為使用JavaScript對象標記指定的第三對象的代碼。

在一個實施例中,用于變換JSON數據的系統(tǒng)可以包括硬件處理器;以及存儲指令集合的存儲器,當指令由處理器執(zhí)行時,使處理器:接收使用JavaScript對象標記指定的第一對象,第一對象具有一個或多個屬性的集合,每個屬性具有預定的JSON數據類型并具有至少一個值;接收使用JavaScript對象標記指定的第二對象,第二對象具有一個或多個屬性的集合,每個屬性與第一對象的屬性的集合中的至少一個屬性對應并具有定義一個或多個變換的至少一個值;以及基于第二對象將第一對象變換為使用JavaScript對象標記指定的第三對象。

除了上述部分,還通過參考本公開的其余部分、任何附圖和權利要求,應當實現對本公開的主題的本質和等同物(以及所提供的任何固有或明確優(yōu)點和改進)的進一步理解。

附圖說明

為了合理地描述和示出在本公開內找到的那些創(chuàng)新、實施例和/或示例,可以參考一個或多個附圖。用來描述一個或多個附圖的附加細節(jié)或示例不應當被認為是對本公開內呈現的任何要求保護的發(fā)明、任何當前描述的實施例和/或示例或者當前所理解的任何創(chuàng)新的最佳模式的范圍的限制。

圖1是根據本公開實施例的系統(tǒng)環(huán)境的組件的簡化框圖,通過該系統(tǒng)環(huán)境,由實施例系統(tǒng)的組件提供的服務可以被提供作為移動云服務。

圖2是一個實施例中的用于變換JSON數據的工作流的簡化框圖。

圖3是一個實施例中的用于使用定義一個或多個變換的JSON對象來執(zhí)行JSON數據變換的方法的流程圖。

圖4是一個實施例中的用于確定如何使用一個對象的JSON數據屬性語言來變換另一個對象的JSON數據的方法的流程圖。

圖5是一個實施例中的用于確定如何使用JSON樣式表(stylesheet)語言來變換JSON數據的方法的流程圖。

圖6是一個實施例中的用于變換與JSON樣式表語言對象的屬性具有相同名稱的JSON數據屬性的方法的流程圖。

圖7是一個實施例中的輸入JSON字符串、JSL字符串以及通過使用JSL字符串對輸入JSON字符串的屬性進行變換而產生的輸出字符串的圖示。

圖8是一個實施例中的用于變換由JSON樣式表語言對象的屬性引用的JSON數據屬性的方法的流程圖。

圖9是一個實施例中的輸入JSON字符串、JSL字符串以及通過使用JSL字符串對輸入JSON字符串的屬性值進行變換而產生的輸出字符串的圖示。

圖10是一個實施例中的用于對滿足JSON樣式表語言對象的屬性的表達式的JSON數據屬性進行變換的方法的流程圖。

圖11是一個實施例中的輸入JSON字符串、JSL字符串以及當滿足表達式時通過使用JSL字符串對輸入JSON字符串進行變換而產生的輸出字符串的圖示。

圖12是一個實施例中的輸入JSON字符串、JSL字符串以及當滿足表達式時通過使用JSL字符串對輸入JSON字符串進行變換而產生的輸出字符串的圖示。

圖13是一個實施例中的被配置為使用JSON樣式表語言對象執(zhí)行JSON對象變換的硬件單元的框圖。

圖14繪出了用于實現實施例之一的分布式系統(tǒng)的簡化圖。

圖15示出了在其中可以實現本發(fā)明的各種實施例的示例性計算機系統(tǒng)。

具體實施方式

引言

在下面的描述中,為了解釋的目的,闡述了具體的細節(jié),以便提供對本發(fā)明實施例的透徹理解。然而將清楚的是,實施例可以在沒有這些具體細節(jié)的情況下實踐。例如,電路、系統(tǒng)、網絡、過程和其它組件可以被示為框圖形式的組件,以便不以不必要的細節(jié)模糊實施例。在其它情況下,眾所周知的電路、過程、算法、結構和技術可以被示出而沒有不必要的細節(jié),以便避免模糊實施例。附圖和描述不旨在是限制性的。相反,示例性實施例的隨后的描述將為本領域技術人員提供用于實現示例性實施例的實現性描述(enabling description)。應當理解,在不脫離如所附權利要求中闡述的本發(fā)明的精神和范圍的情況下,可以對元件的功能和布置進行各種改變。

而且應當指出,各個實施例可以被描述為被繪制為流程圖、流圖、數據流圖、結構圖或框圖的過程。雖然流程圖可以將操作描述為順序過程,但是這些操作當中的許多操作可以并行或并發(fā)執(zhí)行。此外,操作的次序可以被重新布置。過程在其操作完成時終止,但是可以具有不包括在圖中的附加步驟。過程可以對應于方法、函數、過程、子例程,子程序等。當過程對應于函數時,其終止可以對應于該函數返回到調用函數或主函數。

術語“機器可讀介質”或“計算機可讀介質”包括但不限于便攜式或非便攜式存儲設備、光學存儲設備、無線信道,以及能夠存儲、包含或攜帶(一個或多個)指令和/或數據的各種其它介質。代碼段或機器可執(zhí)行指令可以表示過程、函數、子程序、程序、例程、子例程、模塊、軟件包、類、或者指令、數據結構或程序語句的任意組合。代碼段可以通過傳遞和/或接收信息、數據、自變量、參數或存儲器內容而耦合到另一代碼段或者硬件電路。信息、自變量、參數、數據等可以經由任何合適的手段(包括存儲器共享、消息傳遞、令牌傳遞、網絡傳輸等)被傳遞、轉發(fā)或傳輸。

此外,實施例可以由硬件、軟件、固件、中間件、微代碼、硬件描述語言或者其任意組合來實現。當在軟件、固件、中間件或微代碼中實現時,執(zhí)行必要任務的程序代碼或代碼段可以被存儲在機器可讀介質或計算機可讀介質中。一個或多個處理器可以執(zhí)行這些必要任務。

在一些圖中繪出的系統(tǒng)可以以各種配置提供。在一些實施例中,系統(tǒng)可以被配置為分布式系統(tǒng),其中系統(tǒng)的一個或多個組件跨云計算機系統(tǒng)中的一個或多個網絡分布。在進一步的實施例中,系統(tǒng)可以被配置為單個系統(tǒng),其中系統(tǒng)的一個或多個組件結合到單個結構或包中。

圖1是根據本公開的實施例的系統(tǒng)環(huán)境100的一個或多個組件的簡化框圖,通過該系統(tǒng)環(huán)境100,由實施例系統(tǒng)的一個或多個組件提供的服務可以被提供作為云服務。在所示出的實施例中,系統(tǒng)環(huán)境100包括向一個或多個客戶端計算設備104、106和108提供云服務的云基礎設施系統(tǒng)102。客戶端計算設備104、106和108可以被用戶用來與云基礎設施系統(tǒng)102交互??蛻舳擞嬎阍O備104、106和108可以被配置為操作諸如web瀏覽器、專用客戶端應用(例如,Oracle Forms)、或可以被客戶端計算設備的用戶用來與云基礎設施系統(tǒng)102交互以使用由云基礎設施系統(tǒng)102提供的服務的某種其它應用之類的客戶端應用。

應當認識到,圖1中所繪出的云基礎設施系統(tǒng)102可以具有除繪出的那些之外的其它組件。另外,圖1中所示出的實施例只是可以結合本發(fā)明的實施例的云基礎設施系統(tǒng)的一個示例。在一些其它的實施例中,云基礎設施系統(tǒng)102可以具有比圖1中所示更多或更少的組件、可以組合兩個或更多個組件、或者可以具有組件的不同配置或布置。

客戶端計算設備104、106和108可以是便攜式手持設備(例如,蜂窩電話、計算平板、個人數字助理(PDA))或可穿戴設備(例如,Google頭戴式顯示器),這些設備運行諸如Microsoft Windows的軟件和/或諸如iOS、Windows Phone、Android、BlackBerry 10、Palm OS等的各種移動操作系統(tǒng),并且這些設備啟用了互聯網、電子郵件、短消息服務(SMS)、或其它通信協(xié)議??蛻舳擞嬎阍O備104、106和108可以是通用個人計算機,例如包括運行各種版本的MicrosoftApple和/或Linux操作系統(tǒng)的個人計算機和/或膝上型計算機??蛻舳擞嬎阍O備104、106和108可以是運行任何各種商業(yè)上可用的或類UNIX操作系統(tǒng)(包括但不限于各種GNU/Linux操作系統(tǒng),諸如Google Chrome OS)的工作站計算機??商娲鼗蚋郊拥?,客戶端計算設備104、106和108可以是能夠經(一個或多個)網絡110進行通信的任何其它電子設備,諸如瘦客戶端計算機、啟用了互聯網的游戲系統(tǒng)(例如,具有或不具有手勢輸入設備的Microsoft Xbox游戲控制臺)和/或個人消息傳送設備。

雖然示例性系統(tǒng)環(huán)境100被示為具有三個客戶端計算設備,但是任何數量的客戶端計算設備都可以被支持。諸如具有傳感器的設備等的其它設備可以與云基礎設施系統(tǒng)102交互。

(一個或多個)網絡110可以便于客戶端104、106和108與云基礎設施系統(tǒng)102之間的通信和數據交換。(一個或多個)網絡110可以是本領域技術人員熟悉的任何類型的網絡,這些網絡可以支持使用任何各種商業(yè)上可用的協(xié)議的數據通信,包括但不限于TCP/IP(傳輸控制協(xié)議/互聯網協(xié)議)、SNA(系統(tǒng)網絡體系架構)、IPX(互聯網分組交換)、AppleTalk等。僅僅作為示例,(一個或多個)網絡110可以是局域網(LAN),諸如基于以太網、令牌環(huán)等的局域網。(一個或多個)網絡110可以是廣域網和互聯網。它可以包括虛擬網絡,包括但不限于虛擬專用網絡(VPN)、內聯網、外聯網、公共交換電話網絡(PSTN)、紅外網絡、無線網絡(例如,在電氣和電子工程師協(xié)會(IEEE)802.11協(xié)議套件、和/或任何其它無線協(xié)議當中的任何協(xié)議下操作的網絡);和/或這些和/或其它網絡的任意組合。

云基礎設施系統(tǒng)102可以包括一個或多個計算機和/或服務器。這些計算機系統(tǒng)或服務器可以包括一個或多個通用計算機、專用服務器計算機(例如,包括PC(個人計算機)服務器、服務器、中檔服務器、大型計算機、機架式服務器等)、服務器場、服務器集群或任何其它適當的布置和/或組合。在各種實施例中,與云基礎設施系統(tǒng)102關聯的一個或多個計算機系統(tǒng)或服務器可以適于運行前述公開中描述的一個或多個服務或軟件應用。例如,與云基礎設施系統(tǒng)102關聯的一個或多個計算機系統(tǒng)或服務器可以對應于用于執(zhí)行本文所述的根據本公開實施例的處理的服務器。

與云基礎設施系統(tǒng)102關聯的一個或多個計算機系統(tǒng)或服務器可以運行包括上面討論的任何操作系統(tǒng)的操作系統(tǒng),以及任何商業(yè)上可用的服務器操作系統(tǒng)。與云基礎設施系統(tǒng)102關聯的一個或多個計算機系統(tǒng)或服務器還可以運行各種附加的服務器應用和/或中間層應用中的任何應用,包括HTTP(超文本傳輸協(xié)議)服務器、FTP(文件傳輸協(xié)議)服務器、CGI(公共網關接口)服務器、服務器、數據庫服務器等。示例性數據庫服務器包括但不限于可從Oracle、Microsoft、Sybase、IBM(國際商業(yè)機器)等商業(yè)獲得的數據庫服務器。

在某些實施例中,由云基礎設施系統(tǒng)102提供的服務可以包括可以可由云基礎設施系統(tǒng)102的用戶按需使用的許多服務,諸如在線數據存儲和備份解決方案、基于web的電子郵件服務、托管的辦公套件和文檔協(xié)作服務、數據庫處理、受管理的技術支持服務等。由云基礎設施系統(tǒng)102提供的服務可以動態(tài)地縮放,以滿足其用戶的需求。由云基礎設施系統(tǒng)102提供的服務的具體實例化在本文中稱作為“服務實例”。一般而言,來自云服務提供商的系統(tǒng)的、經由諸如互聯網的通信網絡對用戶可用的任何服務被稱為“云服務”。典型地,在公共云環(huán)境中,構成云服務提供商的系統(tǒng)的服務器和系統(tǒng)與客戶自己的辦公場所(on-premises)服務器和系統(tǒng)不同。例如,云服務提供商的系統(tǒng)可以托管應用,并且用戶可以經由諸如互聯網之類的通信網絡按需訂閱和使用該應用。

在一些示例中,由云基礎設施102實例化的服務實例可以包括對由云供應商提供給用戶或者以本領域中已知的其它方式提供的存儲、托管數據庫、托管web服務器、軟件應用或其它服務的受保護的計算機網絡訪問。例如,由云基礎設施102實例化的服務實例可以包括通過互聯網對云上遠程存儲的密碼保護的訪問。作為另一個示例,由云基礎設施102實例化的服務實例可以包括用于聯網開發(fā)人員私人使用的基于web服務的托管關系數據庫和腳本語言中間件引擎。作為另一個示例,由云基礎設施102實例化的服務實例可以包括對在云供應商的web站點上托管的電子郵件軟件應用的訪問。

在某些實施例中,云基礎設施系統(tǒng)102可以包括以自助服務、基于訂閱、彈性可縮放、可靠、高可用性并且安全的方式交付給客戶的一套應用、中間件、開發(fā)服務和數據庫服務提供物(offerings)。具體化為云基礎設施服務102的這種云基礎設施系統(tǒng)的示例是由本受讓人提供的Oracle Public Cloud(Oracle公共云)。

云基礎設施系統(tǒng)102可以經由不同的部署模型提供云服務。例如,服務可以在公共云模型下提供,在公共云模型中云基礎設施系統(tǒng)102由銷售云服務的組織擁有(例如,被Oracle擁有)并且使得服務對一般公眾和不同行業(yè)的企業(yè)可用。作為另一個示例,服務可以在私有云模型下提供,在私有云模型中云基礎設施系統(tǒng)102只為單個組織運營并且可以為該組織內的一個或多個實體提供服務。云服務還可以在社區(qū)云模型下提供,在社區(qū)云模型中云基礎設施系統(tǒng)102和由云基礎設施系統(tǒng)102提供的服務由相關社區(qū)中的若干個組織共享。云服務也可以在混合云模型下提供,該混合云模型是兩種或更多種不同模型的組合。

在一些實施例中,由云基礎設施系統(tǒng)102提供的服務可以包括在軟件即服務(SaaS)類別、平臺即服務(PaaS)類別、基礎設施即服務(IaaS)類別、或包括混合服務的其它服務類別下提供的一個或多個服務。在一些實施例中,由云基礎設施系統(tǒng)102提供的服務可以包括但不限于應用服務、平臺服務和基礎設施服務。在一些示例中,應用服務可以經由SaaS平臺由云基礎設施系統(tǒng)102提供。SaaS平臺可以被配置為提供落在SaaS類別下的云服務。例如,SaaS平臺可以提供在集成開發(fā)和部署平臺上構建和交付一套按需應用的能力。SaaS平臺可以管理和控制用于提供SaaS服務的底層軟件和基礎設施。通過使用由SaaS平臺提供的服務,客戶可以利用在云基礎設施系統(tǒng)上執(zhí)行的應用??蛻艨梢垣@取應用服務,而無需客戶購買單獨的許可和支持??梢蕴峁└鞣N不同的SaaS服務。示例包括但不限于,提供用于大型組織的銷售績效管理、企業(yè)集成和業(yè)務靈活性的解決方案的服務。

在一些實施例中,平臺服務可以經由PaaS平臺由云基礎設施系統(tǒng)102提供。PaaS平臺可以被配置為提供落在PaaS類別下的云服務。平臺服務的示例可以包括但不限于使組織(諸如Oracle)能夠在共享、公共的體系架構上整合現有應用、以及整合構建利用由平臺提供的共享服務的新應用的能力的服務。PaaS平臺可以管理和控制用于提供PaaS服務的底層軟件和基礎設施。客戶可以獲取由云基礎設施系統(tǒng)102提供的PaaS服務,而無需客戶購買單獨的許可和支持。平臺服務的示例包括但不限于,Oracle Java云服務(Oracle Java Cloud Service,JCS)、Oracle數據庫云服務(Oracle Database Cloud Service,DBCS)以及其它服務。

通過利用由PaaS平臺提供的服務,客戶可以采用由云基礎設施系統(tǒng)102支持的編程語言和工具并且還可以控制所部署的服務。在一些實施例中,由云基礎設施系統(tǒng)102提供的平臺服務可以包括數據庫云服務、中間件云服務(例如,Oracle Fusion Middleware服務)和Java云服務。在一個實施例中,數據庫云服務可以支持使組織能夠匯集數據庫資源并且以數據庫云的形式為客戶提供數據庫即服務的共享服務部署模型。在云基礎設施系統(tǒng)中,中間件云服務可以為客戶提供平臺來開發(fā)和部署各種業(yè)務應用,并且Java云服務可以為客戶提供部署Java應用的平臺。

各種不同的基礎設施服務可以由云基礎設施系統(tǒng)102中的IaaS平臺提供?;A設施服務便于對諸如存儲、網絡和其它基礎計算資源之類的底層計算資源的管理和控制,以便讓客戶利用由SaaS平臺和PaaS平臺提供的服務。

在某些實施例中,云基礎設施系統(tǒng)102可以提供對云基礎設施系統(tǒng)中的云服務(例如,SaaS、PaaS和IaaS服務)的綜合管理。在一個實施例中,云管理功能可以包括用于供應、管理和跟蹤由云基礎設施系統(tǒng)102接收到的客戶的訂閱等的能力。在各種實施例中,云基礎設施系統(tǒng)102可以適于自動供應、管理和跟蹤客戶對由云基礎設施系統(tǒng)102提供的服務的訂閱??蛻艚浻捎嗛営唵慰梢杂嗁徲稍苹A設施系統(tǒng)102提供的一個或多個服務云基礎設施系統(tǒng)102然后執(zhí)行處理,以提供客戶的訂閱訂單中的服務。

在一個實施例中,如圖1中所繪出的,云管理功能可以由諸如訂單管理和監(jiān)視模塊114之類的一個或多個模塊提供。這些模塊可以包括一個或多個計算機和/或服務器或者使用一個或多個計算機和/或服務器來提供,該一個或多個計算機和/或服務器可以是通用計算機、專用服務器計算機、服務器場、服務器集群、或任何其它適當的布置和/或組合。

在示例性操作中,使用客戶端設備(諸如客戶端設備104、106或108中的一個或多個)的客戶可以通過請求由云基礎設施系統(tǒng)102提供的一個或多個服務來與云基礎設施系統(tǒng)102交互??蛻艨梢允褂酶鞣N方式向云基礎設施系統(tǒng)102發(fā)布服務請求134。服務請求134可以包括對由云基礎設施系統(tǒng)102提供的一個或多個服務等下訂閱訂單、訪問由云基礎設施系統(tǒng)102提供的一個或多個服務等。在某些實施例中,客戶可以訪問云用戶接口(UI)(云UI 132、云UI 134和/或云UI 138)并且經由這些UI下訂閱訂單。響應于客戶下訂單而被云基礎設施系統(tǒng)102接收到的訂單信息可以包括識別客戶的信息以及識別客戶想要訂閱的由云基礎設施系統(tǒng)102提供的一個或多個服務的信息。在客戶已經下訂單之后,訂單信息經由云UI 132、134和/或138被接收。

在這個示例中,訂單管理和監(jiān)視模塊114將從客戶接收的信息發(fā)送到訂單數據庫,以使客戶下達的訂單存儲在記錄中。訂單數據庫可以是由云基礎設施系統(tǒng)102操作并與其它系統(tǒng)元件結合操作的若干數據庫之一。訂單管理和監(jiān)視模塊114可以將包括存儲在訂單數據庫中的訂單信息的全部或部分的信息轉發(fā)到訂單管理模塊。在一些情況下,訂單管理模塊可以被配置為執(zhí)行與訂單相關的計費和記帳功能,諸如驗證訂單并且在通過驗證時訂立(book)訂單。

訂單管理和監(jiān)視模塊114可以將訂單信息的全部或部分傳送到訂單編排模塊,訂單編排模塊利用訂單信息來為客戶下達的訂單編排服務和資源的供應。在一些情況下,訂單編排模塊可以使用訂單供應模塊的服務來編排資源的供應,以支持所訂閱的服務。

在某些實施例中,訂單編排模塊使得能夠管理與每個訂單關聯的業(yè)務過程并且應用業(yè)務邏輯以確定訂單是否應該繼續(xù)供應。當接收到針對新訂閱的訂單時,訂單編排模塊發(fā)送請求到訂單供應模塊,以分配資源和配置履行訂閱訂單所需的那些資源。訂單供應模塊使得能夠分配用于客戶所訂閱的服務的資源。訂單供應模塊在由云基礎設施系統(tǒng)102提供的云服務和用于為了提供所請求的服務供應資源的物理實現層之間提供一層抽象。訂單編排模塊可以因此與實現細節(jié)隔離,諸如服務和資源是實際上被即時(on the fly)供應還是預先被供應并且只在請求時被分配/指派。

在某些實施例中,訂單管理和監(jiān)視模塊114管理和跟蹤客戶的訂閱訂單。在一些情況下,訂單管理和監(jiān)視模塊114可以接收指示與客戶關聯的任何所供應的服務和/或資源的信息。訂單管理和監(jiān)視模塊114可以被配置為收集對于訂閱訂單中的服務的使用統(tǒng)計,諸如所使用的存儲量、傳送的數據量、用戶數量以及系統(tǒng)正常運行時間和系統(tǒng)停機時間的量。

一旦在上面的示例中供應了服務和資源,服務結果138就可以被發(fā)送到客戶端計算設備104、106和/或108上的客戶,從而通知客戶所提供的服務和/或資源。在服務請求130包括訪問服務或者讓服務執(zhí)行一個或多個操作的請求的情況下,服務結果138可以被發(fā)送到客戶端計算設備104、106和/或108上的客戶,從而提供所請求的訪問或任何操作的結果、所執(zhí)行的服務或所請求的數據。

在某些實施例中,云基礎設施系統(tǒng)100可以包括身份管理模塊114。身份管理模塊114可以被配置為提供身份服務,諸如在云基礎設施系統(tǒng)102中的訪問管理和授權服務。在一些實施例中,身份管理模塊114可以控制關于希望利用由云基礎設施系統(tǒng)102提供的服務的客戶的信息。這種信息可以包括驗證這種客戶的身份的信息和描述這些客戶被授權相對于各種系統(tǒng)資源(例如,文件、目錄、應用、通信端口、存儲器段、等等)執(zhí)行哪些動作的信息。身份管理模塊114還可以包括對關于每個客戶的描述性信息和關于該描述性信息可以如何訪問和修改以及由誰來訪問和修改的信息的管理。

在某些實施例中,云基礎設施系統(tǒng)102還可以包括基礎設施資源116,用于提供被用來向云基礎設施系統(tǒng)102的客戶提供各種服務的資源。在一個實施例中,基礎設施資源116可以包括硬件(諸如服務器、儲存器和聯網資源)的預集成和優(yōu)化的組合,以執(zhí)行PaaS平臺和SaaS平臺提供的服務。

在一些實施例中,云基礎設施系統(tǒng)102中的資源可以由多個用戶共享并且根據需求動態(tài)地重新分配。此外,可以向不同時區(qū)中的用戶分配資源。例如,云基礎設施系統(tǒng)102可以使第一時區(qū)中的第一用戶集合能夠在指定的小時數內利用云基礎設施系統(tǒng)的資源,然后使得能夠將相同的資源重新分配給位于不同時區(qū)中的另一用戶集合,由此最大化資源的利用。

在某些實施例中,可以提供由云基礎設施系統(tǒng)102的不同組件或模塊以及由云基礎設施系統(tǒng)102提供的服務共享的多個內部共享服務118。這些內部共享服務118可以包括但不限于安全和身份服務、集成服務、企業(yè)儲存庫服務、企業(yè)管理器服務、病毒掃描和白名單服務、高可用性、備份和恢復服務、用于啟用云支持的服務、電子郵件服務、通知服務、文件傳輸服務等。

在某些實施例中,可以提供由云基礎設施系統(tǒng)102的不同組件或模塊以及由云基礎設施系統(tǒng)102提供的服務共享的多個外部共享服務120。這些外部共享服務120可以包括但不限于安全和身份服務、集成服務、企業(yè)儲存庫服務、企業(yè)管理器服務、病毒掃描和白名單服務、高可用性、備份和恢復服務、用于啟用云支持的服務、電子郵件服務、通知服務、文件傳輸服務等。

在各種實施例中,外部共享服務120可以包括向(一個或多個)企業(yè)計算機系統(tǒng)126提供訪問、數據變換、自動化等的一個或多個組件。對(一個或多個)企業(yè)計算機系統(tǒng)126的訪問可以由云基礎設施系統(tǒng)102的不同組件或模塊以及由云基礎設施系統(tǒng)102提供的服務共享。在一些實施例中,對(一個或多個)企業(yè)計算機系統(tǒng)126的訪問可以由云基礎設施系統(tǒng)102提供的受限于一個或多個訂戶的服務實例共享。

在進一步的實施例中,外部共享服務120可以包括由云基礎設施系統(tǒng)102的不同組件或模塊以及由云基礎設施系統(tǒng)102提供的服務共享的外部應用編程接口(API)服務128。這些外部API服務128可以包括但不限于由其它第三方服務或實體提供的API。

各種不同的移動云服務可以由云基礎設施系統(tǒng)102中的移動云服務(MSC)122提供。根據本發(fā)明的一些實施例,MCS 122便于移動計算設備與企業(yè)計算機系統(tǒng)(例如,企業(yè)計算機系統(tǒng)124和126)之間的通信。MCS 122可以包括被用來存儲企業(yè)數據和認證信息的一個或多個存儲器存儲設備(“本地儲存器”)。企業(yè)數據可以從企業(yè)計算機系統(tǒng)126或從客戶端計算設備104、106或108接收、或者可以包括由云基礎設施系統(tǒng)102轉換的企業(yè)數據,或者是它們的組合。認證信息可以從身份管理系統(tǒng)116接收和/或由云基礎設施系統(tǒng)102生成。在一些實施例中,認證信息可以包括關于對服務的請求指示用戶的安全認證的信息。

諸如企業(yè)計算機系統(tǒng)126之類的企業(yè)計算機系統(tǒng)可以在與云基礎設施系統(tǒng)102不同的地理位置(例如,遠程地理位置)處在物理上位于云基礎設施系統(tǒng)102的防火墻之外。在一些實施例中,企業(yè)計算機系統(tǒng)126可以包括一個或多個不同的計算機或服務器。在一些實施例中,企業(yè)計算機系統(tǒng)126可以是單個計算機系統(tǒng)的一部分。

在某些實施例中,企業(yè)計算機系統(tǒng)126可以使用一個或多個不同的協(xié)議與云基礎設施系統(tǒng)102通信。每個企業(yè)計算機系統(tǒng)126可以使用不同的通信協(xié)議與云基礎設施系統(tǒng)102通信。企業(yè)計算機系統(tǒng)126可以支持相同或不同的安全協(xié)議。在一些實施例中,MSC 1112可以包括代理系統(tǒng),以處置與企業(yè)計算機系統(tǒng)126的通信。

協(xié)議可以包括通信協(xié)議,諸如SPDY。協(xié)議可以包括應用協(xié)議,諸如基于HTTP的協(xié)議。在一些實施例中,企業(yè)計算機系統(tǒng)126可以使用REST或SOAP通信協(xié)議與云基礎設施系統(tǒng)102通信。例如,REST協(xié)議可以支持包括URI或URL的格式。為了使用REST協(xié)議進行通信而格式化的企業(yè)數據可以容易地轉換成諸如JSON、逗號分隔值(CSV)和真正簡單的聚合(RSS)的數據格式。企業(yè)計算機系統(tǒng)126和云基礎設施系統(tǒng)102可以使用諸如遠程過程調用(RPC)(例如,XML RPC)的其它協(xié)議進行通信。

在一些實施例中,MCS 122可以包括被配置為支持與由云基礎設施服務102提供的一個或多個服務的通信的適配器接口,其中一些可以支持不同協(xié)議或技術以進行通信。在一些實施例中,MCS 122可以包括被配置為支持與企業(yè)計算機系統(tǒng)126進行通信的適配器接口,其中一些可以支持不同協(xié)議或技術以進行通信。MCS 122可以包括一個或多個適配器,每個適配器可以被配置為根據通信協(xié)議、企業(yè)計算機系統(tǒng)的類型、應用的類型、服務的類型或其組合進行通信。適配器支持的通信協(xié)議可以特定于服務或企業(yè)計算機系統(tǒng)126當中的一個或多個。

在某些實施例中,客戶端計算設備104、106和108可以各自實現可以提供具體用戶接口以與MCS 122通信的應用。具體UI可以被配置為使用具體通信協(xié)議進行通信。在一些實施例中,具體UI可以包括可以被調取以與MCS 122通信的可調用接口、函數、例程、方法和/或操作。具體UI可以接受用于企業(yè)數據和/或請求服務與云基礎設施服務102提供的服務或者與企業(yè)計算機系統(tǒng)126通信的參數,作為輸入。在一些實施例中,通過MCS 122的通信可以被轉換以使用定制通信協(xié)議進行通信。在一些實施例中,具體UI可以對應于應用中的定制客戶端。

MCS 122可以包括一個或多個可調用接口,例如應用編程接口(API)。與MCS 122關聯的可調用接口可以使移動計算設備上的應用能夠向MCS 122傳送請求。與MCS 122關聯的可調用接口可以支持公共或標準接口,這可以允許請求包括根據標準化協(xié)議、體系架構風格和/或格式(例如,REST協(xié)議)從應用接收的其參數。與MCS 122關聯的可調用接口可以由計算設備104、106或108中任何一個的用戶配置。與MCS 122關聯的可調用接口可以根據通信協(xié)議接收對服務的請求。設備應用開發(fā)人員為了他們的定制應用可以連接到MCS 122。在一些實施例中,與MCS 122關聯的可調用接口可以由開發(fā)應用的同一個人配置,使得該人可以實現定制應用以與MCS 122通信。

與MCS 122關聯的可調用接口還可以使企業(yè)計算機系統(tǒng)126能夠根據標準化的協(xié)議或格式與MCS 122通信。與應用開發(fā)人員類似,管理企業(yè)計算機系統(tǒng)的人可以實現被配置為經由一個或多個可調用接口與MCS 122通信的代碼(例如,代理系統(tǒng))。與MCS 122關聯的可調用接口可以基于計算設備的類型、企業(yè)計算機系統(tǒng)的類型、應用、代理系統(tǒng)、服務、協(xié)議或其它標準來實現。在一些實施例中,與MCS 122關聯的可調用接口可以支持對服務的請求,這些服務包括認證、壓縮、加密、使用游標的分頁、基于客戶端的節(jié)流(throttling)、不可抵賴性(non-repudiation)、日志記錄和度量數據收集。在一些實施例中,與MCS 122關聯的可調用接口可以被實現用于與定制的業(yè)務相關的服務,諸如認證、策略實施、響應的高速緩存、對MCS 122的調用的節(jié)流、在異步和同步模式之間的轉換、對底層服務的調用的日志記錄,或者它們的組合。在一些實施例中,與MCS 122關聯的可調用接口可以使用戶能夠加載用于由云基礎設施系統(tǒng)102實現的定制代碼。定制代碼可以實現與用于云基礎設施系統(tǒng)102的MCS 122關聯的一個或多個可調用接口,這可以使用戶能夠訪問定制服務或其它企業(yè)計算機系統(tǒng)。

與MCS 122關聯的協(xié)議翻譯器可以處理消息,以確定用于消息的通信協(xié)議和/或將消息轉換為用于目的地的通信協(xié)議。與MCS 122關聯的協(xié)議翻譯器可以轉換從客戶端計算設備104、106或108接收的請求。該請求可以從客戶端計算設備104、106或108所支持的通信協(xié)議的格式轉換為由云基礎設施服務102提供的服務或企業(yè)計算機系統(tǒng)126所支持的通信協(xié)議的格式。與MCS 122關聯的協(xié)議翻譯器可以轉換從由云基礎設施服務102提供的服務或企業(yè)計算機系統(tǒng)126接收的響應。響應可以從由云基礎設施服務102提供的服務或企業(yè)計算機系統(tǒng)126所支持的通信協(xié)議的格式轉換成客戶端計算設備104、106或108所支持的通信協(xié)議的格式。

與MCS 122關聯的安全服務可以管理對從客戶端計算設備104、106或108當中任一個接收的請求的安全認證。與MCS 122關聯的安全服務可以保護客戶過程和企業(yè)數據的完整性。為了防止系統(tǒng)或數據被破壞,當從客戶端計算設備104、106或108接收到請求時,可以發(fā)生安全認證。安全認證可以在調度請求以由云基礎設施系統(tǒng)102處理之前執(zhí)行。為用戶確定的安全認證可以使得與移動計算設備關聯的用戶能夠具有經由MCS 122請求服務的授權。安全認證可以針對用戶減少對不同請求和/或經由MCS 122請求的服務進行認證的工作。與MCS 122關聯的安全服務可以被實現為被配置為執(zhí)行認證請求的安全性的各種操作的一個或多個功能塊或模塊。

與MCS 122關聯的認證服務可以管理對從客戶端計算設備104、106或108接收的請求的安全認證。與MCS 122關聯的認證服務可以確定與向MCS 122發(fā)送請求的計算設備關聯的用戶的安全認證。安全認證可以基于時間段來確定,該安全認證可以綁定到應用的操作(例如,啟動應用)、請求、計算設備、企業(yè)計算機系統(tǒng)、與請求相關的其它標準或其組合。安全認證可以針對以下任何一個進行驗證和準許,諸如單獨的請求、一個或多個企業(yè)計算機系統(tǒng)、特定服務、服務類型、用戶、計算設備、用于確定安全認證的其它標準,或者它們的組合。在一些實施例中,云基礎設施系統(tǒng)102可以存儲從企業(yè)計算機系統(tǒng)或支持企業(yè)計算機系統(tǒng)的認證系統(tǒng)接收的用戶的認證信息。云基礎設施系統(tǒng)102可以通過執(zhí)行查找功能以確定與請求關聯的用戶的身份是否具有做出這種請求的授權來確定認證。所存儲的認證信息可以包括用戶可以被授權訪問的諸如請求的類型、功能、企業(yè)計算機系統(tǒng)、企業(yè)數據等的信息。在一些實施例中,基礎設施系統(tǒng)102可以發(fā)起與發(fā)出請求的計算設備的通信以確定認證。

在一些實施例中,安全認證可以基于與請求服務的用戶關聯的角色來確定。角色可以與請求訪問MCS 122的用戶關聯。在一些實施例中,用戶可以作為MCS 122的訂戶或租戶來請求服務,其中這種MCS 122的訂戶或租戶可以被準許訪問由MCS 122提供的資源和/或服務。認證可以對應于用戶對MCS 122的訂閱,使得用戶可以被授權作為訂戶經由MCS 122請求服務。在一些實施例中,訂閱可以限于由MCS 122提供的特定資源集合。安全認證可以基于MCS 122的用戶可訪問的資源和/或服務。在一些實施例中,可以在被稱作“運行時環(huán)境”的執(zhí)行期間為請求供應模板。運行時環(huán)境可以與為請求、用戶或設備分配的資源關聯。

在一些實施例中,與MCS 122關聯的認證服務可以請求身份管理系統(tǒng)確定用于用戶的安全認證。身份管理系統(tǒng)可以由云基礎設施系統(tǒng)102(例如,作為身份管理114)或由在云基礎設施系統(tǒng)102外部的另一個計算機系統(tǒng)實現。身份管理116可以基于用戶的角色或者對訪問MCS 122的訂閱來確定用戶的安全認證??梢躁P于企業(yè)計算機系統(tǒng)、企業(yè)計算機系統(tǒng)提供的服務、企業(yè)計算機系統(tǒng)的功能或特征、用于控制對企業(yè)計算機系統(tǒng)的訪問的其它標準或者它們的組合向角色或訂閱指派特權和/或權利。

各種不同的應用開發(fā)框架(ADF)可以由云基礎設施系統(tǒng)102中的應用開發(fā)框架(ADF)124提供。ADF 124提供基礎設施代碼,以實現基于靈活(agile)SOA的應用。ADF 124還通過一個或多個開發(fā)工具(例如,Oracle JDeveloper 11g開發(fā)工具)為開發(fā)提供可視和聲明性方法。由ADF 124提供的一個或多個框架可以實現模型-視圖-控制器設計模式。這種框架提供集成的解決方案,通過對諸如對象/關系映射、數據持久性、可重用控制器層、豐富的Web用戶界面框架、數據到UI的綁定、安全性和定制之類的區(qū)域的解決方案而覆蓋MVC體系架構的所有層。除了核心的基于Web的MVC方法之外,這種框架還與Oracle SOA和WebCenter Portal(網絡中心門戶)框架集成,從而簡化了完整復合應用的創(chuàng)建。

在某些實施例中,ADF 124使得容易開發(fā)通過將服務接口耦合到由云基礎設施系統(tǒng)102提供的內置業(yè)務服務來將數據暴露作為服務的靈活應用。業(yè)務服務實現細節(jié)的這種分離在ADF 124中經由元數據執(zhí)行。這種元數據驅動的體系架構的使用使應用開發(fā)人員能夠專注于業(yè)務邏輯和用戶體驗,而不是服務被如何訪問的細節(jié)。在某些實施例中,ADF 124在模型層中的元數據中存儲服務的實現細節(jié)。這使開發(fā)人員能夠在不修改用戶接口的情況下交換服務,從而使應用非常靈活。此外,創(chuàng)建用戶接口的開發(fā)人員不需要操心業(yè)務服務訪問細節(jié)。相反,開發(fā)人員可以專注于開發(fā)應用接口和交互邏輯。創(chuàng)建用戶體驗可以像將期望的業(yè)務服務拖放到可視頁面設計器上并指示應當由哪種類型的組件表示那個數據一樣簡單。

在各種實施例中,開發(fā)人員與ADF 124交互,以創(chuàng)建形成企業(yè)應用的模塊。企業(yè)應用可以在云基礎設施系統(tǒng)102的上下文內執(zhí)行。在各種實施例中,開發(fā)人員與ADF 124交互,以創(chuàng)建形成移動應用的模塊。移動應用可以在云基礎設施系統(tǒng)102的上下文內執(zhí)行。下面描述的本發(fā)明的特征可以使用編程語言和應用開發(fā)框架的任何期望的組合實現,通過閱讀本文提供的公開,這對于相關領域的技術人員將是清楚的。

在一個示例中,由ADF 124提供的一個或多個框架可以體現為Oracle ADF。相應地,ADF 124中的框架可以基于模型-視圖-控制器(MVC)設計模式。MVC應用被分為:1)處置與數據源的交互并運行業(yè)務邏輯的模型層,2)處置應用用戶接口的視圖層,以及3)管理應用流并充當模型層和視圖層之間的接口的控制器。將應用分為這三個層簡化了組件跨應用的維護和重用。每個層相對于其它層的獨立性導致松散耦合的面向服務的體系架構(SOA)。

在各種實施例中,ADF 124提供允許開發(fā)人員創(chuàng)建多層的形式的應用的工具和資源,每層包含根據預定義的規(guī)范實現期望邏輯的代碼模塊/文件。因此,在一個實施例中,ADF 124使應用能夠被開發(fā)為四層:包含提供應用的用戶接口的代碼模塊/文件的視圖層,包含控制應用的流的代碼模塊的控制器層,包含為底層數據提供抽象層的數據/代碼模塊的模型層,以及包含提供對來自各種源的數據的訪問并處置業(yè)務邏輯的代碼模塊的業(yè)務服務層。

在某些實施例中,ADF 124讓開發(fā)人員選擇當實現這些層中的每個層時他們偏好使用的技術。EJB、Web服務、JavaBeans、JPA/EclipseLink/TopLink對象以及許多其它的技術全都可以被用作用于ADF 124的業(yè)務服務。視圖層可以包括使用JSF、Desktop Swing應用和MS Office前端實現的基于Web的接口,以及用于移動設備的接口。

在一方面,視圖層表示正在被開發(fā)的應用的用戶接口。視圖層可以包括桌面視圖、移動視圖和基于瀏覽器的視圖,其中每個視圖提供用戶接口的全部或一部分,并且以對應于視圖類型的各種方式可訪問。例如,網頁可以由應用響應于接收到包含對應URL的客戶端請求而被發(fā)送。然后,網頁可以由與發(fā)出請求的客戶端系統(tǒng)關聯的顯示單元(未示出)上的瀏覽器顯示,由此使發(fā)出請求的客戶端系統(tǒng)的用戶能夠與企業(yè)應用交互。ADF 124支持對業(yè)務服務的多信道訪問,從而允許業(yè)務服務的重用和從Web客戶端、基于客戶端-服務器swing桌面的應用、Microsoft Excel電子表格、諸如智能電話的移動設備等進行訪問。

可以使用超文本標記語言(HTML)、Java服務器頁面(JSP)和Java服務器面(JSF)中的一個或多個來實現形成視圖層(諸如網頁)的代碼文件/模塊??商娲?,用戶接口可以使用諸如Swing之類的Java組件和/或可擴展標記語言(XML)來實現。如進一步提及的,用戶接口可以充分利用用戶對桌面應用(諸如Microsoft的Word和Excel)的經驗和熟悉性。

如上面所提及的,在每個層中提供相關的用戶開發(fā)的代碼/數據模塊。然而,每個層通常包含由ADF 124提供的其它預定義的代碼/數據模塊。這些預定義的模塊當中的一些可以在開發(fā)期間使用,例如,作為用于開發(fā)網頁的模板,用于在所開發(fā)的代碼中包括期望的功能,等等。其它預定義模塊(諸如URL重寫模塊)可以與所開發(fā)的應用一起部署,并且可以在企業(yè)應用執(zhí)行期間向用戶提供附加的功能(將所請求的URL映射到內部名稱)。

控制器層包含控制應用的流的代碼模塊/文件。每個控制器對象包含根據在視圖層中呈現信息的期望方式實現的軟件指令和/或數據。期望的方式可以包括當用戶點擊/選擇另一個網頁中的鏈接時要顯示的特定網頁、當執(zhí)行期間發(fā)生錯誤時要顯示的頁面、指示要存儲/檢索的具體數據,等等。

在一方面,控制器層管理應用流并處置用戶輸入。例如,當在頁面上點擊搜索按鈕時,控制器確定要執(zhí)行的動作(進行搜索)和導航到的位置(結果頁面)。在JDeveloper中對于基于Web的應用有兩個控制器選項:標準JSF控制器或擴展JSF控制器功能的ADF控制器。無論使用哪種控制器,應用流通常都是通過在圖表上布置頁面和導航規(guī)則來設計的。應用的流可以被分解為更小的、可重用的任務流;包括非可視組件,諸如流中的方法調用和決策點;并創(chuàng)建在單個包含頁面的區(qū)域內部運行的“頁面片段(page fragment)”流。

形成控制器層的代碼模塊/文件常常被實現為接收客戶端請求并將期望的網頁作為對應響應發(fā)送的Java伺服小程序(servlet)??刂破鲗ο笠部梢员粚崿F為例如Apache Jakarta Struts控制器,或根據JSF標準實現。

模型層包含將各種業(yè)務服務連接到在其它層中使用它們的對象(諸如連接到上面討論的控制器對象或直接連接到如所示的桌面應用)的數據/代碼模塊。模型層的每個抽象數據對象提供可以被用來訪問在底層業(yè)務服務層中執(zhí)行的任何類型的業(yè)務服務的對應接口。數據對象可以從客戶端抽象服務的業(yè)務服務實現細節(jié)和/或向視圖組件暴露數據控制方法/屬性,從而提供視圖層和數據層的分離。

在一方面,模型層由利用元數據文件來定義接口的兩個組件(數據控件和數據綁定)組成。數據控件從客戶端抽象業(yè)務服務實現細節(jié)。數據綁定向UI組件暴露數據控件方法和屬性,從而提供視圖和模型的干凈分離。由于模型層的元數據體系架構,當將任何類型的業(yè)務服務層實現綁定到視圖層和控制器層時,開發(fā)人員獲得相同的開發(fā)體驗。

在某些實施例中,ADF 124強調貫穿整個開發(fā)過程使用聲明性編程范例,以允許用戶專注于應用創(chuàng)建的邏輯,而不必涉及實現細節(jié)。在高級別,用于Fusion web應用的開發(fā)過程通常涉及創(chuàng)建應用工作空間。使用向導,由開發(fā)人員選擇的技術所需的庫和配置被自動添加,并且應用被結構化為具有包和目錄的項目。

通過對數據庫對象進行建模,可以創(chuàng)建任何數據庫的在線數據庫或離線副本、編輯定義、以及更新模式(schema)。使用UML建模器,然后可以為應用創(chuàng)建用例。還可以設計應用控制和導航。圖形繪制器可以被用來可視確定應用控制和導航的流。然后,可以自動創(chuàng)建描述流的底層XML文件。資源庫可以被用來允許開發(fā)人員通過簡單地將導入的庫拖放到應用中來查看和使用庫。從數據庫表,可以使用向導或對話框創(chuàng)建實體對象。從這些實體對象,創(chuàng)建視圖對象以由應用中的頁面使用??梢詫崿F驗證規(guī)則和其它類型的業(yè)務邏輯。

在這個示例中,業(yè)務服務層管理與數據持久化層的交互。它提供諸如數據持久性、對象/關系映射、事務管理和業(yè)務邏輯執(zhí)行之類的服務。業(yè)務服務層可以以以下任何選項實現:作為簡單的Java類、EJB、Web服務、JPA對象和Oracle ADF業(yè)務組件。此外,數據可以直接從文件(XML或CSV)以及REST中消費。因此,每個業(yè)務服務管理與對應的數據持久化層的交互,并且還提供諸如對象/關系映射、事務管理、業(yè)務邏輯執(zhí)行等服務。業(yè)務服務層可以使用簡單的Java類、企業(yè)Java Beans、web服務等當中的一個或多個來實現。

業(yè)務組件表示使用例如Oracle ADF業(yè)務組件實現的業(yè)務服務,以提供與數據庫、web服務、遺留系統(tǒng)、應用服務器等的交互。在一個實施例中,業(yè)務服務層的業(yè)務組件包含合作以提供業(yè)務服務實現的應用模塊、視圖/查詢對象和實體對象的混合。應用模塊可以是UI客戶端為了與應用/事務數據一起工作而與其通信的事務組件/代碼模塊。應用模塊可以提供可更新的數據模型以及與用戶事務相關的過程/函數(通常被稱為服務方法)。

實體對象可以表示數據庫表中的對應行并且簡化對存儲在對應行中的數據的操縱(更新、刪除等)。實體對象常常封裝用于對應行的業(yè)務邏輯,以確保始終實施期望的業(yè)務規(guī)則。實體對象還可以與其它實體對象關聯,以反映存儲在底層數據庫中的行之間存在的關系。

JSON樣式表語言變換

圖2是一個實施例中的用于變換JSON數據的工作流200的簡化框圖。在工作流200中,在JSL API 220處接收輸入JSON數據210。在JSL API 220處接收JSL 230(也是JSON文檔)。JSL API 220基于輸入JSON數據210和JSL 230生成變換后的JSON數據240。

在這個示例性實施例中,一般而言,輸入JSON數據210是指定數據的一部分或對象的邏輯結構的JSON文檔。輸入JSON數據210的邏輯結構可以根據一個或多個JSON模式(schema)來定義。

JSL 230也是JSON文檔。處理器(例如,JSL API 220)可以理解JSL 230的JSL(JSON樣式表語言)并且對輸入JSON數據210應用一個或多個指定的變換。這類似于用來對XML應用變換的XSLT。JSL的主要優(yōu)點之一是用戶不需要熟悉其它語言的規(guī)范。這是因為JSL本身是以JSON數據格式編寫的,類似于定義XML變換的XSL。

在市場上,存在許多變換JSON數據的變換工具。但是這些工具中的大多數是用單獨的語言編寫的,這使得用戶難以處置。例如,JsonT是一種用于變換類JSON結構的語言,類似于XML世界中的XSLT。這種實現不像JSL那么直接。在另一個示例中,json2json是用CoffeeScript編寫的并被設計為在Node.js環(huán)境中運行。這種實現的缺點是用戶必須學習Coffee語言來創(chuàng)建用于變換的模板文件。然而,在JSL中,用戶為變換指定的模板是以JSON編寫的。

在各種實施例中,JSL 230是根據JSL規(guī)范定義的。JSL可以包含配置處理器以實現輸入JSON數據210的變換的關鍵字。在一方面,在JSL文件中提供“value(值)”關鍵字以命令處理器如何表示輸入JSON數據中的指定鍵的值?!皏alue”關鍵字可以用值來定義。在一個實施例中,值可以是指示輸入JSON數據210中的鍵的詞匯路徑(lexical path)的詞匯字符串。這個路徑可以以“root(根)”關鍵字(例如,root.employee.id)開始,其中employee(雇員)是對象,id是字符串值屬性。

在另一個實施例中,值可以是文本字符串,該文本字符串指示在單引號之間定義以被視為值的任何文本。在還有另一個實施例中,值可以是運算字符串,該運算字符串指示詞匯/文本字符串與在它們上定義的算術運算/字符串運算/邏輯運算的組合。例如,“concat(root.employee.id,'abc')”指示當插入到變換后的JSON數據240中時,id字段的值將與字符串‘abc’聯接(concatenate)。

在另一方面,在JSL文件中提供“type(類型)”關鍵字,以命令處理器如何表示具體鍵的值的數據類型。在各種實施例中,“type”關鍵字可以用值來定義。在某些實施例中,值可以是整數(integer)、字符串(string)、雙精度(double)、布爾型(Boolean)、空(null)等。對于JSONArray(JSON數組)元素,值可以被指定為objectarray(對象數組)、<Primitive Data Type>(<基本數據類型>)數組——例如Stringarray(字符串數組)等。

在還有另一方面,在JSL文件中提供“source(源)”關鍵字,以命令處理器如何表示實體的父代的詞匯路徑。在各種實施例中,僅為數組元素定義該關鍵字。在另一方面,在JSL文件中提供“testexpression(文本表達式)”關鍵字,以命令處理器如何相對于一個或多個指定的條件評估輸入JSON數據210。這個關鍵字可以被用來評估將基于其來處理具體JSON對象或JSON數組的表達式。該表達式可以返回布爾值。在對象級,基于“testexpression”結果,處理器可以決定對象是被排除還是被包括在變換后的JSON數據240中。在節(jié)點級,基于“testexpression”結果,處理器可以決定節(jié)點是被排除還是被包括在變換后的JSON數據240中。

在某些實施例中,支持各種變換操作。例如,字符串操作可以包括聯接、比較、替換、提取子串(substring)等。算術運算可以包括加法、乘法、除法、減法等。布爾運算可以包括true()、false()、not()等。

圖3是一個實施例中的使用定義一個或多個變換的JSON對象來執(zhí)行JSON數據變換的方法300的流程圖。圖3中繪出的方法300中的處理或方法300的實現可以在由邏輯機器(諸如計算機系統(tǒng)或信息處理設備)的中央處理單元(CPU或處理器)執(zhí)行時由軟件(例如,指令或代碼模塊)執(zhí)行、可以由電子設備或專用集成電路的硬件組件執(zhí)行、或者可以由軟件和硬件元件的組合執(zhí)行。圖3中繪出的方法300開始于步驟310。

在步驟310中,接收第一JSON對象。第一JSON對象可以作為字符串形式的序列化對象被接收。在步驟320中,接收定義一個或多個變換的第二JSON對象。如上面所討論的,像用戶熟悉的其它JSON數據那樣,使用指示將應用于其的過濾器、源節(jié)點、源對象的變換的一個或多個已定義的關鍵字將第二JSON對象編寫為用戶熟悉的其他JSON對象。

在步驟330中,基于第一JSON對象和第二JSON對象生成第三JSON對象。相應地,不需要變換成任何中間形式或語言。此外,用戶不需要為了定義變換而學習新語言。

圖4是一個實施例中的用于確定如何使用一個對象的JSON數據屬性語言來變換另一個對象的JSON數據的方法400的流程圖。圖4中繪出的方法400中的處理或方法400的實現可以在由邏輯機器(諸如計算機系統(tǒng)或信息處理設備)的中央處理單元(CPU或處理器)執(zhí)行時由軟件(例如,指令或代碼模塊)執(zhí)行、可以由電子設備或專用集成電路的硬件組件執(zhí)行、或者可以由軟件和硬件元件的組合執(zhí)行。圖4中繪出的方法400開始于步驟410。

在步驟410中,確定輸入對象具有由變換對象的屬性引用的屬性。在某些實施例中,可以通過在輸入對象與變換對象之間匹配屬性名稱來進行引用。相應地,輸入對象的屬性可以具有與變換對象的屬性完全相同的名稱。在一些實施例中,輸入對象的屬性可以由變換對象的屬性的值引用。例如,作為變換對象的屬性的值而提供的名稱關鍵字可以被用來對輸入對象的屬性的名稱進行引用。

在步驟420中,確定如何基于變換對象的屬性來變換輸入對象的屬性。在某些實施例中,所確定的變換可以包括輸入對象的屬性的重命名、對輸入對象的屬性的值的修改、對于是否將輸入對象的屬性包括在輸出對象中的確定,等等。

在步驟430中,基于使用變換對象變換輸入對象來生成輸出對象。

圖5是一個實施例中的用于確定如何使用JSON樣式表語言來變換JSON數據的方法的流程圖。圖5中繪出的方法500中的處理或方法500的實現可以在由邏輯機器(諸如計算機系統(tǒng)或信息處理設備)的中央處理單元(CPU或處理器)執(zhí)行時由軟件(例如,指令或代碼模塊)執(zhí)行、可以由電子設備或專用集成電路的硬件組件執(zhí)行、或者可以由軟件和硬件元件的組合執(zhí)行。圖5中繪出的方法500開始于步驟510。

在步驟510中,接收輸入屬性。輸入屬性由鍵-值對表示。鍵提供屬性的名稱,并且值可以是一個或多個基本數據類型或對象。在步驟520中,確定是否存在輸入屬性的對應變換。如上面所討論的,可以通過變換對象的與輸入屬性具有相同名稱的屬性、通過變換對象的具有對輸入屬性的引用的屬性等來找到對應的變換。

如果確定不存在輸入屬性的對應變換,則在步驟530中,確定在輸出對象中是包括還是排除該輸入屬性。規(guī)則可以指示變換的不存在使屬性按原樣流向輸出對象。另一個規(guī)則可以指示變換的不存在使屬性從輸出對象中被過濾掉。

如果確定存在輸入屬性的對應變換,則在步驟540中,基于變換對象確定條件集合。在各種實施例中,變換對象的對應屬性可以包括定義一個或多個條件的表達式。條件可以表達需要被滿足以針對該條件評估為真的準則(criteria)。準則可以在以下方面被表達:屬性的名稱、屬性的值、其組合或者需要被評估以便確定它們是否滿足預定準則的其它條件、規(guī)則、閾值、限制等。

在步驟550中,確定輸入屬性是否滿足所確定的準則。可以發(fā)現輸入屬性滿足或不滿足準則的空集??梢园l(fā)現輸入屬性滿足或不滿足預定閾值、評估、計算、操作集合等。如果確定輸入屬性未能滿足所確定的準則,則在步驟530中,確定在輸出對象中是包括還是排除該輸入屬性,如上面所討論的那樣。

如果確定輸入屬性滿足所確定的準則,則在步驟560中,基于變換對象來確定要執(zhí)行的操作集合,這些操作確定輸出對象中的對應屬性的值。在某些實施例中,所確定的操作集合可以包括:輸入對象的屬性的重命名、對輸入對象的屬性的值的修改、對于在輸出對象中是包括輸入對象的屬性的值的全部或部分的確定,等等。

在步驟570中,針對輸出對象中的對應屬性基于變換對象確定數據類型。數據類型可以由變換對象顯式地定義、從輸入對象推斷、基于執(zhí)行操作集合的結果確定,等等。如上面所討論的,所確定的數據類型可以包括基本JSON對象數據類型。

在步驟580中,基于執(zhí)行操作集合所得到的值以及所確定的數據類型來生成輸出對象的對應屬性。在某些實施例中,操作的空集可以使輸入屬性的值流經到輸出對象的對應屬性。在其它實施例中,操作集合可以重命名值、計算新值、修改值等。

圖6是一個實施例中的用于變換與JSON樣式表語言對象的屬性具有相同名稱的JSON數據屬性的方法600的流程圖。圖6中繪出的方法600中的處理或方法600的實現可以在由邏輯機器(諸如計算機系統(tǒng)或信息處理設備)的中央處理單元(CPU或處理器)執(zhí)行時由軟件(例如,指令或代碼模塊)執(zhí)行、可以由電子設備或專用集成電路的硬件組件執(zhí)行,或者可以由軟件和硬件元件的組合執(zhí)行。圖6中繪出的方法600開始于步驟610。

在步驟610中,確定輸入對象具有名稱與變換對象的屬性的名稱匹配的屬性。圖7是一個實施例中的輸入JSON字符串710、JSL字符串720以及通過使用JSL字符串720對輸入JSON字符串710的屬性進行變換而產生的輸出JSON字符串730的圖示。如所示的,輸入JSON字符串710和JSL字符串720兩者都具有名稱為“id”的屬性。

在步驟620中,根據變換對象的具有相同名稱的屬性確定操作和數據類型。參考圖7,JSL字符串720的屬性“id”指定如何使用表達式“root.id*2”來變換輸入JSON字符串710的“id”屬性。換句話說,輸入JSON字符串710的“id”屬性的值將乘以2。JSL字符串720的屬性“id”還指定從表達式“root.id*2”得到的值將是整數。

在步驟630中,對輸入對象的屬性的值執(zhí)行所確定的由變換對象的匹配屬性指定的操作。在步驟640中,基于所確定的數據類型和操作的結果為輸出對象創(chuàng)建具有相同名稱的屬性。如圖7中所示,輸出JSON字符串730包括具有使用表達式“root.id*2”確定的值的“id”屬性。輸出JSON字符串730的“id”屬性的數據類型是整數。

圖8是一個實施例中的用于變換JSON樣式表語言對象的屬性所引用的JSON數據屬性的方法800的流程圖。圖8中繪出的方法800中的處理或方法800的實現可以在由邏輯機器(諸如計算機系統(tǒng)或信息處理設備)的中央處理單元(CPU或處理器)執(zhí)行時由軟件(例如,指令或代碼模塊)執(zhí)行、可以由電子設備或專用集成電路的硬件組件執(zhí)行,或者可以由軟件和硬件元件的組合執(zhí)行。圖8中繪出的方法800開始于步驟810。

在步驟810中,確定輸入對象具有名稱由變換對象的屬性引用的屬性。如圖7中所示,輸入JSON字符串710具有名稱為“name”的屬性,并且JSL字符串720具有名稱為“new_name”的屬性,該名稱為“new_name”的屬性通過作為值的表達式(例如“value”:“root.name”)來引用輸入JSON字符串710的名稱為“name”的屬性。

在步驟820中,根據變換對象的屬性確定屬性名稱。在步驟830中,根據變換對象的屬性確定數據類型。在步驟840中,為輸出對象創(chuàng)建具有所確定的名稱和所確定的數據類型的屬性。如圖7中所示,輸出JSON字符串730包括具有與輸入JSON字符串710的“name”屬性相同值(例如,“A green door”)和數據類型(例如,字符串)的“new_name”屬性。

圖9是一個實施例中的輸入JSON字符串910、JSL字符串920以及通過使用JSL字符串920對輸入JSON字符串910的屬性值進行變換而產生的輸出字符串930的圖示。在這個示例中,輸入JSON字符串910和JSL字符串920具有匹配的屬性“tags”。JSL字符串920指定變換,該變換不是針對如上所示的屬性名稱,而是針對對應屬性的值。已經指定了字符串操作“concat(root.tags,‘_new’)”,以向“tags”數組中的每個元素添加后綴“_new”。相應地,輸出JSON串930包括名稱為“tags”的屬性,其中數組的每個元素都添加了“_new”后綴。

圖10是一個實施例中的用于變換滿足JSON樣式表語言對象的屬性的表達式的JSON數據屬性的方法1000的流程圖。圖10中繪出的方法1000中的處理或方法1000的實現可以在由邏輯機器(諸如計算機系統(tǒng)或信息處理設備)的中央處理單元(CPU或處理器)執(zhí)行時由軟件(例如,指令或代碼模塊)執(zhí)行、可以由電子設備或專用集成電路的硬件組件執(zhí)行,或者可以由軟件和硬件元件的組合執(zhí)行。圖10中繪出的方法1000開始于步驟1010。

在步驟1010中,確定輸入對象具有滿足變換對象的屬性的表達式的屬性或屬性值??梢栽谧儞Q對象的具有相同名稱的屬性的值中、引用輸入屬性的名稱的屬性的值中、或者引用輸入屬性的值的屬性的值中指定表達式。圖11是一個實施例中的輸入JSON字符串1110、JSL字符串1120以及在滿足表達式時通過使用JSL字符串1120對輸入JSON字符串1110進行變換而產生的輸出字符串1130的圖示。如所示的,輸入JSON字符串1110具有名稱為“emp”的屬性,并且JSL字符串1120具有名稱為“emp”的屬性。JSL字符串1120的名稱為“emp”的屬性在“testexpression”中包括表達式,該表達式被這樣的對象滿足:該對象的empname(雇員姓名)以“B”開頭。因此,“emp”數組中只有一個對象滿足條件(例如,“empname”:“Bob”)。

在步驟1020中,根據變換對象的屬性確定操作。參考圖11,JSL字符串1120的屬性“emp”指定如何變換輸入JSON字符串1110的“emp”屬性的滿足“textexpression”的每個對象。在步驟1030中,根據變換對象的屬性確定數據類型。在步驟1040中,基于所確定的數據類型和操作的結果為輸出對象創(chuàng)建屬性。如圖11中所示,輸出JSON字符串1130包括具有帶“empname”:“Bob”的單個對象的“emp”屬性。相應地,可以指定過濾掉屬性或屬性值從而僅在輸出對象中留下期望的屬性或屬性值的條件。

圖12是一個實施例中的輸入JSON字符串1210、JSL字符串1220以及當滿足表達式時通過使用JSL字符串1220對輸入JSON字符串1210進行變換而產生的輸出字符串1230的圖示。在這個示例中,過濾掉不期望的屬性或屬性值。相應地,“textexpression”從對象中移除“Discount”:20屬性,因為CustomerType不是“Gold”,而是“Silver”。

圖13是一個實施例中的被配置為使用JSON樣式表語言對象執(zhí)行JSON對象變換的硬件單元1300的框圖。硬件單元1300包括JSON數據接收單元1310、預處理器單元1320、JSON變換接收單元1330、變換單元1340、后處理單元1350和JSON數據生成單元1360。每個單元可以由計算機處理器根據存儲在存儲器中的計算機可執(zhí)行代碼執(zhí)行。

JSON數據接收單元1310包括接收JSON數據的硬件和/或軟件元件。JSON數據接收單元1310可以從用戶輸入或其它計算機進程接收JSON數據。預處理器單元1320包括預處理JSON數據的硬件和/或軟件元件。一個或多個預處理步驟可以包括數據操縱操作、數據過濾操作、數據擴充(augmentation)操作等。JSON變換接收單元1330包括接收JSON數據的硬件和/或軟件元件。JSON變換接收單元1330可以從用戶輸入或其它計算機進程接收JSON數據。在這個示例中,在JSON變換接收單元1330處接收的JSON數據根據上面討論的JSL規(guī)范被格式化。

變換單元1340包括接收對象JSON對象和JSL變換的形式的JSON數據并應用任何指定的變換的硬件和/或軟件元件。變換單元1340不需要任何中間語言(諸如XML)來實現變換。

后處理單元1350包括處理JSON數據的硬件和/或軟件元件。一個或多個處理步驟可以包括數據操縱操作、數據過濾操作、數據擴充操作等。JSON數據生成單元1360包括生成JSON數據的硬件和/或軟件元件。雖然已經示出了多個單元,但是將理解的是,不是全部這些單元都是需要的,并且由一些單元執(zhí)行的一些功能可以結合到到其它單元中。

結論

圖14繪出了用于實現實施例之一的分布式系統(tǒng)1400的簡化圖。在所示實施例中,分布式系統(tǒng)1400包括一個或多個客戶端計算設備1402、1404、1406和1408,這些客戶端計算設備被配置為經一個或多個網絡1410執(zhí)行并操作諸如web瀏覽器、專屬客戶端(例如,Oracle Forms)等的客戶端應用。服務器1412可以經由網絡1410與遠程客戶端計算設備1402、1404、1406和1408在通信上耦合。

在各種實施例中,服務器1412可以適于運行由系統(tǒng)的組件當中的一個或多個提供的一個或多個服務或軟件應用。在一些實施例中,這些服務可以作為基于web的服務或云服務、或者在軟件即服務(SaaS)模型或平臺即服務(PaaS)模型下向客戶計算設備1402、1404、1406和/或1408的用戶提供。操作客戶端計算設備1402、1404、1406和/或1408的用戶繼而可以利用一個或多個客戶端應用與服務器1412交互,以利用由這些組件提供的服務。

在圖14中所繪出的配置中,系統(tǒng)1400的軟件組件1418、1420和1422被示為在服務器1412上實現。在其它實施例中,系統(tǒng)1400的一個或多個組件和/或由這些組件提供的服務也可以由客戶端計算設備1402、1404、1406和/或1408當中的一個或多個實現。操作客戶端計算設備的用戶然后可以利用一個或多個客戶端應用來使用由這些組件提供的服務。這些組件可以在硬件、固件、軟件或其組合中實現。應當認識到的是,各種不同的系統(tǒng)配置是可能的,這些配置可以與分布式系統(tǒng)1400不同。因此,該圖中所示的實施例是用于實現實施例系統(tǒng)的分布式系統(tǒng)的一個例子并且不旨在進行限制。

客戶端計算設備1402、1404、1406和/或1408可以是便攜式手持設備(例如,蜂窩電話、計算平板、個人數字助理(PDA))或可穿戴設備(例如,Google頭戴式顯示器),這些設備運行諸如Microsoft Windows的軟件和/或諸如iOS、Windows Phone、Android,BlackBerry 10、Palm OS等各種移動操作系統(tǒng),并且啟用了互聯網、電子郵件、短消息服務(SMS)、或其它的通信協(xié)議??蛻舳擞嬎阍O備1402、1404、1406和/或1408可以是通用個人計算機,包括例如運行各種版本的MicrosoftApple和/或Linux操作系統(tǒng)的個人計算機和/或膝上型計算機??蛻舳擞嬎阍O備1402、1404、1406和/或1408可以是運行任何各種商業(yè)可用的或類UNIX操作系統(tǒng)(包括但不限于各種GNU/Linux操作系統(tǒng),諸如例如Google Chrome OS)當中的任意操作系統(tǒng)的工作站計算機。替代地或附加地,客戶端計算設備1402、1404、1406和1408可以是能夠經(一個或多個)網絡1410通信的任何其它電子設備,諸如瘦客戶端計算機、啟用互聯網的游戲系統(tǒng)(例如,具有或不具有手勢輸入設備的Microsoft Xbox游戲控制臺),和/或個人消息傳送設備。

雖然示例性分布式系統(tǒng)1400被示為具有四個客戶端計算設備,但任何數量的客戶端計算設備可以被支持。其它設備(諸如具有傳感器的設備等)可以與服務器1412交互。

分布式系統(tǒng)1400中的(一個或多個)網絡1410可以是本領域技術人員熟悉的、可以支持使用各種商業(yè)可用的協(xié)議當中的任意協(xié)議的數據通信的任何類型的網絡,其中這些協(xié)議包括但不限于TCP/IP(傳輸控制協(xié)議/互聯網協(xié)議)、SNA(系統(tǒng)網絡體系架構)、IPX(互聯網數據包交換)、AppleTalk,等等。僅僅作為示例,(一個或多個)網絡1410可以是局域網(LAN),諸如基于以太網、令牌環(huán)等的LAN。(一個或多個)網絡1410可以是廣域網和互聯網。它可以包括虛擬網絡,包括但不限于虛擬專用網(VPN)、內聯網、外聯網、公共交換電話網(PSTN)、紅外網絡、無線網絡(例如,在電子電氣工程師協(xié)會(IEEE)802.11協(xié)議套件、和/或任何其它無線協(xié)議當中的任意協(xié)議下操作的網絡)和/或這些和/或其它網絡的任意組合。

服務器1412可以由一個或多個通用計算機、專用服務器計算機(包括例如PC(個人計算機)服務器、服務器、中檔服務器、大型計算機、機架式服務器,等等)、服務器場、服務器集群,或者任何其它適當的布置和/或組合組成。在各種實施例中,服務器1412可以適于運行在前面公開中所描述的一個或多個服務或軟件應用。例如,服務器1412可以對應于用于執(zhí)行上面根據本公開的實施例所描述的處理的服務器。

服務器1412可以運行包括上面所討論的操作系統(tǒng)當中的任意操作系統(tǒng)以及任何商業(yè)可用的服務器操作系統(tǒng)的操作系統(tǒng)。服務器1412還可以運行各種附加的服務器應用和/或中間層應用當中的任意應用,包括HTTP(超文本傳輸協(xié)議)服務器、FTP(文件傳輸協(xié)議)服務器、CGI(公共網關接口)服務器、服務器、數據庫服務器,等等。示例性數據庫服務器包括但不限于從Oracle、Microsoft、Sybase、IBM(國際商業(yè)機器)等等可商業(yè)獲得的那些。

在一些實現中,服務器1412可以包括一個或多個應用,以分析和整合從客戶端計算設備1402、1404、1406和1408的用戶接收的數據饋送和/或事件更新。作為示例,數據饋送和/或事件更新可以包括但不限于饋送、更新或者從一個或多個第三方信息源接收到的實時更新以及連續(xù)數據流,這些連續(xù)數據流可以包括與傳感器數據應用、金融報價機、網絡性能測量工具(例如,網絡監(jiān)視和流量管理應用)、點擊流分析工具、汽車流量監(jiān)視等相關的實時事件。服務器1412還可以包括一個或多個應用,以經由客戶端計算設備1402、1404、1406和1408的一個或多個顯示設備顯示數據饋送和/或實時事件。

分布式系統(tǒng)1400還可以包括一個或多個數據庫1414和1416。數據庫1414和1416可以駐留在各個位置中。作為示例,數據庫1414和1416當中的一個或多個可以駐留在服務器1412本地(和/或駐留在服務器1412中)的非臨時性存儲介質上。作為替代,數據庫1414和1416可以遠離服務器1412,并且經基于網絡的連接或專用的連接與服務器1412通信。在一組實施例中,數據庫1414和1416可以駐留在本領域技術人員熟悉的存儲區(qū)域網絡(SAN)中。類似地,用于執(zhí)行服務器1412所具有的功能的任何必要的文件都可以適當地本地存儲在服務器1412上和/或遠程存儲。在一組實施例中,數據庫1414和1416可以包括適于響應于SQL格式的命令而存儲、更新和檢索數據的關系數據庫,諸如由Oracle提供的數據庫。

圖15示出了在其中可以實現本發(fā)明的各種實施例的示例性計算機系統(tǒng)1500。系統(tǒng)1500可以被用來實現上述任何計算機系統(tǒng)。如圖15中所示,計算機系統(tǒng)1500包括總線子系統(tǒng)1502和經由總線子系統(tǒng)1502與多個外圍子系統(tǒng)通信的處理單元1504。這些外圍子系統(tǒng)可以包括處理加速單元1506、I/O子系統(tǒng)1508、存儲子系統(tǒng)1518和通信子系統(tǒng)1524。存儲子系統(tǒng)1518包括有形計算機可讀存儲介質1522和系統(tǒng)存儲器1510。

總線子系統(tǒng)1502提供了用于讓計算機系統(tǒng)1500的各個組件和子系統(tǒng)按意圖彼此通信的機制。雖然總線子系統(tǒng)1502被示意性地示為單個總線,但是總線子系統(tǒng)的替代實施例可以利用多個總線??偩€子系統(tǒng)1502可以是若干種類型的總線結構中的任何一種,包括使用任何各種總線體系結構的存儲器總線或存儲器控制器、外圍總線、以及局部總線。例如,這種體系結構可以包括工業(yè)標準體系結構(ISA)總線、微通道體系結構(MCA)總線、增強型ISA(EISA)總線、視頻電子標準協(xié)會(VESA)局部總線和外圍組件互連(PCI)總線,這些可以被實現為按IEEE P1386.1標準制造的Mezzanine(夾層)總線。

可以被實現為一個或多個集成電路(例如,常規(guī)微處理器或微控制器)的處理單元1504控制計算機系統(tǒng)1500的操作。一個或多個處理器可以被包括在處理單元1504中。這些處理器可以包括單核處理器或多核處理器。在某些實施例中,處理單元1504可以被實現為一個或多個獨立的處理單元1532和/或1534,其中在每個處理單元中包括單個或多核處理器。在其它實施例中,處理單元1504也可以被實現為通過將兩個雙核處理器集成到單個芯片中而形成的四核處理單元。

在各種實施例中,處理單元1504可以響應于程序代碼執(zhí)行各種程序并且可以維護多個并發(fā)執(zhí)行的程序或進程。在任何給定的時間,要被執(zhí)行的程序代碼中的一些或全部代碼可以駐留在(一個或多個)處理器1504中和/或存儲子系統(tǒng)1518中。通過適當的編程,(一個或多個)處理器1504可以提供上述各種功能。計算機系統(tǒng)1500可以附加地包括處理加速單元1506,處理加速單元1506可以包括數字信號處理器(DSP)、專用處理器,等等。

I/O子系統(tǒng)1508可以包括用戶接口輸入設備和用戶接口輸出設備。用戶接口輸入設備可以包括鍵盤、諸如鼠標或軌跡球的指點設備、結合到顯示器中的觸摸板或觸摸屏、滾動輪、點擊輪、撥盤、按鈕、開關、鍵盤、具有語音命令識別系統(tǒng)的音頻輸入設備、麥克風以及其它類型的輸入設備。用戶接口輸入設備可以包括例如諸如Microsoft 運動傳感器之類的運動感測和/或手勢識別設備,Microsoft 運動傳感器使得用戶能夠使用手勢和語音命令通過自然用戶接口控制諸如Microsoft360游戲控制器的輸入設備并與之交互。用戶接口輸入設備還可以包括眼睛姿勢識別設備,諸如從用戶檢測眼睛活動(例如,當拍攝照片和/或做出菜單選擇時的“眨眼”)并且將眼睛姿勢變換為到輸入設備(例如,Google)中的輸入的Google眨眼檢測器。此外,用戶接口輸入設備可以包括使用戶能夠通過語音命令與語音識別系統(tǒng)(例如,導航器)交互的語音識別感測設備。

用戶接口輸入設備還可以包括但不限于三維(3D)鼠標、操縱桿或指向棒、游戲面板和繪圖板,以及音頻/視頻設備,諸如揚聲器、數碼相機、數碼攝像機、便攜式媒體播放器、網絡攝像頭、圖像掃描儀、指紋掃描儀、條形碼閱讀器3D掃描儀、3D打印機、激光測距儀和視線跟蹤設備。此外,用戶接口輸入設備可以包括例如醫(yī)學成像輸入設備,諸如計算機斷層掃描、磁共振成像、正電子發(fā)射斷層掃描、醫(yī)療超聲設備。用戶接口輸入設備還可以包括例如音頻輸入設備,諸如MIDI鍵盤、數字樂器等。

用戶接口輸出設備可以包括顯示子系統(tǒng)、指示燈,或者諸如音頻輸出設備的非視覺顯示器,等等。顯示子系統(tǒng)可以是陰極射線管(CRT)、諸如使用液晶顯示器(LCD)或等離子顯示器的平板設備、投影設備、觸摸屏,等等。一般而言,術語“輸出設備”的使用旨在包括用于從計算機系統(tǒng)1500向用戶或其它計算機輸出信息的所有可能類型的設備和機制。例如,用戶接口輸出設備可以包括但不限于在視覺上傳達文本、圖形和音頻/視頻信息的各種顯示設備,諸如監(jiān)視器、打印機、揚聲器、耳機、汽車導航系統(tǒng)、繪圖儀、語音輸出設備,以及調制解調器。

計算機系統(tǒng)1500可以包括包含軟件元素的存儲子系統(tǒng)1518,其中這些軟件元素被示為當前位于系統(tǒng)存儲器1510中。系統(tǒng)存儲器1510可以存儲可加載并且可在處理單元1504上執(zhí)行的程序指令,以及這些程序執(zhí)行期間所產生的數據。

取決于計算機系統(tǒng)1500的配置和類型,系統(tǒng)存儲器1510可以是易失性的(諸如隨機存取存儲器(RAM))和/或非易失性的(諸如只讀存儲器(ROM)、閃存存儲器,等等)。RAM通常包含可以被處理單元1504立即訪問和/或目前正被處理單元1504操作和執(zhí)行的數據和/或程序模塊。在一些實現中,系統(tǒng)存儲器1510可以包括多種不同類型的存儲器,例如靜態(tài)隨機存取存儲器(SRAM)或動態(tài)隨機存取存儲器(DRAM)。在一些實現中,基本輸入/輸出系統(tǒng)(BIOS)通??梢员淮鎯υ赗OM中,基本輸入/輸出系統(tǒng)(BIOS)包含諸如在啟動期間有助于在計算機系統(tǒng)1500內的元件之間傳送信息的基本例程。作為示例而不是限制,系統(tǒng)存儲器1510也示出了應用程序1512、程序數據1514、以及操作系統(tǒng)1516,其中應用程序1512可以包括客戶端應用、web瀏覽器、中間層應用、關系數據庫管理系統(tǒng)(RDBMS)等。作為示例,操作系統(tǒng)1516可以包括各種版本的MicrosoftApple和/或Linux操作系統(tǒng)、各種商業(yè)可用的或類UNIX操作系統(tǒng)(包括但不限于各種GNU/Linux操作系統(tǒng)、Google操作系統(tǒng),等等)和/或諸如iOS、 Phone、 OS、10OS和 OS操作系統(tǒng)之類的移動操作系統(tǒng)。

存儲子系統(tǒng)1518也可以提供用于存儲提供一些實施例的功能的基本編程和數據構造的有形計算機可讀存儲介質。當被處理器執(zhí)行時提供上述功能的軟件(程序、代碼模塊、指令)可以被存儲在存儲子系統(tǒng)1518中。這些軟件模塊或指令可以由處理單元1504執(zhí)行。存儲子系統(tǒng)1518還可以提供用于存儲根據本發(fā)明被使用的數據的儲存庫。

存儲子系統(tǒng)1500還可以包括可以被進一步連接到計算機可讀存儲介質1522的計算機可讀存儲介質讀取器1520。計算機可讀存儲介質1522可以與系統(tǒng)存儲器1510一起以及可選地與系統(tǒng)存儲器1510組合來全面地表示用于臨時和/或更持久地包含、存儲、傳輸和檢索計算機可讀信息的遠程、本地、固定和/或可移除的存儲設備加存儲介質。

包含代碼或代碼的部分的計算機可讀存儲介質1522還可以包括本領域已知或使用的任何適當的介質,包括存儲介質和通信介質,諸如但不限于以用于信息的存儲和/或傳輸的任何方法或技術實現的易失性和非易失性、可移除和不可移除介質。這可以包括有形的計算機可讀存儲介質,諸如RAM、ROM、電可擦除可編程ROM(EEPROM)、閃存存儲器或其它存儲器技術、CD-ROM、數字多功能盤(DVD)或其它光學儲存器、磁卡帶、磁帶、磁盤儲存器或其它磁存儲設備,或者其它有形的計算機可讀介質。這也可以包括非有形的計算機可讀介質,諸如數據信號、數據傳輸,或者可以被用來傳輸期望的信息并且可以被計算系統(tǒng)1500訪問的任何其它介質。

作為示例,計算機可讀存儲介質1522可以包括從不可移除的非易失性磁介質讀取或寫到其的硬盤驅動器、從可移除的非易失性磁盤讀取或寫到其的磁盤驅動器、以及從可移除的非易失性光盤(諸如CD ROM、DVD和Blu-盤或其它光學介質)讀取或寫到其的光盤驅動器。計算機可讀存儲介質1522可以包括但不限于驅動器、閃存存儲器卡、通用串行總線(USB)閃存驅動器、安全數字(SD)卡、DVD盤、數字音頻帶,等等。計算機可讀存儲介質1522還可以包括基于非易失性存儲器的固態(tài)驅動器(SSD)(諸如基于閃存存儲器的SSD、企業(yè)閃存驅動器、固態(tài)ROM等)、基于易失性存儲器的SSD(諸如固態(tài)RAM、動態(tài)RAM、靜態(tài)RAM、基于DRAM的SSD、磁阻RAM(MRAM)SSD)、以及使用基于DRAM的SSD和基于閃存存儲器的SSD的組合的混合SSD。盤驅動器及其關聯的計算機可讀介質可以為計算機系統(tǒng)1500提供計算機可讀指令、數據結構、程序模塊及其它數據的非易失性存儲。

通信子系統(tǒng)1524提供到其它計算機系統(tǒng)和網絡的接口。通信子系統(tǒng)1524充當用于從其它系統(tǒng)接收數據和從計算機系統(tǒng)1500向其它系統(tǒng)傳輸數據的接口。例如,通信子系統(tǒng)1524可以使計算機系統(tǒng)1500能夠經由互聯網連接到一個或多個設備。在一些實施例中,通信子系統(tǒng)1524可以包括用于訪問無線語音和/或數據網絡的射頻(RF)收發(fā)器組件(例如,使用蜂窩電話技術,諸如3G、4G或EDGE(用于全球演進的增強型數據速率)的先進數據網絡技術,WiFi(IEEE 802.11系列標準)、或其它移動通信技術、或其任意組合)、全球定位系統(tǒng)(GPS)接收器組件和/或其它組件。在一些實施例中,作為無線接口的附加或者替代,通信子系統(tǒng)1524還可以提供有線網絡連接(例如,以太網)。

在一些實施例中,通信子系統(tǒng)1524也可以代表可以使用計算機系統(tǒng)1500的一個或多個用戶接收結構化和/或非結構化數據饋送1526、事件流1528、事件更新1530等形式的輸入通信。

作為示例,通信子系統(tǒng)1524可以被配置為實時地從社交媒體網絡和/或其它通信服務的用戶接收數據饋送1526,諸如饋送、更新、諸如豐富站點摘要(RSS)饋送的web饋送,和/或,接收來自一個或多個第三方信息源的實時更新。

此外,通信子系統(tǒng)1524還可以被配置為接收連續(xù)數據流形式的數據,連續(xù)數據流可以包括實時事件的事件流1528和/或事件更新1530,連續(xù)數據流形式的數據本質上可以是連續(xù)的或無界的而沒有明確的終止。產生連續(xù)數據的應用的示例可以包括例如傳感器數據應用、金融報價機、網絡性能測量工具(例如,網絡監(jiān)視和流量管理應用)、點擊流分析工具、汽車流量監(jiān)視,等等。

通信子系統(tǒng)1524還可以被配置為向一個或多個數據庫輸出結構化和/或非結構化數據饋送1526、事件流1528、事件更新1530等等,這一個或多個數據庫可以與耦合到計算機系統(tǒng)1500的一個或多個流傳輸數據源計算機通信。

計算機系統(tǒng)1500可以是各種類型之一,包括手持便攜式設備(例如,蜂窩電話、計算平板、PDA)、可穿戴設備(例如,Google頭戴式顯示器)、PC、工作站、大型機、信息站、服務器機架、或任何其它數據處理系統(tǒng)。

由于計算機和網絡的不斷變化的本質,在圖中繪出的計算機系統(tǒng)1500的描述旨在僅僅作為具體的示例。具有比圖中繪出的系統(tǒng)更多或更少組件的許多其它配置是可能的。例如,也可以使用定制的硬件,和/或特定的元件可以用硬件、固件、軟件(包括applets)或它們的組合來實現。另外,也可以采用到諸如網絡輸入/輸出設備之類的其它計算設備的連接?;诒疚奶峁┑墓_和教導,本領域普通技術人員將認識到實現各種實施例的其它方式和/或方法。

在前述的說明書中,本發(fā)明的各方面參考其具體實施例進行了描述,但本領域技術人員將認識到,本發(fā)明不限于此。上述發(fā)明的各個特征和各方面可以被單獨或聯合使用。另外,在不背離本說明書的更廣泛精神和范圍的情況下,實施例可以在除本文所述的那些之外的任何數目的環(huán)境和應用中被利用。相應地,本說明書和附圖應當被認為是說明性而不是限制性的。

其教導可以在本公開內呈現的一個或多個發(fā)明中任何一個的各種實施例可以以軟件、固件、硬件或其組合中的邏輯的形式實現。邏輯可以存儲在機器可訪問存儲器、機器可讀物品、有形計算機可讀介質、計算機可讀存儲介質或其它計算機/機器可讀介質之中或之上,作為適于指導邏輯機器的中央處理單元(CPU或處理器)執(zhí)行可在本公開內呈現的發(fā)明的各種實施例中公開的一組步驟的指令集合。邏輯可以形成軟件程序或計算機程序產品的一部分,因為代碼模塊在被執(zhí)行時變得與計算機系統(tǒng)或信息處理設備的處理器一起操作,以執(zhí)行本公開內呈現的發(fā)明的各種實施例中的方法或過程?;诒竟_和本文提供的教導,本領域普通技術人員將認識到用于在軟件、固件、硬件或其組合中實現所呈現的一個或多個發(fā)明的各種實施例的所公開的任何操作或功能的其它方式、變型、修改、替代和/或方法。

其教導可以在本公開中呈現的那些發(fā)明中任何一個的所公開的示例、實現和各種實施例僅僅是說明性的,以便以合理的清晰度向本領域技術人員傳達本公開的教導。由于這些實現和實施例可以參考示例性說明或具體附圖來描述,因此對于所描述的方法和/或具體結構的各種修改或調整可以對本領域技術人員變得清楚。依賴于本公開和本文中找到的這些教導并且所述教導已通過其使本領域進步的所有此類修改、調整或變化都將被認為在其教導可以在本公開中呈現的一個或多個發(fā)明的范圍內。由此,本描述和附圖不應當在限制的意義上考慮,因為應當理解,在公開中呈現的發(fā)明決不限于具體示出的那些實施例。

相應地,以上描述和任何附圖、說明和圖示旨在是說明性的而不是限制性的。因此,本公開中所呈現的任何發(fā)明的范圍不應當簡單地參考以上描述和圖中所示的那些實施例來確定,而是應當參考所附權利要求及其全部范圍或等同物來確定。

當前第1頁1 2 3 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
甘德县| 利津县| 普兰店市| 宜丰县| 郑州市| 灵山县| 潼南县| 当阳市| 类乌齐县| 新津县| 福海县| 石城县| 揭东县| 襄垣县| 顺平县| 土默特右旗| 莱西市| 松阳县| 海伦市| 察哈| 枣阳市| 天津市| 当雄县| 阿鲁科尔沁旗| 诏安县| 同德县| 抚宁县| 南和县| 阳曲县| 兴隆县| 旬邑县| 清镇市| 壤塘县| 肥东县| 济源市| 遵义县| 莱阳市| 宁夏| 桑日县| 桂阳县| 承德市|