專利名稱::軟件應用程序生存期和廣播應用程序的管理的制作方法
背景技術:
:本發明要求1998年10月13日遞交的美國臨時申請No.60/103,943的權益。本發明提供了用于在電視機頂盒終端中管理應用程序的軟件結構。使用的縮寫和術語如下API-應用程序編程接口ATSC-高級電視制式委員會DASE-ATSCT3/S17數字TV應用程序軟件環境DAVIC-數字音頻-視覺協會DTV-數字電視EPG-電子節目指南IRD-集成接收器解碼器ISO-國際標準組織JVM-Java可視機PSIP-節目和制式信息協議(用于地面廣播和有線)RAM-隨機存儲器;和UML-統一模型化語言。機頂盒終端,也被稱為IRD或用戶終端,是一種接收和解碼電視信號,用于由電視呈現的設備。例如,該信號可以在衛星上、通過有線或通過地面廣播來傳送。經現代機頂盒的各種應用程序已經被提出,或者當前就可以使用,包括視頻點播(VOD),音頻點播,單次付費收看,交互購物,電子商務,電子節目指南,互聯網瀏覽器,郵件服務(例如,文本電子郵件、聲音郵件、音頻郵件和/或視頻郵件),電話服務,股票行情,天氣數據,旅游信息,游戲,賭博,銀行,購物,選舉,和其他。應用程序也可以實現互聯網連接和可能基于互聯網的電話。機頂盒的功能是通過專用的硬件和軟件來實現的。另外,隨著諸如互聯網、電話網和寬帶分布網的計算機網絡的逐漸整合,帶來許多提供新類型應用程序的機會。這些應用程序可以經網絡被傳送到機頂盒終端,被本地裝載(例如,經智能卡),或例如在制造時被安裝。特別地,DASE應用程序管理系統服務要求提出了許多要求,用于管理在機頂盒終端的應用程序。這是來自ATSCT3/S17草案規范的一部分,其描述了應用程序管理相關的要求(部分13)。相應地,希望提供機頂盒軟件,用于管理機頂盒終端的應用程序。該軟件應該提供—API,用于檢索和注冊新的應用程序和為每個應用程序提供一標識符。新的應用程序在終端被接收,例如自頭端的下載。API應該獨立于終端的操作系統和硬件。希望提供一種基于ITU-TX.731的機制,用于應用程序監視和控制。該機制應該控制應用程序的開始、停止、暫停和恢復。該機制應該能夠使一應用程序告知其他應用程序其狀態,允許其他應用程序訪問所告知的狀態。該機制應該允許應用程序和資源版本信息的檢索。該機制應該允許對應用程序位置信息的訪問。該機制應該提供應用程序完整的確認和在機頂盒終端使用的應用程序的適用性的驗證。該機制應該在新的應用程序注冊后通知用戶其存在。該機制應該提供應用程序的管理鎖定和解除鎖定。該機制應該告知應用程序的操作狀態、警告狀況和可用性狀況。該軟件結構應該和Java(tm),AcitveX(tm)或類似類型的基于部件的面向對象技術相兼容。該機制應該適用于終端的任何應用程序,而與它是如何接收或安裝的無關。發明提供了一種系統,具有以上和其他的優點。發明概述本發明提供了用于在機頂盒電視終端中管理應用程序的軟件結構。一種電視機頂盒終端,包括計算機可讀介質,該介質具有計算機程序代碼工具;和用于執行所述計算機程序代碼工具,以實現一應用程序編程接口(API)的裝置。利用該API,定義應用程序的應用程序數據,根據與這些應用程序相關的定位器在所述終端被恢復。例如,所述定位器可以是PID,頻道號,頻道名,運輸流ID,服務ID,它們的結合或其他。定位器可以是統一資源定位器(URL)的形式的。在所述終端,這些應用程序被注冊和安裝,在其注冊和安裝后,用戶被通知這些應用程序的存在。因此,當應用程序在終端本地可用,且準備被引用/開始時,通知用戶。應用程序可以使用一資源(通常是一設備)、在接收器上(例如,調諧器、調制解調器,數據庫等)的功能或過程。所述API使得能夠檢索作為可下載軟件應用程序或者廣播軟件應用程序的這些應用程序。所述API可以與所述終端的操作系統和硬件無關。所述API可以提供一基于ITU-TX.731的機制,用于監視和控制這些應用程序。所述API可以使得這些應用程序能夠運行和隨后停止。所述API可以使得這些應用程序一旦運行能夠暫停,并使這些應用程序隨后能夠恢復運行。所述API可以使得這些應用程序中特定的一些能夠告知其他應用程序它們各自的狀態。所述API可以使得這些其他應用程序中至少一個能夠訪問這些特定應用程序中至少一個的所告知狀態。一應用程序狀態可以有幾個不同的值(“允許”、“禁止”等)。訪問一狀態,意味著具有知悉當前狀態值的能力。所述API可以使得能夠檢索與這些應用程序相關的版本信息。所述API可以使得能夠確認這些應用程序的完整性。完整性在這里可以意味著,根據用于編碼該應用程序的編程語言規范(例如,Java編程語言等),由該接收器接收的代碼是合法和有效的。所述API可以使得能夠證實這些應用程序對所述終端的適合性。所述API可以使得能夠進行這些應用程序的管理的鎖定和解除鎖定。所述API可以使得這些應用程序中特定的一些能夠告知其他一些這些應用程序其各自的警告狀況、可用性狀況、過程狀況、操作狀態、管理的狀態和使用狀態。同時提出了相應的方法。附圖簡述圖1示出根據本發明的程序包的關系和依賴性。圖2表示根據本發明的與應用程序相關的類和接口及它們的關系。圖3描述了根據本發明的與狀態管理相關的那些類和接口。圖4描述了根據本發明的實用類和接口之間的關系。圖5是根據本發明的一交互/序列圖,示出—EPG應用程序如何能引用一下載和所下載的應用程序的后續執行。該EPG應用程序用其上的可用應用程序來顯示視頻或數據頻道。圖6示出根據本發明的一組交互/序列,說明一應用程序如何可被一應用程序管理器管理和被一代理(agent)監視。發明詳述本發明提供了用于在機頂盒電視終端中管理應用程序的軟件結構。1.概況本發明詳細說明了一種API,其滿足了DASE應用程序管理系統服務的要求。要注意的是,本公開的一些部分是由美國RationalSoftwareCorporation所研發的RationalRose(tm)CASE工具自動生成的。未示出例外和與各個方法相關的前后狀態。例外將以Javadoc格式示出。附圖使用UML的RationalRose(tm)表述。圖1-4是類圖,圖5和圖6是序列(或交互)圖。類圖表示系統的靜態結構,示出系統展示的行為的模式。這是通過示出類的存在和它們的關系來完成的。每個類由帶三個部分的框表示。頂部分列出類的名字,中間部分表示屬性列表,而底部分表示操作列表。在類之間的實線或虛線表示相關或依賴性。白菱塊表示按參考聚合,而黑菱塊表示按值聚合。三角尖頭表示有限制的導航,例如,操作的繼承而不是結構的繼承。類是定義一個對象的數據結構、方法和函數調用的模板。接口定義了可以由類操作的一組方法/函數調用。類提供了用于實現接口的代碼。2.要求所提出的API考慮了以下的要求1.API將提供一種機制,以檢索可下載或廣播的應用程序。這是通過一注冊機制來達到的,該機制可以指明要下載和使其可用的應用程序的URL(從PSIPAPI或其基于T3/S13和S16協議(work)的擴展來獲得)。ATSCT3/S13和T3/S16規范定義了一些協議,這些協議用于將應用程序傳送到接收器、信令它們在運送流中的存在和提供關于該應用程序的信息。在實現例中,URL被用作應用程序的標識符,但也可以使用其他標識符。2.API將提供一種機制,以安裝和卸裝一應用程序。注冊機制安裝該應用程序以便它能夠被引用/開始。3.API將提供一種機制,以初始化(啟動)、開始和停止一應用程序。該應用程序接口提供了執行這些動作的方法。4.API將提供一種機制,以暫停和恢復一應用程序。該應用程序接口提供了執行這些動作的方法。5.API將提供一種機制,以使應用程序保持一訪問狀態。每個完成“0bjectStates(對象狀態)”(ObjectStates)接口的應用程序都可以以一種定義為ITU-T的標準方法來管理。ITU-TX.731是一種國際標準,其定義了可管理對象(設備、資源、應用程序等)的管理狀態,狀態代碼和狀態轉換。API將提供一種機制,以檢索應用程序的版本信息及其資源,包括所需要的API。“ApplicationInformation(應用程序信息)”(ApplicationInformation)接口允許以上信息的檢索。6.API將提供一種機制,以訪問應用程序位置信息。應用程序位置信息可以在DAVIC定位器類中以URL格式表示(由ATSC標準化)。定位器是一模糊對象,其封閉了一特定資源(在該情況中是一應用程序)的URI(通用資源標識符,UniversalResourceIdentifier)。7.API將提供一種機制,以確認應用程序的完整性和證實其正確性。例如這可能意味著其不包含病毒或不會對接收器造成任何損害。JVM驗證器(verifier)滿足了該要求,因此,不必要定義專門的API來完成它。8.API將提供一種注冊機制,允許應用程序通知用戶其存在。這是與PSIP和S13API一道完成的,其提供了關于特定應用程序的信息。通過用“應用程序注冊處(AppliationRegistry)”注冊它,該信息可以被用于下載應用程序。一旦注冊,用戶就可以使用它。3.描述該建議包含兩個主要程序包org.atsc.application和org.atsc.management,以及一個助手程序包org.atsc.utility。第一個程序包包括針對應用程序的類和接口。其他的程序包表示一些類和接口,它們與基于ITU-T管理標準的管理應用程序狀態有關。后者被分成為其自己的程序包,是因為其可以被應用到任何可管理對象,諸如DTV接收器資源,或可下載的應用程序。應用程序可以自由支持一子組的狀態和狀況屬性,這些狀態和狀況屬性被定義為對特定應用程序是合適的。DASE可以命令這些子組,以便為應用程序之間相對于管理的更好的協同工作能力提供所需。一些應用程序可能很簡單,由X.731標準定義的一些狀態和狀況可能不適用。ATSC可以定義被所有應用程序支持的最少的一組狀態和狀況代碼。一些更復雜的應用程序可以支持更多。例如,一些應用程序可能不支持“降級”可用性狀況(“degraded”AvailabilityStatus),即它們或者工作,或者待用,而沒有中間的狀況。4.對象模型圖1示出根據本發明的程序包的關系和依賴性,org.atsc.application程序包105使用在org.atsc.management程序包110、org.atsc.utility程序包115和org.davic.net程序包120中定義的類和接口。這些程序包邏輯上相關,由表示依賴性的虛線箭頭示出。圖2表示根據本發明的與應用程序相關的類和接口及它們的關系。接口被標上《interface》,而那些沒有這樣標的是類。這些類包括“RegistryFactory(注冊處工廠)”215,“Exception(例外)”220,“ApplicationAvailabilityException(應用程序可用性例外)225,“ApplicationAlreadyRegisteredException(應用程序已注冊例外)”230,“ApplicationNotRegisteredException(應用程序未注冊例外)”235,“ApplicationRegistryEvent(應用程序注冊處事件)”245,和“EventObject(事件對象)”250。接口包括“ApplicationRegistry(應用程序注冊處)”205,“Registry(注冊處)”210,“ApplicationCause(應用程序原因)”240,“ApplicationRegistryListener(應用程序注冊處收聽者)”255,“StateChangeListener(狀態改變收聽者)”260,“ObjectStates(對象狀態)”265,“Application(應用程序)”270,和“ApplicationInformation(應用程序信息)”275。圖3描述了根據本發明的與狀態管理相關的那些類和接口。相同號碼的元素在各圖中是彼此對應的。類和接口包括AdminstrativesState(管理狀態)305,OperationalState(操作狀態)310,UsageState(使用狀態)315,ObjectStates(對象狀態)320,AlarmStatus(警告狀況)325,AvailabilityStatus(可用性狀況)330,過程狀況ProceduralStatus)335,ResourceStateException(資源狀態例外)340,資源指示符(SourceIndicator)345,和StateChangeEvent(狀態改變事件)350。圖4描述了根據本發明的實用類和接口之間的關系。類和接口包括RegistryType(注冊處類型)405。5.交互圖下面的部分將描述在與應用程序相關的類之間的交互的例子,以及示出其它對象可以怎樣使用應用程序管理API。由于一應用程序是自對象建成的,由其它對象訪問的API意味著,該API由其它應用程序的部分(對象)來訪問,或者由在終端存在的代碼來訪問。5.1應用程序注冊圖5是根據本發明的一交互/序列圖,示出一EPG應用程序可以如何引用一下載和所下載的應用程序的后續執行,該EPG應用程序用其上的用戶可用的應用程序來顯示視頻或數據頻道。該圖是使用RationalRose(tm)軟件生成的。提供了許多示例對象,包括“user(用戶)”505,“EPGApplication(EPG應用程序)”270’(圖2的應用程序接口270的一例),“PSIPDatabase(PSIP數據庫)”515,“dataChannel(數據頻道)”520,“factoryRegistryFactory(工廠注冊處工廠)”215,“registryApplicationRegistry(注冊處應用程序注冊處)”205,“downloader(下載器)”525,和“appApplication(app應用程序)”270(圖2的應用程序接口270的一例)。EPG檢索包括URL(定位器)的應用程序信息,通過“RegistryFactory(注冊處工廠)”訪問“ApplicationRegistry(應用程序注冊處)”,請求新應用程序的注冊。當應用程序用“ApplicationRegistry(應用程序注冊處)”注冊時,應用程序定位器(URL)被用于下載該應用程序。當其可用時,“ApplicationRegistry(應用程序注冊處)”啟動(例如,送出/發射)一事件給所有聽眾以表明新的應用程序被注冊和可用。EPG應用程序收聽這些事件,并通知用戶新應用程序的可用性。一旦該應用程序被下載和安裝,用戶可以通過該“ApplicationRegistry(應用程序注冊處)”請求其執行。實際上該“ApplicationRegistry(應用程序注冊處)”啟動該應用程序。上面的序列可以經下面的示例步驟1-13來完成1.“EPGApplication”對象270”從“PSIPDatabase”對象515調用“getVirtualChannels”方法;2.“EPGApplication”對象270”從“dataChannel”對象520調用“getDataApps”方法;3.“EPGApplication”對象270’從“user”對象505調用“displayApps”方法;4.“user”對象505從“EPGApplication”對象270’調用“selectApps”方法;5.“EPGApplication”對象270’從“factoryRegistryFactory”對象215調用“getRegistry(String)”方法;6.“EPGApplication”對象270’從“registryApplicationRegistry”對象205調用“registerApplication(Locator)”方法;7.“registryApplicationRegistry”對象205從“downloader”對象525調用“download”方法;8.“registryApplicationRegistry”對象205從“EPGApplication”對象270’調用“registryChange(ApplicationRegistryEvent)”方法;9.“EPGApplication”對象270’從“registryApplicationRegistry”對象205調用“getApplicationInformation(Locator)”方法;10.“EPGApplication”對象270’從“user”對象505調用“displayAppinfo”方法;11.“user”對象505從“EPGApplication”對象270’調用“invokeApp”方法;12.“user”對象505從“registryApplicationRegistry”對象205調用“StartApplication(Locator)”方法;13.“registryApplicationRegistry”對象205從“appApplication”對象270”調用“start()”方法。5.2管理應用程序狀態圖6示出根據本發明的一組交互/序列,說明一應用程序可以如何被以應用程序管理器管理和被一代理(agent)監視。提供了許多示例對象,包括“applapplication”270”,“appManagerStateChange(app管理者狀態改變)”260’,“eventStateChangeEvent(事件狀態改變事件)”350’,和“agentStateChangeListener(代理狀態改變收聽者)”260”(或270”)。代理作為一”StateChangeListener(狀態改變收聽者)”注冊到特定應用程序。該應用程序基于內部和外部原因改變其內部狀態。在該例子中,該應用程序被延緩,這改變其“OperationalState(操作狀態)”為DISABLED(禁止)。該應用程序生成一“StateChangeEvent(狀態改變事件)”,將其送到所有注冊的收聽者,在該情況下,是代理。該代理可以確定改變的狀態和通過盤問事件,例如通過調用在“StateChangeEvent(狀態改變事件)”對象上可用的方法,例如getOldValue()、getnewValue()等來確定其舊值和新值。上面的序列可以經下面的示例步驟1-11來完成1.“appManagerStateChange”對象260’從“applapplication”對象270”調用“start()”方法;2.“agentStateChangeListener”對象260’’從“applapplication”對象270”調用“addStateChangeListener”方法;3.“appManagerStateChange”對象260’從“applapplication”對象270”調用“suspend()”方法;4.“applapplication”對象270”從“eventStateChangeEvent”對象350’調用“StateChangeEvent”方法;5.“applapplication”對象270”從“agentStateChangeListener”對象260’’調用“StateChange(StateChangeEvent)”方法;6.“agentStateChangeListener”對象260’’從“eventStateChangeEvent”對象350’調用“getState()”方法;7.“agentStateChangeListener”對象260’’從“eventStateChangeEvent”對象350’調用“getOldValue()”方法;8.“agentStateChangeListener”對象260’’從“eventStateChangeEvent”對象350’調用“getNewValue()”方法;9.“appManagerStateChange”對象260’從“applapplication”對象270”調用“resume()”方法;10.“applapplication”對象270”從“eventStateChangeEvent”對象350’調用“StateChangeEvent”方法;和11.“applapplication”對象270”從“agentStateChangeListener”對象260”調用“StateChange(StateChangeEvent)”方法。6.類和接口描述盡可能多的API被定義為接口而不是類。這為API的實現提供了更多的自由和更少的限制。由于JAVA接口沒有構造器或靜態方法,一些諸如“ApplicationRegistry(應用程序注冊處)”的接口有一個相關的“RegistryFactory(注冊處工廠)”類,其返回“ApplicationRegistry(應用程序注冊處)”接口的適當實現。“RegistryFactory(注冊處工廠)”類可以基于“工廠”(Factory)方法模式,由面向對象編程領域可知,其是解決問題的方法論和結構。部分6.1描述了與應用程序相關的程序包。6.1org.atsc.application該程序包包括與應用程序生命周期、注冊和管理相關的類和接口。6.1.1“Application(應用程序)”該類表示所有可下載應用程序的基類。它以ApplicationInfo類的形式提供了基本應用程序生命周期支持和關于應用程序的附加描述信息。該類實現GenericStates接口,以便將管理能力加到可下載的應用程序。該接口提供了統一的機制,以便以標準的方式管理任何對象。一應用程序可以支持適合于該特定應用程序的一子組的狀態。該類從“0bjectStates(對象狀態)”導出。公共操作start()由控制過程調用以啟動一應用程序的執行。該應用程序可以獲得任何需要的資源,執行其初始化和開始執行。如果該應用程序支持“AdminstrativesState(管理狀態)”(AdministrativeState),當它處于“鎖定狀態”(LockedState)時,它將表現出例外。公共操作由于在對象(例如類)之外是可見的,所以是可以由其它對象調用和使用的那些方法。相對而言,專用操作僅對類本身是可見的。stop()由控制過程調用以停止該應用程序的執行。該應用程序應該釋放所有資源并終止。suspend()由控制過程調用以暫時暫停該應用程序的執行。該應用程序如果不是使用不同的機制而被要求放棄其資源的話,不需要放棄其資源。如果該應用程序支持”“OperationalState(操作狀態)”,則在完成該方法后,它將改變狀態為“Disabled(禁止)”。resume()由控制過程調用以恢復前面被延緩的應用程序的執行。如果該應用程序支持“OperationalStates(操作狀態)”,則在完成該方法后,它將改變狀態為“Enabled(允許)”。getApplicationID()Locator被調用以確定由諸如URL的定位器表示的應用程序標識。6.1.2“ApplicationInformation(應用程序信息)”該類提供了關于應用程序的附加信息,諸如名字、版本號、作者等。公共操作getTitle()String返回應用程序的簡短描述,諸如其名字或題目。getVendor()String返回應用程序售方或作者的名字。getVersion()String返回該實現的版本。它包括由該實現的售方指定的一字符串。版本號使用“DeweyDecimal”語法,包括由句點“.”分開的正的十進制整數,例如,“2.0”或“1.2.3.4.5.6.7”。這允許一可擴展的數字被用于表示主、次、微等版本。該版本號必須以數字開始。getRequiredProfile()String返回最小概述標識符,諸如DASE概述ID,其是該應用程序運行所期望的。getSource()Locator以URL格式返回該應用程序的最初來源。該來源是該應用程序從何而來的地方(例如,39頻道,HBO,CNBC等)。6.1.3“ApplicationRegistry(應用程序注冊處)”該接口提供一到ApplicationRegistry(應用程序注冊處)的有限訪問。它允許其它應用程序得到關于現在的應用程序的信息,以便示出對特定應用程序的興趣(注冊它)和訪問應用程序本身。該接口從“Registry(注冊處)”導出。公共操作registerApplication(applicationIDLocator)被調用以便從注冊處加入該應用程序。該應用程序經其定位器(URL)指定。注冊處負責定位該應用程序,下載它和通知調用者其可用性。這是一非阻塞(blocking)的方法;它將在核查該請求后立即返回。ApplicationAvailableEvent(應用程序可用事件)將被送到所有“ApplicationRegistryListener(應用程序注冊處收聽者)”,帶著一注冊該應用程序的結果的標志。deregisterApplication(applicationIDLocator)被調用以從注冊處除去該應用程序。getApplicationInfromation(applicationIDLocator)ApplicationInfromation被調用以獲得該應用程序的描述。該應用程序由定位器(URL)標識。getApplication(applicationIDLocator)Application被調用以訪問特定的裝載和安裝的應用程序。該方法經安全機制保護以防止對應用程序的未授權的訪問。getApplications()Application[]該方法允許所有注冊的應用程序的檢索。該方法經安全機制保護以防止對應用程序的未授權的訪問。startApplication(applicationIDLocator)被調用以引用先前注冊的應用程序。一旦所請求的應用程序在其自己的線程空間(threadspace)開始執行,該方法調用返回。該方法經安全機制保護以防止對應用程序的未授權的訪問。addApplicationRegistryListener(listenerApplicationRegistryListener)被調用以注冊由“ApplicationRegistry(應用程序注冊處)”產生的事件。removeApplicationRegistryListener(listenerApplicationRegistryListener)被調用以解除注冊由“ApplicationRegistry(應用程序注冊處)”產生的事件。6.1.4“ApplicationRegistryListener(應用程序注冊處收聽者)”(ApplicationRegistryListener)該接口允許一對象收聽對”ApplicationRegistry(應用程序注冊處)”進行的改變。公共操作registryChange()ApplicationRegistryEvent當”ApplicationRegistryEvent(應用程序注冊處事件)”被啟動時,所有注冊的”ApplicationRegistryListener(應用程序注冊處收聽者)”的該方法由”ApplicationRegistry(應用程序注冊處)”對象調用。6.1.5“ApplicationRegistryEvent(應用程序注冊處事件)”從EventObject導出。公共操作getApplicationInformation()ApplicationInformation被調用以確定哪個應用程序引起該事件。getCause()short被調用以確定什么引起該事件。6.1.6“ApplicationAvailablityException(應用程序可用性例外)”當所請求的應用程序可用性條件被違反時,該例外被表現出。它是從“Exception(例外)”導出的。6.1.7“ApplicationNotRegisteredException(應用程序未注冊例外)”從“應用程序可用性例外”導出。6.1.8“ApplicationAlreadyRegisteredException(應用程序已注冊例外)”從“ApplicationAvailablityException(應用程序可用性例外)”導出。6.1.9“ApplicationCause(應用程序原因)”公共屬性REGISTEREDshort=1應用程序在注冊處被注冊。“short”是一整數格式(2字節對4字節)DEREGISTEREDshort=2應用程序被從注冊處解除注冊。STARTEDshort=3應用程序被開始。6.2org.atsc.management該程序包包括了與對象管理相關的類和接口。它可以完整地被應用,或者作為與特定的被管理單位相關的一子組而應用。它可用于管理應用程序以及DTV接收器資源的狀態和狀況屬性。它是基于“StateManagement(狀態管理)”的ITU-TX.731標準。6.2.1“AdministrativeState(管理的狀態)”一接口定義了不同的“AdministrativeState(管理的狀態)”的掩碼(Mask)-Locked(鎖定)該資源在管理上被禁止執行其用戶的服務。這可能與本地關閉(lockout)有關,比如某些頻道或應用程序的父關閉(parentallockout),但也可能被用于遠程(從前端,上聯(uplink)或有線接線器)“鎖定”該應用程序以使用戶不能打開它,例如如果檢測到應用程序有問題。-Unlocked(解除鎖定)該資源在管理上被允許執行對用戶的服務。這獨立于其本來的操作性。-Shuttingdown(關閉)資源的使用在管理上僅對現在的用戶是允許的。管理者可以在任何時刻使對象轉到“解除鎖定”狀態。公共屬性UNLOCKEDint=0x00000001LOCKEDint=0x00000002SHUTTING_DOWNint=0x00000004ADMIN_TYPEshort=1公共操作getAdministrativeState()int被調用以得到“AdministrativeState(管理的狀態)”的當前值。setLock(administrativestateint)被調用以改變“AdministrativeState(管理的狀態)”的當前值。6.2.2“OperationalState(操作狀態)”一接口定義資源和應用程序的“OperationalState(操作狀態)”-Disabled(禁止)該資源完全不可操作,不能給用戶提供服務。-Enabled(允許)該資源部分可操作,對用戶可用。公共屬性DISABLEDint=0x8ENABLEDint=0x10OPERATIONAL_TYPEshort=2公共操作getOperationalState()int被調用以得到“OperationalState(操作狀態)”的當前值。6.2.3“AlarmStatus(警告狀況)”定義所有警告狀態的接口。當該屬性的值是空時,這意味著下面描述的狀況條件都沒有存在-underrepair(修補中)資源當前正在被修補。當值“修補中”出現時,操作狀態是禁止或允許。-critical(臨界)在資源中已經檢測到一個或多個表明故障的臨界警告,且還沒有被清除。管理的對象的操作狀態可以是禁止或允許。-major(主要)在資源中已經檢測到一個或多個表明故障的主要臨界警告,且還沒有被清除。管理的對象的操作狀態可以是禁止或允許。-minor(次要)在資源中已經檢測到一個或多個表明故障的次要臨界警告,且還沒有被清除。管理的對象的操作狀態可以是禁止或允許。-alarmoutstanding(警告顯著)在資源中已經檢測到一個或多個警告。條件可以是或不是禁止的。如果操作狀態是允許,針對所管理的對象類的附加屬性可以指示所影響的服務和條件的特性和原因。以上警告狀態條件的出現不抑制以后與故障相關的通知的產生。UNDER_REPAIRint=0x00000001CRITICALint=0x00000002MAJORint=0x00000004MINORint=0x00000008ALARM_OUTSTANDINGint=0x0010ALARM_TYPEshort=8公共操作clearAlarm(alarmint)被調用以清除特定警告。該控制過程已經對該警告起作用。getAlarmStatus()int被調用以得到“AlarmStatus(警告狀況)”的當前組值。6.2.4“AvailabilityStatus(可用性狀況)”定義可用性狀況。當該屬性的值是空時,這意味著下面描述的狀況條件都沒有出現-intest(測試中)該資源正在進行一測試過程。如果管理狀態是“鎖定”或“關閉”,則正常的用戶被阻止使用該資源,控制狀況屬性具有為測試保留的值。不排除附加用戶的測試可以出現在任何操作的或管理的狀態中,但是為測試條件保留的不應該出現。-failed(失敗)該資源有一內部故障,使它不能運行。操作狀態是禁止。-poweroff(斷電)該資源需要施加電源,且未通電。例如,一保險或其它保護設備已經除去電源,或者已經檢測到低電壓條件。操作狀態是禁止。-offline(離線)該資源需要被執行一程序操作以使它上線,并使它可用。該操作可以是手動或自動,或兩者。操作狀態是禁止。-offduty(不當班)根據預定時間進度,該資源已經由內部控制過程變為待用。在正常情況下,該控制過程可以在某預定的時刻重新激活該資源,因此它被認為是可選擇的。操作狀態是允許或禁止。-dependency(依賴性)該資源不能操作,因為其依賴的一些其它資源(例如,不由同一被管理對象表示的資源)不可用。例如,一設備因為其控制器斷電而不可訪問。操作狀態是禁止。-degraded(降級)從該資源可用的服務在一些方面被降級,諸如速度或操作能力。測試的失敗或一不可接受的性能測試已經表明,一些或全部的服務由于故障的出現而功能不好,或被降級。然而,該資源對服務仍可用,因為或者一些服務是令人滿意的,或者降級的服務也比什么服務都沒有要好。針對對象的屬性可以被定義為表示進一步的信息,例如,表明哪個服務功能不好或降級的特性。操作狀態是允許。-notinstalled(未安裝)由所管理的對象表示的資源沒出現,或不完全。例如,一插入模塊丟失,一線纜斷開或一軟件模塊未裝載。操作狀態是禁止。-logfull(記錄滿)這表明一記錄滿條件,其語義CCITTRec.X.735|ISO/IEC10164-6中被定義。公共屬性INTESTint=0x00000400FALLEDint=0x00000800POWEROFFint=0x000010000FFLINEint=0x00002000OFFDUTYint=0x00004000DEPENDENCYint=0x00008000DEGRADEDint=0x00010000NOT_INSTALLEDint=0x00020000L0G_FULLint=0x00040000AVAILABILITY_TYPEshort=32公共操作getAvailabilityStatus()int被調用以得到“AvailabilityStatus(可用性狀況)”的當前組值。6.2.5“ProceduralStauts(過程的狀況)”一定義過程的狀況的接口。過程狀態屬性僅由那些所管理的對象的表示一些過程(例如,測試過程)的類所支持,這些過程包括一序列的階段。根據所管理的對象類的定義,過程可以被要求到達某個階段,以使資源可為用戶所操作或為用戶所用(即,使所管理的對象為允許)。并非所有的階段都可以用于所管理的對象的每個類。如果該屬性的值是空,則所管理的對象已就緒,例如,初始化已完成。當該屬性的值是空時,這意味著下面描述的狀況條件都沒有出現-initializationrequired(需要初始化)該資源需要由管理者引用初始化,然后它才能執行其正常的功能,而該過程還沒有被啟動。管理者可能能夠通過一動作引用該初始化。正在終止條件也可能出現。操作狀態是禁止。-notinitialized(未初始化)該資源需要在其能夠執行其正常的功能前被初始化,而該過程還沒有被啟動。該資源本身自動地初始化,但操作狀態可以是禁止或允許,依所管理的對象類的定義而定。-initializing(正在初始化)該資源需要在其能夠執行其正常的功能前被初始化,而該過程已經被啟動但還未完成。當該條件出現時,需要初始化條件不出現,由于初始化已經開始。操作狀態可以是禁止或允許,依所管理的對象類的定義而定。-reporting(正在報告)該資源已經完成一些處理操作,且正在通知該操作的結果,例如,一測試過程正在送出其結果。操作狀態是允許。-terminating(正在終止)該資源處在終止階段。如果該資源不重新自動初始化其自身,需要初始化條件也出現,操作狀態是禁止。否則,操作狀態可以是禁止或允許,依所管理的對象類的定義而定。公共屬性INIT_REQUIREDint=0x00000020NOT_INITIALIZEDint=0x00000040INITIALIZINGint=0x00000080REPORTINGint=0x00000100TERMINATINGint=0x00000200PROCEDURAL_TYPEshort=16公共操作getProceduralStatus()int被調用以得到“ProceduralStauts(過程的狀況)”的當前組值。6.2.6“UsageState(使用狀態)”該接口定義了使用狀態的掩碼。-Idle(空閑)該資源當前不在使用中。-Active(工作中)該資源正在使用中,但有富余的操作能力以在此刻提供給額外的用戶。-Busy(忙)該資源正在使用中,但沒有富余的操作能力以在此刻提供給額外的用戶。公共屬性IDLEint=0x00000020ACTIVEint=0x00000040BUSYint=0x00000080USAGE_TYPEshort=4公共操作getUsageState()int被調用以得到“UsageState(使用狀態)”的當前組值。6.2.7“ObjectStates(對象狀態)”該接口允許要以標準方式被管理的對象實現統一的接口,該接口支持所有的狀態和狀況值,或是適合的一子組的狀態和狀況值。所定義的狀態和狀況屬性由“狀態管理”(StateManagement)的ITU-T標準X.731詳細說明。由“AlarmStatus(警告狀況)”、“ProceduralStauts(過程的狀況)”、“AvailabilityStatus(可用性狀況)”、“UsageState(使用狀態)”、“操作狀態”和“AdministrativeState(管理的狀態)”導出。公共操作getStateSupported()short[]被調用以確定哪個狀態和狀況屬性由實現該接口的類所支持。addStateChangeListener(listenerStateChangeListener)被調用以為“StateChangeEvent(狀態改變事件)”注冊“StateChangeListener(狀態改變收聽者)”。removeStateChangeListener(listenerStateChangeListener)被調用以解除注冊一“StateChangeListener(狀態改變收聽者)”。getCurrentState()int被調用以得到所有所支持的狀態的當前值。返回表示單個狀態的一位掩碼。getCurrentStatus()int被調用以得到所有所支持的狀況屬性的當前值。返回表示單個狀況屬性的一位掩碼。6.2.8“StateChangeListener(狀態改變收聽者)”該接口必須被這些類所實現,即有興趣被通知實現“GenericState(類屬狀態)”接口的對象的狀態改變的類。如果“StateChangeListener(狀態改變收聽者)”對象經“加入StateChangeListener(狀態改變收聽者)”方法而注冊,通過調用“狀態被改變”方法,它將被通知,而“狀態被改變”方法包括適當的“StateChangeEvent(狀態改變事件)”。公共操作stateChange(eventStateChangeEvent)被調用以通知“StateChangeListener(狀態改變收聽者)”狀態改變。事件參數提供什么狀態已經改變的休息。6.2.9“ResourceStateException(資源狀態例外)”一與“GenericState(類屬狀態)”接口相關的基例外類。當無效狀態改變將由方法調用引起時,表現出該例外或其擴展。例如,處于Distabled(禁止)狀態的對象如果不被解除鎖定,則不能執行某些操作。該類從“Exception(例外)”導出。公共操作getState()short被調用以確定哪個狀態一致已經被破壞。getValue()int被調用以確定所破壞的狀態的當前值。6.2.10“StateChangeEvent(狀態改變事件)”當狀態改變其值時,該事件被啟動。它被分配給所有注冊的“StateChangeListener(狀態改變收聽者)”。該事件由“EventObject(事件對象)”導出。公共操作getState()short被調用以確定哪個狀態已經改變。getOldValue()int被調用以確定該狀態的初始值。getNewValue()int被調用以確定該狀態的新值。getSourceIndicator()short被調用以確定該事件的原因。6.2.11“SourceIndicator(資源指示符)”公共操作INTERNAL_CAUSEshort=1狀態改變由內部活動引起。EXTERNAL_CAUSEshort=2狀態改變由外部活動引起。6.3org.atsc.utility該程序包提供了一組支持和實用類和接口,由其它程序包使用。6.3.1“注冊處”(Registry)該接口給所有特殊化的注冊處接口,諸如“ApplicationRegistry(應用程序注冊處)”、“SourceRegistry(資源注冊處)”等提供了一公共基礎。提供它使得“RegistryFactory(注冊處工廠)”可以返回一基類型。該接口從“RegistryType(注冊處類型)”導出公共操作GetRegistryType()String被調用以確定由“RegistryFactory(注冊處工廠)”的方法getRegistry()返回的對象所實現的注冊處的類型。6.3.2“RegistryFactory(注冊處工廠)”該類提供一種機制以產生實現特殊注冊處接口,諸如“ApplicationRegistry(應用程序注冊處)”的對象。公共操作RegistryFactory()構造器getRegistry(registryNameString)Registry返回一對象的例子,其實現指定的注冊處接口。當指定的注冊處不存在或不能產生時,返回無效。所返回的對象的類型是所導出的注冊處類型之一,比如“ApplicationRegistry(應用程序注冊處)”。6.3.3“RegistryType(注冊處類型)”該接口定義不同注冊處類型,比如ApplicationRegistry(應用程序注冊處)等的名字。公共屬性APPLICATION_REGISTRYString=ApplicationRegistryRESOURCE_REGISTRYString=ResourceRegistry總共3個邏輯程序包23個類邏輯程序包結構邏輯圖JavaLangutilorgatscapplication(應用程序)management(管理)utility(實用)davicnet(網)相應地,可以看出本發明提供了一種軟件結構,用于管理在電視機機頂盒終端的應用程序。根據與應用程序數據相關的一定位器,應用程序數據,諸如節目指南,股市行情等在終端被恢復。應用程序數據在終端被注冊和安裝,在其注冊和安裝后,用戶被通知應用程序數據的存在。盡管本發明已經結合各種具體實現例進行了描述,本領域的技術人員應該理解,在不脫離由權利要求書所提出的本發明的精神和范圍下,可以對本發明進行各種修改和潤飾。例如,盡管各種句法元素(syntaxelements)已經在這里被討論,但應該注意,它們僅作為示例,任何句法都可以使用。另外,本發明適用于實際上任何類型的網絡,包括有線或衛星電視寬帶通信網絡,局域網絡(LANS),城市區域網絡(MANS),廣域網絡(WANS),互連網,內部網,和互聯網或它們的結合。另外,已知計算機硬件,固件和/或軟件可以被用于實現本發明。權利要求1.一種電視機頂盒終端,包括計算機可讀介質,該介質具有計算機程序代碼工具;和用于執行所述計算機程序代碼工具,以實現一應用程序編程接口(API)的裝置,其中定義應用程序的應用程序數據,根據與這些應用程序相關的定位器在該終端被恢復;在該終端,這些應用程序被注冊和安裝;和在其注冊和安裝后,用戶被通知存在這些應用程序。2.如權利要求1所述的終端,其中所述API使得能夠檢索這些應用程序作為可下載軟件應用程序。3.如權利要求1所述的終端,其中所述API使得能夠檢索這些應用程序作為廣播軟件應用程序。4.如權利要求1所述的終端,其中所述API獨立于所述終端的操作系統和硬件。5.如權利要求1所述的終端,其中所述API提供一基于ITU-TX.731的機制,用于監視和控制這些應用程序。6.如權利要求1所述的終端,其中所述API使得這些應用程序能夠運行和隨后停止。7.如權利要求6所述的終端,其中所述API使得這些應用程序一旦運行能夠暫停,并使這些應用程序隨后能夠恢復運行。8.如權利要求1所述的終端,其中所述API使得這些應用程序中特定的一些能夠告知其他一些應用程序它們各自的狀態。9.如權利要求8所述的終端,其中所述API使得這些其他應用程序中至少一個能夠訪問這些特定應用程序中至少一個的所告知的狀態。10.如權利要求1所述的終端,其中所述API使得能夠檢索與這些應用程序相關的版本信息。11.如權利要求1所述的終端,其中所述定位器是采用統一資源定位器(URL)的形式。12.如權利要求1所述的終端,其中所述API使得能夠驗證這些應用程序的完整性。13.如權利要求1所述的終端,其中所述API使得能夠驗證這些應用程序對該終端的適合性。14.如權利要求1所述的終端,其中所述API使得能夠進行這些應用程序的管理鎖定和解除鎖定。15.如權利要求1所述的終端,其中所述API使得這些應用程序中特定的一些能夠告知其他一些應用程序它們各自的警告狀況。16.如權利要求1所述的終端,其中所述API使得這些應用程序中特定的一些能夠告知其他一些應用程序它們各自的可用性狀況。17.如權利要求1所述的終端,其中所述API使得這些應用程序中特定的一些能夠告知其他一些應用程序它們各自的過程的狀況。18.如權利要求1所述的終端,其中所述API使得這些應用程序中特定的一些能夠告知其他一些應用程序它們各自的操作狀態。19.如權利要求1所述的終端,其中所述API使得這些應用程序中特定的一些能夠告知其他一些應用程序它們各自的管理狀態。20.如權利要求1所述的終端,其中所述API使得這些應用程序中特定的一些能夠告知其他一些應用程序它們各自的使用狀態。21.一種實現用于電視機頂盒終端的軟件結構的方法,包括以下步驟提供一計算機可讀介質,該介質具有計算機程序代碼工具;和執行所述計算機程序代碼工具,以實現一應用程序編程接口(API),以根據與定義應用程序的應用程序數據相關的定位器,在該終端恢復該應用程序數據;在所述終端,注冊和安裝這些應用程序;和在其注冊和安裝后,通知用戶這些應用程序的存在。全文摘要一種用于管理電視機頂盒終端的應用程序的軟件結構。應用程序編程接口(API)提供了一種基于ITU-TX.731的機制,用于監視和管理該應用程序。根據相關的定位器,應用程序,諸如節目指南,股市行情等在終端被恢復。應用程序數據在終端被注冊(205)和安裝,在其注冊和安裝后,用戶被通知應用程序的出現。API(270)使得應用程序能夠運行、暫停、恢復和停止。API也使得應用程序能夠告知其他應用程序它們各自的狀態,諸如警告狀況(325)、可用性狀況(330)、過程狀況(335)、操作狀態(310)、管理狀態(305)和使用狀態(315)。文檔編號H04N5/00GK1330832SQ99814369公開日2002年1月9日申請日期1999年10月7日優先權日1998年10月13日發明者彼得·彼得卡,布拉尼斯拉夫·N·梅安季亞,耶特薩·曼加勒爾,塞繆爾·A·亞科拉申請人:通用儀器公司