面向生成器圖形的編程框架中的並行化和植入的製作方法
2023-05-14 12:07:11 4
專利名稱::面向生成器圖形的編程框架中的並行化和植入的製作方法
技術領域:
:本發明的實施方式涉及計算機領域;且更具體地,涉及利用運行時(runtime)來編程和執行代碼的領域。
背景技術:
:面向對象的編程面向對象迫編程是一種計算機編程範例。在面向對象迫編程的後面的理念是電腦程式可以被視為包括相互作用的單個單元(稱為對象或實例)的集合,而不是傳統地將程序視為函數的集合或簡單視為用於計算機的指令列表。對象是用於將數據與操作該數據的方法綁定的語言機制。每一個對象能夠通過方法被調用、處理數據以及向其他對象提供結果。每一個對象可以被視為具有獨特角色或職責的獨立機器或施動者。反射式面向對象的語言是具有特定的特性集合的程式語言(例如,類、對象/實例、繼承、反射等),但是反射式基於對象的語言有時用於標記具有這些特性的一些子集(例如對象)的程式語言。出於本文的需要,短語"面向對象原始碼"以及"面向對象代碼"用於指用具有這些特性的語言編寫的代碼(例如,用反射式面向對象的語言編寫的代碼、用反射式基於對象的語言編寫的代碼)。在過程怨言、非發射式面向對象的語言以及非反射式基於對象的語言是一般不支持這些特性的程式語言的情況下,轉換技術可以用於將這些特性提供給(例如,通過仿真)適合用這些語言編寫的代碼;且由此,這些技術將這些語言轉換成反射式基於對象的語言或反射式面向對象的語言。(這些技術不需要仿真面向或基於對象的語言的所有特性,而是可以只仿真對本文剩餘部分感興趣的這些特性)。出於本文的需要,短語"面向對12象原始碼"和"面向對象代碼"還可以用於指這些轉換後的過程怨言代碼、非反射式面向對象、以及非反射式基於對象的語言代碼。通過示例的方式而並非限定,本文主要描述用反射式面向對象的語言編寫面向對象原始碼。同樣,術語對象和實例在這裡可以互換使用。在面向對象編程中主要使用的術語方法指專門與類(稱作類方法、靜態方法或工廠方法(factorymethod))或對象(稱為實例方法)相關聯的一段代碼。如同過程程式語言中的過程,方法通常包括執行動作的語句序列、將這些動作參數化的輸入參數的集合以及可能還有返回的一些種類的輸出值。當程式設計師使用面向對象語言寫程序時,產生的代碼從概念上可以視為包括四種基本類型的代碼。第一種類型包括操作輸入的實例以提供輸出實例的命令(這裡稱為"轉換"代碼);一般被寫為方法(這裡稱為"轉換"方法)。第二種類型包括引起運行時以實例化類實例的實例實例化命令(這裡被稱為"實例實例化"代碼)。第三種包括調用以上實例的屬性方法(存取程序、轉變器(mutator)等)的屬性操作命令(這裡稱為"數據準備"代碼)。第四種包括命令序列,該命令序列使用合適的實例(其中合適的實例包括用作參量(argument)的實例、實例方法使用的實例以及類方法使用的元類實例)啟動方法調用排序,以規定什麼實例的什麼轉換方法被調用,以什麼順序,以及利用哪些實例的哪些參數響應於數據準備代碼做出的改變(這裡稱為"手動調用排序"代碼)。手動調用排序代碼有時被編寫為與轉換方法分開的方法,且從而手動調用排序代碼包括用於轉換方法的調用命令序列。程序一般在數據準備代碼與手動調用排序代碼(其還可以提取(dipinto)實例實例化代碼)之間重複,所述手動調用排序代碼可以再調用轉換代碼(其也可以提取實例實例化代碼和數據準備代碼)。應當理解這是程序的概念性描述,因此,不應當認為在看待程序上是絕對的。運行時術語運行時在這裡用於指運行用相同和/或不同語言編寫的其他代碼的基本代碼的程序或庫。由此,運行時是在程序運行時(包括與作業系統一起工作以提供功能諸如數學函數、輸入和輸出)支持程序的效用函數的集合。這些使程式設計師沒有必要不斷地重新編寫在程式語言中規定的或作業系統提供的基本能力。由於運行時與作業系統之間的區分可能模糊,因此術語運行時在這裡用於指與作業系統分開的代碼和/或是作業系統一部分的代碼。早期運行時,例如FORTRAN的運行時,提供諸如數學運算的特徵。其他語言添加了更複雜的特徵——例如存儲器無用信息集合,通常與對象支持相關聯。最近的語言傾向於具有相當大的具有相當多功能的運行時。許多面向對象的語言還包括已知為"調度程序"和"類裝載器"的系統。JavaVirtualMachine(JVM)是這種運行時的一個示例其還在運行時解譯或彙編可動二進位Java程序(字節代碼)。公共語言運行時(CLR)框架是運行時的另一個示例。編程和執行框架一種框架包括三個基本區域,在該框架中向終端用戶提供應用。第一個區域包括作業系統和運行時的創建。該第一個區域由具有非常高級編程技能的程式設計師來執行。當在該區域工作時,程式設計師分別被稱為作業系統程式設計師和運行時程式設計師。當創建面向對象語言的運行時的時候,運行時程式設計師支持執行在轉換代碼、實例實例化代碼、數據準備代碼以及手動調用排序代碼中使用的各種類型的命令(例如,實例實例化命令、數據準備命令以及方法調用命令)。第二個區域包括由運行時運行的面向對象應用原始碼的創建。第二個區域再次由具有非常高級編程技能以及能理解應用的業務目的的程式設計師來執行。當在該區域中工作時,程式設計師被稱為應用程式員。當用面向對象的程式語言創建應用時,應用程式員為要被創建的特定應用編寫特定的轉換代碼、實例實例化代碼、數據準備代碼以及手動調用排序代碼。作為這些的一部分,如果應用需要圖形用戶界面,則應用程式員還為特定應用設計圖形用戶界面並編碼;從而還被稱為應用設計者。第三個區域包括由運行時運行的應用程式的使用。第三個區域由不需要具有任何編程技能的終端用戶來執行。手動調用排序代碼與應用的創建相關聯的最大的開銷一般包括手動調用排序代碼的調試和/或優化。對於數據改變的每次時機,應用程式員必須考慮其影響並編寫手動調用排序代碼以使合適實例的合適轉換方法隨著合適的輸入以合適的順序被調用。應用程式員犯的典型錯誤包括1)以錯誤的順序調用合適實例的合適轉換方法;2)響應於一些改變的數據忘記包括使一個或多個所需的實例轉換方法被調用的命令;3)響應於一些改變的數據包括使不需要的實例轉換方法被調用的命令(例如,包括調用不受數據改變影響的實例轉換方法的命令)等。通過舉例的方式,生成手動調用排序代碼的一種技術是使用觀察者模式(有時稱為"發布訂閱")以觀察程序中實例的狀態。在該觀察者模式中,一個或多個實例(稱為觀察者或監聽者)被註冊(或自己註冊)以觀察被觀察對象(主體)可能引發的事件。可以引發事件的被觀察實例通常保留註冊的觀察者的集合。當事件被引發時,每一個觀察者從被觀察實例接收回調(被觀察實例調用註冊的觀察者中的"通知"方法)。通知功能可以傳遞一些觀察者可以使用的參數(一般是關於發生的事件的信息)。每一個觀察者執行通知功能,最後在通知出現時定義其自身的行為。被觀察實例一般具有用於添加新觀察者的註冊方法和用於在事件被引發時從將被通知的實例列表中移除觀察者的非註冊方法。此外,被觀察實例還可以具有用於暫時停止然後重新啟動調用以防止多個相關更新低效層疊的方法。具體地,響應於屬性值的改變而被調用的回調還常常改變一些其他屬性的值,觸發另外的回調等。當使用觀察者模式技術時,編寫手動調用排序代碼的應用程式員通過將觀察者註冊、註銷、停止以及重新啟動到不同的被觀察實例以及為每一個實例編寫通知方法和回調方法來規定調用什麼示例、用哪種順序以及通過註冊來利用哪個輸入。更具體地,觀察者與被觀測實例之間的關係在觀察者模式內被本地管理(僅由被觀測實例單獨管理,不需要與其他被觀測實例同步),從而需要根據多個被觀察實例來同步事件的手動調用排序代碼一般是每一個觀察者的特定回調方法的一部分。重寫、易失性調用棧(Overwriting,VolatileCallStack)一般的運行時使用重寫、易失性調用棧來堆積當前調用的未完成的調用。重寫、易失性調用棧的重寫在於當每一次調用完成時,該棧出棧並拋棄項,而易失性在於該棧在每一次執行都被拋棄並重建。一般的運行時使用重寫、易失性調用棧是因為一般的運行時響應於手動調用排序代碼的執行來將重寫、易失性調用棧的建立與具有合適輸入的合適實例的合適轉換方法的實際調用相結合。總之,響應於手動調用排序代碼的執行,一般的運行時一個調用一個調用地(在做出每一個調用時)確定實例排序的轉換方法並保留重寫,易失性調用棧以只跟蹤當前調用的未完成的調用。程序執行和並行化傳統地,程序中的方法基於手動調用排序代碼被按順序執行。為了改善執行的效率和速度,一些方法在支持並行化的系統中被並行執行。通常,計算中的並行化是同時執行多個進程、任務或線程。為了執行並行化,應用程16序員可以標識想要並行執行的方法,然後重新編寫手動調用排序代碼以使被標識的方法被並行執行。目前,在計算中支持的常用並行化機制包括多進程和多線程。在多進程中,應用程式一般被分成多個任務。每一個任務在邏輯上是處理器可執行的計算工作的高電平、離散、獨立的部分。為了實現並行化,至少一些任務在多個處理器上同時被執行。處理器可以經由網絡被互相耦合併集中起來被稱為網格。網格中的處理器可以包括本地處理器、遠端處理器或兩者的組合。除了多進程,另外一種常用並行化機制是多線程。線程是執行任務的本地進程。支持多線程的處理器可以基本同時執行多個線程。這種處理器的一個示例是多核處理器,其中該多個處理器的每一個內核可以執行一個線程。通過實例的方式,並行化中一種常規的技術是分析應用程式的原始碼以提取應用程式中的配置。基於該配置,應用程式被分成多個子程序,所述子程序基於子程序的父子關係被表示在圖形中。這些子程序基於子程序的父子關係被並行執行。在一些常規計算系統中,從原始碼中生成的中間代碼的分析可以被執行以實現並行化。例如,中間代碼(例如,彙編語言)和並行化的分析在編譯期間被完成。編譯器的並行器將中間代碼轉換成可並行執行形式。執行順序確定器確定將被執行的基礎塊的順序。擴展基礎建造塊並行器將基礎建造塊細分成執行單元,每一個執行單元組成可並行執行的指令。依賴性分析在指令基礎上完成。但是,上述常規技術都需要分析應用程式員編寫的應用程式中的手動調用排序代碼。因此,並行化的負擔丟給了應用程式員,這是因為為了正確執行並行化,在編寫手動調用排序代碼時需要非常小心。因此,應用程式員需要具有相當高水平的編程技能。為了使應用程式員的工作更輕鬆,改進了一些常規技術來執行應用程式的並行化而不需要高水平的編程技能。例如,提供圍繞常規數據類型的特殊的語言結構以及特殊包裝類(wrapperclass)來並行執行連續的程序。程式設計師不需要為了能並行執行部分程序而編寫"並行程序"。通過向系統規定並行過程指示符及其參量來在調用點規定並行過程。提供用於並行執行不同部分的執行並行功能。通過制定新的類來編寫並行過程,該新的類從對應於程序中每一個並行過程的公共類中導出。在運行時系統解析依賴性以及並行化被完成至遇到實際依賴性的水平。編譯器可以確定參量是否可以通過對並行過程的控制流圖形的分析在並行過程中被修改。在另一個常規計算系統中,在應用程式的正執行的用戶定義的功能中使用資料庫管理器,而不需要對在電腦程式自身中所支持的所有並行性進行硬編碼。資料庫表可以被定義為具有用戶想要並行執行的指令。用戶定義的功能然後被定義為執行表中的指令。資料庫管理器通過並行執行用戶定義功能中的多個任務以提供並行性。軟體植入(softwareinstrumentation)通常,軟體植入指用於觀察一個或多個應用程式的行為以及收集關於應用程式及其執行的規格的技術。因此,在應用程式和/或應用程式的執行可以基於應用程式的行為和收集的度量以各種方式做出改進的情況下,軟體植入是開發中以及應用程式維護中有用的工具。目前,已經開發了多種技術來實現軟體植入。例如,一種技術是添加軟體模塊或代碼來記錄應用程式的執行歷史由此可以基於記錄的執行歷史來管理將來應用程式的執行。在另一個示例中,編譯器生成用於監控並收集度量的指令和元數據。如果選擇的指示符與指令相關聯,則激活與該指令的執行相關聯的事件的計數。然後對執行指令的次數進行計數。在執行應用程式後,熱點(hotpot)被標識以確定性能改進方法,且應用程式的原始碼可以18相應地被修改以執行性能改進方法。植入的另一種常規技術是使用從應用程的原始碼中生成的中間表示(IR)數據。具體地,編譯器從原始碼中生成IR數據。代碼植入模塊作用在IR數據上以構建IR樹並基於IR樹將植入添加到IR數據。之後編譯器通過將具有植入的IR數據轉換成對象代碼來完成編譯。使用植入庫(下文中的植入DLL)可以植入類實例。虛擬機(VM)運行時模塊可以運行植入的類實例。在類實例中的字節代碼中有方法名稱和參數的聲明。特定的指示符指示對應於聲明的方法的可執行部分可以在與VM運行時模塊分開的固有代碼的一些塊中被找到。例如,植入的JavaVM字節代碼可以在執行期間由監控進程和監控庫(a.k.a.a監控DLL)來監控。對象關係映射對象關係映射是連結關係資料庫與面向對象語言概念的編程技術,(有效地)創建了"虛擬對象資料庫"。一些對象關係映射程序自動保持存儲器中裝載的實例與資料庫穩定同步。具體地,在構建了對象到SQL的映射查詢之後,首先返回的數據被複製到正在處理的實例的欄位中,例如任意的對象-SQL映射包。一旦這樣,實例必須查看這些值是否改變,然後謹慎地使進程逆向以將數據寫回到資料庫外部。Hibernate3.0是用於Java和CLR的對象關係映射方案(喬治亞州亞特蘭大市的Jboss⑧公司)。從而,Hibernate提供用於將面向對象域模型映射到傳統的關係資料庫的框架。其目標是將開發者從一些公共數據持續性相關的編程任務中解脫出來。Hibernate處理從類到資料庫表的映射(且從面向對象數據類型到SQL數據類型)以及提供數據査詢和獲取功能。Hibernate是以實例為中心並且建立表示實例之間關係的圖形。控制倒置和依賴倒置原理控制倒置,也被稱為ioc,是可以被用於減少電腦程式中固有的耦合性(每個程序模塊依賴另一個模塊的程度)的面向對象編程原理。IOC還被稱為依賴倒置原理。在IOC中,如果以下任意一個適用,則類x依賴類y:1)x具有y並調用y;2)x是y;或者3)x依賴某個類z,而z依賴y(傳遞性)。值得注意x依賴y並不意味著y依賴x;如果兩種情況為真,則稱為循環依賴性;那麼x在沒有y的情況下不能被使用,反之亦然。實際上,如果(類x的)對象x調用(類y的)對象y的方法,則類x依賴y。通過引入第三個類即接口類I來倒置依賴性,該接口類I必須包括x可以在y上調用的所有方法。此外,y必須被改變從而使得y實施接口I。x和y現在都依賴接口I以及類x不再依賴y(假定x沒有實例化y)。通過引入接口I來消除類x對y的依賴性被稱為控制倒置(或依賴倒置)。必須注意y可能依賴其他類。在應用轉換之間,x依賴y並由此x間接依賴y所依賴的所有類。通過應用控制倒置,所有這些間接依賴性也被打破了。新引入的接口I不依賴任何類。SpringFramework是用於使用IOC和依賴倒置的Java平臺的開放資源應用框架。具體地,SpringFramework的核心是控制容器的倒置,所述控制容器提供配置並管理Java對象的工具。該容器還被稱為BeanFactory、ApplicationContext或Core容器。該容器操作的示例為創建對象、配置對象、調用初始化方法並將對象傳遞到註冊的回調對象。由容器創建的對象還被稱為被管理對象(ManagedObjects)或Bean。通常通過裝載包含Bean定義的XML文件來配置容器。這些提供創建對象所需的所有信息。一旦在沒有產生錯誤的條件下創建並配置對象,則對象可使用。通過依賴性査找或依賴性注入可以得到對象。依賴性査找是調用程序向容器對象請求具有特定名稱或特定類型的對象的方式。依賴性注入是容器經由構造器、屬性或工廠20(factory)方法按名稱將對象傳遞給其他對象。因此,SpringFramework是以存儲器為中心的,並建立表示實例之間關係的圖形。圖形工具Javadoc是解析一組Java資源文件中的聲明和文件注釋並產生對應的一組的HTML頁的工具,該HTML頁表示(默認地)公共和受保護類、套嵌類(不是匿名內部類)、接口、構造器、方法以及欄位(加利福尼亞州,聖克拉拉市的SunMicrosystems公司)。Javadoc可以用於生成API(應用編程接口)文件或用於一組源文件的執行文件。Javadoc是類和方法為中心的並建立表示類的組合及其方法之間的關係的圖形。用於設計軟體應用的另一個系統包括由解釋器分析的用於表示並複製計算機應用的對象的圖形。該系統使用存儲在代碼庫中的預寫編程類,該類可以被編寫以遵循在以下文檔中描述的設計模式AddisonWesley1995年出版的Gamma等人的"DesignPattern"、ComputerPublishing1998年出版的Grand,Wiley的"PatterninJava"、和/或高級計算機輔助軟體工程(CASE)工具。更具體地,一些這樣的類基於觀察者行為方式。預編寫的代碼庫表示應用狀態節點、處理邏輯以及不同應用狀態間的系統數據流(即,預編寫的應用數據元素),從而用戶在創建軟體應用時不需要編寫、編輯或編譯代碼。而是,用戶通過編輯與當前應用狀態節點相關聯的可視對象(例如應用狀態節點中的數據或在應用狀態節點中執行的進程)來手動編輯圖形用戶界面中的軟體應用。之後,基於用戶對當前應用狀態節點做出的改變,解釋器針對剛被編輯的應用狀態向用戶顯示更新後的應用狀態。系統然後可以沿著用戶定義的過渡邊緣過渡到另一個應用狀態,在該另一個應用狀態用戶可以編輯下一個應用狀態或過度邊緣。在軟體應用運行時可以對解釋器執行的圖形實例做出圖形改變。用於設計軟體應用的系統可以包括運行軟體應用的可視表示,該運行軟體應用可以被制定為利用應用控制器"可以被用"。當用戶改變表示運行軟體應用的可視對象時,控制器使用輸入來促使解釋器改變圖形。然後控制器等待更多的改變。此外,這種軟體應用的可視表示可以作為XML文件被輸入或輸出,該XML文件描述應用的可視表示從而描述軟體應用。為了以節點、定向的邊緣以及應用狀態的可視表示的形式編輯和/或創建軟體應用,系統還可以包括應用程式接口和應用編輯器。來自預編寫的代碼庫中的關鍵詞和相關定義使應用開發者能手動定義軟體應用、處理步驟,以及通過在編輯器中提供圖形應用的圖形表示得到的軟體應用的可視表示,所述圖形應用與實際應用結構密切相關。用戶通過"應用定義嚮導"定義新應用,該"應用定義嚮導"在完成某些初步事情後將新應用顯示為編輯器工作區中的圖形組件。用戶還通過使用電腦滑鼠和鍵盤從顯示的預先創建的可能應用組件列表中選擇並將組件拖動並放入工作區來與應用交互。用戶可以選擇組件並在已有的組件上"拖動"組件。當新組件"落到"已有組件上,則該新組件成為應用圖形中己有組件的子組件。應用中的組件的關係由編輯器中的用戶選擇手動定義。因此用戶建立表示應用的樹結構。當應用被創建,用戶可以選擇應用導航視窗來顯示構建的應用的樹視圖,該樹視圖能夠選擇並編輯應用的任何組件。編輯器界面處理用戶輸入和選擇,包括創建或刪除應用元素、更新組件屬性以及更新應用的顯示屬性。上述的系統在使用軟體應用的可視表示時還可以用作定義並更新相關資料庫的可視編程工具。系統使用軟體應用的可視表示的XML描述。工具解析並解釋XML描述以產生等價的關係資料庫表圖示以及該圖示的改變。當數據在軟體應用的可視表示內發生改變時,該改變的描述與其他改變一起被存儲在日誌文件中且之後被作為分組處理。中間程序(在其自身的線程上操作的java應用程式)執行軟體應用的可視表示與關係資料庫之間的事務。Java應用程式輪詢(即,檢査)可視表示(即資料庫中的數據)的節點改變的日誌,且如果存在改變,就對資料庫做出更改。因此,通過更換可視表示中的數據,系統可以更新資料庫。相似的應用程式在軟體應用程式的可視表示與處理來自資料庫的數據請求的資料庫之間也是有效的。用於分析軟體的另一種系統稱為代碼樹分析器(CTA)。CTA分析用面向對象程式語言編寫的靜態原始碼。CTA從靜態原始碼中生成符號表和調用樹。使用符號表,CTA生成類圖。類似地,使用調用樹,CTA生成序列圖。類圖闡釋用戶選擇的類和與所述用戶選擇的類相關的類之間的關係。序列圖闡釋不同方法被調用的順序。通過使用類圖和序列圖,CTA生成表示靜態原始碼的設計製品。當用戶修改所述設計製品時,CTA使用序列圖來標識原始碼的受影響的部分。所述設計製品用於代碼維護和/或靜態原始碼的逆向工程。
發明內容描述了面向生成器圖形的編程框架中的並行化和/或植入的實施方式。在一個實施方式中,接收運行應用程式的請求,其中應用程式的面向對象原始碼包括方法和生成器依賴性聲明,其中給定方法的生成器依賴性聲明標識一組零個或多個具有輸出的生成器,該輸出是給定方法的輸入,其中生成器為至少一個實例以及與該實例相關聯的方法。此外,應用程式的執行可以基於應用程式的生成器之間的依賴性通過使用運行時而被並行化。在一些實施方式中,使用運行時來植入應用程式。通過參照以下描述和附圖可以更好地理解本發明,附圖用於圖示本發明的實施方式,其中23圖1A是示出了根據本發明一個實施方式的對面向對象的原始碼中類的方法的生成器依賴性聲明與來自給定實例的基於所述方法的生成器實例的關係的框圖IB示出了根據本發明一個實施方式的生成器110A與父生成器114A.1之間的示例性關係;圖1C示出了根據本發明一個實施方式的生成器110A與子生成器112A.l之間的示例性關係;圖1D示出了根據本發明的一個實施方式的父生成器114和子生成器112到生成器110A的示例性關係組合;圖IE示出了根據本發明的一個實施方式的相同類的不同實例可以具有基於相同和/或不同方法的生成器;圖2是示出了根據本發明的一個實施方式的具有面向生成器圖形的編程支持的運行時的可重複使用性的框圖3A是示出了根據本發明的一個實施方式的具有面向生成器圖形的編程支持的運行時的框圖3B是示出了根據本發明的一個實施方式的具有面向生成器圖形的編程支持的運行時的框圖,該支持還支持增量執行(incrementalexecution)和被覆蓋(override)的生成器的輸出;圖4A是示出了根據本發明的一個實施方式的示例性生成器圖形的發現和建立的框圖4B是示出了根據本發明的一個實施方式的圖4A中生成器圖形的初始執行的框圖4C是示出了根據本發明的一個實施方式的圖4B中的生成器圖形的增量執行的框圖4D是示出了根據本發明的一個實施方式的在相關生成器2被覆蓋後的圖4B中生成器圖形的增量執行的框圖4E是示出了根據本發明的一個實施方式的在相關生成器2被覆蓋且無關源生成器3被修改後圖4B中生成器圖形的增量執行的框圖5A是示出了根據本發明的一個實施方式的包括未解析的依賴性的示例性生成器圖形的發現和建立的框圖5B是示出了根據本發明的一個實施方式的圖5A中生成器圖形的初始執行以及對未解析依賴性的解析的框圖5C是示出了根據本發明的一個實施方式的圖5A中生成器圖形的初始執行和/或圖5B中生成器圖形的重新執行的框圖5D是示出了根據本發明的一個實施方式的圖5A中生成器圖形的初始執行和/或圖5B或5C中生成器圖形的重新執行的框圖6是根據本發明的一個實施方式的運行時客戶端的邏輯執行流以及其與具有面向生成器圖形編程支持的運行時的關係的流程圖7A示出了根據本發明的一個實施方式的使用快捷依賴性的方法的生成器依賴性聲明的偽代碼;圖7B是根據本發明的一個實施方式的示例性生成器的框圖7C示出了使用非快捷依賴性的方法的生成器依賴性聲明的偽代碼,並示出了示例性生成器的框圖7D示出了根據本發明的一個實施方式的使用非快捷依賴性的方法的生成器依賴性聲明的偽代碼;圖7E是根據本發明的一個實施方式的示例性生成器的框圖7F是根據本發明的一個實施方式的通過使用具有依賴性確定生成器的向上依賴性的示例性依賴性的框圖7G是根據本發明的一個實施方式的通過使用具有依賴性確定生成器的弱約束依賴性(WeaklyConstrainedDependency)的可能的示例性依賴性的25框圖7H示出了根據本發明的一個實施方式的標準生成器的示例性生成器圖形;圖71示出了生成器依賴性以及用於發現、解析並建立圖7H中的生成器圖形的依賴性確定生成器的一個示例;圖8A是示出了根據本發明的一個實施方式的第一示例性框架的框圖,其中在該框架中應用被提供給終端用戶;圖8B是示出了根據本發明的一個實施方式的第二示例性框架的框圖,其中在該框架中應用被提供給終端用戶;圖8C示出了根據本發明的一個實施方式的具有可配置的交互式生成器輸出布局的圖形用戶界面模塊840的自由單元選擇的示例性屏幕截圖以及使用;圖8D示出了根據本發明的一個實施方式的具有可配置的交互式生成器輸出布局的圖形用戶界面模塊840的自由單元選擇的另一個示例性屏幕截圖以及使用;圖8E示出了根據本發明的一個實施方式的具有可配置的交互式生成器輸出布局的圖形用戶界面模塊840的表格創建的示例性屏幕截圖以及使用;圖8F示出了根據本發明的一個實施方式的具有可配置的交互式生成器輸出布局的圖形用戶界面模塊840的表格創建的另一個示例性屏幕截圖以及使用;圖9A是示出了根據本發明的一個實施方式的用於分配具有面向生成器圖形編程支持的運行時的第一方案的框圖9B是示出了根據本發明的一個實施方式的用於分配具有面向生成器圖形編程支持的運行時的第二方案的框圖9C是示出了根據本發明的一個實施方式的用於分配具有面向生成器圖形編程支持的運行時的第三方案的框圖IO是根據本發明的一個實施方式的示例性實施的框圖IIA是根據本發明的一個實施方式的圖IO中類跟蹤結構1092的示例的框圖11B是根據本發明的一個實施方式的圖10中實例跟蹤結構1065的示例的框圖IIC是根據本發明的一個實施方式的圖IO中生成器圖形結構1060的示例的框圖IID是根據本發明的一個實施方式的圖IO中方法跟蹤結構1058的示例的框圖11E是根據本發明的一個實施方式的在多進程中使用的串行化形式本地映射的示例的框圖11F是根據本發明的一個實施方式的圖10中運行時設置結構1048的示例的框圖IIG是根據本發明的一個實施方式的圖10中基於生成器的可配置的決定結構1049的示例的框圖12A是示出了根據本發明的一個實施方式的支持多進程的圖10中另外細節的框圖12B是示出了根據本發明的一個實施方式的支持偶然(contingent)和訂閱類型的動態生成器依賴性的圖10中另外細節的框圖13A示出了根據本發明的一個實施方式的使用非快捷、非動態(非偶然、非訂閱)的依賴性的方法的生成器依賴性聲明的偽代碼;圖13B是示出了根據本發明的一個實施方式的示例性非快捷、非動態(非偶然、非訂閱)的生成器依賴性的生成器的框圖13C示出了根據本發明的一個實施方式的使用非快捷、偶然、非訂閱27的生成器依賴性的方法的生成器依賴性聲明的偽代碼;圖13D是示出了根據本發明的一個實施方式的示例性非快捷、偶然、非訂閱的生成器依賴性的生成器的框圖13E示出了根據本發明的一個實施方式的使用非快捷、偶然、非訂閱的生成器依賴性和快捷、偶然、非訂閱的生成器依賴性的方法的生成器依賴性聲明的偽代碼;圖13F是示出了根據本發明的一個實施方式的非快捷、偶然、非訂閱的生成器依賴性和快捷、偶然、非訂閱的生成器依賴性的生成器的框圖13G示出根據本發明的一個實施方式的使用快捷、偶然、非訂閱的生成器依賴性和快捷、非偶然、非訂閱的生成器依賴性的方法的生成器依賴性聲明的偽代碼;圖13H是示出了根據本發明的一個實施方式的示例性快捷、偶然、非訂閱的生成器依賴性和快捷、非偶然、非訂閱的生成器依賴性的生成器的框圖13I示出了根據本發明的一個實施方式的使用快捷、非動態(非偶然、非訂閱)的生成器依賴性的方法的生成器依賴性聲明的偽代碼;圖13J是示出了根據本發明的一個實施方式的示例性快捷、非動態的生成器依賴性的生成器框圖14A是根據本發明的一個實施方式的圖12B中的訂閱日誌1250的示例的框圖14B是示出了根據本發明的一個實施方式的非偶然、吸收訂閱(absorbingsubscription)的生成器依賴性的示例性生成器的框圖14C是示出了根據本發明的一個實施方式的非偶然、粘附訂閱(stickysubscription)的生成器依賴性的示例性生成器的框圖14D示出了根據本發明的一個實施方式的基於由粘附訂閱創建的父依賴性確定生成器的父生成器的選擇;圖14E示出了根據本發明的一個實施方式的基於由子依賴性確定生成器創建的父依賴性確定生成器的父生成器的選擇,所述子依賴性確定生成器通過對依賴性排序而被連結;圖15是根據本發明的一個實施方式的實例化新實例的流程圖;圖16A是根據本發明的一個實施方式的實例化新生成器且不覆蓋生成器的流程圖16B是根據本發明的一個實施方式的圖16A中的塊1623的流程圖;圖17是根據本發明的一個實施方式的圖16A中的塊1650的流程圖;圖18是根據本發明的一個實施方式的圖17中的塊1745的流程圖;圖19是根據本發明的一個實施方式的圖16A中的塊1630的流程圖;圖20是根據本發明的一個實施方式的圖16A中的塊1635和塊1670的流程圖21A是根據本發明的一個實施方式的覆蓋生成器的流程圖;圖21B是根據本發明的一個實施方式的覆蓋生成器的執行模式設定的流程圖21C是根據本發明的一個實施方式的在運行時等級(runtimelevel)全面覆蓋執行模式設定的流程圖21D是根據本發明的一個實施方式的根據基於生成器的可配置的決定結構來覆蓋執行模式設定的流程圖22A是根據本發明的一個實施方式的當前生成器圖形的執行的流程圖的一部分;圖22B是根據本發明的一個實施方式的當前生成器圖形的執行的流程圖的另一部分;圖23是根據本發明的一個實施方式的圖22A中的塊2205的流程圖;圖24是根據本發明的一個實施方式的圖22B中的塊2260的流程圖;圖25是根據本發明的一個實施方式的基本並行執行一組就緒生成器的流程圖的一部分;圖26是根據本發明的一個實施方式的基本並行執行一組就緒生成器的流程圖的另一部分;圖27A是根據本發明的一個實施方式的在執行一組就緒生成器之前實例化數據結構的流程圖的一部分;圖27B是根據本發明的一個實施方式的在執行一組就緒生成器之前實例化數據結構的流程圖的另一部分;圖28A是根據本發明的一個實施方式的使用多線程來執行生成器的流程圖28B是示出了根據本發明的一個實施方式的以多線程來執行線程的流程圖28C是根據本發明的一個實施方式的處理線程終止回調的流程圖;圖29A是根據本發明的一個實施方式的使用多進程和本地執行來執行生成器的流程圖的一部分;圖29B是根據本發明的一個實施方式的使用多進程和本地執行來執行生成器的流程圖的另一部分-,圖30是根據本發明的一個實施方式的將被多處理的生成器的輸入和/或基本實例串行化的流程圖31A是根據本發明的一個實施方式的遠程計算的流程圖的一部分;圖31B是根據本發明的一個實施方式的遠程計算的流程圖的另一部分;圖32是根據本發明的一個實施方式的生成器的本地執行的流程圖。具體實施例方式在以下的描述中,例如邏輯執行、操作碼、規定操作數的方法、資源劃分/共享/複製執行、系統組件的類型和相互關係以及邏輯劃分/集成選擇的多個具體細節被提出以為本發明提供更全面的理解。但是,本領域技術人員應當理解,在沒有這些具體細節的情況下本發明也能實施。在其它的情況,沒有具體示出控制結構、門級電路以及全軟體指令序列以避免使本發明晦澀。本領域技術人員在有了這些描述後能夠在沒有不適當的實驗的情況下能實現合適的功能。除非另有規定,否則圖中的虛線(虛分界線除外)用於表示圖中可選項。但是不應該認為所有的可選項都是使用虛線來顯示的,而是用虛線顯示的這些項由於各種原因被選擇(例如,它們可以很容易地被顯示以提供更好的清晰度等)。說明書中的引用"一個實施方式"、"實施方式"、"示例性實施方式"等表示所述的實施方式可以包括特定的特徵、結構或特性,但是每一個實施方式不用必須包括所述特定的特徵、結構或特性。此外,這些短語不一定是指同一個實施方式。再者,當結合實施方式描述特定的特徵、結構或特性時,可以理解,無論是否明確描述,改變與實施方式有關的這些特徵、結構或特性是本領域技術人員所了解的。在下面的描述和權利要求中,可能使用了術語"耦合"和"連接"以及它們的派生詞。應當理解這些術語不是彼此的同義詞。而是,在特定實施方式中,"連接"可以用於表示兩個或多個元件彼此直接物理或電接觸。"耦合"可以表示兩個或多個元件直接物理或電連接。但是"耦合"還可以表示兩個或多個元件彼此沒有直接連接,但仍然互相合作或相互作用。在一些情況下,參考其他框圖的示例性實施方式來描述流程圖的操作。然而,應當理解,流程圖的操作可以被本發明的實施方式執行而不是被參考其他框圖論述的實施方式來執行,且參考其他框圖論述的本發明的實施方式可以執行與參考流程圖而論述的操作不同的操作。31可以使用存儲在一個或多個計算機上並在該一個或多個計算機上執行的代碼和數據來執行圖中所示的技術。該計算機使用諸如機器存儲介質(例如,磁碟、光碟、隨機存取存儲器、只讀存儲器、快閃記憶體裝置)的機器可讀介質來存儲代碼和數據並使用機器通信介質(例如,電、光、聲或其他形式的傳播信號一例如載波、紅外信號、數位訊號等)傳送(在內部和通過網絡與其他計算機)該代碼和數據。此外,該計算機通常包括一組一個或多個處理器,該處理器與一個或多個其他組件耦合,例如存儲裝置、多個用戶輸入/輸出裝置(例如鍵盤和顯示器)以及網絡連接。該組處理器與其他組件的耦合一般通過一個或多個總線和橋(也稱為總線控制器)。存儲裝置和網絡流量分別表示一個或多個機器存儲介質和機器通信介質。因此,給定計算機系統的存儲裝置一般存儲用於在該計算機的所述一組一個或多個處理器上執行的代碼和數據。當然,可以使用軟體、固件和/或硬體的不同組合來實施本發明的實施方式的一個或多個部分。概述根據本發明的一個方面,生成器是至少一個特定實例(或對象)和特定方法,從而如果在運行時期間執行該生成器,則該特定方法在特定實例上被執行。由此,給定的生成器根據給定實例以及與該實例相關聯的給定方法而被實例化。如類、實例和方法,生成器是運行時處理的基本元素和結構。因此運行時解釋並跟蹤生成器的實例化,且由此運行時跟蹤由生成器表示的實例和方法的組合。換句話說,生成器是由運行時跟蹤、執行的運行時可實例化的結構,且包括至少一個實例和與該實例相關聯的方法,從而運行時執行生成器使該生成器的方法在生成器的實例上被執行。此外,生成器的方法與其生成器依賴性聲明相關聯,該聲明為給定生成器標識一組零個或多個生成器依賴性、一組零個或多個生成器。具體地,使用生成器依賴性聲明來為方法聲明生成器依賴性,用於給定方法的生成器依賴性聲明可以包括零個或多個生成器依賴性,且每一個生成器依賴性標識一組零個或多個生成器。因此,生成器依賴性聲明以及該聲明定義的生成器依賴性由運行時來解釋並跟蹤,且由此運行時跟蹤生成器依賴性聲明指示的生成器之間的關係。當給定生成器依賴於一組一個或多個其他生成器時,運行時將確保在給定生成器之前執行所述一組其他生成器。因此,生成器依賴性聲明表示生成器之間的執行關係,而生成器表示將被執行的操作(方法)和實例。當在本發明的一些實施方式中,允許子生成器上的父生成器的生成器依賴性在與父生成器的方法相關聯的生成器依賴性聲明中被聲明(父生成器的生成器依賴性聲明標識任意子生成器——這裡稱為向下聲明),本發明的其他實施方式還允許依賴性在與子生成器的方法相關聯的生成器依賴性聲明中被聲明(子生成器的生成器依賴性聲明標識一個或多個父生成器一這裡稱為向上聲明)。在本發明的不同實施方式中,生成器標識另外的事情。例如,當在本發明的某些實施方式中,生成器是至少一個實例和與該實例相關聯的方法,在本發明的其他實施方式中,生成器是類、類的實例以及與該實例相關聯的方法(例如,生成器可以直接包括類、實例以及方法;生成器可以直接包括實例和方法,而通過引用(例如,實例中的引用)間接標識該實例的類)。在本發明可以用於用不同程式語言(例如,用反射式面向對象的語言編寫的面向對象代碼;用反射式基於對象的語言編寫的面向對象代碼;用過程、非反射式面向對象、非反射式基於對象的語言編寫並轉換成面向反射對象語言代碼的代碼)編寫的代碼上下文中的同時,參考反射式面向對象程式語言並參考直接包括類、實例和方法的生成器,以舉例而非限定的方式來描述本發明的實施方式。此外,雖然在本發明的一個實施方式中生成器的方法是實例方法(除了作為參量被接收的任何輸入,還可以使用實例欄位的方法),本發明的可替換實施方式還可以或可替換地支持為類方法的生成器的方法(接收所有輸入作為參量和/或使用實例無關變量的方法)(當生成器的方法是實例方法時,生成器的實例是類實例;而當生成器的方法是類方法時,該生成器的實例是表示該類的元類實例)。圖1A是示出了根據本發明的一個實施方式的對面向對象原始碼中類的方法與生成器的生成器依賴性聲明的關係的框圖,所述生成器包括類、該類的給定實例以及該類的方法。在圖1A中,顯示了面向對象原始碼100,其包括類102,而類102包括方法104、執行模式設定105以及用於方法104的生成器依賴性聲明106。當然類102—般包括一個或多個欄位(未顯示)和另外的方法(未顯示)。另外,面向對象原始碼ioo—般包括另外的類。在運行時期間,類102的實例108被實例化。實例108包括類102的欄位數據。另外,生成器110被實例化,其中生成器110標識類102、類102的實例108(與類102的方法104相關聯)以及類102的方法104。生成器依賴性聲明106向運行時標識一組零個或多個生成器112(稱為生成器110的子生成器),該一組零個或多個生成器112在執行生成器110之前必須被執行。換句話說,生成器110依賴一組零個或多個生成器112。除了或代替使用一組生成器112的輸出,生成器110可以使用實例108的數據。此外,生成器110提供至少一個輸出,輸出可以在實例108的內部(從而修改實例108的數據)和/或外部;任何一種方式,生成器110的輸出可以被一組零個或多個其他生成器114(稱為生成器110的父生成器)使用。如之前所示和之後所詳細描述的,在本發明的一些實施方式中,生成器依賴性聲明106還可以向運行時標識零個或多個生成器114。應當理解生成器的輸入和輸出是基於方法的輸入和輸出,這些生成器基於該方法。這樣,這些輸入和輸出可以表示具有各種數據結構的多個參數。用於給定方法的生成器依賴性聲明在運行時標識被實例化並執行的一組零個或多個生成器。通過示例的方式,如果用於給定方法(例如方法104)34的生成器依賴性聲明(例如生成器依賴性聲明106)在給定生成器(例如該組生成器112中的一個)(該給定生成器標識第一類、該類的第一實例以及第一實例的第一方法)上標識生成器依賴性,則給定方法的生成器依賴性聲明向運行時標識第一實例將被實例化(如果還沒有)和第一方法將用於實例化第一實例的給定生成器(在這些示例中,第一不是指位置或順序)。在操作中,當在運行時期間給定的一組一個或多個生成器被指定為感興趣的且具有為它們聲明的生成器依賴性時,則運行時1)基於生成器依賴性聲明106從指定為感興趣的給定的一組生成器向下至源生成器,自動生成(發現、建立以及可選地解析)一組一個或多個圖形,該圖形可以是多級和各種形狀(例如,鏈形、樹形);2)順序執行所述一組圖形的生成器以生成指定為感興趣的給定的一組生成器的輸出。因此,運行時使用生成器依賴性聲明106來確定執行具有哪些參量的哪些實例的哪些方法以及何時用於同步。在一些實施方式中,運行時檢査執行模式設置150以確定生成器的執行模式。不同的執行模式可以在不同的系統中被支持。執行模式的一些示例包括多線程、多進程和本地執行。生成器依賴性向運行時表示生成器的執行順序。但是,在本發明的不同實施方式中,除了指示執行順序,生成器依賴性還表示不同的輸入與輸出的關係。例如,本發明的不同實施方式可以支持一個或多個參量生成器依賴性、欄位生成器依賴性以及僅排序的(s叫uencingonly)生成器依賴性(僅排序的生成器依賴性這裡稱為速記排序生成器依賴性)。當每一個參量生成器依賴性、欄位生成器依賴性以及排序生成器依賴性表示生成器之間的執行順序關係時,參量和欄位生成器依賴性還表示運行時知道的數據。具體地,參量生成器依賴性使運行時將作為輸入參數的子生成器的輸出映射到父生成器,而欄位生成器依賴性指示實例的欄位的使用。不管生成器依賴性表示的輸入35與輸出的關係如何,恰當使用生成器依賴性能確保生成器訪問信息在影響該信息的生成器之後被排序。排序依賴性可以用於多種目的,包括確保以運行時不知道的方式修改數據的生成器與使用該數據的生成器之間的執行順序(子生成器可以以需要父生成器的方法來包括代碼以訪問輸出的方式來編寫其輸出(例如,通過影響不是常規生成器輸出且不被運行時檢測的輸出來影響環境的方法,不檢測該方法一例如設定全局變量的方法、設定不是生成器輸出的實例中的欄位的方法、影響外部數據源的方法等))。因此,排序依賴性在子生成器上反映父生成器的依賴性,但是需要被提供的輸出(如果有),該輸出通過編寫代碼一次又一次產生而被提供(例如,寫入輸出到給定機制(例如設定全局變量、影響外部數據源、設定不是生成器輸出的實例的欄位等)的子生成器的方法中的代碼和從給定機制讀出該輸出的父生成器的方法中的代碼)。以這種方式,排序依賴性允許運行時對依賴運行時不能檢測的輸出的任意父生成器的執行進行同步。在本發明的一個實施方式中,用於給定方法的生成器依賴性聲明106在生成器上只標識直接依賴性(即,直接繼承(子),與間接繼承不一樣(孫子、曾孫子等))。在這樣的實施方式中,每一個生成器依賴性聲明只提供生成器的一個等級或層,該生成器的輸出可以被根據給定方法實例化的生成器直接使用;將生成器圖形的另外層的發現/建立/解析留給其他生成器依賴性聲明的運行時處理。根據本發明的一個實施方式,生成器依賴性聲明106標識的生成器的依賴性在實現包括生成器的應用程式的並行化和植入中是有用的。為了並行化應用程式,應用程式的兩個或多個生成器在相同執行模式或不同執行模式下基本同時被執行。為了植入應用,在生成器被執行時獲得生成器的度量。以下參考本發明的示例性實施方式進一步論述並行化和植入的詳情。示例性關鍵字生成器可以被視為一組多個標識符,一個標識符用於每一個指定粒度(granularity)的另外等級。此外,本發明的一些實施方式將每一個標識符實施為單獨的關鍵字,而其他實施方式具有共享關鍵字的某些標識符。通過示例的方式,本發明的一些實施方式將生成器實施為類、實例以及方法三元組並實施關鍵字,從而三元組的每一個部分由單獨的關鍵字來標識(類關鍵字、實例關鍵字以及方法關鍵字)且生成器由類關鍵字、實例關鍵字以及方法關鍵字的組合(生成器關鍵字)來標識。使用關鍵字的本發明的實施方式可以改變使用的關鍵字的唯一性。例如,在本發明的一個實施方式中,每一個類關鍵字是唯一的,每一個實例關鍵字在所有類的所有實例中是唯一的,且每一個方法關鍵字在所有類的所有方法中是唯一的。作為另一個示例,在本發明的另一個實施方式中,每一個類具有唯一的關鍵字,每一個給定類的實例具有唯一的關鍵字(在類實例中),以及每個類的方法具有唯一的關鍵字(在類方法中);但是不同類的實例可以具有相同的實例關鍵字,且不同類的方法可以具有相同的方法關鍵字;後者的方法可以以舉例而非限定的方式用於本文的後面的部分。例如,假定第一類包括方法並具有用於這些方法中每一個的在第一類中是唯一的關鍵字,則該類的實例(每一個實例具有的關鍵字相較於另一個是唯一的)具有與其相關聯的相同的方法關鍵字。作為另一個示例,假定不同的第二類包括方法(與第一類的方法有一些、全部或沒有相同),該方法具有與用於第一類的關鍵字相同的關鍵字;這樣,該不同類的實例可以與和第一類的實例相關聯的相同的方法相關聯。關鍵字的使用允許多個特徵,包括1)生成器標識符標識的每一個實體的跟蹤(例如,每一個類、實例和方法的跟蹤);2)基於父生成器的生成器依賴性聲明(該聲明使用生成器關鍵字規定生成器依賴性)連接到相同子37生成器的一些父生成器(不知道相互的存在);等等。在本發明的一個實施方式中,實例關鍵字是擁有兩個元素的類的實例(實例關鍵字)實例關鍵字性質,指示關鍵字指示符是否是對實例或對另一個對象(例如,字符串)的引用;以及關鍵字指示符,該關鍵字指示符可以是實例或另一個對象(例如,字符串)的引用。在實例關鍵字中存儲實例引用可以讓程式設計師不用為標識這些實例而起名字。示例性關係在關於生成器被視為一組多個標識符(一個標識符用於所規定粒度的每一個另外層)的上述上下文中,在本發明的一個實施方式中,生成器及其子生成器和父生成器之間的各種支持的關係是至少一個所述標識符在生成器和其一組零個或多個父生成器之間不同,且至少一個所述標識符在生成器和其一組零個或多個子生成器的每一個之間不同。通過提供一些示例性關係,假定第一生成器被實例化,如果第一生成器是第一類的第一實例和第一類的第一方法,並假定用於該第一方法的生成器依賴性聲明在運行時將第二生成器標識為子生成器,那麼第二生成器可以是1)第一類的第一實例和該第一類的第二方法;2)第一類的第二實例和該第一類的第二方法;或3)第一類的第二實例和該第一類的第一方法;或4)第二類的實例和該第二類的方法。這種情況,第一生成器依賴於第二生成器一由此,在第二生成器上表示第一生成器的輸入與輸出的關係。以下對使用面向對象語言的本發明的一個實施方式描述各種關係和這些關係的組合,且其中生成器標識至少一個類、實例和方法。圖1B-1D示出了根據本發明的一個實施方式的給定生成器、其一組父生成器以及其一組子生成器之間的示例性關係。圖1B-1D每一個示出了1)類定義102A,包括方法104A-C和分別用於這些方法的每一個的生成器依賴38性聲明106A-C;2)類定義102B,包括方法104D-E和分別用於這些方法的每一個的生成器依賴性聲明106D-E;3)類定義102C,包括方法104F和用於該方法的生成器依賴性聲明106F;4)類102A的實例108A;5)生成器IIOA,該生成器112A標識類102A、實例108A以及方法104A;以及6)生成器112A.1和生成器114A.1,分別表示一組生成器112和一組生成器114中的一個。圖1B-1D中在其上具有帶框的字母的虛線用於表示示例性關係。因此,在其上具有帶框的A的虛線的集合表示一種關係。圖1B中的關係可以與圖1C中的關係結合;這樣,這些結合表示父生成器114A和子生成器112A到生成器110A之間的關係的組合。此外,圖1D示出了父生成器114A和子生成器112A到生成器IIOA之間的關係的一些另外的示例性組合。圖1B示出了根據本發明的一個實施方式的生成器110A與父生成器114A.1之間的示例性關係。圖1B還包括實例108B。一組生成器114由相同類的不同方法、相同類的不同實例和/或不同類的方法的其他生成器依賴性聲明來標識;且由此,一組生成器114的每一個可以是O與生成器110A相同的實例(類102A的實例108A)和該實例的不同方法(由從實例108A到生成器114A.1以及從方法104B到生成器114A.1的虛線上的帶框的A示出);2)類102A的不同實例和該實例的不同方法(由從類102A到實例108B,從實例108B到生成器114A.1以及從方法104B到生成器114A.1的虛線上的帶框的B示出);3)不同類的實例和該實例的方法(由從類102B到實例108B,從實例108B到生成器114A.1以及從方法104D到生成器114A.1的虛線上的帶框的C示出);或4)類102A的不同實例(不是實例108A)和該實例的相同方法(方法104A)(例如,具有偶然依賴性——在後面描述)(由從類102A到實例108B,從實例108B到生成器114A.1以及從方法104A到生成器114A.1的虛線上的帶框的D示出);此外,如果一組生成器114中有多個生成器,則生成器本身可以是類102A的相同實例、類102A的不同實例、不同類的相同實例、不同類的不同實例和/或以上的混合中的一部分。圖1C示出了根據本發明的一個實施方式的生成器110A與子生成器112A.1之間的示例性關係。圖1C還包括實例108C。一組生成器112A的每一個可以是1)與生成器IIOA相同的實例(類102A的實例108A)和該實例的不同方法(由從實例108A到生成器112A.1和從方法104C到生成器112A.1的虛線上帶框的E示出);2)類102A的不同實例和該實例的不同方法(由從類102A到實例108C,從實例108C到生成器112A.1以及從方法104C到生成器112A.1的虛線上帶框的F示出);3)不同類的實例和該實例的方法(由從類102C到實例108C,從實例108C到生成器112A.1以及從方法104F到生成器112A.1的虛線上的帶框的G示出);或類102A的不同實例(不是實例108)和該實例的相同方法(例如,具有後面描述的偶然依賴性)(由從類102A到實例108C,從實例108C到生成器112A.1以及從方法104A到生成器112A.1的虛線上的帶框的H示出)。因此,一組生成器112A的每一個可以是與生成器110A相同的實例、與類102A不同的實例或不同類的實例;此外,如果在一組生成器112A中存在多個生成器,則生成器112A本身可以是類102A的相同實例、類102A的不同實例、不同類的相同實例、不同類的不同實例和/或以上的混合中的一部分。圖1D示出了根據本發明的一個實施方式的父生成器114和子生成器112到生成器110A的關係的一些另外的示例性組合。圖1D還包括實例108B和實例108C。圖1D的組合如以下表1中所示表ltableseeoriginaldocumentpage40tableseeoriginaldocumentpage41tableseeoriginaldocumentpage42圖IE示出了根據本發明的一個實施方式的相同類的不同實例可以具有基於相同和/或不同方法的生成器。圖1E顯示1)類定義102A,包括方法104A-C和分別用於所述方法的每一個的生成器依賴性聲明106A-C;2)類102A的實例108A和實例108B;3)生成器110A是類102A的實例108A的方法104A;4)生成器110B是是類102A的實例108A的方法104B;5)生成器HOC是類102A的實例108B的方法104A;6)生成器110D是類102A的實例108B的方法104C。此外,圖1D顯示1)用於方法104A的生成器依賴性聲明106A在運行時標識生成器UOA和生成器110C的子生成器;2)用於方法104B的生成器依賴性聲明106B在運行時標識生成器110B的子生成器;以及3)用於方法104C的生成器依賴性聲明106C在運行時標識生成器110D的子生成器。示例性運行時圖2是示出了根據本發明的一個實施方式的具有面向生成器圖形編程支持的運行時的可重複使用性的框圖。在圖2中,多個面向對象應用程式(具有生成器依賴性聲明210A-I的面向對象應用代碼)由具有面向生成器圖形編程支持的相同運行時220運行。圖3A是示出了根據本發明的一個實施方式的具有面向生成器圖形編程支持的運行時的框圖。在圖3A中,具有面向生成器圖形編程支持的運行時335包括自動生成器圖形執行模塊340和生成器圖形執行模塊345。運行時335用於執行面向對象原始碼,以及從而包括未顯示的另外的模塊。此外,圖3A顯示了用於面向對象原始碼中的方法的生成器依賴性聲明320、當前組一個或多個其輸出是感興趣輸出的生成器325(這裡也稱為當前選擇的感興趣生成器)以及源生成器的輸出330(在後面描述)。自動生成器圖形執行模塊340接收生成器依賴性聲明320和當前組的感興趣生成器325。自動生成器圖形生成模塊340嘗試基於生成器依賴性聲明發現具有直接或間接促成(contribute)當前選擇的感興趣生成器的輸入的輸出的生成器,並建立當前的生成器圖形,該圖形表示從當前選擇的感興趣生成器到為源生成器的被發現的生成器的這些生成器對彼此的輸入依賴性。生成器圖形被存儲在生成器圖形結構380中。生成器圖形執行模塊345從自動圖形模塊340和源生成器330的輸出接收當前生成器圖形,並執行當前生成器圖形的生成器以確定當前選擇的感興趣生成器的當前輸出。在一些實施方式中,生成器圖形執行模塊345包括並行化模塊3451、多進程模塊3453、多線程模塊3455以及本地執行模塊3457。並行化模塊3451可以確定生成器的執行模式並將生成器發送到多進程模塊3453、多線程模塊3455以及本地執行模塊3457中的一者以在確定的執行模式下被執行。單獨的執行模式可以支持並行化。例如,多進程模塊3453可以使用多進程來完成生成器的並行執行。可替換地,多線程模塊3455可以使用多線程來完成生成器的並行執行。此外,執行模式的組合可以支持並行化。換句話說,可以使用不同的執行模式來並行地執行生成器。例如,通過發送一個生成器給多線程模塊3455及發送另一個生成器給本地執行模塊3457來並行執行兩個生成器。應當理解可以使用執行模式的其他組合來實現並行化。生成器圖形執行模塊345緩存生成器輸出緩存384示出的生成器圖形結構380中的當前生成器輸出。在執行期間對生成器圖形的生成器輸出的緩存43允許同步。例如,執行依賴於多個子生成器的父生成器的合適時間是在所有多個子生成器已經被執行之後;換句話說,每一次執行完它的子生成器後執行父生成器是很浪費的(並且,在一些情況下是不可能的)。對生成器輸出的緩存不但允許推遲父生成器的執行直到其所有的子生成器被執行完,而且允許當所有的子生成器被執行完且它們的輸出被緩存時,確定用於執行父生成器的合適時間。因此,運行時通過檢查生成器輸出緩存384中所需輸出的可用性來為程式設計師做出這種同步決定;換句話說,這種同步是自動的(程式設計師不需要包括用於確定執行實例的給定方法的合適時間的單獨原始碼)。通過另一個示例,如果某些父生成器依賴於相同的子生成器以及其他不同子生成器,則執行所述某些父體生成器的每一個的合適時間通常是不同的;運行時依據父生成器的一組子生成器的輸出的可用性來自動確定執行所述某些父生成器的每一個的合適時間。如在後面詳細描述的,因為生成器圖形的一些部分由於動態生成器依賴性而可能不是當前可發現的,因此自動生成器圖形執行模塊340"嘗試"發現並建立整個生成器圖形,但是初始可能不能完成整個生成器圖形直到一些生成器被執行。這樣,生成器圖形執行模塊345可以在當前生成器圖形執行期間調用具有所需生成器輸出的自動生成器圖形執行模塊340以完成當前生成器圖形中任何未解析的餘項(這在圖3A中由從生成器圖形執行模塊345到自動生成器圖形執行模塊340的虛箭頭線示出;使用虛箭頭線是因為這種支持是可選的)。圖4A是示出了根據本發明的一個實施方式的示例性生成器圖形的發現和建立的框圖。圖4A顯示了當前組的感興趣生成器包括生成器1。基於生成器l及其生成器依賴性聲明,生成器2和生成器3被發現。換句話說,生成器1的生成器依賴性聲明標識生成器1的輸入需要生成器2和生成器3的執行。這樣,生成器l是相關的生成器(具有一個或多個生成器依賴性的生44成器)。圖4A還顯示了當生成器3是無關生成器(不具有生成器依賴性的生成器,且因此是源生成器),生成器2是相關生成器。因此,基於生成器2的生成器依賴性聲明,生成器4和生成器5被發現。在圖2A中,生成器4和生成器5是無關生成器(因此,是源生成器)。圖4B示出了是根據本發明的一個實施方式的圖4A中生成器圖形的初始執行的框圖。在圖4B中,彎曲的箭頭線示出執行一個生成器以生成被提供作為另一個生成器輸入的輸出。如圖3A中所示,源生成器330的輸出被提供給生成器圖形執行模塊345;相反,如圖4B所示相關生成器l-2的輸出通過執行這些生成器來被確定。因此,在圖4B中,發生1)源生成器4和源生成器5的輸出被提供給相關生成器2;2)相關生成器2被執行;3)相關生成器2和源生成器3的輸出被提供給生成器1;以及4)生成器1被執行且其輸出被提供作為當前感興趣輸出。值得注意,圖4B的生成器圖形是在數據在圖形上從一個生成器流向另一個生成器的情況上被驅動的數據。在一些實施方式中,因為生成器4和生成器5是彼此無關的,因此使用不同執行模式或支持並行化的單個執行模式(例如,多進程、多線程等)可以並行執行生成器4和生成器5。但是,由於生成器2在當前示例中依賴於生成器4和5,因此生成器2不可以與生成器4和5並行執行。因此,運行時在執行生成器2之前可以等待生成器4和5被完成。至於生成器3,由於生成器3與生成器4和5無關,因此生成器3可以與生成器4和5並行執行。可替換地,由於,生成器3還與生成器2無關,因此生成器3可以與生成器2並行執行。在一些實施方式中,根據執行生成器3、4和5所花的時間,生成器3的執行在時間上可以與生成器4和5的執行以及生成器2的執行重合。因此,生成器依賴性聲明320限制(bound)可能被生成的可能的生成器圖形;而當前選擇的一組感興趣生成器325標識要生成的當前生成器圖形的起始節點。根據這兩點,自動生成器圖形生成模塊340發現並建立生成器圖形。發現和建立的自動化在於自動生成器圖形生成模塊340沒有被提供生成器圖形(例如,其不需要由程式設計師手動標識)或甚至在生成器圖形中的生成器列表。而是,自動生成器圖形生成模塊340解析當前選擇的一組感興趣生成器的生成器依賴性聲明以發現它們的子生成器,然後向下解析這些子生成器的生成器依賴性聲明等直到源生成器(在後面描述的本發明的一些實施方式中,這可以藉助生成器圖形執行模塊345來完成)。在生成器圖形是樹的情況下,當前選擇的感興趣生成器是根節點,且生成器依賴性聲明被解析直到發現葉節點(源生成器)。被覆蓋的生成器和增量執行圖3B是示出了根據本發明的一個實施方式的具有面向生成器圖形編程支持的運行時的框圖,該支持還支持增量執行和被覆蓋的生成器輸出。應當理解,增量執行和被覆蓋的生成器輸出是各自無關的可選特徵,且因此本發明的不同實施方式可以實施一者或兩者。儘管圖3B中沒有明確示出,但是應當理解圖3A中的並行化模塊3451、多進程模塊3453、多線程模塊3455以及本地執行模塊3457可以被包括在圖3B中的生成器圖形執行模塊370中從而允許圖3B中的生成器圖形執行模塊370在生成器的執行中實現並行化。在圖3B中,具有面向生成器圖形的編程支持的運行時360包括自動生成器圖形生成模塊365、生成器圖形執行模塊370以及覆蓋生成器輸出模塊390。運行時360用於執行面向對象原始碼,且從而包括未顯示的另外的模塊。此外,圖3B顯示用於面向對象原始碼320中的方法的生成器依賴性聲明、當前組的一個或多個具有感興趣輸出的生成器325(這裡也稱為當前選擇的感興趣生成器)和源生成器的輸出350。源生成器的輸出350包括原始碼中的無關生成器組的輸出352(例如,常數、默認值等)和當前替換的生成器輸出354(無關生成器的輸出和/或其輸出當前被覆蓋的相關生成器的輸出)。在本發明的一些實施方式中,可以用當前提供的值顯式(explicitly)覆蓋生成器的輸出(即,不是執行生成器以基於其當前輸入來確定其輸出,用於生成器的輸出值被顯示提供)。除了生成器圖形的任意無關生成器,生成器圖形的源生成器包括任意當前被覆蓋的生成器。覆蓋生成器輸出模塊390接收被覆蓋的生成器輸出354(標識哪些生成器被覆蓋且用什麼輸出值來覆蓋)。在本發明的一個實施方式中,生成器可以被分類為屬性生成器或方法生成器。屬性生成器是基於屬性方法(例如,獲得和設定)。方法生成器是基於非屬性方法。覆蓋生成器輸出模塊390包括用於被覆蓋的屬性生成器的覆蓋屬性生成器輸出模塊392和用於被覆蓋的方法生成器的覆蓋方法生成器輸出模塊394。覆蓋屬性生成器輸出模塊392促使被覆蓋的值被存儲在生成器輸出緩存384和實例的數據中,而覆蓋方法生成器輸出模塊394促使被覆蓋的值被存儲在生成器輸出緩存384中。根據本發明的實施方式,這種促使可以是直接或間接的。圖3B示出了通過使用覆蓋日誌396的間接促使,該覆蓋日誌396收集覆蓋生成器輸出模塊390的輸出且由生成器圖形執行模塊370來使用。為了優化,覆蓋日誌396允許覆蓋的延遲以為批處理收集多個覆蓋。與自動生成器圖形生成模塊340類似,自動生成器圖形生成模塊365:1)接收生成器依賴性聲明320和當前組感興趣生成器325;以及2)嘗試基於生成器依賴性聲明發現具有直接或間接促成當前選擇的感興趣生成器的輸入的輸出的生成器,並建立當前的生成器圖形,該當前生成器圖形表示從當前選擇的感興趣生成器通過任何所發現的無源生成器到為源生成器的所發現的生成器(無關生成器和當前被覆蓋的生成器)的這些生成器彼此的輸入依賴性。生成器圖形被存儲在生成器圖形結構380中。4與生成器圖形執行模塊345類似,生成器圖形執行模塊370從自動圖形模塊365和源生成器350的輸出接收當前生成器圖形,並執行當前生成器圖形的生成器以確定當前所選擇的感興趣生成器的當前輸出。生成器圖形執行模塊370緩存如生成器輸出緩存384示出的生成器圖形結構380中的生成器的當前輸出。如之前所述,在執行期間對生成器輸出的緩存允許同步(例如,不需要編寫單獨的原始碼以確定何時圖4B中的生成器2應當被執行,但是運行時通過檢查生成器輸出緩存384中所需輸出的可用性來為程式設計師做出同步決定;換句話說,該同步是自動的)。此外,在執行期間對生成器輸出的緩存可以允許生成器執行的同步,這是因為運行時可以通過檢查生成器輸出緩存384中所需輸出的可用性來決定哪個生成器準備執行。準備執行的生成器可以被並行執行。換句話說,並行化也可以是自動的。因此,不需要單獨的原始碼來確定或指示哪些生成器應當被並行執行。此外,該生成器輸出緩存384用於增量執行。更具體地,在生成器圖形被初始生成和執行後,當前生成器圖形中的生成器的覆蓋需要某種層次的再執行。雖然本發明的一些實施方式簡單地再執行整個圖形,但本發明的可替換實施方式支持增量執行(只再執行生成器圖形的被覆蓋所影響的這些部分)。支持增量執行的一些示例性實施方式使用生成器圖形結構380中的增量執行標記382來幫助確定哪些生成器需要再執行。因此,維持生成器圖形是指在多個執行中使生成器圖形保持為當前的,而增量執行是指維持生成器圖形並使用該生成器圖形來只再執行生成器圖形中被覆蓋所影響的這些部分。與圖3A類似,存在從生成器圖形執行模塊370到自動生成器圖形執行模塊365的虛箭頭線,用於表示對動態依賴性的可選支持。應當注意動態依賴性可以在生成器圖形的再執行期間改變。圖4C是示出了根據本發明的一個實施方式的圖4B的生成器圖形的增48量執行的框圖。在圖4C中,生成器5的輸出被顯式修改,但是生成器3和生成器4的輸出沒有被顯式修改。基於跟蹤生成器圖形中輸出到輸入的依賴性和只有生成器5的輸出被顯式修改,可以確定該修改只影響生成器2和生成器l。因此,更新後的生成器1的輸出的確定只需要用生成器5的新的輸出和生成器4以及生成器3的之前輸出來再執行生成器2和生成器1。在圖4C生成器圖形的部分再執行可以由從生成器5到生成器2以及從生成器2到生成器1(而不是從生成器4到生成器2或從生成器3到生成器1)的彎曲的箭頭線示出。缺少從生成器4到生成器2以及從生成器3到生成器1的彎曲的箭頭線不是表明生成器3和生成器4的輸出不需要,而是表明如果它們之前的輸出可用(例如從生成器圖形的先前執行中緩存)則不需要再執行生成器3和生成器4。圖4C的相對簡單的示例示出了在增量執行產生的處理資源中存在節約。該節約依賴多個因素(例如,不需要被再執行的生成器的數量、這些生成器需要的處理量等)。雖然本發明的一個實施方式示出執行增量執行,但可替換實施方式可以以不同的方式被實現(例如,可替換實施方式可以響應於修改而再執行所有的生成器)。圖4D是示出了根據本發明的一個實施方式的在相關生成器2被覆蓋後圖4B的生成器圖形的增量執行的框圖。在圖4D中,生成器2的輸出被顯式修改,但是生成器3的輸出則沒有。基於生成器圖形和只有生成器2的輸出被顯式修改,可以確定只有生成器l受該修改影響。結果,確定生成器l的更新後的輸出僅需要用生成器2的被覆蓋的輸出和生成器3的之前輸出來再執行生成器1。該生成器圖形的部分再執行可以在圖4D中由從生成器2到生成器1(而不是從生成器4和5到生成器2或從生成器3到生成器1)的彎曲的箭頭線示出。圖4E是示出了根據本發明的一個實施方式的在相關生成器2被覆蓋且49無關源生成器3被修改之後圖4B中的生成器圖形的增量執行的框圖。基於生成器圖形和只有生成器2和生成器3的輸出被修改,可以確定只有生成器l受該修改的影響。因此,生成器l的更新後的輸出的確定僅需要用生成器2的被覆蓋的輸出和生成器3的修改後的輸出來再執行生成器1。生成器圖形的該部分再執行可以在圖4E中由從生成器2和3到生成器1(不是從生成器4和5到生成器2)的彎曲的箭頭線示出。雖然支持覆蓋的生成器輸出的本發明的一個實施方式還支持不BEI覆蓋的生成器輸出,但是本發明的可替換實施方式可以不支持。雖然支持不覆蓋的生成器的本發明的一個實施方式在生成器明確地不被覆蓋之前覆蓋掉被覆蓋的生成器,但是本發明的可替換實施方式可以以不同方式實施(例如,當替換的生成器的繼承中的一個被覆蓋時不覆蓋該被覆蓋的生成器)。在本發明的一個實施方式中,面向生成器圖形的編程框架包括外部接口,用於連接沒有用生成器依賴性聲明編寫的程序。該外部框架包括1)調用器部分(稱為運行時客戶端);以及2)調用部分(稱為外部數據源)。如果生成器從外部數據源直接讀取數據,則該生成器在生成器被創建時只讀取數據,在被指示這麼做(手動更新)或被指示訂閱該數據時讀取數據。在手動更新和訂閱的情況下,外部數據源的改變會導致生成器的設定方法被調用和生成器輸出的修改(與被覆蓋的生成器做同樣處理)。生成器圖形建立和執行本發明的不同實施方式可以被實施以在不同程度發現並擴建生成器圖形(例如,建立生成器圖形直到來自根節點的所有圖形在無關生成器處結束(在這種情況下,生成器圖形的端節點是無關生成器,可能任何替換的生成器是中間節點);擴建生成器圖形直到來自根節點的每一個路徑在被替換的生成器或無關生成器中終止,無論哪條首先到達(這種情況,生成器圖形的每一個端節點是無關生成器或被覆蓋的生成器))。"執行開始生成器"是指生成器圖形的給定執行從其開始的生成器圖形的生成器。為了生成器圖形的初始執行,不同的實施方式可以從不同的生成器開始(例如,在本發明的實施方式中,建立生成器圖形直到來自根節點的所有路徑在無關生成器處終止,執行可以從端節點處(該端節點為無關生成器)開始、從源生成器處(該源生成器包括無關生成器節點和任意被覆蓋的生成器節點)開始、從源生成器的子集開始(該子集包括在其間具有至少一條路徑和不包括被覆蓋的生成器的根生成器的任意無關生成器與任意被覆蓋的生成器的組合),或從源生成器的子集開始(該子集包括任意沒有任何被覆蓋的繼承的被覆蓋的生成器與在其間具有至少一條路徑和不包括被覆蓋的生成器的根生成器的任意無關生成器的組合);在本發明的實施方式中,如果且直到生成器沒有被覆蓋,則被覆蓋的生成器下的生成器圖形沒有被建立,執行可以從端節點處開始(端節點可以是無關生成器和/或被覆蓋的生成器)等)。為了生成器圖形的後續執行,不同的實施方式可以從不同的生成器開始(例如,從生成器圖形的無關生成器(例如,在不支持增量執行的本發明的實施方式中);從生成器圖形的源生成器(例如,在不支持增量執行的本發明的實施方式中);從源生成器的子集,該子集包括自從上一次執行開始被覆蓋的和/或添加的源生成器(例如,在支持增量執行的本發明的實施方式中);是自從上一次執行開始被覆蓋的和/或添加的源生成器,從不具有被覆蓋的繼承的任意這種被覆蓋的生成器與在其間具有至少一條路徑和不包括被覆蓋的生成器的根生成器的任意這種被添加的生成器的組合(例如,在支持增量執行的本發明的實施方式中)等)。關於以上執行開始生成器的概念,生成器圖形的執行的處理流在不同的實施方式之間也可以不同。例如,在本發明的一個實施方式中,執行開始生成器的前身(ancestry)被確定並被放置在集合中,執行開始生成器被執行,且針對生成器(對於該生成器所有的依賴性被執行)該集合被反覆掃描——最後達到根節點。作為另一個示例,在本發明的一個實施方式中,執行開始生成器被執行,執行開始生成器的父體(parents)被標識,這些父體被執行,且該父體的父體被標識並執行等。以下以舉例而非限定的方式使用後面的本發明的實施方式。示例性類型的依賴性示例性動態生成器依賴性動態生成器依賴性是直到運行時才能被解析的生成器依賴性。應當理解用於解析生成器依賴性的準則在原始碼中,且由此生成器依賴性可以被解析的生成器是有限的。參考圖3A,從生成器圖形執行模塊345到自動生成器圖形生成模塊340的虛箭頭線表示支持當前生成器圖形中一個或多個生成器的執行,該生成器對發現並建立整個當前生成器圖形是必須的。換句話說,支持動態生成器依賴性的本發明的實施方式可以在自動生成器圖形生成模塊340和生成器圖形執行模塊345之間重複直到整個生成器圖形被發現、建立、解析並執行(即,在以下之間重複O調用自動生成器圖形生成模塊以發現並建立在此時能被解析的當前生成器圖形的這些部分;以及2)調用生成器圖形執行模塊以執行當前生成器圖形的生成器)。在這個意義上,發現是指訪問生成器依賴性聲明並確定該生成器依賴性聲明所標識的生成器;建立是指裝載生成器並將它們添加到生成器圖形;以及解析是指確定當前未解析的動態生成器依賴性。圖5A是示出了根據本發明的一個實施方式的包括未解析的依賴性的示例性生成器圖形的發現和建立的框圖。圖5A示出包括生成器1的當前組的感興趣生成器。基於生成器1及其生成器依賴性聲明,生成器2和生成器3被發現。換句話說,用於生成器l的依賴性聲明標識生成器1需要生成器2和生成器3的輸出作為輸入。圖5A還示出生成器3是無關生成器(因此,是源生成器)而生成器2不是。由此,基於生成器2的依賴性聲明,生成器4和生成器5被發現。此外,圖5A示出生成器4是無關生成器(因此,是源生成器)而生成器5不是。由此,基於生成器5的依賴性聲明,生成器6和當前未解析的依賴性被發現。圖5A還示出當前未解析的依賴性可以用於生成器7A和/或生成器7B。圖5B是示出了根據本發明的一個實施方式的圖5A中的生成器圖形的初始執行和對未解析依賴性的解析的框圖。圖5B用彎曲的箭頭線示出圖5A的生成器圖形,該彎曲的箭頭線顯示了生成器的執行和提供生成器的輸出給相關父生成器。此外,圖5B示出生成器5的未解析的依賴性被解析為生成器7A的依賴性,且生成器7A是無關生成器。注意到生成器7A可以通過自身來執行,或與生成器6並行執行,或與生成器4並行執行,或與生成器3並行執行,或與生成器3、4以及6的任意組合併行執行。這樣的並行執行是被允許的,這是因為生成器7A不依賴於生成器3、4以及6。圖5C是示出了根據本發明的一個實施方式的圖5A中生成器圖形的初始執行和/或圖5B中生成器圖形的再執行。圖5C示出圖5A中的生成器圖形,彎曲的箭頭線示出生成器的執行和提供該生成器的輸出給相關父生成器。此外,圖5C示出生成器5的未解析依賴性被解析為生成器7B的依賴性,且生成器7B是相關生成器。由此,基於生成器7B的依賴性聲明,生成器8被發現。生成器8是無關生成器(因此,是源生成器)。假定圖5C表示圖5A中生成器圖形的初始執行,圖5C中所有的彎曲的箭頭線可以被使用。但是,假定圖5C表示圖5B中生成器圖形的再執行,則該再執行導致動態依賴性以不同方式被解析(從生成器5依賴於生成器7A轉換到生成器7B)。此外,如果再執行在沒有增量執行的情況下被執行,則圖5C中所有的彎曲的箭頭線可以被使用;但是,如果使用了增量執行,則只有不是虛線的彎曲的箭頭線可以被使用(生成器8到生成器7B、生成器7B到生成器5、生成器5到生成器2、以及生成器2到生成器1)。還應當理解,圖5C中所示的依賴性中的動態改變是示例性的,且由此任意數量的不同情況可以出現(例如,動態改變可以永遠不發生;生成器5首先依賴於生成器7B然後改變到生成器7A;生成器5可以首先依賴於生成器7B且曾經沒有動態改變發生;生成器5可以被發現依賴於生成器7A和生成器7B兩者,如圖5D中所示,等等)。因此,生成器圖形的自動再執行不能限定為生成器被修改以及其直接的子體或父體被再執行;而是改變通過生成器圖形由運行時自動使其波動(ripple),影響任意合適的生成器和依賴性,因為生成器圖形被保持(在支持的情況下使用增量執行)。這樣,改變導致任何必須的另外的發現、建立、解析以及執行。因此,在用戶/程式設計師不需要確定生成器圖形的哪一個生成器受影響且可能手動校正圖形的情況下,生成器圖形的再執行被自動執行。靜態生成器依賴性靜態依賴性是在運行時之前就已經知道的依賴性。因此,在支持偶然和訂閱動態依賴性的實施方式中,非偶然、非訂閱依賴性是靜態依賴性。圖4A中的示例性生成器圖形示出了靜態依賴性的生成器圖形。生成器圖形形狀由於面向對象程式語言中的生成器至少是類、該類的實例以及該實例的方法,因此生成器圖形是以類、實例和方法為中心的。這樣,生成器圖形是表示實例和這些實例的方法的圖形。應當理解,生成器圖形可以採取各種不同形狀(例如,生成器的單鏈、樹等)。圖5B的示例性生成器圖形是具有生成器1的根節點的樹,從根節點開始具有兩個分支一一個分支到達生成器2和生成器3的每一個。其中生成器3是葉節點,生成器2具有從其延伸的兩個分支一一個到達生成器4和生成器5的每一個。生成器5具有從其延伸的兩個分支一一個到達生成器6和生成器7A的每一個。圖5B中的示例性生成器圖形為多級,等級1包括根節點生成器l,等級2包括生成器2和生成器3,等級3包括生成器4和生成器5,等級4包括生成器6生成器7A(在圖5C中,等級4包括生成器7B,等級5包括生成器8)。在一些實施方式中,通過在每一個等級上並行執行生成器來實現並行化。生成器的執行可以從最低等級的生成器開始,例如圖5C中的等級5,然後逐級向上移動。在開始在一個等級上執行生成器之前,運行時可以等待直到前一較低等級上的所有生成器準備完成,即,前一較低等級上的生成器的輸出已經被返回。在圖5B中,當考慮具有生成器2的從生成器1開始的分支時,該分支上的一個生成器是生成器2且該分支的最後一個生成器是生成器4、生成器6以及生成器7A。雖然圖5B示出了生成器圖形,其中當前組的感興趣生成器包括單個生成器,但支持多於一個的當前感興趣生成器的本發明的實施方式可以為每一個生成器發現並建立生成器圖形。應當理解如果同時存在多個感興趣生成器,則產生的生成器圖形可以是無關的或可以交叉。如果生成器圖形交叉,則本發明的實施方式可以被實施以1)複製生成器以保持獨自的生成器圖形;或2)避免這種複製並保持交叉的生成器圖形。還應當理解這種交叉的生成器圖形可以包括是另一個生成器圖形的子集的生成器圖形。例如,如果生成器5和生成器1被包括在當前組的感興趣生成器中,則存在具有生成器5的根節點的第一生成器圖形和具有生成器1的根節點的第二生成器圖形,其中該第二生成器圖形包括第一生成器圖形。例如,如果生成器7B和生成器l以及生成器5被包括在當前組的感興趣生成器中,則存在與第一和第二生成器圖形分開的具有圖5B中的生成器7B的根節點的第三生成器圖形。進一步地,如果生成器5的偶然依賴性從生成器7A變到生成器7B(圖5C),則該改變使第二生成器圖形和第三生成器圖形保留(但是第一生成器圖形不保留),第三生成器圖形是第二生成器圖形的子集。示例性執行流圖6是根據本發明的一個實施方式的運行時客戶端的邏輯執行流以及其與具有面向生成器圖形編程支持的運行時的關係的流程圖。在圖6中,虛分界線600將運行時客戶端610的邏輯執行流與具有面向生成器圖形編程支持的運行時640分開。運行時客戶端610的邏輯執行流包括塊615,620,625以及630,而具有面向生成器圖形編程支持的運行時640包括塊645,650,660以及可選的655。實箭頭線表示從塊630到塊660的直接因果關係。相比之下,點狀箭頭線表示分別從運行時客戶端610的邏輯執行流中的塊615和625到具有面向生成器圖形支持的運行時640中的塊645和650的因果關係;根據本發明的實施方式,該因果關係可以是直接的或間接的。例如,圖6通過使用在虛線600具有面向生成器圖形支持的運行時640側的虛線橢圓中的命令日誌665示出可選間接原因。命令日誌665收集由運行時客戶端610的邏輯執行流的塊615和625產生的命令;且命令日誌665響應於塊630而被處理塊660使用。因此,為了優化,命令日誌665允許延遲命令以將多個命令收集在一起並對其進行批處理。因此,命令日誌665與圖3B的覆蓋日誌396類似,且在本發明的一些實施方式中實際上可以包括覆蓋日誌396。在塊615中,一組一個或多個感興趣生成器可以被確定為當前組的感興趣生成器並且控制傳到塊620。響應於塊615和645之間的因果關係,塊645顯示當前組的感興趣生成器被實例化並嘗試為每一個生成器發現、建立以及解析(如果動態依賴性被支持且在生成器圖形中發現一個或多個)生成器圖56形,包括基於運行時客戶端610中的生成器依賴性聲明,在需要時實例化任意的實例以及實例的生成器。參考圖3A和3B,自動生成器圖形生成模塊340和365分別被調用。在塊620中,確定是否存在任意生成器輸出覆蓋。如果存在,則控制傳到塊625;否則,控制傳到塊630。在塊625中,為一組一個或多個生成器接收一個或多個生成器輸出覆蓋並且控制傳到塊630。響應於塊625和塊650之間的因果關係,塊650顯示當前組的被替換的生成器被實例化(如果在塊645中沒有被實例化),其輸出被修改並被跟蹤。因為被覆蓋的生成器已經被發現是塊645中的生成器圖形的一部分,因此該被覆蓋的生成器可以已經被實例化。但是,由於未解析的動態依賴性,被覆蓋的生成器可以在塊645中沒有被發現。這樣,該被覆蓋的生成器被實例化並被覆蓋,除了當動態依賴性被解析時該被覆蓋的生成器可以被添加到生成器圖形。此外,如前所示,圖3B的覆蓋日誌396如果被實施,則會存在於塊625與塊650之間並成為命令日誌665的一部分。再者,所述一組被覆蓋的生成器在支持增量執行的本發明的一些實施方式中被跟蹤。而在支持覆蓋日誌396/命令日誌665的本發明的實施方式中,跟蹤是曰志的一部分,在本發明的可替換實施方式中,使用不同的機制在塊650中單獨執行跟蹤。在塊630中,生成器圖形執行模塊被調用並可選地控制返回到塊615和/或塊625。響應於塊630與塊660之間的因果關係,塊660顯示了當前生成器圖形被巡視(walk)以及基於跟蹤執行需要執行的任意生成器。之前已經論述了用於執行生成器圖形的生成器並在這裡適用的各種技術。參考圖3A和3B,生成器圖形執行模塊345和370分別被調用。此外,在本發明的實施方式中,命令日誌665被實施,因果關係包括使用命令日誌665並在塊660之前執行處理塊645和650。此外,在支持未解析依賴性的可能性的本發明的實施方式中,當需要時控制從塊660流到塊655。在塊655中,嘗試解析未解析的依賴性並發現和建立生成器圖形中的餘項,包括實例化任意實例及其生成器。從塊655控制流回到塊660。生成器依賴性聲明的示例性形式圖7A-圖7F示出了根據本發明的實施方式的生成器依賴性聲明的一些示例性形式。雖然圖7A-圖7F示出了支持參量、欄位以及排序依賴性的實施方式,但是應當理解不同的實施方式可以支持三種依賴性形式中的僅一種或兩種。在本圖7A-圖7F中示出的本發明的實施方式中,生成器依賴性聲明由生成器依賴性聲明陳述和可選的顯式生成器依賴性聲明代碼組成。非快捷生成器依賴性是在其中使用顯式生成器依賴性聲明代碼的生成器依賴性,而快捷生成器依賴性是在其中沒有使用顯式生成器依賴性聲明代碼的生成器依賴性(而是,運行時沒有使用生成器依賴性聲明代碼和/或基於生成器依賴性聲明陳述中的信息即時地(onthefly)執行該代碼)。本發明的不同實施方式可以使用不同的語法來聲明生成器依賴性。例如,本發明的不同實施方式可以包括在生成器依賴性聲明陳述中使用的不同語法,該語法強約束、弱約束和/或不約束可以被創建的生成器依賴性的類型。強約束的生成器依賴性是為其在生成器依賴性聲明陳述中使用基本限定可以被創建的生成器依賴性的類型的語法的生成器依賴性;弱約束生成器依賴性是為其在生成器依賴性聲明陳述中使用不完全限定可以被創建的生成器依賴性的類型的語法的生成器依賴性;而未約束的生成器依賴性是為其在生成器依賴性聲明陳述中使用不限定可以被創建的生成器依賴性的類型的語法的生成器依賴性。通過舉例而非限定的方式,下面描述的本發明的實施方式包括以下1)用於參量的強約束生成器依賴性的語法(參量依賴性(ArgumentDependency)=強約束向下聲明的參量[靜態或動態,且如果是動態、偶然和/或吸收訂閱]依賴性);2)用於欄位的強約束生成器依賴性的語法(欄位依賴性(FieldDepencency)=強約束向下聲明的欄位[靜態或動態,且如果是動態、偶然和/或吸收訂閱]依賴性);3)用於排序依賴性的強約束生成器依賴性的語法(排序依賴性(S叫uencingDependency)=強約束向下聲明的排序[靜態或動態,且如果是動態、偶然和/或粘附訂閱]依賴性);4)用於參量、欄位或排序依賴性的弱約束向上聲明的生成器依賴性的語法(向上依賴性(UpwardDependency)-弱約束的向上聲明的欄位、參量或排序[靜態或動態,且如果是動態、偶然]依賴性);以及5)弱約束生成器依賴性的語法(弱約束依賴性-a)僅向下聲明的排序(靜態或動態,且如果是動態、偶然和/或粘附訂閱)依賴性;或b)向上聲明[參量、欄位或排序][靜態或動態,且如果是動態、偶然]依賴性)。應當理解雖然本發明的一些實施方式支持生成器依賴性聲明陳述的語法,所述語法區分向下聲明參量依賴性、向下聲明欄位依賴性、向上聲明依賴性(可以返回向上聲明參量、欄位或排序依賴性),和弱約束依賴性(可以返回向下聲明排序依賴性、向上聲明參量、欄位或排序依賴性),本發明的可替換實施方式可以採用不同的語法(例如,具有語法,該語法使所有依賴性是具有可以返回任意支持的依賴性(向下和向上聲明的參量、欄位以及排序依賴性)的確定生成器的未限制的依賴性;具有區分所有支持的依賴性的語法;具有區分向下和向上聲明的參量和欄位依賴性和區分僅返回向上和向下聲明的排序依賴性的語法;區分向下聲明的參量和欄位依賴性並區分僅返回向上聲明的排序依賴性的向上聲明的依賴性的語法;區分向下聲明的參量、欄位和排序依賴性(不支持粘附訂閱和向上聲明的依賴性)的語法等等)。應當理解生成器依賴性聲明陳述的語法不必等於在生成器圖形中創建的生成器依賴性(例如,連結)(例如,ArgumentDependency創建參量依賴性;而UpwardDependency可以創建參量、欄位或排序依賴性)。這樣,如果理解適當,限定詞(例如,參量、欄位或排序)和詞"依賴性"之間的空間可以用於指由運行時創建的依賴性,而缺少該空間可以用於指語法。圖7A示出了根據本發明的一個實施方式的使用快捷依賴性的方法的生成器依賴性聲明的偽代碼;而圖7B是根據本發明的一個實施方式的示例性生成器的框圖。圖7A顯示1)生成器依賴性聲明陳述705,包括參量依賴性l-N、欄位依賴性l-M、排序依賴性l-L、向上依賴性l-P以及弱約束依賴性l-Q;和2)方法a(alpha)710,具有來自生成器依賴性聲明陳述705的參量1-N。在本發明的一個實施方式中,生成器依賴性聲明陳述的參量被計數以為每一個參量提供參量ID,以用於跟蹤。圖7B顯示生成器720,具有以下的子依賴性1)參量ID1的生成器725;2)參量IDN的生成器730;3)欄位依賴性l-M的生成器740-745;4)排序依賴性l-L的生成器746-747;以及5)向上依賴性l-P的生成器748-749(注意,弱約束依賴性1...Q未顯示,但將參考圖7G更詳細地描述)。因此生成器依賴性聲明陳述705的參量對應於方法a710的參量,且生成器依賴性聲明陳述705中的參量的參量ID關於其標識的子生成器而被跟蹤。圖7C示出了根據本發明的一個實施方式使用非快捷依賴性的方法的生成器依賴性聲明的偽代碼,並示出了示例性生成器的框圖。圖7C顯示了圖7A的生成器依賴性聲明陳述705和方法a710以及圖7B的生成器720和725。此外,圖7C包括與參量依賴性1相關聯的生成器依賴性聲明代碼715。在運行時期間,運行時響應於生成器依賴性聲明陳述705的參量依賴性1來訪問並執行生成器依賴性聲明代碼715。生成器依賴性聲明代碼715的執行返回生成器725作為參量依賴性1的生成器依賴性。因此,圖7C示出了本發明的實施方式,其中生成器依賴性聲明代碼715可以是方法的一部分(不是方法a710)而不是生成器的一部分。圖7D示出了根據本發明的一個實施方式的使用非快捷依賴性的方法的生成器依賴性聲明的偽代碼;而圖7E是根據本發明的一個實施方式的示例性生成器的框圖。圖7D顯示了圖7A的生成器依賴性聲明陳述705和方法a710,而圖7E顯示了圖7B的生成器720和725。此外,圖7D包括1)生成器依賴性聲明代碼750;以及2)方法e(beta)755包括生成器依賴性聲明代碼760。圖7D還顯示了生成器依賴性聲明陳述705的參量依賴性1基於將返回參量依賴性1的依賴性的方法e755來標識生成器(圖7E中顯示為生成器765)。在運行時期間,運行時響應於生成器依賴性聲明陳述705的參量依賴性1,執行生成器765以返回參量依賴性1的生成器依賴性是生成器725的標識。這樣,生成器765被稱為依賴性確定生成器(其輸出是生成器依賴性-因此由具有面向生成器圖形編程支持的運行時使用為特殊處理(生成器圖形的處理)而被監控的類/實例來返回該輸出),而生成器725稱為標準生成器(其輸出,如果有的話,不由處理生成器圖形的運行時直接處理;但是其輸出,如果有的話,可以由父生成器(可以是依賴性確定生成器或其他標準生成器)使用和/或被提供作為生成器圖形的輸出(如果標準生成器是感興趣生成器,由此是根節點))。因此,圖7D-圖7E示出了本發明的實施方式,其中生成器依賴性聲明代碼715是被稱為依賴性確定生成器的另一個生成器的一部分。雖然在圖7D-圖7E中面向對象原始碼包括方法中顯式的生成器依賴性聲明代碼,根據所述方法依賴性確定生成器在運行時被非快捷依賴性的運行時實例化,本發明的可替換實施方式另外或替代地執行運行時以包括通用生成器依賴性聲明代碼,該代碼為快捷依賴性即時地(onthefly)調用作為一個或多個通用依賴性確定生成器。另外,雖然圖7C-圖7E參考參量依賴性被示出,但是示出的技術適用於其他類型的向下聲明的依賴性。此外,圖7F-圖7G示出了為向上依賴性和弱約束依賴性使用依賴性確定生成器。61圖7F是根據本發明的一個實施方式的通過使用具有依賴性確定生成器的向上依賴性的示例性依賴性的框圖。圖7F顯示了具有排序生成器依賴性的生成器720到依賴性確定生成器772。依賴性確定生成器可以在生成器720上返回父生成器748的非訂閱向上聲明的參量、欄位或排序依賴性。此外,該依賴性確定生成器可以執行動態依賴性(即,根據數據值在以上之間選擇的偶然依賴性,包括在不同的參量ID之間,如後面所述)。雖然本發明的一些實施方式支持所有的這些可能性,但是本發明的可替換實施方式可以僅支持子集(例如,僅非訂閱向上聲明的排序依賴性)。圖7G是根據本發明的一個實施方式的通過使用具有依賴性確定生成器的弱約束依賴性的可能的示例性依賴性的框圖。圖7G顯示了具有排序生成器依賴性的生成器720到依賴性確定生成器775。在本發明的一些實施方式中,依賴性確定生成器可以返回任意以下各項1)在子生成器780上的非訂閱向下聲明的排序依賴性;2)在生成器720上的父生成器785的非訂閱向上聲明的參量、欄位或排序依賴性;以及3)粘附訂閱(在後面描述)。此外,該依賴性確定生成器可以執行動態依賴性(例如,根據數據值在以上之間選擇的偶然依賴性,包括在不同的參量ID之間,如後面所述)。雖然本發明的一些實施方式支持所有的這種可能性,但是本發明的可替換實施方式僅支持子集(例如,僅非訂閱向上聲明的排序依賴性)。如之前所示,排序依賴性可以用於不同的目的,包括確保修改數據的生成器與使用數據的生成器之間的執行順序,該修改數據的生成器以運行時不知道的方式修改數據(子生成器可以以需要父生成器的方法來包括訪問該輸出的代碼的方式來編寫子生成器的輸出(例如,通過影響不是常規生成器輸出這樣不被運行時檢測的輸出來影響環境的方法一例如設定全局變量的方法、設定不是生成器輸出的實例中的欄位的方法、影響外部數據源的方法,等))。影響運行時不知道的源(例如總變量或外部數據源)以及從這些源中讀取是在需要並行化能力的生成器中應當避免的特性。不同的實施方式可以支持一種或多種關於屬性生成器來聲明生成器依賴性的方式。具體地,在本發明的一些實施方式中,讀取欄位的生成器依賴於獲取屬性生成器,而獲取屬性生成器應當依賴於設定獲取屬性方法所負責的欄位的任何生成器。處理這種情況的一種技術可以在支持排序生成器依賴性的本發明的實施方式中使用,用於為獲取屬性方法提供依賴性聲明陳述,該陳述在設定獲取屬性方法負責的欄位的每一個方法上創建排序生成器依賴性(例如,關於圖7G,生成器780是設定欄位的生成器而生成器720是負責該欄位的獲取屬性生成器,依賴性確定生成器775被寫入以在生成器780上返回生成器720的向下聲明的排序依賴性)。處理該情況的第二種技術可以在支持排序生成器依賴性和向上聲明的生成器依賴性的本發明的實施方式中使用,該技術在用於設定欄位的任何方法的生成器依賴性聲明陳述/代碼中包括在負責該欄位的獲取方法上的向上聲明排序生成器依賴性(例如,使用向上依賴性或限制依賴性)(例如,關於圖7G,生成器720是設定欄位的生成器而生成器785是負責該欄位的獲取屬性生成器,依賴性確定生成器775被寫入以在生成器720上返回父生成器785的向上聲明的排序依賴性)。該第二種技術允許設定欄位方法的程式設計師負責提供生成器依賴性給合適的獲取方法,而不需要程式設計師進入獲取方法並修改其生成器依賴性聲明陳述/代碼。在使用排序依賴性的情況下,當給定的生成器依賴給定的變量時,該變量應當在生成器圖形的給定執行中被多於一個生成器的繼承生成器修改(應當注意通過偶然依賴性(在後面描述),不同的繼承生成器可以在當前生成器圖形的不同執行期間修改變量)。例如,在當前生成器圖形的給定執行中,獲取屬性生成器可以僅依據設定該獲取屬性生成器負責的欄位的另一個生成器。應當理解,本發明的不同實施方式可以實施圖7A-圖7F中所示的一個或多個本發明的實施方式。例如,本發明的一個實施方式支持快捷和非快捷的依賴性,這兩種都使用依賴性確定生成器;具體地,在本發明的該實施方式中1)面向對象原始碼包括方法中的顯式生成器依賴性聲明代碼,根據該方法運行時為非快捷依賴性在運行時實例化依賴性確定生成器;2)運行時包括通用生成器依賴性聲明代碼,該代碼為快捷聲明即時地調用偶然依賴性(在後面描述)作為一個或多個通用依賴性確定生成器;以及3)運行時包括直接連結到快捷聲明、非偶然的生成器依賴性的支持(在後面描述)。作為另一個示例,本發明的一個實施方式支持使用依賴性確定生成器的非快捷和快捷的生成器依賴性;具體地,在該本發明的實施方式中1)面向對象原始碼包括方法中的顯式生成器依賴性聲明代碼,根據該方法運行時為非快捷依賴性在運行時實例化依賴性確定生成器;2)運行時包括通用生成器依賴性聲明代碼,該代碼為快捷依賴性(不管類型)調用作為一個或多個通用依賴性確定生成器。該後一個實施方式允許一致處理生成器依賴性,因此可以簡化運行時。此外,雖然在本發明的一個實施方式中用於方法的生成器依賴性聲明陳述只位於面向對象原始碼中的方法的上面,但是在在本發明可替換實施方式中,該陳述可以位於任何位置(例如,用於類的所有方法的生成器依賴性聲明陳述在該類中組合到一起,用於所有類中的所有方法的生成器依賴性聲明陳述組合一起作為單獨的數據表,等等)。另外,雖然在本發明的一個實施方式中,生成器依賴性聲明代碼與生成器依賴性聲明陳述分開,但是在本發明的可替換實施方式中,它們可以結合起來(例如,生成器依賴性聲明代碼在生成器依賴性聲明陳述的插入語中,生成器依賴性聲明代碼直接置於生成器依賴性聲明陳述下面並由運行時當做單個單元來處理,等)。圖7H-圖7I示出了由於依賴性確定生成器導致的存在於生成器圖形中的64不同子圖形之間的區別。圖7H示出了根據本發明的一個實施方式的標準生成器的示例性生成器圖形。具體地,圖7H顯示了具有根節點Sl的生成器圖形、具有根節點S5的生成器圖形、以及具有根節點Sll的生成器圖形。標準生成器Sl具有作為子體的標準生成器S2、S3以及S4;標準生成器S2和S3具有作為子體的標準生成器S7和S8;標準生成器S5具有作為子體的標準生成器S4和S6;以及標準生成器Sll具有作為子體的標準生成器S6和S10。圖7H的示例性生成器圖形可以通過使用任意數量的生成器依賴性和依賴性確定生成器而被發現、建立以及解析。圖71示出了用於發現、解析以及建立圖7H中的生成器圖形的生成器依賴性和依賴性確定生成器的一個示例。具體地,圖7I顯示圖7H中的圖形是一大組的成器圖形的子圖形。換句話說,圖71的生成器圖形包括圖7H中的圖形(稱為"目標子圖形"並使用實箭頭線和實橢圓示出)和輔助發現、解析以及建立目標子圖形的圖形(稱為"決定子圖形"並用虛箭頭線和虛橢圓示出)。圖7H中的決定子圖形包括依賴性確定生成器(DDP)1-11和標準生成器S9-10。在圖7H中,Sl被顯示為益來與DDP1-3,DDPl-3分別在S2、S3和S4上返回Sl的向下聲明的生成器依賴性;S4被顯示為依賴於DDP4依賴性,該DDP4在S4上返回S5的向上聲明的生成器依賴性;S5被顯示為依賴於DDP5,DDP5在S6上返回S5的向下聲明的生成器依賴性;S3被顯示為依賴於DDP6,而DDP6依賴於DDP8,DDP8在S9和S10上返回DDP6的向下聲明的生成器依賴性,這使DDP6在S7上返回S3的向下聲明的依賴性;S3被顯示為依賴於DDP7,DDP7在S8上返回S3的向下聲明的生成器依賴性;S8被顯示為依賴於DDP9,DDP9返回粘附訂閱,對於該粘附訂閱S6是觸發生成器而S11是被創建的父體(由此,在S6上的S11的生成器依賴性);S2被顯示為依賴於DDP10,DDP10在S7和S8上返回S2的向下聲明的生成器依賴性的集合;以及Sll被顯示為依賴於DDPll,DDP11在S10上返回S11的向下65聲明的生成器依賴性。應當理解標準生成器可以既是目標子圖形的部分也是決定子圖形的部分(例如,見sio)。值得注意的是在圖形上數據從一個標準生成器流到另一個標準生成器的情況下,目標子圖形是被驅動的數據。示例性編程和執行框架圖8A是示出了根據本發明的一個實施方式的第一示例性框架的框圖,在該框架中應用被提供給終端用戶。圖8A所示的框架包括三個基本分區,第一個分區包括具有面向生成器圖形編程支持810的運行時的創建。該第一個分區由具有高級編程技能的程式設計師執行。當在該分區中工作時,程式設計師稱為運行時程式設計師。當創建具有面向生成器圖形編程支持時,運行時程式設計師包括生成器圖形支持和執行各種類型的在轉換代碼、實例化代碼以及數據準備代碼中使用的命令的支持。第二個分區包括運行時執行的面向對象應用原始碼820的創建。面向對象應用原始碼820包括兩個基本分區1)類定義,包括具有生成器依賴性聲明822的在方法中表達的業務邏輯(這可以可選地包括其他功能,例如圖形用戶界面一在該情況下,使用生成器和生成器依賴性聲明來編寫圖形用戶界面);以及2)類定義,包括在方法824中表達的客戶端代碼,包括實例化代碼824A(類、實例以及感興趣生成器,以促使生成器圖形的生成)、數據準備代碼824B(例如,設定命令,例如觸發生成器輸出的覆蓋的設定命令)、導致生成器圖形的執行的總的執行命令824C(例如執行並獲取命令)以及任何所需的圖形用戶界面824D(未包括在822中)。生成器依賴性聲明用於在定義包括業務邏輯的類期間(而不是在創建這些類的實例之後)定義生成器之間的聯繫。面向對象原始碼820是被編譯和執行的硬編碼的類、實例以及方法。雖然在本發明的一個實施方式中執行全局執行命令,所述命令的執行促使嘗試執行當前在生成器圖形結構380中的所有生成器圖形,但是本發明可替換實施方式可替換地或還能執行圖形特定執行命令,該圖形特定執行命令需要當前被執行的生成器圖形的給定圖形的標識。此外,全局執行命令根據運行時的執行可以是顯式的(例如,設定、設定、設定、執行、獲取、獲取)或隱式的。例如,隱式全局執行命令可以1)被感興趣生成器上的第一獲取命令觸發(例如,設定、設定、設定、獲取(隱式執行)、獲取);2)被每一個數據處理觸發(設定(隱式執行)、設定(隱式執行)、設定(隱式執行)、獲取、獲取);等等。第二分區也由具有高級編程技能且了解應用的商業目的的程式設計師執行。當在該分區中工作時,程式設計師稱為應用程式員。作為該分區的一部分,如果應用需要圖形用戶界面,則應用程式員還為該特定應用設計並編碼該圖形用戶界面;且由此也稱為應用設計者。第三個分區包括使用由運行時運行的應用程式。該第三個分區由不需要具有任何編程技能的終端用戶執行。應用程式可以以各種方式被分配(例如,作為原始碼、原始碼的轉換,例如字節代碼;二進位等)。此外,應用程式可以被分配用於獨立使用(standaloneuse)830(在該情況下,全部應用程式(以及運行程序(和運行時(如果還沒有))被提供給計算機系統)和/或客戶端/伺服器使用。在本發明的一個實施方式中,客戶端/伺服器分配包括為伺服器使用832分配類定義,該類定義包括在具有生成器依賴性聲明822的方法(和運行時(如果還沒有))中表達的業務邏輯;以及分配類定義,該類定義包括在方法824(和運行時(如果還沒有))中表達的客戶端代碼,其中計算機系統上的客戶端使用834促使與伺服器系統上的伺服器使用832的通信。圖8A還示出了為獨立使用830和客戶端使用834而提供的可選可配置交互生成器輸出布局圖形用戶界面模塊840。面向對象原始碼820可以由運行時來運行以生成生成器圖形,且可配置交互生成器輸出布局圖形用戶界面模塊840允許以圖形方式顯示來自生成器圖形的輸出並與生成器圖形交互。具體地,可配置交互生成器輸出布局圖形用戶界面模塊840包括1)配置和映射圖形用戶界面模塊844,用於允許選擇的生成器輸出的布局和映射的配置(例如,使用的屏幕的區域,怎樣顯示數據等);以及2)顯現和交互圖形用戶界面模塊846,用於顯現配置的布局並允許生成器輸出的覆蓋(導致通過全局執行命令更新生成器圖形)。應當理解可配置交互生成器輸出布局圖形用戶界面模塊840可以或不可以由編寫運行時810的同一個實體來創建。圖8B是示出可根據本發明的一個實施方式的第二示例性框架的框圖,在該框架中應用被提供給終端用戶。圖8B與圖8A—樣,除了以下不同1)獨立使用830不存在;2)面向對象原始碼820被提供給伺服器使用832,而客戶端代碼824沒有提供給客戶端使用834;3)可配置交互生成器輸出布局圖形用戶界面模塊840被提供給伺服器使用832而沒有提供給客戶端使用834;以及4)通用可配置交互生成器輸出布局客戶端界面885被提供給客戶端使用834。可配置交互生成器輸出布局客戶端界面885用於與可配置交互生成器輸出布局圖形用戶界面模塊840接口。不管是否使用框架,在本發明的一個實施方式中,面向生成器圖形編程框架提供與未寫入生成器依賴性聲明的程序進行接口的能力。該與未寫入生成器依賴性聲明的程序進行接口的能力包括1)調用器部分(例如,沒有根據面向生成器圖形編程而編寫的圖形用戶界面);以及2)調用的部分(例如沒有根據面向生成器圖形編程而編寫的外部數據源)。調用器部分可以通過客戶端代碼發布面向生成器圖形編程命令。調用的部分可以被執行作為封包(wrap)被調用的部分的生成器的一部分(稱為"封包生成器(wrappingproducer)")。執行調用的部分(例如從數據源讀取數據或訂閱外部數據源中的數據改變)可以一次觸發實例的修改。這種改變可以通過調用封包生成器的代碼中的屬性設定方法來發生。獲取屬性生成器(獲得者)被促使在這些封包生成器上具有依賴性,以確保在外部數據源中發生的由改變觸發的實例修改通過生成器圖形被合適地傳播。如之前所述,不同的實施方式可以支持一個或多個聲明關於屬性生成器的生成器依賴性的方式。例如,在支持排序生成器依賴性的本發明的一些實施方式中,排序依賴性可以用於聲明封包生成器上非訂閱向下聲明的排序生成器依賴性。作為另一個示例,在支持排序生成器依賴性和非訂閱向上聲明的生成器依賴性的本發明的一些實施方式中,向上依賴性和/或弱約束依賴性可以位於封包生成器的生成器依賴性聲明中,從而為屬性生成器創建非訂閱向上聲明的排序生成器依賴性。圖8C-圖8F示出了根據本發明的一個實施方式的可配置交互生成器輸出布局圖形用戶界面模塊840的示例性截屏和使用。雖然將參考可配置交互生成器輸出布局圖形用戶界面模塊840來描述本發明的實施方式,所述可配置交互生成器輸出布局圖形用戶界面模塊840提供配置、映射以及以電子表格的形式與選擇的當前生成器圖形的輸出的交互,但是本發明的可替換實施方式可以被執行以另外或可替換地提供另一種形式的支持。此外,雖然根據一些實施方式描述了執行配置、映射以及電子表格形式的交互的示例方式,但是本發明的其他實施方式可以以其他方式執行這些操作,具有不同的界面和/或不同的屏幕布局。此外,電子表格可以支持任意己知的與電子表格相關聯的功能(例如,色彩選擇、字體選擇、條形/餅形/線形圖、數據透視表、保存布局、裝載布局,等)。圖8C-圖8D示出了根據本發明的一個實施方式的自由單元選擇的示例性截屏和使用,而圖8E-圖8F示出了根據本發明的一個實施方式的表格創建的示例性截屏和使用。圖8C-圖8F中的每一個包括屏幕上方的菜單條850、當前生成器圖形中的生成器的類列表852和其在屏幕左下側的輸出、以及用69電子表格似的布局填充屏幕的剩餘部分的配置和映射視窗854。另外,圖8C-圖8F還顯示具有列表852中類的獲取屬性方法的類的示例性列表,如下1)類PERSON(人);2)類PERSON的獲取屬性方法,包括FIRSTNAME(名)(例如,字符串)、LASTNAME(姓)(例如,字符串)、GENDER(性別)(例如,字符串)、HOMEADDRESS(家庭住址)(類地址的實例)、PROFESSIONALADDRESS(工作地址)(類地址的實例)、DATEOFBIRTH(出生日期)(例如,日期)以及AGE(年齡)(例如,整數);3)類地址;4)類ADDRESS的獲取屬性方法,包括CITY(城市)(例如,字符串)、STATE(州)(例如,字符串)、ZIPCODE(郵編)(例如,字符串)。這樣,當前生成器圖形包括類PERSON和類ADDRESS的生成器以及其輸出是類PERSON和ADDRESS的生成器。還值得注意,獲取屬性方法AGE基於獲取屬性方法DATEOFBIRTH的輸出而計算年齡;這樣,根據獲取屬性方法AGE實例化的生成器與根據獲取屬性方法DATEOFBIRTH實例化的生成器相關。圖8C-圖8D示出了輸入到視窗的第一列的連續單元的自由文本,如下顧客、名、姓、出生日期以及年齡;而圖8E-圖8F顯示如下1)輸入到視窗的第一行的自由文本——顧客列表;以及2)輸入到視窗的第二行的連續單元的自由文本名、姓、出生日期以及年齡。圖8C示出了根據本發明的一個實施方式具有可配置交互生成器輸出布局圖形用戶界面模塊840的自由單元選擇的示例性截屏和使用。圖8C顯示了類PERSON和選擇的類PERSON的獲取屬性方法到視窗不同單元的一組映射。具體地,類PERSON映射到自由文本"顧客"右邊的單元。作為該動作的一部分,本發明的一些實施方式提示用戶從多個支持的過濾器中的一個中做出選擇(顯示為過濾器選擇858)(例如,下拉列表,形成滾動箭頭等)。這些過濾器能夠選擇的被選擇的類的生成器的一個或多個實例關鍵字,或選70擇其輸出類是被選擇的類的生成器的一個或多個實例關鍵字。雖然本發明的一些實施方式支持多個過濾器,但是本發明的其他實施方式默認為一個(且允許用戶選擇是否選擇其他不同的)或僅支持一個且不需要執行過濾器選擇858。映射856還顯示類PERSON的獲取屬性方法FIRSTNAME、LASTNAME、DATEOFBIRTH以及AGE分別被映射到與具有對應自由文本的單元鄰近的單元。這種映射可以用任意數量的公知技術來執行,包括在GUI領域拖放、鍵入等。圖8D示出了根據本發明的一個實施方式的具有可配置交互生成器輸出布局圖形用戶界面模塊840的自由單元選擇的另一個示例性截屏和使用。圖8D顯示了類PERSON所映射到的單元允許實例選擇854。具體地,基於用於該單元的過濾器,給用戶機會從包括類PERSON的生成器的實例關鍵字和產生類PERSON的生成器的實例關鍵字的列表中選擇類PERSON的實例。類PERSON的實例的選擇(或單個實例的存在)致使用該實例的對應的獲取屬性方法的輸出自動填充類PERSON的獲取屬性方法被映射到的單元。基於類PERSON的實例的表格填充被標記為858。在圖8D中的示例中,類PERSON的獲取屬性方法FIRSTNAME、LASTNAME、DATEOFBIRTH以及AGE被映射到的單元分別被填充JOHN、SMITH、7/20/1990以及16。圖8D還顯示了獲取屬性方法已經被映射到的視窗的單元可以被覆蓋。通過舉例的方式,圖8D顯示如果獲取屬性方法DATEOFBIRTH被映射到的單元被覆蓋,則該單元使其輸出當前正填充該單元的生成器的輸出的覆蓋、全局執行命令的調用(這導致其輸出當前正填充該單元的生成器的再執行,獲取屬性方法AGE被映射到該單元)以及任意顯示的所需更新。圖8E示出了根據本發明的一個實施方式的具有可配置交互生成器輸出布局圖形用戶界面模塊840的表格創建的示例性截屏和使用。圖8E顯示了區域和方向選擇864被執行以標識具有自由文本——名、姓、出生日期以及年齡——的單元正下方的三行垂直的表格(用圍繞這些單元的粗虛線示出)。本發明的不同實施方式可以以各種方式支持用戶執行該操作,(包括l)用如滑鼠的輸入裝置來選擇區域;以及2)用如彈出式菜單的界面在豎直表格、水平表格或數據透視表之間選擇——假定支持多個方向)。圖8E還顯示被選擇的類PERSON的獲取屬性方法到視窗的不同單元的一組映射866。具體地,映射866顯示類PERSON的獲取屬性方法FIRSTNAME、LASTNAME、DATEOFBIRTH以及AGE分別被映射到具有對應自由文本的單元的正下方的單元。圖8F示出列入根據本發明的一個實施方式的具有可配置交互生成器輸出布局圖形用戶界面模塊840的表格創建的另一個示例性截屏和使用。映射866導致類的實例的相應的獲取屬性方法的輸出自動填充表格的列,類PERSON的獲取屬性方法被映射到該列。基於類PERSON的實例的表格填充被標記為868。在圖8D的示例中,類PERSON的獲取屬性方法FIRSTNAME、LASTNAME、DATEOFBIRTH以及AGE被映射到的列用以下行的數據來填入1)史蒂夫,柯林斯,7/20/1990以及16;2)珍妮弗,亞當斯,7/20/1990和16;以及3)約翰,史密斯,7/20/1985,和21。如圖8D中一樣,圖8F顯示了獲取屬性方法己經映射到的視窗的單元可以被覆蓋。通過舉例的方式,圖8F顯示如果獲取屬性方法DATEOFBIRTH被被映射到的列的第二行的單元被覆蓋,則該覆蓋導致其輸出當前填充該單元的生成器的輸出的覆蓋、全局執行命令的調用(這導致其輸出當前正填充該單元的生成器的再執行,獲取屬性方法AGE被映射到該單元)以及任何顯示的所需更新。圖8C-圖8F示出了由配置和映射圖形用戶界面模塊842生成的示例性屏幕。通過顯現和交互圖形用戶界面模塊846生成的屏幕是相同的,不同在於通過類列表(具有其獲取屬性方法)852,配置和映射視窗854被顯現和交互視窗(未顯示)替代,該顯現和交互視窗包括與顯示的配置和映射視窗854相同的圖像(不同的是映射特性不再可用)。示例性運行時分配方案圖9A-圖9C示出了分配具有面向生成器圖形編程支持的運行時的各種方案。應當理解這些分配方案是示例性的,因此其他方案也在本發明的範圍中。圖9A是示出了根據本發明的一個實施方式的用於分配具有面向生成器圖形編程支持的運行時的第一方案的框圖。在圖9A中,面向對象原始碼905(其包括生成器依賴性聲明)被顯示在具有面向生成器圖形編程支持的運行時910的上面,該運行時910在具有類裝載、動態類實例化、動態單方法調用以及類/方法自省(introspection)的運行時915的上面,運行時915在作業系統920的上面。在圖9A中,運行時910與運行時915—起工作。儘管任意數量的機制可以用於允許運行時910與運行時915—起工作,但元數據功能以舉例的方式被描述。元數據功能允許附加信息被添加到原始碼,所述信息被開發工具使用。例如,用於Java的元數據功能規範將用於注釋欄位、方法以及類的API定義為具有特定屬性,該特定屬性指示它們應當以特殊方式由開發工具、部署工具或運行時庫來處理(Java規範請求175)。在該示例中,對面向對象原始碼905進行編程的程式設計師可以將注釋以生成器依賴性聲明的形式添加到方法。由於這些注釋由運行時915切換到運行時910,因此運行時910指示生成器依賴性聲明的語法。在圖9A中,運行時910和運行時915可以由不同的機構開發和/或分配。圖9B是示出了根據本發明的一個實施方式的用於分配具有面向生成器圖形編程支持的運行時的第二方案的框圖。在圖9B中,面向對象原始碼925(其包括生成器依賴性聲明)被顯示在運行時930(具有類裝載、動態類實例化、動態單方法調用和類/方法自省,以及面向生成器圖形編程支持)的上面,運行時930在作業系統935的上面。與圖9A比較,運行時910和915被合併成單個運行時930。這種合併的結果是,運行時930指示生成器依賴性聲明的語法。因此,對面向對象原始碼925進行編程的程式設計師可以將生成器依賴性聲明添加到所需語法中。圖9c是示出了根據本發明的一個實施方式的用於分配具有面向生成器圖形編程支持的運行時的第三方案的框圖。在圖9C中,面向對象原始碼940(其包括生成器依賴性聲明)被顯示在運行時945(具有類裝載、動態類實例化、動態單方法調用和類/方法自省,以及面向生成器圖形編程支持)的上面。與圖9B比較,運行時920和935被合併成單個實體。這種合併的結果是,作業系統945指示生成器依賴性聲明的語法。因此,對面向對象原始碼940進行編程的程式設計師可以將生成器依賴性聲明添加到所需語法中。雖然描述了實施方式,其中運行時具有類裝載、動態類實例化、動態單方法調用以及類/方法自省,但是可替換實施方式可以包括更多或更少的特徵(例如,實例克隆、動態代理、原始類型轉換等)。示例性優點在本發明的一個實施方式中,為方法聲明生成器依賴性,作為指定使用合適實例而不是用手動調用排序代碼的方法調用排序(其中合適的實例包括作為參量使用的實例、實例方法使用的實例以及類方法使用的元類實例)的方式。有效地,生成一些或所有手動調用排序代碼的工作被替換為1)應用程式員為編寫生成器依賴性聲明所完成的工作;以及2)運行時為發現並建立生成器圖形以及執行這些生成器圖形的生成器所完成的工作。換句話說,之前包含在手動調用排序代碼中的邏輯基於生成器依賴性聲明在運行時期間是可被運行時發現的。因此,生成器依賴性聲明告知運行時具有什麼樣的參量的什麼實例的什麼方法被執行以及為了同步何時執行。儘管編寫運行時的工作相對較大,但是只需要編寫一次就能用於執行為運行時編寫的任何面向對象應用;相反,為了典型應用,編寫生成器依賴性聲明的工作與編寫手動調用排序代碼相比相對較少。減少編程錯誤面向生成器圖形編程一般降低與手動調用排序代碼的調試和/或性能調節相關的耗費。這至少因為應用程式的基礎結構從概念上是操作特定輸入的對象的轉換方法(對象的一個方法的輸出是另一個的輸入,等)的一組非格式化圖形的原因是真實的。生成器依賴性聲明和具有面向生成器圖形編程支持的運行時將這些圖形格式化為生成器圖形。因此,對於每一次改變數據的機會,應用程式員不需要考慮其影響,並編寫手動調用排序代碼以利用合適的輸入使合適的實例的合適的轉換方法以合適的順序被調用。換句話說,對於每一次改變數據的機會,應用程式員不需要考慮哪些圖形受影響,和在這些圖形內的實例的哪些轉換方法受影響。而是,自動生成器圖形生成模塊發現並建立生成器圖形且生成器圖形執行模塊再執行需要反映數據改變的生成器圖形。該自動化幫助應用程式員避免如下錯誤,例如1)以錯誤順序調用合適實例的合適轉換方法;2)忘記包括使圖形中實例的一個或多個所需的轉換方法響應於一些改變的數據而被調用的命令;3)包括使實例的不必要的轉換方法響應於一些改變的數據而被調用的命令(例如,包括用於調用不是受數據改變的影響的圖形一部分的實例的轉換方法的命令;包括用於調用是受數據改變的影響但自身沒有被影響的圖形一部分的實例的轉換方法的命令,等等)。同步化如之前所述,在執行期間的生成器輸出的緩存允許同步化。因此,根據與觀察者模式的比較,生成器依賴性聲明向具有面向生成器圖形編程支持的75運行時通知依賴性,且該運行時確定何時回調哪個生成器。完全解釋任意結果的能力在本發明的一個實施方式中,操練(drilling)/查看模塊(未顯示)被包括作為運行時的一部分。操練/查看模塊提供圖形用戶界面,該圖形用戶界面通過終端用戶的交互允許向下操練生成器圖形(從根節點下行到生成器圖形)以查看生成器圖形的各種生成器的輸出。這允許終端用戶觀察分配到感興趣生成器的輸出的各種輸出,包括數據值和依賴性(由依賴性確定生成器返回)。此外,在本發明的一個實施方式中,操練/査看模塊給終端用戶提供査看生成器的方法內的代碼、生成器的實例的值和/或生成器的類的內容的能力。因此,操練/查看模塊提供多種後置處理活動,包括調試、輸出解釋等。示例性實際應用/技術影響/工業適用性存在不同方面的多種示例性實際應用和本發明的實施方式。例如,作為執行應用程式的一部分,促使從機器存儲介質中取得信息(例如,訪問面向對象原始碼,包括生成器依賴性聲明)、將信息存儲到機器存儲介質(例如,存儲像生成器圖形結構的數據結構等)、硬體處理資源的操作、提供感興趣生成器的輸出(例如,通過圖形用戶界面、存儲到機器存儲介質、傳輸等)等。在某個意義上,預處理行為包括編寫這樣的應用程式和/或提供數據(數據可以表示任意數量的物理和/或實際項,例如金融值、地理值、氣象值、保險統計值、統計值、物理測量、機器狀態值等),而後置處理行為包括結果的提供(所述結果可以表示任意數量的物理和/或實際項,例如金融值、地理值、氣象值、保險統計值、統計值、工業測量、機器控制信息等)。通過具體示例的方式,後置處理行為可以由以下來提供1)圖10的生成器圖形視窗模塊1062,用於以圖形方式顯示顯示運行時生成的當前生成器圖形的表示;和/或2)可配置交互生成器輸出布局圖形用戶界面模塊840(同樣見圖10的可配置交互生成器輸出布局圖形用戶界面模塊1085),用於以圖形方式顯示來自生成器圖形的輸出並與該生成器圖形交互。作為另一個示例,自身具有生成器依賴性聲明的應用程式在被運行時執行時表示物理/實際項並促使上述操作。通過具體示例的方式,這些生成器依賴性聲明響應於運行時對它們的執行而促使數據結構在機器存儲介質中被形成。而且,生成器依賴性聲明和應用程式一起被存儲並從機器存儲介質中和應用程式一起被取得。此外,這些生成器依賴性聲明表示生成器之間的關係,而生成器表示執行的操作(方法)和實例。面向對象編程中的實例可以用於表示物理和/或實際項,而生成器表示在這些描述上被執行的操作。通過另一個示例,一組一個或多個應用程式和運行時實施交叉資產風險管理軟體,包括外幣兌換、資產淨值、利率、信貸、膨脹、商品以及交叉資產複合產品。這些產品範圍從現金和實際普通產品到特殊且複雜的衍生產品。還包括的是一組用於這些產品的數學估價模型,以及它們相關的市場數據、支付和記帳項生成例程和它們的相關可觀察的標定模型以及它們相關的原始輸入。通過另一個示例,一組一個或多個應用程式和運行時可以實施文字處理器、電子數據表、通信/電子郵件軟體、照片查看軟體、病毒掃描軟體、媒體播放器、資料庫伺服器、遊戲、工業應用和/或作業系統。當然,應用程式可以被實施以執行各種其他任務。示例性實施通過圖示的方式,本發明的示例性實施方式將被描述,其支持依賴性、動態依賴性(包括偶然依賴性和訂閱依賴性)、用於快捷依賴性和非快捷依賴性的顯式依賴性確定生成器、用於快捷被聲明依賴性、類關鍵字、實例關鍵字、方法關鍵字、生成器覆蓋/不覆蓋命令(其是設定命令類型)以及全局執行命令的即時依賴性確定生成器。此外,示例性實施方式可選地支持生成器圖形交互視窗模塊和增量執行。當然,本發明的可替換實施方式可以實施更多、更少和/或不同的特徵。圖io是根據本發明的一個實施方式的示例性實施的框圖。在圖10中,虛分界線1000將運行時客戶端1002與具有面向生成器圖形編程支持的運行時間1004隔開。運行時客戶端1002的邏輯執行流包括塊1010、1020、1025、1030以及1035,且具有面向生成器圖形編程支持的運行時間1004分別包括對應的塊1095、1098、1040、1045、1070以及1082;實箭頭線表示從運行時客戶端1002的邏輯執行流的塊1035到具有面向生成器圖形編程支持的運行時間1004的塊1070的直接因果關係,而點箭頭線示出了從運行時客戶端1002的塊IOIO、1020、1025和1030到具有面向生成器圖形編程支持的運行時間1004的塊1095、1098、1040和1045的因果關係。根據本發明的實施方式,這些後來的因果關係可以是直接或間接的。例如,與圖6類似,通過使用命令日誌(未顯示)和/或覆蓋日誌1047可選間接因果關係可以被使用。此外,塊1095和1098是虛線,因為根據本發明的實施方式它們可選地可以是不同塊的一部分(例如,塊1095可以是塊1098的一部分;塊1090可以是塊1040的一部分;塊1095和1090可以是塊1040的一部分)。類似的,塊i045是虛線,是因為根據本發明的實施方式它可選地可以是不同塊的一部分(例如,塊1045可以是塊1070的一部分)。同樣,根據本發明的實施方式塊1049可選地可以是不同塊的一部分(例如,塊1049可以是塊1040的一部分)。在一些實施方式中,運行時1004包括度量獲取模塊1082。該度量獲取模塊1082可選地可以是塊1070的一部分。在圖10中,運行時1002包括類定義IOIO,該類定義包括具有數據1012、方法1014、執行模式設定1015、生成器依賴性聲明1016以及可選的類關鍵78字1090的業務邏輯。類定義1010是面向對象程式語言的類,因此包括用於數據1012和方法1014的定義。執行模式設定1015可以在代碼層指定執行模式,如果之後執行模式設定沒有被覆蓋,則方法在該執行模式下被執行。此外,這些類定義IOIO包括如前所述的用於方法1014的生成器依賴性聲明1016。此外,在本發明的一個實施方式中,每一個類具有用於跟蹤的類關鍵字1090。運行時1004的新的類模塊1095裝載並自省類定義1010(例如,響應於新的類命令)。該裝載和自省可以使用任意數量的公知或將來開發的技術來完成,包括為了優化而選擇性地裝載類的技術。新的類模塊1095裝載類通過運行時1004的類1054來示出。作為裝載和自省類1054的一部分,新的類模塊1095還裝載並自省生成器依賴性聲明1016,如通過類1054中的方法和生成器依賴性聲明1056所示的。新的類模塊1095還保持類跟蹤結構1092,該類跟蹤結構1092用於跟蹤類的類關鍵字。因此,類跟蹤結構1092保持類關鍵字與類1054的引用之間的對應。此外,新的類模塊1095還保持用於使用方法關鍵字跟蹤方法的方法跟蹤結構1058。因此,方法跟蹤結構1058保持方法關鍵字與方法的引用以及關於生成器依賴性聲明的信息之間的對應。此外,新的類模塊1095可以將執行模式設定1015輸入到基於生成器的可配置決定結構1049,該結構1049保持生成器的執行模式。運行時客戶端1002還包括具有實例關鍵字1020的實例實例化命令。運行時1004新的實例模塊1098裝載由具有實例關鍵字1020的實例實例化命令指定的實例(例如,響應於新的實例命令)。該實例的裝載可以使用任意數量的公知或將來開發的技術來完成,包括為了優化而選擇性裝載實例的技術。作為該實例裝載的一部分,新的實例模塊1098使用類關鍵字訪問類跟蹤結構1092從而訪問來自類1054的合適的類。新的實例模塊1098裝載實例可以通過運行時1004的實例1052來示出。新的實例模塊1095還保持用於跟蹤實例的實例關鍵字的實例跟蹤結構1065。因此,實例跟蹤結構1065保持實例關鍵字與實例1052的引用之間的對應。如之前所示,新的類模塊1095可以是新的實例模塊1098的一部分,類1054可以響應於實例實例化命令1020(而不是單獨的新的類命令)被裝載到該新的實例模塊1098中。運行時客戶端1002還包括具有生成器關鍵字1025的生成器實例化命令。運行時1004的自動生成器圖形生成模塊1040裝載由具有生成器關鍵字1025的生成器實例化命令指定的生成器(例如,響應於指定當前組的感興趣生成器的新的生成器命令)。此外,自動生成器圖形生成模塊1040還響應於之前所述的當前組的感興趣生成器發現、建立並可選地解析生成器圖形。在本發明的一個實施方式中,生成器關鍵字包括類關鍵字、實例關鍵字以及方法關鍵字。作為該生成器實例化的一部分,自動生成器圖形生成模塊1040:1)使用類關鍵字來訪問類跟蹤結構1092以訪問來自類1054中的合適的類;2)使用實例關鍵字來訪問實例跟蹤結構1065以訪問來自實例1052中的合適實例;3)使用方法關鍵字訪問方法跟蹤結構1058以訪問合適的生成器依賴性聲明陳述。具有生成器關鍵字1025的生成器實例化命令指定的生成器的實例化和任意被發現的生成器和建立生成器圖形的實例化通過運行時1004的生成器圖形結構1060來示出。因此,在本發明的一個實施方式中,rh目右AnlV腿^i誠々1f^c的^dV班^^yteil/i/厶A卡Si、口66/^dV腿^:糖令壬n;g;卄生成器圖形生成而被發現的關鍵字與表示當前生成器圖形的另外信息一起被存儲在生成器圖形結構1060中。如之前所述,塊1095和1098可以是塊1040的一部分,因此,關於裝載哪些類、實例以及生成器的決定由當前生成器圖形中有什麼生成器來驅動。在該本發明的實施方式中,類、實例以及生成器的裝載可以被優化且是以生成器為中心的。運行時客戶端1002還包括數據準備命令,包括生成器輸出覆蓋/不覆蓋80命令1030。覆蓋/不覆蓋命令包括被覆蓋/不覆蓋的生成器的生成器關鍵字,以及被覆蓋時的覆蓋值。運行時1004的覆蓋生成器輸出模塊1045使由生成器覆蓋/不覆蓋命令指定的生成器被覆蓋/不覆蓋。該因果關係可以間接或直接的。在間接因果關係的情況,覆蓋生成器輸出模塊1045填充覆蓋日誌1047以用於生成器圖形執行模塊1070的使用。在直接因果關係的情況,覆蓋生成器輸出模塊1045訪問生成器圖形結構1060的生成器輸出緩存1097和實例1052。具體地,如參考覆蓋生成器輸出模塊390所描述的,在一個實施方式中,生成器可以被分類為屬性生成器或方法生成器;因此,覆蓋生成器輸出模塊1045可以包括用於被覆蓋的屬性生成器的覆蓋屬性生成器輸出模塊和用於被覆蓋的方法生成器的覆蓋方法生成器輸出模塊(未顯示);屬性方法的覆蓋使覆蓋值被存儲在生成器圖形結構1060的生成器輸出緩存1097中且被存儲在實例1052的合適實例的數據中,而方法生成器的覆蓋使覆蓋值被存儲在生成器輸出緩存1097中。在本發明的一個實施方式中,生成器在生成器圖形初始被執行前可以不被覆蓋,其中生成器將是該生成器圖形的一部分(因此,生成器己經被實例化,從而被自動生成器圖形生成模塊1040指定為感興趣生成器或被發現)。但是,在圖IO所示的實施方式中,生成器可以通過使用生成器覆蓋命令來實例化並覆蓋而在初始執行之前被覆蓋。該被覆蓋的生成器一般通過發現進程來最後成為生成器圖形的一部分(例如,當動態依賴性被解析時)。在本發明的一些實施方式中,該數據準備還可以包括其他類型的設定命令。覆蓋生成器輸出模塊1045被顯示為虛線框,這是因為該覆蓋生成器輸出模塊1045在本發明的可替換實施方式中可以不出現。生成器圖形結構1060還可選地包括用於支持增量執行的本發明的一些實施方式的增量執行標記1080。如之前參考圖3B的增量執行標記382所述,增量執行標記1080用於輔助在初始執行之外的執行上的生成器圖形的增量執行。本發明的不同實施方式以不同的方式使用增量執行標記382。例如,在具有命令日誌的本發明的一個實施方式中,日誌用於跟蹤被添加和/或被修改的生成器,而增量執行標記382用於標記受影響的生成器(被修改或添加的生成器的前身(ancestor),以由此依賴於所述前身)。作為另一個示例,在不具有命令日誌的本發明的一個實施方式中,增量執行標記382用於標記被添加或修改的生成器和被修改或添加的生成器的前身(由此與該生成器相關)。作為另一個示例,在不具有命令日誌的本發明的一個實施方式中,生成器的修改和添加立即被完成且增量執行標記382用於標記為是修改或添加的生成器的前身(因此依賴於所述前身)的生成器。雖然本發明的實施方式已經被描述支持增量執行並使用增量執行標記,但是本發明的其他實施方式支持不適用增量執行標記的增量執行(例如,命令日誌用於跟蹤被添加或修改的生成器,且執行開始生成器的列表被保留在執行開始日誌中;其中生成器圖形執行模塊1070從執行開始生成器開始,且以生成器圖形的前身向上到頂部的方式工作;通過舉例而非限定的方式,本發明的該實施方式在後面參考圖15-25被描述)。根據本發明的一些實施方式,運行時客戶端1002還包括執行模式選擇命令1036。用戶可以使用該執行模式選擇命令1036來通過改變運行時設定結構1048、基於生成器的配置決定結構1049和/或生成器圖形結構1060從而改變執行模式設定。在一個實施方式中,執行模式選擇命令1036改變基於生成器的配置決定結構1049來修改特定類、特定實例、特定方法或以上任意組合的執行模式設定。例如,第一執行模式選擇命令可以將特定類的所有方法的執行模式設定改變到第一執行模式,第二執行模式選擇命令可以改變特定類的特定實例的執行模式設定,第三執行模式選擇命令可以改變特定方法的執行模式設定,第四執行模式選擇命令可以改變特定方法和特定實例的執行模式設定,等等。可替換地,用戶可以使用執行模式選擇命令1036來通過改變生成器圖形結構1060以逐個生成器為基礎來改變執行模式設定。由於生成器圖形結構1060中的每一個生成器具有生成器執行模式設定,因此執行模式選擇命令1036可以提供標識特定生成器的生成器關鍵字和特定生成器的所需執行模式設定,從而使運行時1004將特定生成器的執行模式設定改變到所需的執行模式設定。運行時客戶端1002還包括全局執行命令1035。運行時1004的新的生成器圖形執行模塊1070執行生成器圖形。生成器執行模塊1070可以基於來自基於生成器的配置結構1049的生成器的對應的執行模式來執行生成器圖形中的每一個生成器。在一些實施方式中,生成器執行模塊1070可以覆蓋來自基於生成器的配置結構1049的預先確定的生成器的執行模式。例如,如果來自基於生成器的配置結構1049的執行模式不能被運行時1004支持,則生成器執行模塊1070可以覆蓋該執行模式。在一些實施方式中,運行時1004執行三種執行模式,即多進程、多線程、以及本地執行。因此,生成器執行模塊1070包括並行化模塊1076、多進程模塊1077、多線程模塊1078以及本地執行模塊1079。對於每一個生成器,自動生成器圖形生成模塊1040可以從基於生成器的配置決定結構1049中找到對應的執行模式,並且,如果對應的執行模式沒有被運行時設定結構1048中的運行時設定覆蓋,則自動生成器圖形生成模塊1040可以在生成器圖形結構1060中相應地設定生成器執行模式設定。基於生成器圖形結構1060中的生成器執行模式設定,並行化模塊1076可以發送生成器到多進程模塊1077、多線程模塊1078以及本地執行模塊1079中的對應的一者。然後在多進程模塊1077、多線程模塊1078和/或本地執行模塊1079為生成器來實例化任務。任務是計算工作的邏輯高電平的、離散的、無關的部分。任務一般作為程序由處理器執行。83在一些實施方式中,如果執行模式是多進程,那麼並行化模塊1076可以發送生成器到多進程模塊1077。多進程模塊1077可以串行化對應於生成器的任務和生成器的輸入,並將串行化的任務和輸入添加到作業(job)中。當對應於準備好被執行的具有多進程執行模式的所有生成器的任務已被添加到作業時,多進程模塊1077可以發送該作業到將網格分配器1081以被轉發到處理器的網格。然後網格中的一些或所有的處理器可以遠程執行作業中的任務。如果執行模式是多線程,則並行化模塊1076可以發送生成器到多線程模塊1078。該多線程模塊1078可以啟動線程池(threadpool)機制並將對應於該生成器的任務供給到將被執行的可用線程。如果,執行模式是本地執行,則並行化模塊1076可以發送生成器到本地模塊1079。該本地模塊1079然後可以執行在當前運行時線程中的任務。在一些實施方式中,如果沒有為生成器指定執行模塊,則並行化模塊1076可以默認發送生成器到多進程模塊1077、多線程模塊1078以及本地執行模塊1079中的預先確定的一者。另一方面,如果生成器的類定義1010包括用於生成器的執行模式設定1015,則並行化模塊1076可以根據執行模式設定1015發送生成器,除非該執行模式設定1015被覆蓋。執行模式設定1015可以以各種方式被替換。在一個實施方式中,執行模式選擇命令1036在類、方法、實例或以上任意組合的基礎上改變基於生成器的可配置決定結構1049中的執行模式設定,以覆蓋執行模式設定1015。在一個實施方式中,執行模式選擇命令1036以逐個生成器為基礎來改變生成器圖形結構1060中的執行模式設定從而覆蓋使用基於生成器的可配置決定結構1049確定的執行模式設定。在一個實施方式中,執行模式選擇命令1036在運行時設定結構1048中改變運行時全局水平上的執行模式設定,以覆蓋生成器圖形結構1060中的執行模式設定。這樣,生成器圖形執行模塊1070修改生成器輸出緩存1097(在屬性生成器和方法生成器的情況)、使用增量執行標記1080(如果存在)以及修改實例1052的數據(在屬性方法的情況)。在一些實施方式中,度量獲取模塊1082可以在執行生成器期間獲取度量。獲取的度量可以存儲到生成器圖形結構1060的度量1083中。注意,度量可以在生成器的基礎上被獲取,且由於生成器包括類、方法以及實例的唯一組合,因此獲取的度量可以是基於類-實例-方法。此外,獲取的度量可以基於任務和/或作業。在一些實施方式中,獲取的度量包括用於不同用途的不同類型的度量,例如用於監控計算環境、用於監控遠程執行時間、用於監控本地執行時間、用於監控數據流、用於監控總執行時間、用於對不同類型的執行進行基準測試(benchmark)等。例如,為了監控計算環境,可以獲得度量,例如在多進程中並專用於生成器的執行的遠程網格上的可用處理器或引擎的數量,和在本地和遠程處理時間之間觀察到的經驗比。例如,如果本地處理器和遠程處理器沒有過度裝載其他任務,則該經驗比可以接近兩個處理器之間的頻率比。為了監控遠程執行時間,例如遠程處理時間、遠程反串行化時間以及遠程串行化時間的度量可以被獲取。為了監控本地執行時間,例如本地執行時間、本地反串行化時間以及本地串行化時間的度量可以被獲取。為了監控數據流,例如串行化輸入對象的大小和串行化輸出對象的大小的度量可以被獲取。當在遠程處理器上處理數據時,輸入和輸出數據通過網絡被交換。遠程處理的效率直接聯繫到被交換的數據量。監控數據流的大小可以提供有用信息以幫助減少或避免使被交換的數據結構過載多餘或沒用的信息。為了監控總執行時間,例如執行特定生成器的總時間的度量可以被獲取。在一些實施方式中,執行特定生成器的總時間可以是本地串行化時間、遠程反串行化時間。遠程處理時間、遠程串行化時間以及本地反串行化時間的總和。該時間可以以逐個任務為基礎被測量,且在屬於單個作業的所有任務間是相當連貫的(即,時間很接近)。為了對不同類型的執行進行基準測試,例如加速和85效率的比較度量可以從獲取的其他度量中得到。加速是並行算法比對應的順序算法快多少的測量。為了特定作業加速被定義為屬於作業的所有任務的本地處理時間(如果本地執行)的總和除以使用並行執行方式(例如多進程)的作業執行時間(作業總時間)。理論上,在加速基本等於處理器數量時達到理想加速,也就是說,當串行化時間和反串行化時間近似O,或通過良好的處理器效率比進行補償時。效率等於100*加速/處理器數量。另外,在理論上的理想情況,其中本地和遠程處理器一樣時,理想效率接近100%。之前已經論述過用於執行生成器圖形的生成器並這裡可適用的各種技術。例如,在實施命令日誌的實施方式中,命令日誌被使用然後生成器圖形被執行。此外,在支持未解析依賴性的可能性的本發明的實施方式中,生成器圖形執行模塊1070包括動態依賴性模塊1075,該動態依賴性模塊1075可以調用自動生成器圖形生成模塊1040。圖10還示出了提供機制(例如GUI)的可選生成器圖形視窗模塊1062,通過該模塊1062程式設計師/用戶可以查看生成器圖形和生成器圖形結構的生成器輸出。此外,圖10示出了可選的可配置交互生成器輸出布局圖形用戶界面模塊1085,用於提供圖形用戶界面(GUI)(包括塊1030和1035的動態調用),該圖形用戶界面表示可配置交互生成器輸出布局圖形用戶界面模塊840。在使用命令日誌的本發明的實施方式中,不同的觸發用於觸發不同的動作。例如,響應於顯式命令(開始記錄和結束記錄)、顯式全局執行命令(記錄在啟動且在每個顯式總執行命令後自動開始,且響應於接下來的顯式總執行命令處理每一個日誌)、顯式數據準備命令等,生成器實例化命令可以被記錄並批處理。類似地,響應於顯式全局執行命令、第一獲取命令、每一個獲取命令等,數據準備命令可以被記錄並批處理。示例性跟蹤結構圖11A-圖IIG是示出了根據本發明的一個實施方式的圖IO中的數據結構的示例性內容的框圖。雖然圖11A-圖IIG將這些數據結構作為表格示出,但是應當理解可以使用合適的數據結構(例如,哈希映射表(hashmap)、集合、列表等)。圖IIA是根據本發明的一個實施方式的圖10中的類跟蹤結構1092的示例的框圖。在圖11A中,類關鍵字列1110和類引用列1115被顯示為分別用於存儲類關鍵字和裝載的類的對應的引用。圖IIB是根據本發明的一個實施方式的圖IO中的實例跟蹤結構1065的示例的框圖。在圖11B中,實例關鍵字列1120和實例引用列1125被顯示用於分別存儲實例關鍵字和對應的實例引用。在本發明的實施方式中,其中實例關鍵字在所有的類之間不需要是唯一的,實例跟蹤結構還包括類關鍵字或實例的類的引用。圖IIC是根據本發明的一個實施方式的圖IO中的生成器圖形結構1060的示例的框圖。在圖11C中,類引用列1135、實例引用列1140以及方法引用列1145被顯示為分別用於存儲組成當前生成器圖形的當前生成器的引用。這些引用可以採用各種形式。例如,這些列可以分別存儲類1054(或可替換的1092)的引用、實例1052(或可替換的1065)的引用和方法1056(或可替換的1058)的引用。雖然在本發明的一個實施方式中,這些列存儲引用,但在本發明的可替換實施方式中,這些列中的一個或多個可以存儲關鍵字。另外,圖11C包括父生成器引用列1150(對每一條連結包括父生成器引用和依賴性確定生成器引用)和子生成器引用列1160(對每一條連結包括子生成器引用、依賴性確定生成器引用、連結模式以及粘附連結指示符)。每一個生成器在列1160中可以具有O個或多個子生成器連結。列1160中的每一個子生成器連結包括d子生成器引用,該子生成器引用是生成器圖87形結構的其他行的引用,用於根據生成器依賴性聲明表示生成器依賴性;2)依賴性確定生成器引用,其是生成器圖形結構的另一行的引用,並表示已經創建子連結的依賴性確定生成器;以及3)具有生成器依賴性類型的連結模式,用於標識生成器依賴性是否是參量、欄位或排序依賴性的結果(見關於圖7A-圖7F的論述),且如果是參量,則為生成器依賴性的參量ID;和4)粘附指示符,用於指示連結模式是向上聲明依賴性的結果(在支持向上聲明依賴性的本發明的實施方式中)或粘附訂閱的結果(在支持粘附訂閱的本發明的實施方式中)且不能通過該生成器的生成器參量依賴性聲明被修改(即,生成器存儲在包含粘附指示符的列的行中)。每一個生成器在列1150中具有0個或多個父生成器連結。列1150中每一個父生成器連結包括1)父生成器引用,該父生成器引用依照另一個生成器的子生成器引用存儲回引用(即,生成器圖形結構的另一行的引用,用於表示依賴於該生成器的父生成器);以及2)依賴性確定生成器引用,其是生成器圖形結構的另一行的引用並表示已經創建父體連結的的依賴性確定生成器。因此,當連結被創建時,子生成器行的父生成器連結列和父生成器行的子生成器連結列被修改以表示連結(且依賴性確定生成器引用在這兩者中相同)。在本發明的實施方式中,由於一個生成器圖形中或不同的生成器圖形中的多條路徑可以包括給定的生成器,因此對於給定生成器可以有多條父生成器連結。此外,圖11C包括生成器輸出緩存和覆蓋生成器輸出修改列1170,用於存儲當前生成器輸出和生成器是被覆蓋的還是不被覆蓋的輸出值的指示。另外,圖11C包括增量執行標記1180用於存儲增量執行標記,如之前所述。在一些實施方式中,圖11C包括生成器執行模式設定列1173,用於存儲生成器圖形結構1060中每一個生成器的執行模式設定。例如,執行模式設定可以是多進程、多線程以及本地處理中的一者。此外,圖IIC包括生成器度量列1175,用於存儲生成器圖形結構1060中每一個生成器的度量。使用度量獲取模塊1082在逐個生成器的基礎上獲取生成器度量。獲取度量的處理的一些實施方式的細節在下面進行論述。圖IID是根據本發明的一個實施方式的圖10中方法跟蹤結構1058的示例的框圖。在圖11D中,方法關鍵字列1190和方法引用列1192被顯示用於分別存儲方法關鍵字和被裝載類的方法的對應引用。此外,圖IID還包括參量依賴性列1194、欄位依賴性列1196、排序依賴性列1195、向上依賴性列1193、弱約束依賴性列1199、輸出類列1197和包括默認執行模式的可選的附加注釋列1198。參量依賴性列1194、排序依賴性列1195、向上依賴性列1193、弱約束依賴性列1199和欄位依賴性列1196存儲從方法的生成器依賴性聲明陳述中解析的生成器依賴性信息(例如,見圖7A的705),而輸出類列1197存儲關於方法的輸出的輸出類的信息(通過方法的籤名可確定-例如,見圖7A的710)。在本發明的一些實施方式中使用的參量依賴性列1194、欄位依賴性列1196、排序依賴性列1195、向上依賴性列1193、弱約束依賴性列1199的示例性內容在後面提供。圖11E是根據本發明的一個實施方式的串行化形式本地映射的示例的框圖。圖11E中的串行化形式本地映射包括串行化形式標識符(ID)列1112、輸入生成器關鍵字列1113、基礎(underlying)類關鍵字和實例關鍵字列1114、串行化形式1116、串行化形式大小1117以及串行化時間1118。在一些實施方式中,串行化形式ID、輸入生成器關鍵字、基礎實例關鍵字以及串行化形式被用於由運行時1004實施並行化。該實施的細節在下面論述。在一些實施方式中,運行時1004實施植入以基於生成器獲取度量。因此,運行時1004可以存儲在串行化形式本地映射中虛線所指示的列中的串行化形式大小和串行化時間。植入的細節在下面論述。圖IIF是根據本發明的一個實施方式的圖10中運行時設定結構1048的示例的框圖。表格包括初始執行模式列1121和最終執行模式列1123。如果執行模式在運行時全局水平上沒有被覆蓋,則最終的執行模式與初始執行模式相同。另一方面,如果執行模式在運行時全局水平上被覆蓋,則最終執行模式與初始執行模式不相同。例如,如果運行時1004不支持多進程,則通過將本地執行指派為最終的多進程執行模式,可以在運行時全局水平上覆蓋多進程。圖IIG是圖10中基於生成器的配置決定結構1049的示例的框圖。表格包括類關鍵字列1182、方法關鍵字列1184、實例關鍵字列1186、執行模式設定列1188。執行模式選擇命令1036可以基於類、方法、實例或以上任意組合來修改基於生成器的配置決定結構中的執行模式設定。因此,根據本發明的一個實施方式,類關鍵字列1182、方法關鍵字列1184以及實例關鍵字列1186中的一者或多者在特定行中可以為空。遠程計算如之前所述,本發明的一個實施方式支持多進程執行模式。為了支持多進程,運行時通過串行化生成器的任務和每一個生成器的輸入和/或基礎實例,並發送串行化形式到由網格以由網格中的處理器來處理,從而與處理器的網格交互。圖12A是示出了根據本發明的一個實施方式的支持多進程的圖10的另外的細節的框圖。虛分界線1200的左邊是具有面向生成器圖形編程支持的運行時1004。虛分界線1200的右邊是網格1290。在運行時1004側,圖12A包括來自圖10的生成器圖形執行模塊1070(包括並行化模塊1076、多進程模塊1077、多線程模塊1078以及本地執行模塊1079)和網格分配器1081。在網格1290側,圖12A包括遠程計算模塊1270。根據本發明的一個實施方式,如果生成器的執行模式是多進程,則並行化模塊1076發送生成器到多進程模塊1077。該多進程模塊1077實例化可以包括多個任務的作業。多進程模塊1077可以實例化生成器的任務。多進程模塊1077還可以串行化任務以及生成器的輸入和/或生成器的基礎實例。然後多進程模塊1077可以將串行化形式的任務添加到作業。多進程模塊1077可以發送該作業到網格分配器1081。然後網絡分配器1081可以發送該作業到網格1290的遠程計算模塊1270。網格1290處理作業的細節在以下論述。在處理完作業後,作業中的任務的串行化輸出和/或實例被返回到網格分配器1081。該網格分配器1081可以轉發作業中的任務的串行化輸出和/或實例到被反串行化的多進程模塊1077。動態生成器依賴性如之前所述,本發明的一個實施方式支持非動態和動態生成器依賴性。在不同的實施方式可以支持不同類型的動態生成器依賴性的情況下,本發明的一個實施方式支持偶然和訂閱類型的動態生成器依賴性。因此,非偶然(靜態)、非訂閱(直接)依賴性是非動態依賴性。圖12B是示出了根據本發明的一個實施方式的支持偶然和訂閱類型的動態生成器依賴性的圖10的另外的細節的框圖。圖12B包括來自圖10的虛分界線1000;類定義,該類定義包括業務邏輯1010(包括數據1012、方法1014以及生成器依賴性聲明1016);新的類模塊1095;類1054(包括方法和生成器依賴性聲明1056);新的實例模塊1098;實例1052、實例跟蹤結構1065、自動生成器圖形生成模塊1040、生成器圖形結構1060、以及生成器圖形執行模塊1070(包括動態依賴性模塊1075)。圖12B顯示生成器依賴性聲明1016可選地包括偶然依賴性1210、訂閱依賴性1220和多個生成器1215。這裡,多個生成器1215是指返回生成器集合的生成器依賴性的能力。另外,圖12B包括自動生成器圖形生成模塊1040中的訂閱模塊1240和偶然模塊1230,用於處理偶然依賴性1210和訂閱依賴性1220。圖12B還顯示訂閱模塊1240訪問訂閱日誌1250。此外,動態依賴性模塊1075包括偶然模塊1260和訂閱模塊1265,用於處理偶然依賴性1210和訂閱依賴性1220。訂閱模塊1265訪問訂閱日誌1250。偶然和訂閱依賴性的以下描述在使用類DEP(依賴性的簡寫)的本發明的實施方式的上下文中完成,所述類DEP被依賴性確定生成器返回並被具由面向生成器圖形編程支持的運行時分析。類DEP包括以下欄位1)TYPE,可以被設定成訂閱、非訂閱向下聲明(不是訂閱的子生成器)或非訂閱向上聲明(不是訂閱的父生成器);2)PROD,用於非訂閱向下聲明的依賴性並是子生成器的集合(這樣,其可以存儲O個或多個生成器);3)SUBTYPE,用於訂閱依賴性且被設定成指示訂閱依賴性的類型(用於支持多種類型的訂閱的本發明的實施方式;這裡描述的本發明的實施方式可以支持兩種類型一粘附和吸收,可替換實施方式可以支持更多、更少和/或不同的訂閱類型);4)SUBCRIT,用於訂閱依賴性並被設定成指示訂閱標準;5)PARLINKMODE,用於粘附訂閱依賴性和非訂閱向上聲明依賴性並被設定成指示應當是父生成器的什麼連結模式;6)PARCLASS,用於粘附訂閱依賴性和非訂閱向上聲明依賴性並被設定成指示應當是父生成器的什麼類(例如,類關鍵字);7)PARMETHOD,用於粘附訂閱依賴性和非訂閱向上聲明依賴性並被設定成指示應當是父生成器的什麼方法(例如,方法關鍵字);以及8)PARINSTANCE,用於粘附訂閱依賴性和非訂閱向上聲明依賴性且被設定成指示應當是父生成器的什麼實例(例如,實例關鍵字)(如果PARINSTANCE是左空白,則子生成器的實例關鍵字用於父生成器)。可替換實施方式在粘附訂閱依賴性和/或非訂閱向上聲明依賴性的情況下可以使用父生成器的集合(集合中的每一項保持PAR—CLASS,PAR—INSTANCE,PAR—METHOD,PAR—LINKMODE)。當然,本發明的其他可替換實施方式可以使用不同的結構來返回依賴性。偶然依賴性在本發明的一個實施方式中,非偶然和偶然的生成器依賴性都被支持。非偶然生成器依賴性是不依賴於其他生成器的輸出的依賴性,而偶然生成器依賴性是依賴於其他生成器的輸出的依賴性。雖然本發明的一個實施方式支持非偶然和偶然的生成器依賴性,但是可替換實施方式僅支持非偶然或偶然的(偶然生成器依賴性可以最初由默認值驅動)。如之前所述,生成器可以被視為多個標識符的集合,一個標識符用於每一個指定粒度的附加層。在本發明的一個實施方式中,在一組標識符中的任意一個或所有的標識符可以基於當前數據值有條件地被確定的情況下,偶然生成器依賴性可以是偶然的。例如,第一偶然生成器依賴性可以僅使實例標識符被有條件確定(類和方法標識符是固定的),而第二偶然生成器依賴性可以使類、實例和方法標識符被有條件確定。雖然在本發明的一個實施方式中,偶然生成器依賴性的多個標識符的所有標識符是有條件的,但是本發明的可替換實施方式可以以不同的方式被實施(例如,只允許多個標識符的子集是有條件的)。圖13A-圖13J是示出了根據本發明的一個實施方式的偽代碼和示例性生成器的框圖。此外,圖13A-圖13J中所示的實施方式使用用於偶然和非偶然依賴性的相同的依賴性確定機制。這樣,出於解釋的目的,圖13A-圖13J中的一些示例是非偶然依賴性的示例,而其他是偶然生成器依賴性的示例。非偶然生成器依賴性是其中依賴性是關於依賴性確定生成器的生成器依賴性,所述依賴性確定生成器為無關生成器(例如,在本發明的一個實施方式中,依賴性類型由於其生成器依賴性聲明為空而是可標識的);而偶然生成器依賴性是其中依賴性是關於依賴性確定生成器的生成器依賴性,所述依賴性確定生成器為相關生成器(例如,在本發明的一個實施方式中,依賴性類型由於其生成器依賴性聲明不為空而是可標識的)。此外,圖13A-圖13J中帶圈的數字和字母用於示出根據本發明的實施方式執行操作的順序。另外,圖13A-圖13J中的注釋X::Y::Z用於表示生成器關鍵字,所述生成器關鍵字由類關鍵字(X)、實例關鍵字(Y)以及方法關鍵字(Z)組成。另外虛線圈和虛箭頭線表示在本發明的一些實施方式中沒有被執行的操作。特別地,如果用於給定依賴性的無關依賴性確定生成器的執行經常返回相同的依賴性(例如,無關依賴性確定生成器),則本發明的一些實施方式中的該依賴性確定生成器在生成器圖形中被執行但是不被實例化和連結。顯式依賴性確定生成器圖13A示出了根據本發明的一個實施方式的使用非快捷、非動態(非偶然、非訂閱)依賴性的方法的生成器依賴性聲明的偽代碼;而圖13B是示出了根據本發明的一個實施方式的示例性非快捷、非動態(非偶然、非訂閱)生成器依賴性的框圖。圖13A顯示1)方法al305的生成器依賴性聲明陳述1300,其中該生成器依賴性聲明陳述1300包括到生成器CW::IY::BETA的生成器依賴性;以及2)方法e1315的生成器依賴性聲明陳述1310,其中該生成器依賴性聲明1310為空,且方法PD15返回類DEP的實例作為參量。方法P1315包括生成器依賴性聲明代碼1320,該代碼1320將依賴性類型(DEP.TYPE)設定成非訂閱向下聲明,將依賴性生成器(DEP.PROD)設定成生成器13,並返回DEP。在圖13A中,帶圈的1指示生成器依賴性聲明1300被訪問(例如,由於基於方法a1305的生成器(感興趣生成器)的命名、由於基於方法a1305的生成器(作為感興趣生成器的子代)的自動發現,等)。圖13B中帶圈的2顯示生成器C0::I0::ALPHA基於方法a1305被實例化。圖13A中帶圈的3指示到生成器CW::IY::BETA的生成器依賴性被處理以確定生成器依賴性,且由此帶圈的4指示生成器依賴性聲明1310被訪問。圖13中帶虛線圈的5顯示生成器CW::IY::BETA被實例化為依賴性確定生成器1380。圖13B中帶虛線圈的6指示生成器CO::IO::ALPHA在生成器圖形中被連結以指示生成器94CW::IY::BETA是子生成器。圖13B中帶圈的7指示生成器CW::IY::BETA被執行並返回DEP以標識生成器13。帶圈的8指示生成器13被實例化,而帶圈的9指示生成器13在生成器圖形中作為子生成器被連結到生成器C0::I0::ALPHA。在圖13B中,生成器C0::I0::ALPHA和生成器13是標準生成器13S5(不是依賴性確定生成器)。圖13C示出了根據本發明的一個實施方式的使用非快捷、偶然、非訂閱的生成器依賴性的方法的生成器依賴性聲明的偽代碼;而圖13D是示出了根據本發明的一個實施方式的示例性非快捷、偶然、非訂閱的生成器依賴性的生成器的框圖。此外,圖13D涉及圖5A的生成器5、7A和7B,以及生成器5至生成器7A的動態依賴性的解析。圖13C顯示1)用於方法a1305的生成器依賴性聲明陳述1300,其中生成器依賴性聲明陳述1300包括生成器CW::IY::BETA的生成器依賴性;2)用於方法PI315的生成器依賴性聲明陳述1325,其中該生成器依賴性聲明陳述1325包括到生成器CU::IV::DELTA的生成器依賴性,且其中方法P1315返回作為參量的類DEP的實例;3)用於方法S(delta)1334的生成器依賴性聲明陳述1332,其中生成器依賴性聲明陳述1332為空,且方法S1334返回作為參量的類DEP的實例;以及4)用於方法Y(gamma)1340的生成器依賴性聲明陳述1338,其中生成器依賴性聲明陳述1338為空,且方法Y1340返回變量X(其中X來自外部源、默認值(顯式或類中的常量))。方法P1315包括生成器依賴性聲明代碼1330,該代碼1330將DEP.TYPE設定成非訂閱向下聲明,依據生成器CX::IZ::GAMMA的輸出將DEP.PROD設定成生成器7A或7B,並返回DEP。方法S1332包括生成器依賴性聲明代碼1336,該代碼1336將DEP.TYPE設定成非訂閱向下聲明,將DEP.PROD設定成生成器CX::IZ::GAMMA,並返回DEP.PROD。在圖13C中,帶圈的1指示生成器依賴性聲明1300被訪問(例如,由95於基於方法a1305的生成器(作為感興趣生成器)的命名、由於基於方法a1305的生成器(作為感興趣生成器的子代)的自動發現,等等)。圖13D中帶圈的2顯示生成器5基於方法a1305被實例化。圖13C中帶圈的3指示到生成器CW::IY::BETA的生成器依賴性被處理以確定生成器依賴性,且由此帶圈的4指示生成器依賴性聲明1325被訪問。圖13D中帶圈的5顯示生成器CW::IY::BETA被實例化作為依賴性確定生成器1380。圖13D中帶圈的6指示生成器5在生成器圖形中被連結以指示生成器CW::IY二BETA是子生成器。圖13C中帶圈的7指示到生成器CU::IV::DELTA的生成器依賴性被處理以確定生成器依賴性,且由此帶圈的8指示生成器依賴性聲明1332被訪問。圖13D中帶虛線圈的9顯示生成器CU::IV::DELTA被實例化作為依賴性確定生成器1380。圖13D中帶虛線圈的10指示CW::IY::BETA在生成器圖形中被連結以指示生成器CU::IV::DELTA是子生成器。圖13D中帶圈的11指示生成器CU::IV::DELTA被執行並返回DEP以標識CX::IZ::GAMMA。帶圈的12指示生成器CX::IZ::GAMMA被實例化,而帶圈的13指示生成器CX::IZ::GAMMA作為子生成器在生成器圖形中被連結到生成器CW::IY::BETA。在圖13D中,帶圈的A指示生成器CX::IZ::GAMMA被執行並返回X到生成器CW::IY::BETA,而帶圈的B指示生成器CW::IY::BETA返回DEP以標識生成器7A;帶圈的C指示未解析的餘項(方法3)1390現在被解析,且生成器7A被實例化,而帶圈的D指示生成器5到生成器7A的連結。在圖13D中,生成器CX::IZ::GAMMA、5以及7A是標準生成器1385。即時(Onthefly)依賴性確定生成器圖13E示出了根據本發明的一個實施方式的使用非快捷、偶然、非訂閱96的生成器依賴性和快捷、偶然、非訂閱的生成器依賴性的方法的生成器依賴性聲明偽代碼;而圖13F是示出了根據本發明的一個實施方式的非快捷、偶然、非訂閱的生成器依賴性和快捷、偶然、非訂閱的生成器依賴性的生成器的框圖。與圖13D類似,圖13F涉及圖5A的生成器5、7A和7B以及生成器5到生成器7A的動態依賴性的解析。圖13E-圖13F與圖13C-圖13D相同,不同之處在於1)生成器依賴性聲明陳述1342替換生成器依賴性聲明陳述1325;2)方法fly1344替換方法S1334;以及3)生成器CW::IY::FLY替換生成器CU::IV::DELTA。生成器依賴性聲明陳述1342包括到CX::IZ::GAMMA的快捷生成器依賴性。因此,圖13E中帶圈的4現在指示生成器依賴性聲明1342被訪問。圖13E中帶圈的7現在指示到生成器CX::IZ::GAMMA的快捷生成器依賴性被處理以確定生成器依賴性,且由此運行時基於方法fly1344即時調用依賴性確定生成器CW::IY::FLY。帶圈的8現在指示生成器依賴性聲明1332被訪問。圖13F中帶虛線圈的9現在顯示生成器CW::IY::FLY被實例化。圖13F中帶虛線圈的10指示生成器CW::IY::BETA在生成器圖形中被連結以指示生成器CW::IY::FLY是子生成器。圖13F中帶圈的11指示生成器CW::IY::FLY被執行且返回DEP以標識CX::IZ::GAMMA。圖13E-圖13F中的餘項與圖13C-圖13D中的相同。依賴性確定生成器CW::IY::FLY的運行時生成即時減輕了應用程式員必須編寫顯式生成器依賴性聲明代碼並基於該代碼實例化依賴性確定生成器的麻煩。此外,其還允許程式設計師為方法P1315在生成器依賴性聲明陳述中直接規定生成器CX::IZ::GAMMA的依賴性,而不是規定依賴性確定生成器CU::IV::DELTA。快捷技術可以用於多種情況,且可以另外具有多種格式。例如,雖然在圖13E-圖13F中快捷是非偶然(其直接標識子生成器)且是在用於方法的生成器依賴性聲明陳述中,其中父依賴性確定生成器基於該方法,但是其他情況和格式可以被顯示如下1)圖I-圖J示出快捷的使用,該快捷是非偶然的且在用於方法的生成器依賴性聲明陳述中,其中父標準生成器基於該方法;以及2)圖13G-圖13H示出兩個快捷的使用,其中一個是偶然的且是用於方法的生成器依賴性聲明陳述的一部分,其中依賴性確定生成器基於該方法。圖13G示出根據本發明的一個實施方式的使用快捷、偶然、非訂閱的生成器依賴性和快捷、非偶然、非訂閱的生成器依賴性的方法的生成器依賴性聲明的偽代碼;而圖13H是示出根據本發明的一個實施方式的示例性快捷、偶然、非訂閱的生成器依賴性和快捷、非偶然、非訂閱的生成器依賴性的生成器的框圖。圖13G顯示l)用於方法a1305的生成器依賴性聲明陳述1345,其中生成器依賴性聲明陳述1345包括到生成器〈P〉GETC1::I1::M1的快捷、偶然生成器依賴性;2)用於方法flyl1355的生成器依賴性聲明陳述1350,其中生成器依賴性聲明陳述1350包括到生成器C0::I0::GETC1的快捷、非偶然生成器依賴性,且方法flyl1355返回作為參量的DEP的實例;3)用於方法fly21362的生成器依賴性聲明陳述1332,其中方法fly21362返回作為參量的DEP的實例;以及4)用於方法getcl1370的生成器依賴性聲明陳述1365,其中方法getcl1370返回具有值CX或CY的C1。響應於快捷依賴性々〉GETC1::I1::M1(指示該快捷被用於類關鍵字)運行時提供方法FLY11355及其生成器依賴性聲明陳述1350。方法flyl1355包括生成器依賴性聲明代碼1360,該代碼1360將DEP.TYPE設定成非訂閱向下聲明,依據生成器C0::I0::GETC1的Cl輸出值將DEP.PROD設定成生成器CX::I1::M1或CY::I1::M1,並返回DEP。雖然在圖13H的示例中〈P〉用於指定其是偶然的生成器的類關鍵字,但是本發明的可替換實施方式可以使用其他語法。此外,雖然在圖13H的示例中,〈P〉用於指定其是偶然的生成器的類關鍵字,但是本發明的一個實施方式支持具有多個和/或不同的標識符,所述標識符組成以這種方式被指示為偶然的生成器關鍵字。在圖13G中,帶圈的1指示生成器依賴性聲明1345被訪問(例如,由於基於方法a1305的生成器(作為感興趣生成器)的命名,由於基於方法a1305的生成器(作為感興趣生成器的子代)的自動發現,等等)。圖13H中帶圈的2顯示生成器C0::I0::ALPHA基於方法a1305被實例化。圖13G中帶圈的3指示快捷生成器依賴性被處理以確定生成器依賴性且運行時提供方法flyll355;且由此,帶圈的4指示生成器依賴性聲明1350被訪問。圖13H中帶圈的5顯示生成器C0::I0::FLY1被實例化作為依賴性確定生成器1380。圖13H中帶圈的6指示生成器CO::IO::ALPHA在生成器圖形中被連結以指示生成器C0::I0::FLY1是子生成器。圖13G中帶圈的7指示到生成器C0::I0::GETC1的快捷生成器依賴性被處理以確定生成器依賴性且運行時提供方法fly21362,且由此,帶圈的8指示生成器依賴性聲明1332被訪問。圖13H中帶虛線圈的9顯示生成器C0::I0::FLY2被實例化。圖13H中帶虛線圈的10指示生成器C0::I0::FLY1在生成器圖形中被連結以指示生成器C0::I0::FLY2是子生成器。圖13H中帶圈的11指示生成器C0::I0::FLY2被執行並返回DEP以標識生成器C0::I0::GETC1。帶圈的12指示生成器C0::I0::GETC1被實例化,而帶圈的13指示生成器C0::I0::GETC1在生成器圖形中被連結到作為子生成器的生成器C0::I0::FLY1。在圖13H中,帶圈的A指示生成器C0::I0::GETC1被執行並返回C1=CX到生成器C0::I0::FLY1,而帶圈的B指示生成器C0::I0::FLY1返回DEP以標識生成器CX::I1::M1;帶圈的C指示未解析的餘項(方法flyl)1390現在被解析,且帶圈的D指示生成器C0::I0::ALPHA到生成器CX::I1::M1的連結。在圖13H中,生成器C0::I0::GETC1、CO::IO::ALPHA以及CX::I1::M1是標準生成器1385。依賴性確定生成器C0::I0::FLY1和C0::I0二FLY2的運行時產生即時減輕了應用程式員必須編寫顯式生成器依賴性聲明代碼並基於該代碼實例化依賴性確定生成器的麻煩。此外,其允許應用程式員在用於方法a1305的生成器依賴性聲明陳述中通過方法getCl在生成器^::I1::M1上直接規定偶然依賴性,而不是規定依賴性確定生成器CW::IY::BETA。圖13I示出了根據本發明的一個實施方式的使用快捷、非動態(非偶然、非訂閱)生成器依賴性的方法的生成器依賴性聲明的偽代碼;而圖13J是示出了根據本發明的一個實施方式的示例性快捷、非動態生成器依賴性的生成器的框圖。圖13I顯示l)用於方法a1305的生成器依賴性聲明陳述1372,其中生成器依賴性聲明陳述1372包括到生成器10的快捷生成器依賴性;2)用於方法fly1376的生成器依賴性聲明陳述1374,其中該生成器依賴性聲明陳述1374為空,且方法fly1376返回作為參量的DEP的實例。響應於快捷依賴性由運行時提供方法fly1776及其生成器依賴性聲明陳述1374。方法fly1376包括生成器依賴性聲明代碼1378,該代碼1378將DEP.TYPE設定成非訂閱向下聲明,將DEP.PROD設定成生成器10,並返回DEP。在圖131中,帶圈的1指示生成器依賴性聲明1372被訪問(例如,由於基於方法a1305的生成器(作為感興趣生成器)的命名,由於基於a1305的生成器(作為感興趣生成器的子代)的自動發現,等等)。圖13J中帶圈的2顯示生成器C0::I0::ALPHA基於方法a1305被實例化。圖13I中帶圈的3指示快捷生成器依賴性被處理以確定生成器依賴性且運行時提供方法fly1376;且由此,帶圈的4指示生成器依賴性聲明1374被訪問。圖13J中帶虛線圈的5顯示生成器CO::IO::FLY被實例化作為依賴性確定生成器1380。圖13J中帶虛線圈的6指示生成器CO::IO::ALPHA在生成器圖形中被連結以指示生成器CO::IO::FLY是子生成器。圖13J中帶圈的7指示生成器CO::IO::FLY被執行且返回DEP以標識生成器10。帶圈的8指示生成器10被實例化,而帶圈的9指示生成器CO::IO::ALPHA在生成器圖形中被連結以指示生成器10是子生成器。在圖13J中,生成器CO::IO::ALPHA和生成器10是標準生成器1385。應當理解,在本發明的一個實施方式中,運行時程式設計師編寫單個fly方法以解釋所有支持的語法和組合(例如,方法fly1334、方法flyl1355、方法fly21362、方法fly1376)並將該fly方法包含在運行時中。這不但允許應用程式員避免編寫用於依賴性確定生成器的代碼,其中在該依賴性確定生成器中fly方法可以被使用,運行時程式設計師僅需要編寫通用fly方法(用於所有支持的情況的單個fly)。此外,應當理解快捷依賴性允許運行時使用依賴性確定生成器而同時允許應用程式員指示生成器依賴性聲明中的標準生成器(例如,圖13G-圖13J)。方法跟蹤結構回過來參考圖11D的方法跟蹤結構,現在將描述在本發明的一些實施方式中使用的參量依賴性列1194、欄位依賴性列1196、排序依賴性列1195、向上依賴性列1193、以及弱約束依賴性列1199的示例性內容。具體地,參量依賴性列1194存儲項的集合,每項用於每個參量依賴性。在本發明的一個實施方式中,每一項包括以下1)參量ID;2)類關鍵字性質標識符,為顯式類、相同類以及偶然類中的一者*,3)當類關鍵字性質標識符指示顯式類時所填充的顯式類關鍵字性標識符;4)當類關鍵字性質標識符指示偶然類時所填充的偶然類確定方法關鍵字標識符;5)實例關鍵字性質標識符,為顯式實例,相同實例以及偶然實例中的一者;6)當實例關鍵字性質標識符指示顯式實例時所填充的顯式實例關鍵字標識符;7)當實例關鍵字性質標識符指示偶然實例時所填充的偶然實例確定方法關鍵字標識符;8)方法關鍵字性質標識符,為顯式方法、相同方法以及偶然方法中的一者;9)當方法關鍵字性質標識符指示顯式方法時所填充的顯式方法關鍵字標識符;10)當方法關鍵字性質標識符指示偶然方法時所填充的偶然方法確定方法關鍵字標識符;以及ll)快捷標識符,指示生成器依賴性聲明陳述中的用於參量的生成器依賴性聲明是否包含快捷的指示(即,生成器依賴性聲明陳述直接標識標準子生成器而不是依賴性確定生成器)。各種關鍵字性質標識符的"...顯式"指示用於顯式關鍵字被提供用於生成器依賴性聲明陳述中的生成器依賴性的情況。通過舉例的方式,圖13A的生成器依賴性聲明陳述1300的生成器依賴性"CW::IY::BETA"提供顯式類、實例以及方法關鍵字。在本發明的一些實施方式中,速記技術被支持用於生成器依賴性聲明陳述,從而1)如果過沒有為給定生成器依賴性提供類,則使用與父生成器相同的類;以及2)如果沒有為給定生成器依賴性提供類和實例,則使用與父生成器相同的類和實例。在本發明的其他實施方式中,語法用於允許類、實例以及方法的任意組合與父體相同(除了所有都相同)(例如,分隔符用於指定類、實例以及方法中的每一個,且沒有這種分隔符指示與父體相同一通過特定示例的方式,語法可以是"#C:"、和"#M:",由此生成器依賴性聲明陳述中的生成器依賴性可以是#「'類關鍵字"::#1:"實例關鍵字"JM:"方法關鍵字")(其中引號表示值或變量的佔位符)不同關鍵字性質標識符的"...相同"指示用於在生成器依賴性聲明陳述中使用速記技術的情況。如之前所示,在本發明的一些實施方式中,偶然生成器依賴性的指示通過在生成器依賴性聲明陳述自身中使用的語法(例如,)而被支持(見圖13G的1345),且該語法可以用於生成器依賴性的類、實例和方法的一者或多者。不同關鍵字性質標識符的"...偶然"指示用於標識該偶然生成器依賴性何時發生,而"偶然…確定方法關鍵字標識符"指示子生成器的方法關鍵字(類和實例與父生成器的相同)。通過舉例的方式,圖13G中的生成器依賴性聲明1345的生成器依賴性"GETC1::I1::M1"提供偶然類(其中偶然類確定方法關鍵字是GETC1)、顯式實例關鍵字以及顯式方法關鍵字。排序依賴性列1195、向上依賴性列1193以及弱約束依賴性列1195的每一個存儲項的集合,每一項用於每個排序依賴性、向上依賴性以及弱約束依賴性。在本發明的一個實施方式中,每一個這樣的項具有與用於參量依賴性的集合項相同的結構,除了不包括參量ID。此外,儘管圖13A-圖13J示出了源於依賴性確定生成器的非訂閱向下聲明的依賴性,但是應當理解在向上聲明的依賴性或弱約束依賴性的情況,參照圖7F-圖7G所論述的,依賴性確定生成器可以返回其他依賴性。欄位依賴性列1196存儲項的集合,每一項用於每個欄位依賴性。雖然在本發明的一個實施方式中每一項包括屬性方法關鍵字,但在本發明的可替換實施方式中,每項可以具有與來自排序依賴性的集合項相同的結構。訂閱依賴性在本發明的一個實施方式中,非訂閱和訂閱的生成器依賴性都被支持。當為給定方法聲明訂閱生成器依賴性且從該給定方法實例化給定生成器時,運行時可以在運行時期間解析符合訂閱標準的一組零個或多個生成器(基於其他生成器的存在)。雖然在本發明的一個實施方式支持非訂閱和訂閱的生成器依賴性,但是可替換實施方式僅支持非訂閱。此外,雖然在本發明的一個實施方式中支持兩種類型的訂閱依賴性(吸收和粘附),但是本發明的可替換實施方式支持更多、更少和/或不同類型的訂閱生成器依賴性。圖14A-圖14C是示出了根據本發明的一個實施方式的吸收和粘附訂閱的框圖。圖14A是根據本發明的一個實施方式的圖12B中的訂閱日誌1250103的示例的框圖。雖然圖14A示出作為表格的這種日誌結構,但是應當理解可以使用任意合適的數據結構(例如,哈希映射表)。圖14B是示出根據本發明的一個實施方式的非偶然、吸收訂閱生成器依賴性的示例性生成器的框圖。圖14C是示出根據本發明的一個實施方式的非偶然、粘附訂閱生成器依賴性的示例生成器的框圖。圖14A的表中顯示了填充有在圖14B-圖14C的示例中使用的內容的兩行。圖14B-圖14C中使用帶圈的數字來示出根據本發明的一個實施方式執行操作的順序。在圖14A中,訂戶的生成器關鍵字列1400、訂閱類型列1405以及用於觸發生成器的訂閱標準列1410被顯示用於分別存儲對應於列名稱的內容。此外,圖14A顯示父連結模式列1425用於存儲訂閱依賴性的父生成器的連結模式;該信息將參考圖14B-圖14C被更詳細地描述。圖14A還顯示用於吸收訂閱的匹配生成器列1415和完成列1420。匹配生成器列1415用於存儲符合吸收訂閱的訂閱標準的觸發生成器的生成器關鍵字,而完成列1420用於在當前組的生成器圖形的給定執行期間跟蹤吸收訂閱是否已完成。匹配生成器列1415和完成列1420提供另外的可選優化,其允許掃描在自動生成器圖形生成和生成器圖形執行之間劃分的被實例化的生成器的工作,這在後面描述。圖14A還顯示用於粘附訂閱的父類列1430、父方法列1435以及父實例列1437。父類列1430、父方法列1435以及父實例列1437分別存儲被創建用於粘附訂閱的父生成器的類關鍵字、方法關鍵字以及實例關鍵字。此外,圖14A還顯示依賴性確定生成器引用列1421存儲創建訂閱的依賴性確定生成器的引用。吸收訂閱在吸收訂閱生成器依賴性中,該依賴性是符合吸收訂閱標準的當前生成器圖形結構的所有生成器的集合。參考圖14B,帶圈的1表示生成器1450被實例化(例如,由於生成器1450(作為感興趣生成器)的命名、由於生成器1450(作為感興趣生成器的子代)的自動發現,等等)。生成器1450基於方法,該方法的生成器依賴性聲明包括生成器依賴性(例如,具有參量IDX)的方法。帶圈的2表示生成器1450的生成器依賴性被處理以標識生成器1455。帶圈的3表示生成器1450在生成器圖形中被連結到作為子生成器的生成器1455。帶圈的4表示生成器1455的執行。生成器1455是依賴性確定生成器,包括生成器依賴性聲明代碼,該代碼指示吸收訂閱生成器依賴性並指示吸收訂閱標準。這樣,生成器1455的執行導致填充訂閱日誌。參考圖14A的第一行中的示例,訂戶的生成器關鍵字列1400、訂閱類型列1405、用於觸發生成器的訂閱標準列1410、父連結模式列1425以及依賴性確定生成器引用列1421分別填充有生成器1450的生成器關鍵字、用於指示訂閱是吸收類型的指示、包含在生成器1455中的吸收訂閱標準以及連結到生成器1455的生成器1450的連結模式(在吸收訂閱的情況下,其為參量依賴性且包括參量ID,但是其粘附指示符在以上示例中指示沒有粘附的參量IDX)和生成器1455(創建訂閱的依賴性確定生成器)的引用。帶圈的5A-圖5N表示生成器1460A-N的實例化。在該示例中,生成器1460A-N符合吸收訂閱標準,由此為觸發生成器。這樣,帶圈的6A-N指示生成器1450到生成器1460A-N的連結(在以上示例中,通過參量IDX)。帶圈的7指示對於生成器圖形的當前執行,吸收訂閱依賴性已完成,且生成器1450之後被執行。在本發明的一個實施方式中,吸收訂閱標準可以是組成生成器關鍵字任意關鍵字中的一個或多個。因此,在生成器關鍵字包括類關鍵字、實例關鍵字以及方法關鍵字的本發明的實施方式中,訂閱標準可以是一個或多個這樣的關鍵字。例如,參考圖iic,針對符合訂閱標準的生成器對實例化的生成器的掃描是對生成器圖形結構的第一個三列中的一個或多個進行掃描以確定實例化的生成器的關鍵字是否與吸收訂閱標準的關鍵字匹配。雖然在本發明的一個實施方式中吸收訂閱標準可以是組成生成器關鍵字的任意關鍵字中的一個或多個,但是在本發明的可替換實施方式中吸收訂閱標準被限定為組成生成器關鍵字的關鍵字的子集。粘附訂閱在粘附訂閱生成器依賴性中,該依賴性使父生成器針對符合粘附訂閱標準的每一個生成器而被實例化。參考圖14C,帶圈的1指示生成器1470被實例化(作為生成器1470(由於感興趣生成器)的命名、由於通過排序依賴性(例如,由於排序依賴性或弱約束依賴性等)生成器1470(作為感興趣生成器的子代)的自動發現,等等)。生成器1470是依賴性確定生成器,包括生成器依賴性聲明代碼,該代碼指示粘附訂閱、用於觸發生成器的粘附訂閱標準以及被創建的父生成器的粘附訂閱特性。生成器1470的執行導致填充訂閱日誌。參考圖14A的第二行中的示例,訂戶的生成器關鍵字列1400、訂閱類型列1405以及用於觸發生成器的訂閱標準列1410分別填充有生成器1470的生成器關鍵字、用於指示訂閱是粘附類型的指示以及包含在生成器1470中用於觸發生成器的粘附訂閱標準。此外,父類列1430、父方法列1435、父實例列1437以及連結到觸發生成器的父生成器的連結模式列1425填充有被創建的父生成器的粘附訂閱特性——在本發明的該實施方式中,分別是被實例化的父生成器的類、被實例化的父生成器的方法、被實例化的父體生成器的實例(如果被留為空,則等於觸發生成器的實例關鍵字)、連結模式(其在粘附訂閱的情況下可以是1)參量、欄位或排序依賴性;2)參量ID(如果參量依賴性——父生成器的參量ID106被連結到觸發生成器(例如參量IDY))。此外,依賴性確定生成器引用列1421填充有創建訂閱的依賴性確定生成器引用(圖14C中的生成器1470)。參考圖14C,帶圈的2指示生成器1475被實例化(例如,由於生成器1475(作為感興趣生成器)的命名、由於生成器1475(作為感興趣生成器的子代)的自動發現,等等)。此外,可以確定生成器1475是否符合用於觸發生成器的粘附訂閱標準。帶圈的3指示響應於該觸發生成器1475,基於用於被創建的父生成器的粘附訂閱標準來實例化生成器1480。參考圖14C的示例性第二行,類關鍵字、方法關鍵字、實例關鍵字以及連結模式分別從父類列1430、父方法列1435、實例列1347以及父連結模式列1425中被訪問。父生成器具有生成器關鍵字,該關鍵字包括被訪問的類關鍵字、被訪問的實例關鍵字(如果被留為空,則為觸發生成器(圖14C中的生成器1475)的實例關鍵字)以及被訪問的方法關鍵字~~^在圖14C的示例中,為生成器1480。帶圈的4指示實例化的父生成器1480在生成器圖形中通過被訪問的連接模式被連結到子觸發生成器1475(在以上示例中,連結模式類型=參量依賴性;連結模式參量ID=Y)。還有在參量依賴性的情況中,在帶圈的4處,粘附指示符被設定成指示粘附——在用於實例化的父生成器1480所基於的方法的生成器的依賴性聲明陳述的位置中的生成器依賴性對於生成器1480應當被忽略一一這防止粘附訂閱生成器依賴性創建的連結被後來的自動生成器圖形生成操作重寫。在本發明的一個實施方式中,用於觸發生成器的粘附訂閱標準可以是組成生成器關鍵字的關鍵字的一個或多個(實例關鍵字除外)。因此,在生成器關鍵字包括類關鍵字、實例關鍵字以及方法關鍵字的實施方式中,用於觸發的粘附訂閱標準可以是類、實例以及方法關鍵字中的一個或多個。例如,參考圖IIC,針對符合用於觸發生成器的粘附訂閱標準的生成器,對實例化的生成器的掃描是對生成器圖形結構的第一到第三列中的一個或多個進行掃描以確定實例化的生成器的關鍵字是否匹配用於觸發生成器的粘附訂閱標準的關鍵字。雖然在本發明的一個實施方式中',用於觸發生成器的粘附訂閱標準可以是組成生成器關鍵字的關鍵字的一個或多個,但是在本發明的可替換實施方式中,吸收訂閱標準可以是進一步限定數量的組成生成器關鍵字的關鍵字。圖14D-圖14E示出了根據本發明的一個實施方式的基於體依賴性確定生成器的父生成器的選擇。雖然圖14D-圖14E參考參量依賴性被描述,但是本發明的實施方式可以支持使用排序和欄位依賴性。圖14D示出了根據本發明的一個實施方式的基於粘附訂閱創建的父依賴性確定生成器的父生成器的選擇。像圖14C,圖14D顯示粘附訂閱生成器1470和觸發生成器1475;但是,生成器1480不同,圖14D顯示通過粘附訂閱生成器1470的粘附訂閱創建的依賴性確定生成器1480。此外,圖14D顯示粘附訂閱的連接模式是參量依賴性、參量ID二X,且粘附指示符=粘附。如果從生成器1475到依賴性確定生成器1480的虛曲線所示,依賴性確定生成器返回的DEP可以基於生成器1475本身的輸出(參量ID二X的參量)。在圖14D中,依賴性確定生成器1480在生成器1482上返回非訂閱向上聲明的生成器依賴性,具有指示參量依賴性和參量ID-Y的連結模式。雖然參量IDX和Y在圖14D中用於顯示它們可以不同,但應當理解它們可以相等。圖14E示出了根據本發明的一個實施方式的基於子依賴性確定生成器創建的父依賴性確定生成器的父生成器的選擇,其中子依賴性確定生成器被排序依賴性連結。圖14E在結構上與圖14D類似;具體地,生成器1475、1480以及1482用生成器1486、1496以及1498來替換。但是,不同於在生成器1480和1475之間創建連結的粘附訂閱生成器1470,生成器1486在依賴性確定生成器1494上具有排序依賴性(例如,通過向上依賴性或弱約束依賴性創建),其通過非訂閱向上聲明的依賴性來創建依賴性確定生成器1496。值得注意粘附訂閱和非訂閱向上聲明的依賴性(例如,通過向上依賴性和/或弱約束依賴性而被創建)導致自下而上建立生成器圖形(而不是之前所述的自上而下建立)。此外,該自下而上建立不限於單個層的建立,而是刻意多個層(例如,如果由於粘附訂閱或非訂閱向上聲明的依賴性,父生成器被實例化,相同的父生成器還可以是用於粘附訂閱的觸發生成器或可以包括非訂閱向上聲明的依賴性且使另一個父生成器被實例化,等)。在這種意義上,粘附訂閱和非訂閱向上聲明的依賴性使生成器圖形的建立倒置。雖然在本發明的一些實施方式中,由粘附訂閱特性標識的父生成器是標準生成器(見圖14C),但是可替換實施方式可以被實施為支持其他類型的生成器的標識。例如,在允許粘附訂閱特性標識依賴性確定生成器的本發明的實施方式中(見圖14D),這樣的依賴性確定生成器可以訪問觸發生成器的輸出,且可以基於該輸出觸發作為需要粘在子體上的父生成器的特定生成器的創建(該父生成器可以己經存在或不存在;如果已經存在,則被簡單連結且子生成器被添加到其參量;如果不存在,則其被創建)。在依賴性確定生成器返回常量的情況下生成器模擬吸收訂閱。依賴性確定生成器返回生成器(其實例關鍵字對於每一個觸發生成器是唯一的)(例如,返回其實例關鍵字是觸發生成器的生成器關鍵字的生成器)的情況造成於每一個子生成器有單獨的父生成器並且被稱為純粘附訂閱。依賴性確定生成器返回對每一個觸發生成器既不是常量也不是唯一的實例關鍵字的情況可以混合純粘附訂閱和吸收訂閱的行為且被稱為非純粘附訂閱。示例性優點如之前所述,在本發明的一個實施方式中,生成器依賴性針對方法被聲明作為規定使用合適實例而不使用手動調用排序代碼的方法調用排序的方式(其中合適的實例包括作為參量使用的實例、被實例方法使用的實例以及被類方法使用的元類實例);有效地,生成一些或全部手動調用排序代碼的的工作被以下替代1)編寫生成器依賴性聲明的應用程式員完成的工作;以及2)發現並建立生成器圖形並執行該生成器圖形的生成器的運行時完成的工作。儘管編寫運行時的工作量相對較大,但是其只需要編寫一次就可以用於執行為運行時編寫的面向對應應用;相比之下,對於一般的應用,編寫生成器依賴性聲明的工作量與編寫手動調用排序代碼相比相對較低。非動態生成器依賴性提供用於規定無條件方法調用排序代碼的方式,從而避免對編寫無條件手動調用排序代碼的需要。偶然生成器依賴性提供規定有條件處理的方式,從而避免對編寫有條件手動調用排序代碼的需要。支持生成器依賴性允許集合被返回的生成器,其提供規定在集合作為參數被傳遞之前的集合的填充,從而不需要編寫手動調用排序代碼中的多個調用以在該集合被作為參數傳遞之前填充該集合。支持訂閱提供這樣的環境,在該環境中程式設計師不需要為每一種類型的被收聽(listen)的對象編寫特定的收聽代碼(例如,在面向生成器圖形編程的電子數據表中,吸收訂閱可以用於通過使該吸收訂閱標準標識在範圍內的單元來計算一定範圍的單元的平均值(每一個單元是一個生成器),並在每一次新生成器被添加到吸收訂閱時重新計算平均值;在面向生成器圖形編程的電子數據表中,粘附訂閱可以通過使粘附訂閱標準標識保持當前值內容的單元和標識執行當前值轉換的被實例化的粘附生成器的粘附訂閱特性而用作當前值轉換器(粘附訂閱創建的生成器(保持轉換後的量)之後可以用於其他單元中的顯示))。操作新實例命令圖15是根據本發明的一個實施方式的用於實例化新實例的流程圖。如之前參考圖10所述,圖10中新類模塊1095可以被實施為新實例模塊1098的一部分。圖15的流程圖假定該實施方式並被新實例模塊1098執行;圖15的流程圖中表示新類模塊1095的部分被顯示為虛線塊1580,其包括塊1540和1550。響應於新實例命令(塊1510),控制傳遞到塊1520。在塊1520中,確定是否已經存在實例。如果不存在,則控制傳遞到塊1530,否則,實例不需要被實例化且控制傳遞到1570,在塊1570中,流程圖結束。在支持實例關鍵字的一個實施方式中,通過訪問用於被提供作為新實例命令的一部分的實例關鍵字(和類關鍵字,如果實例關鍵字在類中不需要是唯一的)的圖10中的實例跟蹤結構1065來執行塊1520。在塊1530中,確定實例的類定義是否已經被裝載。如果沒有,則控制傳遞到塊1540;否則,控制傳遞到塊1560。在支持類關鍵字的一個實施方式中,通過訪問用於被提供作為新實例命令的類關鍵字的圖10中的類跟蹤結構1092來執行塊1540。在塊1540,類被裝載且控制傳遞到塊1550。在塊1550,類定義根據類關鍵字被存儲並自省,包括任意生成器依賴性聲明陳述(根據類中的方法關鍵字被存儲,見圖IID)。控制從塊1550傳遞到塊1560。參考圖10,在塊1540和1550執行以下1)類從類定義被裝載,該類定義將業務邏輯1010包括到類1054中(該裝載使類的方法和生成器依賴性聲明被存儲在方法和生成器依賴性聲明1056中);2)類可以被添加到類跟蹤結構1092;以及3)方法可以被添加到方法跟蹤結構1058。此外,方法的輸出類可以被裝載。在塊1560,類的實例可以被實例化並根據實例關鍵字被存儲。參考圖10,該實例可以被實例化成實例1052;且該實例可以被添加到實例跟蹤結構1065。控制從塊1550傳遞到塊1570,在塊1570中流程圖結束。在使用對象關係映射技術的本發明的一些實施方式中,作為塊1560的一部分,數據可以從外部數據源被裝載以填充實例的欄位。在本發明的一些實施方式中,類和實例可以在具有面向生成器圖形編程支持的運行時不知道的情況下被裝載/實例化(例如,在圖9A中,如果運行時915裝載/實例化而運行時910不知道)。在這種情況下,本發明的實施方式還支持實例關鍵字,該實例關鍵字是類的實例的實例關鍵字(保持兩個元素實例關鍵字性質,指示關鍵字標識符是否是對實例或對另一個對象(例如串)的引用;和關鍵字標識符,可以是實例的引用或另一個對象(例如串)),塊1520和1530詢問實例和類是否在具有面向生成器圖形編程支持的運行時知道的情況下被實例化/裝載。在具有面向生成器圖形編程支持的運行時不知道己經裝載的類的情況下,類可以不被裝載,但是類可以被添加到類跟蹤結構1092且方法可以被添加到方法跟蹤結構1058。在在具有面向生成器圖形編程支持的運行時不知道已經實例化的實例的情況下,實例可以不被實例化,但是實例可以被添加到實例跟蹤結構1065。新生成器和不覆蓋命令圖16A是根據本發明的一個實施方式的實例化新生成器和不覆蓋生成器的流程圖。參考圖10,圖16A的流被自動生成器圖形執行模塊1040和覆蓋生成器模塊1045(或,參考圖10的可替換實施方式所述的處理覆蓋和不覆蓋的模塊)執行。響應於新生成器命令(塊1600),控制傳遞到塊1605。在本發明的一個實施方式中,新生成器命令可以響應於各種情況來執行。下面的表2標識根據本發明的一個實施方式的各種情況和傳遞的參數。表2情況調用器生成調用的生成調用類型連結模式依賴性確定器器(如果不存生成器引用在就被創建)112tableseeoriginaldocumentpage113在塊1065中,確定生成器是否已經存在。如果不存在,則控制傳遞到塊1610;否則,控制傳遞到1670。通過訪問作為新生成器命令的一部分的被標識的類、實例和方法(例如,通過關鍵字和/或引用)來執行塊1605。在支持生成器關鍵字的一個實施方式中,通過訪問用於被提供作為新生成器命令的生成器關鍵字(表2的調用的生成器列中的生成器關鍵字)的圖10中生成器圖形結構1060來執行塊1605。在塊1610中,利用新實例命令調用新實例模塊,並且控制傳遞到塊1615。在本發明的一個實施方式中,通過使用來自表2的調用的生成器列中的生成器關鍵字的實例關鍵字來調用圖15的流程圖從而執行塊1610。在塊1615中,生成器的實例的類定義被訪問且控制傳遞到塊1620。參考圖10,通過使用來自表2的調用的生成器列中的生成器關鍵字的類關鍵字來執行塊1615,從而根據類跟蹤結構1092訪問類1054中合適的一個。在塊1620,生成器的方法和生成器依賴性聲明陳述被訪問且控制傳遞到塊1623。參考圖10,通過使用來自表2的調用的生成器列中的生成器關鍵字的方法關鍵字來執行塊1620,從而訪問來自位於塊1615中的類的方法和生成器依賴性聲明1056中合適的一個。在塊1623,確定生成器執行模式且控制傳遞到塊1625。下面論述執行塊1623的一個示例性方式的詳情。在一些實施方式中,默認執行模式被定義為在節點層的注釋。終端用戶或客戶端節點通過基於生成器的可配置決定結構(例如,圖10中基於生成器的可配置決定結構1049)在類、方法、實例或以上任意組合的基礎上可以在運行時覆蓋行為。此外,運行時設定可以被提供以依據計算環境使運行時通過(單個機器上的一些處理器的可用性、網格可用性、處理器的裝載,等)使執行在訂閱執行模式中被實施從而忽略這些編程注釋或用戶定義的配置。在塊1625,生成器被添加到生成器圖形且控制傳遞到塊1630。參考圖IIC中的本發明的實施方式,第一個三列被填充。在塊1630,對於每一個註冊的訂閱,訂閱過濾標準被處理以確定生成器是否匹配。參考圖14A中的本發明的實施方式,當訂閱被添加到訂閱日誌時該訂閱被認為己註冊。註冊訂閱的示例性操作在後面描述。塊1630是可選優化,其允許掃描實例化的生成器的工作在生成器圖形生成和生成器圖形執行之間被劃分。這樣,本發明的可替換實施方式可以不執行塊1630。在塊1635,如果由於依賴性生成器被調用,則生成器被連結到生成器圖形。控制從塊1635傳遞到塊1640。執行塊1635的方式取決於導致新生成器命令被執行的情況。例如,如果所述情況是感興趣生成器或被覆蓋的生成器,則由於依賴性生成器不被調用並且不做任何事。相反,如果情況是直接的,則由於直接依賴性而調用生成器;且參考圖IIC中的本發明的實施方式,執行以下1)調用的子生成器的父生成器引用列1150(表2的調用的生成器列)被填充有父調用器生成器的行(表2的調用器生成器列);2)父調用器生成器的行的子生成器引用列1160(表2的調用器生成器列)被填充有調用的子生成器的行的引用(表2的調用的生成器列),且根據表2的連結模式列連結模式被設定。相反,如果情況是粘附訂閱,則由於觸發生成器被標識而調用生成器;且參考圖11C中的本發明的實施方式,執行以下1)調用器子生成器的父生成器引用列1150(表2的調用器生成器列)被填充有父調用的生成器的行的引用(表2的調用的生成器列),且根據表2的連結模式列連結模式被設定以及合適的參量ID標識符被設定成指示粘附;以及2)父調用的生成器的行的子生成器引用列1160(表2的調用的生成器列)被填充有調用器子生成器的行的引用(表2的調用器生成器列)。在塊1640中,生成器被標記為未執行且控制傳遞到塊1645。參考圖11C中本發明的實施方式,合適行的增量執行標記列1180為填充有未執行的指示。在塊1645中,確定生成器是否具有任何依賴性且沒有被覆蓋。如果是,則控制傳遞到塊1650;否則,控制傳遞到塊1665。通過檢查在塊1620中訪問的生成器依賴性聲明以及表2的調用類型列來執行塊1645。在塊1650中,對於現在被解析的生成器依賴性聲明中的每一個依賴性,115確定生成器的數量且為每一個生成器調用新生成器命令。控制從塊1650傳遞到塊1655。本發明的不同實施方式在不同時間確定不同類型的依賴性;在本發明的一個示例性實施方式中執行塊1650的方式將在後面描述。在塊1655中,如果生成器的所有相關生成器存在並巳經被執行,則該生成器被添加到執行開始日誌。控制從塊1655傳遞到塊1660。對於作為該流程的當前重複的一部分而實例化的給定生成器,塊1655被執行,然後用於相關的生成器的該流程的其他重複的調用將返回生成器的執行狀態(見塊1660)(例如,參考圖11C的本發明的實施方式,來自合適行的增量執行標記列1180的狀態)。如果所有依賴性生成器存在且所有依賴性生成器的執行狀態被執行,則當前重複的生成器被添加到執行開始曰志。在塊1660中,生成器的執行狀態作為參數被返回。在塊1665中,生成器被添加到執行開始日誌且控制傳遞到塊1660。在塊1670中,與塊1635類似,如果由於生成器被調用,則生成器被連結到生成器圖形。控制從塊1670傳遞到塊1675。出於各種原因,可以達到塊1670。例如,由於響應於生成器覆蓋命令之前生成器被實例化但沒有被連結到生成器圖形,則可以達到塊1670。作為另一個示例,由於生成器已經是生成器圖形的一部分且被添加到另一個生成器圖形(例如,響應於是感興趣生成器、感興趣生成器的子代等而之前被實例化),可以達到塊1670。在塊1675中,確定新生成器流程是否由於覆蓋、粘附訂閱依賴性或非訂閱向上聲明的依賴性而被調用。如果是,則控制傳遞到塊1680;否則,控制傳遞到塊1660。通過檢查表2的調用類型列來了解這是否是對於被覆蓋的生成器、粘附訂閱依賴性或非訂閱向上聲明的依賴性的調用,從而執行塊1675。在塊1680中,與塊1640類似,生成器被標記為未執行且控制傳遞到塊1665。出於各種原因,可以達到塊1680。響應於生成器不覆蓋命令(塊1690),控制傳遞到塊1695。在塊1695,生成器被標記為沒有被覆蓋且控制傳遞到塊1640。參考圖11C的本發明的實施方式,生成器的行的生成器輸出緩存和覆蓋生成器輸出指示列1170被訪問且被改變以指示該生成器不再被覆蓋。繼續該流程,塊1640可以通向塊1645,且如果生成器具有任何依賴性,則塊1640可以通向塊1650,塊1650使生成器下面的生成器圖形被發現且如果還沒有則被建立。如果該生成器下面的生成器圖形己經被發現並建立,則新生成器命令的調用可以使流程從1600到1605,到1670等;此外,在塊1660中的生成器下的圖形的生成器的執行狀態的返回將確定生成器是否被添加到塊1655中的執行開始日誌。但是,如果生成器下的生成器圖形沒有被發現並建立,則新生成器命令的調用使生成器在流程從1600到1605,到1610等的過程中被發現並建立。圖16B是根據本發明的一個實施方式的圖16A的塊1623的流程圖。因此,控制從塊1620流向塊1623中的塊16231。在塊16231中,運行時執行設定覆蓋被檢査。然後在塊16233確定運行時執行設定覆蓋是否被激活。如果其被設定,則在塊16234根據運行時執行設定而設定執行模式。否則,在塊16235中來自終端用戶的執行模式選擇的基於生成器的可配置決定結構被檢查且控制傳遞到塊16236。在塊16236,確定終端用戶是否做出任何執行模式選擇。如果做出,則在塊16237根據基於生成器的可配置決定結構中的設定而設定執行模式。否則,在塊16238,生成器的方法定義被檢査用於被定義為在節點層的注釋的執行模式,且根據該注釋而設定執行模式。從塊16238或塊16237,控制傳遞到塊16239以結束塊1623中的進程。圖17是根據本發明的一個實施方式的圖16的塊1650的流程圖。因此,在塊1650中,控制從塊1645流向塊1700。在塊1700中,針對生成器的生成器依賴性聲明(每一個用於每個參量依賴性、欄位依賴性、排序依賴性、向上依賴性以及弱約束依賴性)中的每一個依賴性,下面的塊1705-1745被117執行。參考圖10和11D,方法跟蹤結構被訪問以確定關於生成器依賴性的信息。還應當理解塊1715、1725、1730、1740、1745以及1750是在執行生成器圖形之前被執行時的優化。在塊1705中,確定依賴性是否是由於粘附依賴性而已經被連結的參量依賴性。如果是,則控制傳遞到塊1710,其中針對該依賴性,流程結束;否則控制傳遞到塊1715。關於圖11C中所示的本發明的實施方式,粘附參量標識符被檢査以確定該依賴性的參量ID是否屬於粘附訂閱參量依賴性或向上聲明的參量依賴性。在塊1715中,確定依賴性是否是偶然依賴性。如果是,則控制傳遞到塊1720;否則,控制傳遞到塊1725。通過檢查依賴性鎖標識的子生成器的生成器依賴性聲明來確定其是否為空(子生成器是無關生成器)從而執行塊1715。參考圖13A-圖13J,這對具有帶虛線圈的數字的生成器可以為真(例如,在圖13D中,生成器CU::IV::DELTA),但是對其他生成器為假(例如,在圖13D中,生成器CU::IY::BETA)。因此,參考圖13D,塊1715由帶圈的1、4、和8來表示。塊1715和從該塊1715經過塊1725-1750的流程是一種優化,兩者都避免添加/連結具有帶虛線圈的數字的生成器到生成器圖形,也避免在自動生成器圖形生成和生成器圖形執行之間劃分執行生成器和處理訂閱的工作。在塊1720中,依賴性確定方法的新生成器命令被調用且流程結束。例如,參考圖13D,塊1720引起帶圈的5、6和7所表示的。在塊1725中,依賴性確定生成器被執行且控制傳遞到塊1730。例如,參考圖13D,塊1725由帶圈的11(從而,之前所述實施方式示出的圖17的流程,其中圖13D的帶圈的9和IO沒有被執行)表示。在塊1730中,確定依賴性是否是直接(非訂閱)依賴性。如果是,則控制傳遞到1750;否則控制傳遞到塊1740。換句話說,在塊1725中,依賴性確定生成器的方法中的生成器依賴性確定代碼被執行,所述代碼是父生成器的生成器依賴性聲明中的一部分。執行該生成器依賴性聲明代碼(該代碼可以標識依賴性是否是訂閱依賴性),可以確定父生成器的生成器依賴性類型。參考圖13D中的示例,帶圈的11可以使圖17的流程從塊1730傳遞到塊1750。在塊1750中,確定由塊1725中的依賴性確定生成器的執行返回的生成器的數量,且為每一個生成器調用新生成器命令。例如,參考圖13D,塊1750引起帶圈的12和13以及帶圈的C和D。參考圖14B的吸收訂閱示例,塊1725表示帶圈的4;其使流程經過塊1730傳遞到塊1740。在塊1740中,訂閱被添加到訂閱日誌,且如果該訂閱是吸收的,則被標記為未完成。控制從塊1740傳遞到塊1745。參考圖14A中所示的本發明的實施方式,訂閱日誌被填充有之前所述的訂閱。在塊1745中,所有被實例化的生成器被掃描以了解它們是否匹配訂閱的標準(從而是觸發生成器),且任意匹配被處理。圖18是根據本發明的一個實施方式的圖17的塊1745的流程圖。因此,控制從塊1740流向塊1745中的塊1800。在塊1800中,對於每一個被實例化的生成器,以下的塊1810-1830被執行。在塊1810中,確定生成器是否符合訂閱的標準。如果符合,則控制傳遞到塊1815;否則,控制傳遞到塊1830,其中針對當前被處理的生成器,流程結束。參考圖IIC和14A中所示的本發明的實施方式,生成器圖形被訪問以確定它們是否包括符合訂閱標準的生成器。處理匹配的生成器的方式依據被處理的訂閱的類型。參考塊1815,如果訂閱是吸收類型,則控制傳遞到塊1825;否則,控制傳遞到塊1820。塊1815可以響應於表2的調用類型而被執行。在塊1825中,匹配的生成器被添加到訂閱日誌且具有吸收訂閱的生成器被連結到匹配的生成器。控制從塊1825傳遞到塊1830。參考圖IIC和14A-圖14B中所示的本發明的實施方式,以下被執行1)來自觸發生成器的訂閱標準列1410的訂閱標準在塊1810中被使用且匹配的生成器被定位(生成器1460A-N中的一個);2)匹配的生成器被添加到訂閱的行處的匹配的生成器列1415;以及3)具有吸收訂閱的生成器(例如生成器1450)被連結到圖11C的生成器圖形結構中的匹配的生成器(例如,生成器1460A-N中的一個)。在塊1820中,新生成器命令被調用,用於被創建的父生成器。控制從塊1820傳遞到塊1830,在塊1830中,對於在塊1800中選擇的當前生成器流程圖結束。參考圖14A和14C中所示的本發明的實施方式,以下被執行1)來自觸發生成器的訂閱標準列1410的訂閱標準在塊1810中被使用且匹配的生成器被定位(例如,生成器1475);以及2)新生成器命令被調用,具有按以下設定的表2的參數a)調用類型是粘附;b)調用器生成器是調用器子生成器(例如生成器1475)的生成器關鍵字;c)調用的生成器是被創建的調用的父生成器(例如生成器1480)的生成器關鍵字,使用來自被創建的父生成器的粘附訂閱標準的父類和方法關鍵字(圖14A,列1425和1430)以及調用器子生成器的實例關鍵字來形成所述生成器關鍵字;以及d)調用的父生成器的連結模式,使用來自在合適行的父參量ID列1425中的參量ID來形成連結模式。圖19是根據本發明的一個實施方式的圖16的塊1630的流程圖。因此,控制從塊1625流向塊1630中的塊1900。圖19與圖18非常類似。具體地,圖19中的塊1910、1915、1920以及1930與塊1810、1815、1820以及1830相同;而塊1900和1925與塊1800和1825不同。這樣,這裡只描述不同之處。塊1900指示為每一個註冊的訂閱所執行的流程,而塊1800指示為每一個實例化的生成器所執行的流程。因此,圖18的流程側重在單個訂閱且掃描所有生成器,而圖19的流程側重在單個生成器且掃描所有訂閱。塊1925與塊1825相同,不同在於吸收訂閱被標記為未完成。參考圖14A中所示的本發明的實施方式,在合適行的完成的列1420被更新以指示未完成。圖20是根據本發明的一個實施方式的圖16中的塊1635和1670的流程圖。因此,控制從塊1605和塊1630流向塊1635和1670中的塊2005。在塊2005中,確定圖16的流程圖的重複是否由於依賴性被調用(例如,從之前重複的塊1630(塊1920)或1650(塊1720、1750或1745/1820))。如果不是,則控制根據流程進入的地方(從塊1630或1605)而傳遞到塊1640或1675。在塊2010,確定流程是否由於粘附訂閱或非訂閱向上聲明情況而被調用。如果不是,則控制傳遞到塊2015;否則,控制傳遞到塊2020。通過檢查表2的調用類型參數(即,調用類型是粘附訂閱還是訂閱向上聲明)來執行塊2010。參考圖18和19中所示的本發明的實施方式,是否新生成器命令從塊1820或1920被調用。在塊2020,當前父生成器被連結到調用器子生成器。參考圖IIC和14C中所示的本發明的實施方式,以下被執行1)使用來自表2的連結模式列的參數所標識的連結模式,由來自表2的調用的生成器列的參數所標識的調用的父生成器(例如生成器1480)在圖11C的生成器圖形結構中被連結到由來自表2的調用器生成器列的參數所標識的調用器子生成器(例如,生成器1475)。在塊2015中,調用器父生成器被連結到當前調用的子生成器。參考圖11C中所示的本發明的實施方式,由來自表2的調用器生成器列的參數所標識的調用器父生成器在圖11C的生成器圖形結構中被連結到由來自表2的調m用的生成器列的參數所標識的調用的子生成器。從塊2015和2020,控制依據流程進入的地方(從塊1605或1630)而傳遞到塊1640或1675。圖21A是根據本發明的一個實施方式的覆蓋生成器的流程圖。參考圖10,由覆蓋生成器模塊1045執行圖21A的流程(或,如參考圖10的可替換實施方式所述的處理覆蓋和不覆蓋的模塊)。響應於覆蓋生成器命令(塊2110),控制傳遞到塊2120。在塊2120,對於由覆蓋生成器命令所標識的每一個生成器,調用新生成器命令,且控制傳遞到塊2130。在本發明的一個實施方式中,塊2120在被覆蓋的生成器還沒有被實例化情況下被執行以及將該生成器標記為未執行的(塊1640或1680)並將其記錄在執行開始日誌上(塊1665)。不允許覆蓋還沒有被實例化的生成器的本發明的可替換實施方式不會執行塊2120。在塊2130中,在生成器輸出緩存中(以及如果輸出是欄位,則在實例中的)的輸出被設定且該生成器被標記為被覆蓋。圖21B是根據本發明的一個實施方式的覆蓋生成器執行模式的流程圖。參考圖10,由並行化模塊1076執行圖21B的流程(或如參考圖10的可替換實施方式所述的處理並行化的模塊)。響應於覆蓋執行模式命令(塊2150),控制傳遞到塊2155。在塊2155中,生成器執行模式設定在生成器圖形結構1060中被覆蓋。圖21C是根據本發明的一個實施方式的用於覆蓋生成器執行模式的流程圖。參考圖10,由並行化模塊1076執行圖21C的流程(或如參考圖10的可替換實施方式所述的處理並行化的模塊)。響應於運行時執行模式設定覆蓋命令(塊2160),控制傳遞到塊2165。在塊2165中,生成器執行模式設定在運行時設定結構1048中被全局上覆蓋。圖21D是根據本發明的一個實施方式的覆蓋生成器執行模式的流程圖。參考圖10,由並行化模塊1076執行圖21D的流程(或如參考圖10的可替換實施方式所述的處理並行化的模塊)。響應於可配置的執行模式決定結構覆蓋生成器命令(塊2170),控制傳遞到塊2175。在塊2175中,生成器執行模式設定在類、方法、實例或以上任意組合的基礎上在基於生成器的可配置決定結構中被全局上覆蓋。全局執行命令圖22A是根據本發明的一個實施方式的當前生成器圖形的執行的流程圖的一部分;而圖22B是根據本發明的一個實施方式的當前生成器圖形的執行的流程圖的另一部分。參考圖IO,由生成器圖形執行模塊1070來執行圖22的流程。響應於全局執行命令,塊2200顯示一組候選生成器基於執行開始日誌上的生成器被選擇以被執行,且控制傳遞到塊2205。在本發明的一個實施方式中,被覆蓋的生成器被標記為未執行且該生成器的執行返回它們的被覆蓋結果(而不是使它們的方法被執行),當前組的候選生成器是執行開始日誌上的生成器。雖然本發明的一個實施方式在上面被描述,其中被覆蓋的生成器被標記為未執行且它們的執行返回其被覆蓋的結果(而不是使它們的方法被執行),但是可替換實施方式可以以不同的方式操作(例如,標記被覆蓋的生成器為已執行且當選擇當前組的候選生成器時,執行開始日誌的無關生成器和執行開始日誌上的被覆蓋的生成器的父體被選擇)。在塊2205中,準備用於執行的生成器的子集從一組候選生成器中被選擇且控制傳遞到塊2207。執行塊2205的示例性方式在後面描述。在塊2207中,如果並行化被激活,則並行化執行當前組的就緒生成器中的生成器。執行塊2207的示例性方式在後面描述。之後控制從塊2207傳遞到塊2208。123在塊2208中,任務從支持的執行模式的結果任務隊列中的一個被讀取並被移除。在當前示例中,結果任務隊列包括MP_RESULT—TASK—QUEUE、MT—RESULT—TASK—QUEUE和LOCAL—RESULT—TASK—QUEUE。控制從塊2208傳遞到塊2209。在塊2209中,運行時確定生成器的後置處理是否必須跳過。如果基準測試被激活,則生成器可以被本地執行以及多進程處理。因此,生成器的後置處理在本地執行後被跳過。基準測試的更具體的詳情在後面論述。回過來參考圖22A,如果後置處理必須被跳過,則控制傳遞到圖22B中的塊2248。否則,控制傳遞到塊2210。在塊2210中,當前組的就緒生成器中的生成器按類型被分類——標準生成器進入塊2220而依賴性確定生成器進入塊2235。在本發明的一個實施方式中,通過檢査生成器的返回類來執行塊2210。參考圖10和11D,方法跟蹤結構被訪問以確定生成器的輸出類是否是DEP,從而該生成器是否是依賴性確定生成器。在塊2220中,對於這些父體(如果有的話)在這些執行的標準生成器的任意一個上具有吸收訂閱,該訂閱被標記為未完成。參考圖14A,完成的列1420的合適行被設定成指示未完成。在塊2235中,對於任意發現的生成器,新生成器命令被執行,且對於任意訂閱,訂閱記錄和處理被執行,然後控制傳遞到2240。塊2235的新生成器命令的一部分以與塊1750相似的方式被執行,而訂閱記錄和處理以與塊1740和1745相似的方式被執行。在塊2240中,添加到一組候選生成器,其新添加到執行開始日誌。控制從塊2240傳遞到塊2245。塊2240以與塊2200相似的方式被執行,不同的只是作為塊2235的結果的新添加到執行開始日誌的生成器被添加到一組候選生成器。在塊2245中,被執行的生成器被標記為己執行,生成器輸出緩存(和實例緩存)在必要時被更新,生成器度量(如果獲得)在圖10的生成器圖形結構1060中被更新,被執行的生成器的任意父生成器被添加到當前組的候選生成器,且被執行的生成器從當前組的候選和就緒生成器中被移除。在一些實施方式中,可以通過讀取對應的任務度量和對應的作業引用來更新生成器度量。使用作業引用,作業度量可以從作業度量映射表中被讀取。可替換地,如果沒有使用作業度量映射表,則可以通過讀取任務度量和作業度量來更新生成器度量。任務度量、作業度量以及作業度量映射表的具體詳情在下面論述。控制從塊2245傳遞到塊2248。在塊2248,檢查結果任務隊列以確定所有的隊列是否為空。如果至少一個結果任務隊列不為空,則控制傳回到塊2208以繼續處理不為空的結果任務隊列中的結果。否則,如果所有的結果任務隊列為空,則控制傳遞到塊2250。在塊2250,確定一組就緒生成器是否為空,如果不為空,則控制傳遞到塊2205;否則,控制傳遞到塊2255。在塊2255,確定所有的訂閱是否已經完成。如果是,則控制傳遞到塊2265,在塊2265流程圖結束;否則,控制傳遞到塊2260。參考圖14A中的本發明的實施方式,為任何未完成的吸收訂閱來掃描訂閱類型列1405和完成的列1420。在塊2260,未完成的吸收訂閱被處理且控制傳回到塊2205。執行塊2260的示例性方式在後面描述。圖23是根據本發明的一個實施方式的圖22的塊2205的流程圖。因此控制從塊2200流向塊2205中的塊2305。在塊2305中,對於一組候選生成器的的每一個生成器,以下的塊2310-2325被執行。在塊2310中,確定生成器是否具有任意未完成的吸收訂閱依賴性。如125果有,則控制傳遞到塊2325;否則,控制傳遞到塊2315。參考圖14A的實施方式,為匹配到當前選擇的生成器和吸收訂閱類型,掃描訂戶的生成器關鍵字列1400和訂閱類型列1405;且如果找到匹配,則在合適的行檢查完成的列1420從而確定吸收訂閱依賴性的狀態。在塊2315中,確定當前選擇的生成器所依賴的生成器是否被執行。如果沒有,則控制傳遞到塊2315;否則,控制傳遞到塊2320。參考圖11C中所示的本發明的實施方式,檢查用於子依賴性的行的增量執行標記列1180以確定當前選擇的生成器的子代的執行狀態。在塊2320中,當前選擇的候選生成器被添加到當前組的就緒生成器,且控制傳遞到塊2325。在塊2325中,對於在塊2305中選擇的當前生成器的流程結束。圖24是根據本發明的一個實施方式的圖22B的塊2260的流程圖。從而,控制從塊2255流向塊2260中的塊2505。在塊2505中,對於每一個具有未完成的吸收訂閱依賴性的生成器,以下塊2510-2525被執行。在塊2510中,確定所有匹配的生成器是否已被執行。如果是,則控制傳遞到塊2515;否則,控制傳遞到塊2525。參考圖IIC和14A的實施方式,在合適的行的匹配的生成器列1415被訪問以確定匹配的生成器,且為每一個匹配的生成器檢查在合適的行的增量執行列1180。在塊2515中,吸收訂閱被標記為完成且控制傳遞到塊2520。參考圖14A的實施方式,在合適的行的完成的列1420被設定成指示完成。在塊2520中,在塊2505中選擇的生成器被添加到當前組的候選生成器且控制傳遞到塊2525。在塊2525中,用於在塊2505中的選擇的生成器的流程結束。圖25和26是根據本發明的一個實施方式的圖22的塊2207的流程圖。因此,控制從塊2205流向圖25中的塊2610。在塊2610中,用於多進程、多線程以及本地執行的各種任務隊列和用於多進程的作業的實例化被執行。執行塊2610的示例性方式在後面描述。控制從塊2610傳遞到塊2620。在塊2620中,一組就緒生成器被掃描以逐個處理該組中的生成器。控制從塊2620傳遞到塊2622。在塊2622中,生成器的執行模式從例如圖11C的圖形結構的生成器圖形結構中讀取。然後控制傳遞到塊2625。在塊2625中,涉及生成器和生成器的輸出的任務被創建。控制從塊2625傳遞到塊2630。在塊2630中,確定生成器應當在哪種執行模式下被執行。在一些實施方式中,支持三種執行模式,即多進程、多線程以及本地執行。如果執行模式被確定為本地執行,則控制傳遞到塊2632。如果執行模式被確定為多線程,則控制傳遞到塊2634。如果執行模式被確定為多進程,則控制傳遞到塊2635。在塊2632中,生成器的任務被推入到用於本地執行的執行任務隊列中,即LOCAL—EXECUTION—TASK—QUEUE。然後控制傳遞到塊2640。在塊2634中,生成器的任務被推入到用於多線程的執行任務隊列中,即MT—EXECUTION_TASK_QUEUE。然後控制傳遞到塊2640。在塊2635中,生成器的任務被推入到用於多進程的執行任務隊列中,即MP—EXECUTION—TASK—QUEUE。然後控制傳遞到塊2636。在塊2636中,確定是否請求遠程執行和本地執行之間的基準測試。如果沒有請求,則控制傳遞到塊2640。但是,如果請求了基準測試,則控制傳遞到塊2637。在塊2637中,被推入到MP—EXECUTION—TASK—QUEUE的任務被標記以跳過後置執行處理。然後涉及生成器和生成器的輸出的新的任務被創建並也被推入到塊2638中的用於本地執行的執行任務隊列,即LOCAL—EXECUTION—TASK一QUEUE。然後控制傳遞到塊2639以在被添加到MPJEXECUTION—TASK_QUEUE的任務中存儲被添加到127LOCAL—EXECUTION_TASK—QUEUE的任務的引用以用於之後的匹配。在塊2639後,控制傳遞到塊2640。在塊2640中,確定一組就緒生成器中的所有生成器是否已經被掃描。如果沒有,則控制傳回到塊2620以繼續掃描一組就緒生成器中的生成器。否則,控制傳遞到圖26B中的塊2642。在塊2642中,運行時確定MT—EXECUTION—TASK—QUEUE是否為空,如果為空,則控制傳遞到塊2660。否則,控制傳遞到塊2644。在塊2644中,運行時啟動線程池機制(如果還沒有啟動)。控制從塊2644傳遞到塊2650。在塊2650中,單獨的線程被實例化以執行MT_EXECUTION—TASK—QUEUE中的任務上的多線程。執行塊2650的示例性方式在後面描述。控制從塊2650傳遞到塊2660。在塊2660中,多進程和本地執行被實施以執行MP—EXECUTION—TASK_QUEUE禾QLOCALEXECUTION—TASK—QUEUE中的任務。執行塊2660的示例性方式在後面描述。控制從塊2660傳遞到塊2670。在塊2670中,確定MT—RESULT—TASK_QUEUE的當前大小是否等於MT—EXECUTION—TASK—QUEUE的初始大小。如果不是,則控制保持在塊2670中,這是因為在MT—EXECUTION—TASK—QUEUE的所有任務上多線程還沒有被完成。否則,控制從塊2670傳遞到塊2690且過程在塊2207中結束。雖然在上述的示例性流程中多線程、多進程以及本地執行按順序被執行,但是應當理解在一些可替換實施方式中可以並行執行多線程、多進程和本地執行的任意組合。圖27A和27B是根據本發明的一個實施方式的圖26的塊2610的流程圖。因此,控制從塊2205流向圖27A的塊2710。在塊2710中,確定128MT—RESULT—TASK—QUEUE是否被實例化。如果是,則塊2715中MT—RESULT—TASK—QUEUE在被清除。否貝U,在塊2713中MT—RESULT—TASK—QUEUE被實例化。然後控制從塊2713或塊2715傳遞到塊2720。在塊2720中,確定MT—EXECUTION—TASK—QUEUE是否被實例化。如果是,則在塊2725中MT_EXECUTION—TASK—QUEUE被清除。否則,在塊2723中MT—EXECUTION—TASK^QUEUE被實例化。然後控制從塊2723或2725傳遞到塊2730。在塊2730中,確定MP—RESULT—TASK—QUEUE是否被實例化。如果是,則在塊2735中]Vn^RESULT一TASK^QUEUE被清除。否則,在塊2733中MP_RESULT_TASK—QUEUE被實例化。然後控制從塊2733或2735傳遞到塊2740。在塊2740中,確定MP—EXECUTION—TASK—QUEUE是否被實例化。如果是,則在塊2745中MP—EXECUTION—TASK—QUEUE被清除。否則,在塊2743中MP—EXECUTION一TASK一QUEUE被實例化。然後控制從塊2743或塊2745傳遞到圖27B中的塊2750。在塊2750中,確定LOCAL—RESULT—TASK—QUEUE是否被實例化。如果是,則在塊2755中LOCAL—RESULT—TASK—QUEUE被清除。否則,在塊2753中LOCAL—RESULT—TASK_QUEUE被實例化。然後控制從塊2753或塊2755傳遞到塊2760。在塊2760中,確定LOCAL—EXECUTION—TASK—QUEUE是否被實例化。如果是,則在塊2765中LOCAL—EXECUTION—TASK—QUEUE被清除。否則在塊2763中LOCAL—EXECUTION—TASK—QUEUE被實例化。然後控制從塊2763或塊2765傳遞到塊2620。圖28A是根據本發明的一個實施方式的執行多線程的過程的流程圖。如上所述,單獨的線程在圖26的塊2650中被實例化以執行多線程。在塊2820中,確定MT一EXECUTIONJTASK一QUEUE是否為空。如果MT—EXECUTION—TASK—QUEUE為空,也就是MT_EXECUTION—TASK—QUEUE中所有的任務已經被放入(feedto)對應的執行線程,則過程結束。否則,即還有至少一個任務要被放入執行線程,則控制傳遞到塊2825以確定在池中是否存在可用的任意線程。如果在池中沒有可用線程,則控制保持在塊2825直到存在可用線程。當存在可用線程時,控制傳遞到塊2830。在塊2830中,任務從MT—EXECUTION_TASK_QUEUE中移除且該移除的任務被裝入到可用線程。然後控制傳回到塊2820以重複塊2820、2825以及2830,直到所有的任務從MT—EXECUTION—TASK—QUEUE移除。注意,塊2820、2825以及2830中的進程可以被實例化的線程執行以避免阻礙剩餘的流程。圖28B是示出了在線程內的任務放入執行和可選的度量獲取的流程圖。如果請求植入,則運行時開始在塊2810中測量任務執行時間。否則,塊2810被跳過。控制從塊2810傳遞到塊2831。在塊2831中,通過調用具有合適實例和輸出的任務的方法來執行線程中的任務。當任務的執行完成時,輸出和/或修改的實例從該方法被返回且該線程被終止。控制從塊2831傳遞到塊2815。如果請求植入,則在塊2815中運行時結束測量任務執行時間。否則,塊2815被跳過。圖28C是根據本發明的一個實施方式的響應於線程終止回調的過程的流程圖。在塊2832中,線程終止回調被接收。在塊2834中,如果有的話,終止的線程內的任務的輸出和獲得的度量(例如任務執行時間)被存儲在由終止的線程所執行的任務中,且具有該輸出和獲得的度量的任務(如果有的話)被推入到MT—RESULT—TASK—QUEUE。然後控制傳遞到塊2836。在塊2836中,終止的線程被標記為在線程池中可用。圖29A和29B是根據本發明的一個實施方式的圖26的塊2660的流程圖。因此,控制從塊2650流向圖29A中的塊2910。注意,為植入而執行的但不用於實施生成器執行的並行化的塊在圖29A和29B中用具有點劃線邊界的塊示出。在塊2910中,檢査MP一EXECUTION一TASK一QUEUE是否為空。如果MP一EXECUTION—TASK—QUEUE為空,則沒有被多進程處理的任務,從而控制傳遞到塊2670。否則控制傳遞到塊2915。在塊2915中,作業被實例化且作業標識符(ID)被分配給該作業。此外,TASKS—LOCAL—MAP也在塊2915中被實例化。然後控制傳遞到塊2918。如果請求了植入,則塊2918被執行以開始測量作業總時間。否則,塊2918被跳過。然後控制傳遞到塊2920。在塊2920中,任務從MP—EXECUTION—TASK_QUEUE中被讀取並被移除。然後控制傳遞到塊2921。如果請求了植入,則塊2921被執行以開始測量任務總時間。否則,塊2921被跳過。然後控制傳遞到塊2923。在塊2923中,唯一的任務標識符(ID)被分配給所述任務並和任務引用一起存儲在TASKS_LOCAL—MAP中。然後控制傳遞到塊2925以實例化任務串行化形式並使任務串行化形式填充有對應於該任務的生成器的任務ID、類名稱和方法名稱。然後控制傳遞到塊2930。在塊2930中,如果己經被創建,則所有輸入生成器和基礎實例的每一個的串行化形式被發現。可替換地,如果串行化形式沒有被創建,則在塊2930中被創建。執行塊2930的示例性方式在這裡論述。控制從塊2930傳遞到塊2960。在塊2960中,任務串行化形式被添加到作業的串行化任務執行隊列,131即JOB.SERIALIZED—TASKS—EXECUTION—QUEUE。然後控制傳遞到塊2965。在塊2965中,確定MP_EXECUTION—TASK—QUEUE是否為空。如果MP—EXECUTION—TASK_QUEUE不為空,則控制傳回到塊2920以繼續完成MP_EXECUTION—TASK_QUEUE中剩下的任務。否則,控制傳遞到塊2970。在塊2970中,作業被發送到多個遠程處理器的網格。處理器的網格執行遠程計算以執行該作業。遠程計算的一個示例性流程的細節在這裡被論述。然後控制傳遞到塊2972以執行本地執行。控制從塊2972傳遞到塊2973。在塊2973中,確定作業是否完成。如果沒有,則控制保持在塊2973中,直到作業被完成。當作業完成時,控制傳遞到圖29B中的塊2975。參考圖29B,在塊2975中,作業虛擬本地處理時間被設定成0。根據本發明的一個方面,作業虛擬本地處理時間是本地執行的作業中所有任務所花的時間。控制從塊2975傳遞到塊2977。在塊2977中,任務從作業的串行化結果隊列(即,JOB.SERIALIZED—TASKS—RESULTS—QUEUE)被讀取並被移除。然後控制傳遞到塊2979以使用存儲在TASKS—LOCAL—MAP中的任務ID來發現任務引用。然後控制傳遞到塊2980。如果請求了植入,則塊2980被執行以確定輸出串行化形式大小並開始測量輸出的本地反串行化時間。否則,塊2980被跳過且控制傳遞到塊2981。在塊2981中,任務輸出中的輸出被反串行化。控制從塊2981傳遞到塊2982。如果再一次請求了植入,則塊2982被執行以結束測量本地反串行化時間。此外,如果請求了植入,則塊2984、2985、2987以及2989可以被執行。否則,塊2984、2985、2987以及2989被跳過且控制從塊2981傳遞到塊2990。在塊2984中,運行時結束測量任務總時間且然後從任務總時間中去除本地執行時間。控制從塊2984傳遞到塊2985。在塊2985中,確定是否請求了基準測試。如果請求了基準測試,則控制傳遞到塊2987然後到塊2989。否則,控制從2985傳遞到2989而跳過塊2987。如上參考圖25和26所述,基準測試被請求以比較本地和遠程執行時間。因此,根據本發明的一個實施方式,如果基準測試被請求,則使用多進程來在本地和遠程兩地執行任務。因此,在塊2987中,如果請求了基準測試,則運行時可以在LOCAL_RESULT—TASK_QUEUE中找到對應的任務。此外,運行時可以將存儲在任務中的本地處理時間添加到作業虛擬本地處理時間。這樣,當所有任務已被執行時,作業虛擬本地處理時間等於作業中所有任務的本地處理時間之和。控制從塊2987傳遞到塊2989。在塊2989中,例如任務總時間的任務度量和作業ID被添加到任務。控制傳遞到塊2990。注意,如果請求了植入,則塊2987和2989被執行。否則,塊2987和2989可以被跳過。在塊2990中,任務被推入MP—RESULTJTASK—QUEUE中。然後控制傳遞到塊2991。在塊2991中,確定JOB.SERIALIZED—TASKS一RESULTS—QUEUE是否為空。如果不為空,則控制傳回到塊2977以繼續從隊列讀取任務並對輸出進行反串行化。否則,如果請求了植入,則控制傳遞到塊2992。如果沒有請求植入,則控制從塊2991傳遞到圖26B中的塊2670。如果請求了植入,則塊2992、2993、2995、2996以及2997可以被執行。否則,±央2992、2993、2995、2996以及2997可以被跳過。在塊2992中,結束作業總時間的測量,然後本地執行時間從作業總時間中被去除。控制從塊2992傳遞到塊2993。在塊2993中,確定是否請求了基準測試。如果請求了基準測試,則控133制傳遞到塊2995。在塊2995中,通過將作業虛擬本地處理時間除以作業總時間來計算作業加速。然後控制從塊2995傳遞到塊2996。在塊2996中,通過將作業加速除以網格中可用且專用於執行作業的處理器的個數來計算作業效率。控制從塊2996傳遞到塊2997。否則,如果沒有請求基準測試,則控制從塊2993直接傳遞到塊2997。在塊2997中,作業的度量(例如,作業加速、作業效率、作業總時間等)被添加到作業中的每一個任務。控制從塊2997傳遞到圖26B中的塊2670。圖30顯示了根據本發明的一個實施方式的圖29A的塊2930的流程圖。因此,控制從塊2925流向圖30中的塊3010。在塊3010中,確定輸入生成器或基礎實例的串行化形式是否基於輸入生成器關鍵字或基礎實例關鍵字在SERIALIZED—FORMJLOCAL—MAP中被創建。如果串行化形式己經被創建,則控制傳遞到塊3015。否則,控制傳遞到塊3020。在塊3015中,串行化形式ID和串行化形式從SERIALIZED—FORM—LOCAL—MAP中被讀取。然後控制傳遞到塊3040。在塊3020中,串行化形式標識符被分配給輸入生成器或基礎實例。然後控制傳遞到塊3022。在塊3022中,開始本地串行化時間的測量。然後控制傳遞到塊3024。在塊3024中,為輸入生成器或基礎實例創建串行化形式。然後控制傳遞到塊3026。在塊3026中,結束本地串行化時間的測量。然後控制傳遞到塊3028。在塊3028中,確定輸入串行化形式大小。然後控制傳遞到塊3030。在塊3030中,輸入生成器關鍵字或基礎實例關鍵字、串行化形式ID以及串行化形式被存儲至USERIALIZED—FORM—LOCAL_MAP。該SERIALIZED—FORM—LOCAL—MAP依據各種因素(例如存儲器需求、性能需求等)可以是基於逐個作業的全局的的或被分配或釋放的。然後控制傳遞到塊3034。在塊3034中,輸入串行化形式大小和串行化時間與串行化形式ID—起被存儲在SERIALIZED—FORM_LOCAL—MAP中。然後控制傳遞到塊3040。注意,如果請求了植入,則上述的塊3022、3026、3028以及3034可以被執行。如果沒有請求植入,則塊3022、3026、3028以及3034可以被跳過。在塊3040中,確定串行化形式ID是否在JOB.SERIALIZED—FORM一MAP中。如果在,則控制傳遞到塊3045。否則,控制傳遞到塊3043。在塊3043中,串行化形式ID和串行化形式被存儲在JOB.SERIALIZED—FORMS—MAP中。然後控制傳遞到塊3045。在塊3045中,串行化形式ID作為輸入或基礎實例被添加到任務串行化形式。控制從塊3045傳遞到塊3050。在塊3050中,確定是否存在還沒有被處理的另外的輸入生成器或者是否基礎實例還沒有被處理。如果存在,則控制傳回到塊3010。否則,控制傳遞到圖29A中的塊2960。圖31A和31B顯示了根據本發明的一個實施方式的用於多進程的遠程計算的流程圖。同樣,如果請求了植入,則可以執行用點劃線示出的塊,而如果沒有請求植入,所述塊可以被跳過。如上所述,包括多個對應於生成器的任務的作業被分派到用於執行的處理器的網格。網格中的每一個處理器也被稱為工作者(worker),可以緩存JOB—SERIALIZEDFORMS_MAP。例如,如果作業持有一千個任務且有10個工作者執行這些任務,則網格分配器一次將JOB—SERIALIZEDFORMS_MAP發送給每一個工作者,且JOB—SERIALIZEDFORMS—MAP在工作者層被緩存。當作業完成時,網格分配器發送命令給工作者以清空緩存。該流程在塊3108開始。在塊3108中,從網格分配器接收JOB—SERIALIZED—FORMS—MAP和持有輸入ID、類名稱以及方法名稱的任務串行化形式。然後控制傳遞到塊3110。在塊3110中,使用類名稱來定位類且使用方法名稱來定位方法。類和方法被裝載以重新構建任務。然後控制傳遞到塊3112。在塊3112中,任務輸入ID或實例ID從JOB.SERIALIZED—FORMS—MAP中被査詢。然後控制傳遞到塊3120。在塊3120中,確定是否找到輸入ID。如果沒有,則控制傳遞到塊3190以返回錯誤。否則,控制傳遞到塊3130。在塊3130中,確定對應於輸入ID的JOB.SERIALIZED—FORMS—MAP的項是否己經被反串行化。如果已經被反串行化,則控制傳遞到塊3150。否則,控制傳遞到塊3132。在塊3150中,提取輸入的反串行化形式。然後控制傳遞到塊3155。在塊3132中,開始遠程反串行化時間的測量。然後控制傳遞到塊3134以反串行化對應於輸入ID的JOB.SERIALIZED—FORMS—MAP的項。控制從塊3134傳遞到塊3136。在塊3136中,結束遠程反串行化時間的測量。然後控制傳遞到塊3138。在塊3138中,JOB.SERIALIZED—FORMS—MAP中對應項被加入(enrich)反串行化形式。然後控制傳遞到塊3143。在塊3143中,實例或標準輸入被添加到任務定義。然後控制傳遞倒塊3155。在塊3155中,確定所有的輸入ID(即,所有的標準輸入和基礎實例)是否己被處理。換句話說,確定任務是否已經完全被重新組成或反串行化。如果是,則控制傳遞到圖31B中的塊3160。否則,控制傳回到塊3112以處理下一個輸入ID。參考圖31B,遠程處理時間的測量在塊3160中開始。然後控制傳遞到塊3162。在塊3162中,具有合適實例和輸入的方法被調用。作為執行的結果,方法可以返回輸出和/或修改該方法的實例。運行時接收從該方法返回的輸出和/或修改的實例。然後控制從塊3162傳遞到塊3166。在塊3166中,結束遠程處理時間的測量。然後控制傳遞到塊3170。在塊3170中,開始遠程串行化時間的測量。控制傳遞到塊3172以串行化返回的輸出和/或修改的實例並將該串行化的輸出和/或串行化的修改的實例附加到任務上。然後控制傳遞到塊3174。在塊3174中,結束遠程串行化時間的測量。控制從塊3174傳遞到塊3176。在塊3176中,度量(例如,遠程串行化時間、遠程反串行化時間等)被存儲在任務中。然後控制傳遞到塊3180。在塊3180中,任務被發回到運行時的網格分配器且流程結束。同樣的,如果請求了植入,則執行用點劃線示出的塊,而如果沒有請求植入則可以跳過所述塊。圖32顯示了根據本發明的一個實施方式的圖29A的塊2972的流程圖。因此,控制從塊2970流向圖32的塊3202。同樣的,如果請求了植入,則執行用點劃線示出的塊,而如果沒有請求植入則可以跳過所述塊。在塊3202中,開始本地執行時間的測量。然後控制傳遞到塊3210。在塊3210中,任務從LOCAL—EXECUTION—TASK—QUEUE中被移除並且通過調用具有合適的實例和輸入的方法來本地執行該任務。當執行完成時,方法返回方法的輸出和/或修改的實例。然後控制傳遞到塊3212。在塊3212中,結束本地執行時間的測量。然後控制傳遞到塊3220。在塊3220中,任務的輸出被存儲在任務中。然後控制傳遞到塊3223。在塊3223中,度量(例如本地執行時間)也被存儲在任務中。然後控制傳遞到塊3230。在塊3230中,任務被推入到LOCAL_RESULT_TASK—QUEUE中。控制從塊3230傳遞到塊3240。137在塊3240中,確定LOCAL—EXECUTION_TASK—QUEUE是否為空。如果隊列為空,則控制傳遞到圖29A中的塊2973。否則,控制傳回到塊3202以重複在本地執行另一個任務的過程。可替換實施方式雖然圖中的流程圖顯示了本發明某些實施方式所執行的操作的特定順序,但是應當理解該順序是示例性的(例如,可替換實施方式可以以不同順序執行操作、結合某些操作、與某些操作重疊等)。雖然根據一些實施方式描述了本發明,但是本領域技術人員可以理解本發明不限於所述的實施方式,而且可以通過在所附權利要求的實質和範圍內做出修改和改變來實施本發明。因此描述被視為示例性而非限制性的。權利要求1、一種用於執行以面向對象的代碼所編寫的應用程式的計算機執行方法,該方法包括實例化具有當前感興趣的輸出的生成器,其中所述面向對象的代碼包括方法和生成器依賴性聲明,其中用於給定方法的所述生成器依賴性聲明標識一組零個或多個生成器,其中生成器是運行時可實例化的結構,該結構包括至少一個實例和與該實例相關聯的方法;響應於所述實例化,添加感興趣的生成器作為生成器圖形的一部分;嘗試基於已經在所述生成器圖形中的生成器的方法的生成器依賴性聲明通過連結和在需要時實例化其他生成器來自動生成所述生成器圖形的餘項;以及執行所述生成器圖形中的生成器以確定所述感興趣的生成器的當前輸出,其中所述執行包括基於所述生成器圖形中生成器之間的依賴性使用所述運行時來並行化執行所述生成器圖形中至少兩個生成器。2、根據權利要求1所述的方法,其中並行化執行所述生成器圖形中至少兩個生成器包括標識所述生成器圖形中生成器中的一組就緒生成器;確定所述一組就緒生成器中每一個生成器的執行模式;使所述一組就緒生成器中每一個生成器在對應的執行模式下被執行。3、根據權利要求2所述的方法,其中所述執行模式是本地執行模式、多進程模式和多線程模式中的一者。4、根據權利要求2所述的方法,該方法還包括創建用於所述一組就緒生成器中每一個生成器的任務;以及使所述任務在對應的生成器的執行模式下被執行。5、根據權利要求4所述的方法,其中所述一組就緒生成器中每一個生成器的任務包括對應生成器的引用和所述對應生成器的輸出的引用。6、根據權利要求2所述的方法,其中確定所述一組就緒生成器中每一個生成器的執行模式包括檢查對應生成器的方法的執行模式設定;如果終端用戶基於類、方法和實例中的一者選擇另一個執行模式,則覆蓋所述對應生成器的執行模式設定;如果所述對應生成器的對應執行模式設定在所述生成器圖形中已被改變,則在逐個生成器的基礎上覆蓋所述對應生成器的執行模式設定;以及如果所述運行時被設定為用預定的執行模式在全局上覆蓋對應的執行模式,則用預定的執行模式覆蓋所述生成器圖形中的所述對應執行模式設定。7、根據權利要求1所述的方法,該方法還包括響應於植入請求,使用所述運行時在逐個生成器的基礎上獲取度量,該度量與執行所述生成器圖形中的生成器相關,所述獲取度量包括在逐個生成器的基礎上測量所述生成器圖形中的生成器的執行時間。8、根據權利要求7所述的方法,其中所述獲取度量還包括基於作業測量所述生成器圖形中的生成器的執行時間,其中作業包括被多進程處理的多個生成器。9、根據權利要求8所述的方法,其中所述獲取度量還包括響應於基準測試請求,相對於所述作業的遠程執行來對本地執行進行基準測試,該基準測試包括本地執行多個生成器;測量所述多個生成器的本地執行時間;將所述作業發送到處理器網格,其中所述處理器網格基本並行執行所述多個生成器;測量所述作業的總執行時間;將所述本地執行時間與總的遠程執行時間進行比較;以及在逐個生成器的基礎上測量輸入流大小和輸出流大小。10、一種用於執行以面向對象的代碼所編寫的應用程式的計算機執行方法,該方法包括實例化具有當前感興趣的輸出的生成器,其中所述面向對象的代碼包括方法和生成器依賴性聲明,其中用於給定方法的所述生成器依賴性聲明標識一組零個或多個生成器,其中生成器是運行時可實例化的結構,該結構包括至少一個實例和與該實例相關聯的方法;響應於所述實例化,添加感興趣的生成器作為生成器圖形的一部分;嘗試基於已經在所述生成器圖形中的生成器的方法的生成器依賴性聲明通過連結和在需要時實例化其他生成器來自動生成所述生成器圖形的餘項;以及使用具有面向生成器圖形編程支持的運行時基於所述生成器圖形來植入所述應用程式。11、根據權利要求IO所述的方法,其中植入所述應用程式包括在逐個生成器的基礎上測量所述應用程式的執行時間。12、根據權利要求10所述的方法,其中植入所述應用程式還包括將作業發送到處理器網格,其中所述處理器網格基本並行執行所述作業中的多個生成器;測量所述作業的總執行時間;以及在逐個生成器的基礎上測量輸入流的大小和輸出流的大小。13、根據權利要求12所述的方法,其中植入所述應用程式還包括響應於基準測試請求,相對於所述作業的遠程執行來對本地執行進行基準測試,所述基準測試包括本地執行所述作業中的所述多個生成器;以及測量所述多個生成器的本地執行時間。14、根據權利要求13所述的方法,其中所述基準測試還包括將所述本地執行時間與總的遠程執行時間進行比較;以及從所述本地執行時間和所述總的遠程執行時間中得到比較度量。15、一種設備,包括運行時,用於運行面向對象的原始碼,該原始碼具有用於方法和方法的執行模式設定的生成器依賴性聲明,其中生成器是運行時可實例化的結構,該結構包括實例和與該實例相關聯的方法,其中用於給定方法的每一個生成器依賴性聲明標識一組零個或多個生成器,且其中所述運行時包括自動生成器圖形生成模塊,用於接收感興趣的生成器的命名以添加所述感興趣的生成器作為生成器圖形的一部分,並基於已經在所述生成器圖形中的生成器的方法的生成器依賴性聲明通過連結和在需要時實例化其他生成器來自動生成所述生成器圖形的餘項,以及自動生成器圖形執行模塊,用於以所述生成器圖形指示的順序來執行所述生成器圖形中的生成器從而確定所述感興趣的生成器的輸出,其中每一個生成器的執行使所述生成器的方法在所述生成器的實例上被執行,且所述自動生成器圖形執行模塊包括並行化模塊,該並行化模塊用於使多個生成器的零個或多個生成器被並行執行。16、根據權利要求15所述的設備,其中所述自動生成器圖形執行模塊還包括與所述並行化模塊耦合的本地執行模塊,該本地執行模塊用於使具有本地執行的執行模式的生成器被本地執行。17、根據權利要求16所述的設備,其中所述自動生成器圖形執行模塊還包括度量獲取模塊,該度量獲取模塊用於在請求了植入時測量具有所述本地執行的執行模式的生成器的本地執行時間。18、根據權利要求15所述的設備,其中所述自動生成器圖形執行模塊還包括與所述並行化模塊耦合的多線程模塊,該多線程模塊用於啟動線程池機制並將對應於具有多線程執行模式的生成器的多線程任務放入到可用線程。19、根據權利要求18所述的設備,其中所述自動生成器圖形執行模塊還包括度量獲取模塊,該度量獲取模塊用於在請求了植入時測量具有所述多線程執行模式的每一個生成器的執行時間。20、根據權利要求15所述的設備,其中所述自動生成器圖形執行模塊還包括與所述並行化模塊耦合的多進程模塊,該多進程模塊用於實例化作業、串行化與具有多進程執行模式的生成器對應的多進程任務、串行化所述多進程任務的輸入和基礎實例、將串行化的多進程任務和串行化的輸入及串行化的基礎實例添加到所述作業、以及將所述作業提供給網格分配器,該網格分配器用於將所述作業分配給網格,該網格具有用於執行所述作業中的多進程任務的多個處理器。21、根據權利要求20所述的設備,其中所述自動生成器圖形執行模塊還包括度量獲取模塊,該度量獲取模塊用於在請求了植入時測量與具有所述多進程執行模式的生成器對應的多進程任務中的每一個多進程任務的執行時間;所述作業中的多進程任務輸入、輸出和實例的串行化時間和大小;所述作業中的多進程任務輸入、輸出和實例的反串行化時間和大小;以及,所述作業中的所述多進程任務的執行時間。22、根據權利要求21所述的設備,其中,響應於基準測試請求,所述度量獲取模塊用於測量所述多進程任務的本地執行時間、比較所述多進程任務的本地執行時間與所述作業的執行時間以及得到比較度量。23、根據權利要求15所述的設備,其中所述運行時還包括與所述並行化模塊耦合的基於生成器的可配置決定結構,該基於生成器的可配置決定結構用於基於來自運行時客戶端的類關鍵字、實例關鍵字以及方法關鍵字中的一者或多者的組合來存儲執行模式,其中所述自動生成器圖形生成模塊可操作地用於在存在執行模式選擇、執行模式設定以及運行時覆蓋設定的情況下,基於所述執行模式選擇、執行模式設定以及運行時覆蓋設定來確定所述執行模式。24、根據權利要求15所述的設備,其中所述運行時還包括與所述自動生成器圖形生成模塊和所述自動生成器圖形執行模塊耦合的生成器圖形結構,該生成器圖形結構用於在存在多個生成器的輸出、執行模式設定以及獲取的度量的情況下存儲所述多個生成器的輸出、執行模式設定以及獲取的度量。25、根據權利要求15所述的設備,其中所述運行時還包括運行時設定結構,用於存儲全局執行模式覆蓋設定。26、一種設備,包括運行時,用於運行面向對象的原始碼,該原始碼具有用於方法和方法的執行模式設定的生成器依賴性聲明,其中生成器是運行時可實例化的結構,該結構包括至少一個實例和與該實例相關聯的方法,其中用於給定方法的每一個生成器依賴性聲明標識一組零個或多個生成器,且其中所述運行時包括自動生成器圖形生成模塊,用於接收感興趣的生成器的命名以添加所述感興趣的生成器作為生成器圖形的一部分,並基於已經在所述生成器圖形中的生成器的方法的生成器依賴性聲明通過連結和在需要時實例化其他生成器來自動生成所述生成器圖形的餘項,以及自動生成器圖形執行模塊,用於以所述生成器圖形指示的順序來執行所述生成器圖形中的生成器從而確定所述感興趣的生成器的輸出,其中每一個生成器的執行使所述生成器的方法在所述生成器的實例上被執行,且所述自動生成器圖形執行模塊包括度量獲取模塊,該度量獲取模塊用於在請求了植入時在逐個生成器的基礎上獲取與執行所述多個生成器相關的度量。27、根據權利要求26所述的設備,其中所述度量獲取模塊可操作地用於測量所述生成器圖形中的生成器的執行時間。28、一種提供面向對象的原始碼的機器可讀介質,該機器可讀介質包括:多個類定義,每一個類定義包括一組一個或多個欄位;一組一個或多個方法;用於所述一組方法中每一個方法的生成器依賴性聲明,其中運行時使用用於所述方法中的給定的方法的生成器依賴性聲明來標識一組零個或多個生成器,且其中生成器是運行時可實例化的結構,該結構包括在運行時的多個類中的至少一個類的實例以及與該實例相關聯的方法,以及,其中所述運行時可操作用於基於其他生成器的方法的生成器依賴性聲明通過連結和在需要時實例化其他生成器來自動生成用於指定的感興趣生成器的生成器圖形,並且基於所述生成器圖形中指示的生成器之間的依賴性基本並行自動執行所述生成器圖形中的至少兩個生成器。29、根據權利要求28所述的機器可讀介質,其中所述運行時是可操作用於響應於植入請求來自動獲取與執行所述生成器圖形中的生成器相關的度量。30、根據權利要求29所述的機器可讀介質,其中所述運行時可操作用於響應於基準測試請求相對於通過多進程對一個或多個生成器的遠程執行來自動對所述生成器圖形中一個或多個生成器的本地執行進行基準測試。31、根據權利要求28所述的機器可讀介質,其中所述面向對象的原始碼還包括用於所述一組方法中的每一個方法的執行模式設定。32、根據權利要求31所述的機器可讀介質,其中所述運行時基於執行模式設定、存在來自終端用戶和客戶端代碼中一者的可配置決定結構中的第二執行模式設定的情況下基於所述第二執行模式設定、存在來自終端用戶和客戶端代碼中的一者的生成器圖形結構中的第三執行模式設定的情況下基於所述第三執行模式以及存在運行時覆蓋設定的情況下基於所述運行時覆蓋設定來確定執行模式,其中各個方法在在所述執行模式下被執行。33、根據權利要求31所述的機器可讀介質,其中所述執行模式是本地執行模式、多進程模式以及多線程模式中的一者。34、根據權利要求31所述的機器可讀介質,其中多個類定義中的一個或多個還包括在注釋中提供的一個或多個執行模式設定。35、根據權利要求28所述的機器可讀介質,其中所述面向對象的原始碼還包括用於在運行時等級覆蓋所述執行模式的覆蓋運行時執行模式設定命令。36、根據權利要求28所述的機器可讀介質,其中所述面向對象的原始碼還包括用於在逐個生成器的基礎上覆蓋所述執行模式的覆蓋生成器執行模式設定命令。37、根據權利要求28所述的機器可讀介質,其中所述面向對象的原始碼還包括用於在類、方法和實例的至少一者的基礎上覆蓋所述執行模式的可配置決定樹執行模式設定命令。38、根據權利要求28所述的機器可讀介質,其中所述面向對象的原始碼還包括用於在類、方法和實例的至少一者的基礎上覆蓋所述執行模式的可配置決定樹執行模式設定命令。全文摘要描述了一種面向生成器圖形的編程框架中的並行化和/或植入的實施方式。在一個實施方式中,接收運行應用程式的請求,其中應用程式的面向對象的原始碼包括方法和生成器依賴性聲明,其中用於給定方法的生成器依賴性聲明標識一組具有輸出的零個或多個生成器,該輸出是給定方法的輸入,其中生成器是至少一個實例和與該實例相關聯的方法。此外,可以使用運行時基於應用程式的生成器之間的依賴性來並行化執行應用程式。在一些實施方式中,使用運行時來植入應用程式。文檔編號G06F11/34GK101589366SQ200780050449公開日2009年11月25日申請日期2007年11月30日優先權日2006年12月1日發明者E·埃德,F·沙米耶申請人:莫雷克斯公司