新四季網

訂閱者定義的動態事件的製作方法

2023-05-05 12:26:32 1


計算機系統當前被廣泛應用。一些此類系統在它們被部署在終端用戶的場所之前被(某些在很大程度上)定製。作為示例,一些此類計算機系統包括業務系統,諸如顧客關係管理(CRM)系統、企業資源規劃(ERP)系統、業務線(LOB)系統等。在這些類型的系統中,用戶或顧客首先購買通用業務系統,且用戶或顧客通常對該通用業務系統進行定製、擴展或其它修改,以便獲得其自己的定製部署。

通常,這樣的定製已經要麼通過對原始碼的直接修改要麼通過使原始軟體的作者將許多鉤點(hook-point)插入到軟體原始碼中而被提供。

對原始碼的直接修改為定製提供了最大的靈活性。通過這樣的修改,可以對軟體做出任意修改。當原始軟體需要被修改時,例如當需要更新或補丁時,這種方案的限制變得明顯。在這樣的實例中,對原始原始碼的修改可能不再與各種定製互操作。這樣,開發者必須返回到修改並仔細地將每個先前生成的定製對接或修改到經更新/打補丁的原始碼。在大多數情況下,這種手動且乏味的過程往往需要顯著的開發者時間並因此是非常昂貴的。

在原始原始碼中提供許多鉤點是在其中可以實現定製的另一種方式。原始應用的作者可以將許多鉤點插入在做出呼出的地方。這被稱為「事件」。在事件中,原始作者將在原始碼中所定義的各位置處插入一個或多個呼出。每個這樣的呼出將調出傳遞某些預定義參數的指定事件。另外,在運行時,呼出將檢查以查明是否存在任何對事件的訂閱者。如果存在對事件的訂閱者,那麼訂閱者代碼被加載並被執行。標準事件的一個限制是軟體的原始作者可能沒有在代碼中的精確位置處提供需要應用定製的開發者所需要的鉤點。而且,原始作者將定義呼出的合約或參數。在一些實例中,如果呼出的合約或參數被原始作者通過升級或補丁改變,則依賴於所述呼出的定製可能失敗。

概述

提供了一種修改原始碼的編程單元的執行行為的計算機實現的方法。所述方法包括加載原始碼的編程單元並確定是否針對該編程單元定義了至少一個定製。至少一個定製基於所述定製的先決條件是否被滿足而被選擇性地執行。

提供本概述以便以簡化的形式介紹以下在詳細描述中進一步描述的一些概念。本概述並非旨在標識出要求保護的主題的關鍵特徵或必要特徵,亦非旨在用作輔助確定要求保護的主題的範圍。所要求保護的主題不限於解決在背景中提及的任何或所有缺點的實現。

附圖簡述

圖1是根據本發明一實施例的在其中開發者提供了與原始原始碼有關的定製的環境的圖示。

圖2是通過執行流水線來執行軟體應用的處理器的圖示。

圖3是根據本發明的一個實施例的執行軟體應用的計算機實現的方法。

圖4是根據本發明的一個實施例的定義訂閱者動態事件的方法。

圖5示出在其中本發明的實施例是特別有用的示例性架構的框圖。

圖6示出在其中本發明的實施例是有用的雲計算架構。

圖7-10示出在其中本發明的實施例是有用的各種行動裝置。

圖11是一個說明性計算環境的框圖。

詳細描述

本發明的各實施例通常允許將任意定製應用到代碼的基本上任意的可執行單元,包括原始碼的方法、函數、模塊和甚至一個或多個行,而無需修改原始原始碼。根據在此所述的實施例,執行原始原始碼的平臺將提供「動態鉤」,所述動態鉤允許生成與原始原始碼有關的定製的開發者訂閱該開發者定義的一個或多個事件。只要所定義的事件的先決條件仍然有效,就可以在不影響定製的操作的情況下提供來自軟體製造商的對原始原始碼的改變,例如更新和/或補丁。

圖1是根據本發明一實施例的在其中開發者14提供了與原始原始碼12有關的定製18的環境的圖示。在環境10中,已經從原始碼發布者,例如微軟公司,獲得了原始碼12。此處使用的「原始碼」旨在意指被編譯或彙編到計算機可執行程序中的命令的文本列表。原始碼可以以許多已知的或將來開發的程式語言中的任意程式語言來提供。通常,原始碼將由軟體產品的一個或多個作者逐行地輸入。

如上所述,許多軟體產品旨在在被終端用戶部署之前就被定製。這樣的軟體產品的一個示例是企業資源計劃系統。然而,無論何時期望在無需改變軟體產品的原始碼的情況下改變軟體產品的行為,本發明的各實施例都是可應用的。在圖1示出的示例中,開發者14具有對原始碼12的訪問,如由虛線16所示。這樣的訪問可以是通過任意合適的方式的,包括在線訪問或離線訪問(例如原始碼的硬拷貝)。原始碼可以被用作參考。為了定製軟體產品,開發者14查看原始碼12並生成一個或多個定製18。這些定製18是動態事件定義的形式,如將在下面詳細描述的。定製18被提供給執行平臺20,該執行平臺將通常已經具有原始、非改動狀態的原始碼12。執行平臺20是硬體、軟體或其組合的任意合適的安排,所述安排能夠接收原始碼、基於原始碼生成機器可執行代碼並執行所述機器可執行代碼。這樣,執行平臺20可以是單個個人計算機、在企業中工作的一組伺服器、設備的單核或在雲計算環境中工作的一大組伺服器。執行平臺20可以包括一個或多個處理器24以及合適的存儲組件26以支持編程編譯和/或執行。

執行平臺20將原始原始碼12與定製18一起執行,以向與執行平臺20交互的一個或多個客戶機22提供經定製的軟體操作。在一個示例中,客戶機22是通過通信連結28在操作上耦合到執行平臺20的計算機,以便允許客戶機22與由執行平臺20所執行的軟體產品交互。連結28可以包括任何合適的通信連結,包括經由LAN或WAN的有線或無線通信。

圖2是通過執行流水線30執行軟體應用的執行平臺的處理器的圖示。雖然,流水線30被示為包括編程源單元1··N的線性流水線,但提供這樣的簡化是說明編程執行通常通過命令序列來步進。在圖2中所示的示例中,編程執行當前在單元5上,如指針32所示。一旦單元5的執行完成,處理器24將開始執行單元6。然而,在這樣的執行之前,處理器將確定是否任何定製已經相對於編程單元6被附加或定義。藉助於其定義,這樣的定製將具有指定它是應該在單元6之前、取代單元6、或在單元6之後運行的指示因此,執行平臺20將根據定製定義,在單元6之前、取代單元6、或在單元6之後執行與定製對應的代碼。一旦編程單元6和任何相關聯的定製已經執行,執行平臺就移至編程單元7。如此處所使用的,編程單元旨在意指任何一個或多個可執行代碼行,其行可以包括例如一個方法。因此,由於定製是在任意編程單元之前、取代任意編程單元、或在任意編程單元之後注入,本發明的各實施例提供了開發者可以在原始碼中的任意點定義「鉤」的顯著的靈活性。

圖3是根據本發明的一個實施例的執行軟體應用的方法。方法40在框42開始,在此處(在圖1和2中示出的)處理器24加載方法或編程單元。接著,在框44,處理器24檢查以查明是否存在與在框42處加載的方法或編程單元相關聯的任何定製。如果是,則控制傳遞到框46,在此處與加載的方法或單元相關聯的定製被處理器24加載。接著,基於定製的定義,先於在框42處加載方法或單元、取代在框42處加載方法或單元,或後於在框42處加載方法或單元,處理器24在框48處執行定製。在定製沒有取代加載的方法或單元的示例中,如由所述定製所定義的,在執行所述定製之前或之後所述加載的方法或單元也由處理器24在框48處執行。控制隨後傳遞至框50,在此處下一編程單元/方法被加載。如在圖3中所示,如果給定的方法或編程單元不具有相關聯的定製,則控制從判定框44傳遞至框50。方法40將繼續循環直到程序執行被停止或完成。

圖4是根據本發明的一個實施例的定義動態事件的方法。方法60在框62處開始,在此處,開發者標識原始碼的定製將要與其相關聯的特定單元。原始碼的所述單元可以是原始碼的函數、方法、模塊或個體行。原始碼的所述單元的標識可以通過函數或模塊的名字,或在原始碼的個體行的情況下,是原始碼的在所選行之前的一個或多個行的標識以及原始碼的在原始碼的所選行之後的一個或多個行的標識。接著,在框64,開發者選擇所述定製將如何相對於原始原始碼來執行。例如,定製可以在66之前、取代68,或在70之後執行所標識的原始碼。而且,當定製取代所標識的原始碼執行時,如果需要的話,所述定製可以將所標識的域代碼作為來自定製的子調用來運行。另外,如在框72處所指示的,還可以構想其它執行序列指示符。例如,在多個定製將要在原始碼的所選單元之前被執行的情形中,一個定製可以被指示為「絕對最先」或「絕對最後」。接著,在框74,開發者指示定製的範圍。該範圍指示將通常允許定製能夠訪問原始碼的所選單元內的變量和其它信息。在框76,開發者可以提供使用在原始碼的所選單元內的變量和其它信息中的一些或全部的代碼。這允許原文在所有方面改變都改變,而所訂閱的變量保持不變。而且,到變量「按名字(by name)」的連結為原始開發者提供了一種故意中斷定製可能具有的任何合約的途徑。以此方式,開發者可以簡單地改變變量的名字,這將要求依賴於原始變量名的定製將需要被重新訪問。最後,在框78,定製被保存並提供給執行平臺以用於以原始、未經修改的原始碼執行。

在下面的示例中,表1提供了計算給定訂單的折扣作為下訂單的過程的部分的某種偽代碼:

表1

在表1中闡明的示例中,開發者(以提供對10%的折扣計算的改變為任務)可能希望提供定製。例如,如果總量大於2000,則開發者可能需要加入額外的5%折扣。為了在數量超過2000時提供15%折扣,或如果數量大於2000提供原始折扣的150%,開發者可以定義如表2所闡述的定製。該定製允許在表1中所闡述的原始代碼的行為被修改,而無需改變任何原始代碼。

表2

在表2中的偽代碼與表1中由具有原始方法的名字的HookMethod(鉤方法)定義所提供的原始CalculateDiscount(計算折扣)方法相關聯。該HookMethod在元數據中被定義。在所示的示例中,定義是使用C#樣式句法中的屬性。然而,這只是示例並且可以使用任何其他合適的樣式。原始方法與表2的偽代碼的關聯性,通知執行平臺,表2的代碼與表1中闡述的原始方法相關聯。另外,通過設置「Run=AfterOriginal」,執行平臺將在表1的代碼被執行之後再執行表2的代碼。MyOwnCalculateDiscount(我自己計算的折扣)的聲明列出了需要從原始方法中提出的參數、行。另外,MyOwnCalculateDiscount設置範圍「OriginalScope_org」,使得定製將能夠訪問來自原始方法的參數和變量。_org的所有使用將被執行平臺跟蹤,並且在編譯之後,編譯器將在元數據中存儲對MyOwnCalculateDiscount將通過CalculateDiscount順序地被調用並且MyOwnCalculateDiscount將訪問行(參數)、數量(作為本地變量)以及ReturnValue(原始返回值)的指示。

在運行時,執行平臺20現在將在從原始CalculateDiscount返回之前調用MyOwnCalculateDiscount,允許MyOwnCalculateDiscount提供基本上任何期望的經定製的功能。_org範圍變量將實際上指示原始變量。

在原始代碼被更新、打補丁或由原始軟體發布者簡單改變的情況下,本發明的各實施例是特別有用的。例如,在下面的表3中,原始方法CalculateDiscount已經被修改為包括customer(客戶)和date(日期)信息。

表3

藉助於所存儲的與MyOwnCalculateDiscount有關的元數據,顯然,在經改變的原始碼中仍然滿足MyOwnCalculateDiscount的先決條件。具體來說,方法CalculateDiscount仍然存在,並且在其參數中它仍然具有「Lines[]lines」參數以及名為數量的本地變量。這樣,對原始碼的改變將不會影響由開發者為定製定義的「合約」。MyOwnCalculateDiscount將不會知曉也不會使用新的參數Customer或Date。然而,MyOwnCalculateDiscount不將這樣的參數作為其合約的部分來列出。這樣,MyOwnCalculateDiscount將繼續運行對數量和返回值的適當操作。然而,如果在合約中由開發者所指定的任意項(例如方法的名字、行參數或數量變量)在經更新的原始碼中被改變或刪除,那麼在應用定製時合約將中斷並導致錯誤。

在MyOwnCalculateDiscount中特別注意的是所述方法是用「Lines[]lines」參數定義的,但所述參數沒有被MyOwnCalculateDiscount使用的事實。然而,通過開發者仍然要求「Lines[]lines」,它已經成為定製的合約的部分並因此需要成為原始籤名的部分。這在開發者通過這麼做可以依賴於變量的情況下特別有利,儘管定製不需要它。換句話說,如果CalculateDiscount方法被改變使得在原始方法中不再需要所述行,定製應該中斷(即通過應用定製錯誤來通知),使得開發者可以檢查定製以查明代碼是否仍然有效。這允許開發者將合約定義為如所期望的那樣細化(接近)原始代碼。在合約中要求的細節越多,當原始代碼被改變時中斷的機率越大。反之也是正確的。具體來說,如果對原始代碼的更新的開發者希望確保在行上操作的所有定製被要求重新訪問它們的定製,開發者可以改變變量的名字,這將中斷合約。

(下述)表4示出當CalculateDiscount被調用時被執行的某種偽代碼的示例。

表4

如可見,執行平臺20將代碼注入以檢查正被調用的方法是否已經被掛鈎並且如果是則將把所有相關的信息傳遞給機制,所述機制過濾所述信息並最終調用被掛鈎到所述方法的定製。在表4中示出的示例僅僅是出於說明的目的被提供,在實際實現中,附加優化可以被使用並且「ReplaceOriginal(替代原始)」機制也可以被提供。

在上述示例中提供的所有偽代碼僅僅出於說明目的。本發明的各實施例可以應用於使用原始碼的任意程式語言。在一些示例中,本發明的各實施例提供了一種元數據驅動的掛鈎機制,其中訂閱者定義了原始原始碼的合約對作者(contract vs.an author)。只要合約可被履行,就可以對底層原始碼做出升級和其它改變,而無需中斷定製。另外,簡單地通過查閱元數據和原始碼就確定這樣的合約是否可以被履行是可能的。這樣,在中斷或其它異常可以被確定之前,代碼不需要被運行。

如上所闡述的,存在定製可以被掛鈎到原始原始碼的許多方式。Run=AfterOriginal指示告知執行平臺20原始原始碼應該首選運行,隨後是定製。一種替代是Run=BeforeOriginal,這將允許定製在將控制傳遞至原始方法之前改變任意闡述和可能的類變量。還有另一個替代為Run=ReplaceOriginal,這將取消對原始原始碼的調用並僅僅調用定製。如果開發者希望覆蓋整個方法,則可以使用後者。指示Run=ReplaceOriginal要求執行框架20在中斷時跟蹤對原始代碼做出的改變,因為在原始碼升級或改變之後所述定製現在正在移除「未知的」代碼。另外,當使用ReplaceOriginal時,_org變量應該包含CallOriginal方法,這樣如果需要的話可以對原始方法做出調用,在此之後定製將再次獲得控制和完成其工作。

在此所述的在定製中使用的代碼的特殊之處在於所述代碼所使用的所有構造在需要時都是「間接」針對底層實變量。這當中的一些可以在編譯時發生而一些可以在運行時發生,例如定製的代碼可以訪問項目表,而無需具有關於這樣的表的所有欄位的信息。然而,只要項目表具有由定製所使用的欄位,所述定製就將正確地運作。

可以理解的是,本發明的各實施例是可應用於各種各樣的計算環境的。下面是在其中本發明的實施例可以是特別有利的計算環境的一些示例。

圖5示出其中本文中描述的各實施例是有用的一個示例性架構的框圖。架構100包括顧客業務系統101(其可以是在場系統、基於雲的系統、或另一系統)。業務系統101可被用戶通過由業務系統101或由用戶設備116生成的用戶界面115來訪問。在一個實施例中,用戶界面115具有用戶輸入機制117,用戶114可致動該用戶輸入機制以便操縱業務系統101。

顧客業務系統101解說性地包括處理器102、數據存儲104、用戶界面組件105、更新安裝器組件106、衝突解決組件119和業務過程組件121。數據存儲104解說性地包括數據108、應用110、描述業務過程112的信息、描述工作流114的信息以及其它項107。在一個實施例中,應用110包括被用來運行業務系統101中的業務過程112和工作流114的業務邏輯。應用110解說性地對數據108操作,該數據可包括表示業務系統101中的項的實體。從而,應用110可包括總分類帳應用、倉儲應用、允許用戶跟蹤業務機會、跟蹤業務系統中的銷售或生產的應用、或各種其它業務應用。實體例如包括表示顧客的顧客實體、表示業務機會的機會實體、表示倉儲項的倉儲實體、表示報價和提議的報價和提議實體等。數據108可包括各種其它實體和數據,且上面提及的那些僅是作為示例提及的。用戶可解說性地訪問顧客業務系統101以便執行在執行採用業務系統101的組織的業務中被完成的活動、任務、工作流等。

本討論提到了處理器和伺服器。在一個實施例中,處理器和伺服器包括具有相關聯的存儲器和時序電路系統(未分別示出)的計算機處理器。它們是它們所屬的系統或設備的功能部分,且由這些系統中的其他組件或項的功能來激活並促成這些功能。

還討論了數個數據存儲。將注意,它們可各自被分解成多個數據存儲。它們全部可位於訪問它們的系統的本地,全部可以是遠程的,或一些可以在本地而其他在遠程。本文構想了所有這些配置。

同樣,附圖示出了具有歸屬於每一框的功能的多個框。將注意,可以使用更少的框,使得功能由更少的組件來執行。同樣,可以使用更多框,其中功能被分布在更多組件之間。

圖6是圖5中所示的架構100的框圖,不同之處在於其元件被部署在雲計算架構500中。術語「雲」、「基於雲的系統」、「基於雲的架構」或類似術語指代設備(例如,伺服器計算機、路由器等)的網絡。雲計算提供了不要求終端用戶知曉交付服務的系統的物理位置或配置的計算、軟體、數據訪問和存儲服務。在各個實施例中,雲計算通過諸如網際網路之類的廣域網使用合適的協議來交付服務。例如,雲計算提供者通過廣域網交付應用,並且它們可以通過web瀏覽器或任何其他計算組件被訪問。架構100的軟體或組件以及相對應的數據可被存儲在遠程位置處的伺服器上。雲計算環境中的計算資源可以被整合在遠程數據中心位置處或者它們可以是分散的。雲計算基礎結構可以通過共享數據中心來交付服務,即使在用戶看來它們是單個訪問點。因此,在此所述的組件和功能可以從使用雲計算架構的遠程位置處的服務提供者來提供。替代地,它們可以從常規的伺服器中提供,或者它們可以直接地或以其他方式安裝在客戶端設備上。

本說明書旨在包括公共雲計算和私有雲計算兩者。雲計算(公共和私有兩者)提供了基本無縫的資源聯營以及對管理和配置底層硬體基礎結構的降低的需求。

公共雲由供應商管理,並且通常支持使用同一基礎結構的多個消費者。此外,與私有雲相反,公共雲能夠將終端用戶從管理硬體中釋放出來。私有雲可由機構本身管理,並且基礎結構通常不與其他機構共享。該機構在某種程度上仍然維護著硬體,諸如安裝和維修等。

在圖6中所示的實施例中,一些項與圖5中所示的那些是類似的,並且它們被類似地編號。圖6具體地示出系統101可位於雲502(可以是公共的、私有的或者其中某些部分是公共的而某些部分是私有的組合)中。因此,用戶使用客戶機設備22通過雲502來訪問那些系統。

圖6還描繪了雲架構的另一實施例。圖6示出還構想了架構100的某些元素被置於雲502中而其他元素沒有被置於雲502中。作為示例,數據存儲104可被置於雲502的外部,並且通過雲502來被訪問。無論它們位於哪裡,它們都可直接由客戶機設備22通過網絡(廣域網或區域網)訪問,它們可由服務主存在遠程站點處,或者它們可作為通過雲來提供或通過駐留在雲中的連接服務來訪問的服務。本文構想了所有這些架構。

還將注意,架構100或其部分可被採用在各種各樣不同的設備上。這些設備中的某些包括:伺服器、臺式計算機、膝上型計算機、平板計算機、或其他行動裝置,諸如掌上計算機、蜂窩電話、智慧型電話、多媒體播放器、個人數字助理等。

圖7是可被用作其中可部署本發明的系統(或其部分)的用戶或客戶的手持式設備216的手持式或移動計算設備的一個實施例的簡化框圖。圖7-10是手持式或行動裝置的示例。

圖7提供了客戶機設備216的組件的總體框圖,該客戶機設備216可以運行架構100的組件或與架構100交互。在設備216中,提供了通信鏈路213,該通信鏈路允許手持設備與其它計算設備通信,並且在一些實施例中提供用於諸如通過掃描來自動接收信息的信道。通信鏈路213的示例包括:紅外埠、串行/USB埠、諸如乙太網埠之類的電纜網絡埠、以及允許通過一個或多個通信協議的通信的無線網絡埠,所述通信協議包括作為用於提供對網絡的蜂窩接入的無線服務的通用分組無線服務(GPRS)、LTE、HSPA、HSPA+、以及其他3G和4G無線電協議、1Xrtt和短消息服務,並包括提供對網絡的本地無線連接的802.11和802.11b(WiFi)協議、和藍牙協議。

根據其他實施例,應用或系統被容納在連接到可移動安全數字(SD)卡接口215的SD卡上。SD卡接口215和通信鏈路213沿總線219與處理器217進行通信,該總線219還連接到存儲器221和輸入/輸出(I/O)組件223、以及時鐘225和定位系統227。

在一個實施例中,提供了I/O組件223以促成輸入和輸出操作。針對設備216的各個實施例的I/O組件223可以包括:輸入組件,比如按鈕、觸摸傳感器、多點觸摸傳感器、光學或視頻傳感器、語音傳感器、觸控螢幕、鄰近傳感器、話筒、傾斜傳感器以及重力開關;以及輸出組件,比如顯示設備、揚聲器和或印表機埠。也可以使用其他I/O組件223。

時鐘225說明性地包括輸出時間和日期的真實時間時鐘組件。時鐘還可以說明性地為處理器217提供時序功能。

定位系統227說明性地包括輸出設備216的當前地理位置的組件。這例如可以包括全球定位系統(GPS)接收機、LORAN系統、航位推算系統、蜂窩三角測量系統或者其他定位系統。這例如還可以包括生成所期望的地圖、導航線路和其他地理功能的測繪軟體或導航軟體。

存儲器221存儲作業系統229、網絡設置231、應用233、應用配置設置235、數據存儲237、通信驅動程序239以及通信配置設置241。存儲器221可以包括所有類型的有形易失性和非易失性計算機可讀存儲器設備。其還可以包括計算機存儲介質(下面描述)。存儲器221存儲計算機可讀指令,所述指令在被處理器217執行時致使處理器根據所述指令執行計算機實現的步驟或功能。處理器217可以也被其他組件激活以促成它們的功能性。

網絡設置231的示例包括諸如代理信息、網際網路連接信息以及測繪之類的事物。應用配置設置235包括為特定企業或用戶定製應用的設置。通信配置設置241提供了用於與其他計算機進行通信的參數,並且包括諸如GPRS參數、SMS參數、連接用戶名和口令之類的項目。

應用233可以是之前已經存儲在設備216上的應用或是在使用期間安裝的應用,但是這些應用可以是作業系統229的一部分,或者也可以在設備216之外被託管。

圖8和9提供了可被使用的設備216的附加示例,但是也可以使用其它設備。在圖8,提供功能電話或行動電話345作為設備216。電話345包括:一組小鍵盤347,其用於撥打電話號碼;顯示器349,其能夠顯示包括應用圖像在內的圖像、圖標、網頁、照片和視頻;以及控制按鈕351,其用於選擇在顯示器上示出的項目。電話包括天線353,該天線353用於接收諸如通用分組無線服務(GPRS)和1Xrtt之類的蜂窩電話信號以及短消息服務(SMS)信號。在一些實施例中,電話345還包括容納安全數字(SD)卡357的SD卡槽355。

圖9的行動裝置是個人數字助理(PDA)459或多媒體播放器或平板計算設備等等(在此稱為PDA 459)。PDA 459包括電感屏461,所述電感屏感測指示筆463(或其他指示器,諸如用戶的手指)在該指示筆被置於屏幕之上時的位置。這允許用戶在屏幕上選擇、突出顯示和移動項目以及繪圖和書寫。PDA 459還包括多個用戶輸入鍵或按鈕(比如按鈕465),其允許用戶將顯示器461上所顯示的菜單選項或其他顯示選項滾屏,並且允許用戶在沒有接觸顯示器461的情況下改變應用或選擇用戶輸入功能。儘管未被示出,但是PDA 459可以包括允許與其他計算機進行無線通信的內置天線和紅外發射機/接收機、以及允許與其他計算設備的硬體連接的連接埠。這樣的硬體連接通常是通過經由串行或USB埠連接到其他計算機的支架來完成的。因此,這些連接是非網絡連接。在一個實施例中,行動裝置459還包括容納SD卡469的SD卡槽467。

圖10類似於圖8,不同之處在於電話是智慧型電話571。智慧型電話571具有顯示圖標或磁貼或其他用戶輸入機制575的觸敏顯示器573。機制575可由用戶用來運行應用、進行呼叫、執行數據傳輸操作,等等。一般而言,智慧型電話571被構建在行動作業系統上且提供比功能電話更高級的計算能力和連接性。

圖8到圖10示出在圖11中示出的設備216的特定形式。應當理解,除了圖8-10中示出的那些之外,設備216的其他形式是可能的。

圖11是其中可採用架構100或其一部分(作為示例)的計算環境的一個實施例。參考圖11,用於實現一些實施例的示例性系統包括計算機810形式的通用計算設備。計算機810的組件可以包括,但不限於,處理單元820(可以包括系統200或設備16中的處理器102或各處理器)、系統存儲器830和將包括系統存儲器在內的各種系統組件耦合至處理單元820的系統總線821。系統總線821可以是若干類型的總線結構中的任一種,包括存儲器總線或存儲器控制器、外圍總線和使用各種總線架構中的任一種的局部總線。作為示例而非限制,這樣的架構包括工業標準架構(ISA)總線、微通道架構(MCA)總線、增強型ISA(EISA)總線、視頻電子技術標準協會(VESA)局部總線和外圍部件互連(PCI)總線(也稱為夾層(Mezzanine)總線)。參考圖1描述的存儲器和程序可被部署在圖11的對應部分中。

計算機810通常包括各種計算機可讀介質。計算機可讀介質可以是能由計算機810訪問的任何可用介質,而且包含易失性和非易失性介質、可移動和不可移動介質。作為示例而非限制,計算機可讀介質可包括計算機存儲介質和通信介質。計算機存儲介質不同於且不包括已調製數據信號或載波。計算機存儲介質包括硬體存儲介質,該硬體存儲介質包括以用於存儲諸如計算機可讀指令、數據結構、程序模塊或其他數據的信息的任何方法和技術實現的易失性和非易失性、可移動和不可移動介質。計算機存儲介質包括,但不限於,RAM、ROM、EEPROM、快閃記憶體或其他存儲器技術、CD-ROM、數字多功能盤(DVD)或其他光碟存儲、磁帶盒、磁帶、磁碟存儲或其他磁性存儲設備、或能用於存儲所需信息且可以由計算機810訪問的任何其他介質。通信介質通常具體化計算機可讀指令、數據結構、程序模塊或傳輸機制中的其他數據,並包括任何信息遞送介質。術語「已調製數據信號」是指使得以在信號中編碼信息的方式來設定或改變其一個或多個特徵的信號。作為示例而非限制,通信介質包括諸如有線網絡或直接線連接之類的有線介質,以及諸如聲學、RF、紅外及其他無線介質之類的無線介質。上述任何組合也應該包括在計算機可讀的介質範圍內。

系統存儲器830包括易失性和/或非易失性存儲器形式的計算機存儲介質,如只讀存儲器(ROM)831和隨機存取存儲器(RAM)832。包含諸如在啟動期間幫助在計算機810內的元件之間傳輸信息的基本例程的基本輸入/輸出系統833(BIOS)通常存儲在ROM 831中。RAM 832通常包含處理單元820可立即訪問和/或當前正在操作的數據和/或程序模塊。作為示例而非限制,圖11例示出了作業系統834、應用程式835、其他程序模塊836和程序數據837。

計算機810還可以包括其他可移動/不可移動、易失性/非易失性計算機存儲介質。僅作為示例,圖11示出了從不可移動、非易失性磁介質中讀取或向其寫入的硬碟驅動器841,從可移動、非易失性磁碟852中讀取或向其寫入的磁碟驅動器851,以及從諸如CD ROM或其他光學介質等可移動、非易失性光碟856中讀取或向其寫入的光碟驅動器855。可在示例性操作環境中使用的其他可移動/不可移動、易失性/非易失性計算機存儲介質包括但不限於,磁帶盒、快閃記憶體卡、數字多功能盤、數字錄像帶、固態RAM、固態ROM等。硬碟驅動器841通常通過諸如接口840之類的不可移動存儲器接口連接到系統總線821,並且磁碟驅動器851和光碟驅動器855通常通過諸如接口850之類的可移動存儲器接口連接到系統總線821。

作為替換或補充,本文所述的功能可至少部分地由一個或多個硬體邏輯組件來執行。例如、但非限制,可使用的硬體邏輯組件的說明性類型包括現場可編程門陣列(FPGA)、程序專用的集成電路(ASIC)、程序專用的標準產品(ASSP)、片上系統系統(SOC)、複雜可編程邏輯器件(CPLD)、等等。

上文討論並在圖11中示出的驅動器及其相關聯的計算機存儲介質為計算機810提供了對計算機可讀指令、數據結構、程序模塊和其他數據的存儲。例如,在圖11中,硬碟驅動器841被示為存儲作業系統844、應用程式845、其他程序模塊846和程序數據847。注意,這些組件可與作業系統834、應用程式835、其他程序模塊836和程序數據837相同,也可與它們不同。在此作業系統844、應用程式845、其他程序模塊846以及程序數據847被給予了不同的編號,以至少說明它們是不同的副本。

用戶可以通過諸如鍵盤862、話筒863以及諸如滑鼠、跟蹤球或觸摸墊等定點設備861等輸入設備來將命令和信息輸入至計算機810中。其他輸入設備(未示出)可以包括操縱杆、遊戲手柄、圓盤式衛星天線、掃描儀等。這些以及其他輸入設備通常通過耦合到系統總線的用戶輸入接口860連接到處理單元820,但也可通過諸如並行埠、遊戲埠或通用串行總線(USB)之類的其他接口和總線結構來連接。視覺顯示器891或其他類型的顯示設備也經由諸如視頻接口890之類的接口連接至系統總線821。除了監視器以外,計算機還可包括諸如揚聲器897和印表機896之類的其他外圍輸出設備,它們可通過輸出外圍接口895來連接。

計算機810使用到諸如遠程計算機880等一個或多個遠程計算機的邏輯連接在網絡化環境中操作。遠程計算機880可以是個人計算機、手持設備、伺服器、路由器、網絡PC、對等設備或其他常見的網絡節點,且一般包括以上關於計算機810描述的多個或所有的元件。圖11中所示的邏輯連接包括區域網(LAN)871和廣域網(WAN)873,但也可以包括其他網絡。此類聯網環境在辦公室、企業範圍的計算機網絡、內聯網和網際網路中是常見的。

當在LAN聯網環境中使用時,計算機810通過網絡接口或適配器870連接到LAN 871。當在WAN聯網環境中使用時,計算機810通常包括數據機872或用於通過諸如網際網路等WAN 873建立通信的其他手段。數據機872可以是內置的或外置的,可經由用戶輸入接口860或其他適當的機制連接到系統總線821。在聯網環境中,相關於計算機810所示的程序模塊或其部分可被存儲在遠程存儲器存儲設備中。作為示例而非限制,圖11示出了遠程應用程式885駐留在遠程計算機880上。應當理解,所示的網絡連接是示例性的,並且可使用在計算機之間建立通信鏈路的其他手段。

還應注意,本文描述的不同實施例可以按不同的方式來組合。即,一個或多個實施例的各部分可以與一個或多個其他實施例的各部分組合在一起。本文中構想了所有這些。

示例1是一種修改原始碼的編程單元的執行行為的計算機實現的方法。所述方法包括加載原始碼的編程。單元並確定是否針對該編程單元定義了至少一個定製至少一個定製基於所述定製的先決條件是否被滿足而被選擇性地執行。

示例2是如任意或所有先前的示例的計算機實現的方法,其中原始碼的編程單元是原始碼的單個行。

示例3是如任意或所有先前的示例的計算機實現的方法,其中原始碼的編程單元包括原始碼的多個行。

示例4是如任意或所有先前的示例的計算機實現的方法,其中原始碼的編程單元是方法。

示例5是如任意或所有先前的示例的計算機實現的方法,其中至少一個定製選擇性地執行以取代原始碼的編程單元。

示例6是如任意或所有先前的示例的計算機實現的方法,其中所述至少一個定製在原始碼的編程單元之前選擇性地執行。

示例7是如任意或所有先前的示例的計算機實現的方法,其中所述至少一個定製在原始碼的編程單元之後選擇性地執行。

示例8是如任意或所有先前的示例的計算機實現的方法,其中所述至少一個定製的選擇性執行包括在執行期間向所述至少一個定製提供對原始碼的編程單元的變量的訪問。

示例9是如任意或所有先前的示例的計算機實現的方法,其中所述訪問是由所述至少一個定製中的範圍定義來確定的。

示例10是如任意或所有先前的示例的計算機實現的方法,其中所述先決條件包括在原始碼的編程單元中的變量的存在。

示例11是如任意或所有先前的示例的計算機實現的方法,其中所述變量不是在所述至少一個定製上操作的。

示例12是定義與原始碼的編程單元有關的定製的計算機實現的方法。所述方法包括標識原始碼的編程單元並指定與所標識的原始碼的編程單元有關的定製執行。定製執行的範圍被定義。所述原始碼的編程單元的標識、指定的定製執行信息以及範圍信息被存儲並被提供給執行平臺。

示例13是如任意或所有先前的示例的計算機實現的方法,並進一步定義了在所述定製將由執行平臺執行之前必須存在於原始碼的編程單元中的至少一個先決條件。

示例14是如任意或所有先前的示例的計算機實現的方法,其中所述先決條件包括在所述定製將由執行平臺執行之前必須存在於原始碼的編程單元中的參數。

示例15是如任意或所有先前的示例的計算機實現的方法,其中所述參數沒有在定製中被使用。

示例16是如任意或所有先前的示例的計算機實現的方法,其中指定與所標識的原始碼的編程單元有關的定製執行包括定製將取代所標識的原始碼的編程單元來執行的指示。

示例17是如任意或所有先前的示例的計算機實現的方法,其中所述定製執行的範圍被定義使得所述定製將能夠訪問它正在取代的原始碼的編程單元的變量。

示例18是如任意或所有先前的示例的計算機實現的方法,其中指定與所標識的原始碼的編程單元有關的定製執行包括定製將在所標識的原始碼的編程單元之前絕對最先執行的指示。

示例19是如任意或所有先前的示例的計算機實現的方法,其中指定與所標識的原始碼的編程單元有關的定製執行包括定製將在所標識的原始碼的編程單元之後絕對最後執行的指示。

示例20是一種被配置為執行原始碼的編程單元的計算機系統。所述計算機系統包括被配置為執行原始碼的編程單元的處理器和適用於存儲原始碼的編程單元和關於所選的原始碼的編程單元所定義的至少一個定製的存儲組件。處理器被配置為加載原始碼的編程單元並確定是否相對於所加載的原始碼的編程單元定義了一個定製並基於所述定製的定義選擇性地執行所述定製。

儘管用結構特徵和/或方法動作專用的語言描述了本主題,但可以理解,所附權利要求書中定義的主題不必限於上述具體特徵或動作。更確切而言,上述具體特徵和動作是作為實現權利要求的示例形式公開的。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀