專利名稱:使用可用子程序配置計算機程序的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及到通過將可用的子程序加以連接和配置,以開發(fā)類似所謂“面向?qū)ο蟆钡某绦蚰菢拥挠嬎銠C程序。
計算機程序允許計算機完成很多有用的任務(wù)。然而,為了編寫計算機程序,特別是所謂“面向?qū)ο蟆钡挠嬎銠C程序,人們必須具備必要的計算機編程技巧和該特定的編程語言的語法知識。為了掌握必要的編程技巧和知識,需要付出相當(dāng)多的時間,通常還需金錢。因此,本技術(shù)的目的是為非計算機編程人員或只有初步培訓(xùn)的編程人員提供方便來開發(fā)計算機程序。
于1992年11月10日頒發(fā)給Hullot和轉(zhuǎn)讓給NeXT計算機公司的美國專利第5,163,130號中所公開的現(xiàn)有技術(shù)系統(tǒng)曾向這個目標(biāo)邁進(jìn),該前技術(shù)系統(tǒng)為早已至少部分編寫好的程序所用圖形接口的開發(fā)和配置使用了圖形用戶接口技術(shù)。然而,這樣的現(xiàn)有技術(shù)系統(tǒng)不能從一組子程序中開發(fā)完全的,隨意的計算機程序。這是因為該現(xiàn)有技術(shù)系統(tǒng)處理出口的能力有限。
一個“出口”是一個數(shù)據(jù)結(jié)構(gòu)或?qū)ο螅峁┍匦璧男畔?,后者在一個特定“源”對象和一個或更多“目的”對象之間建立連接時是需要的。根據(jù)現(xiàn)有技術(shù)狀況,出口是在特殊設(shè)計用來與其他對象交互工作的“源”對象中定義的。利用出口的名稱,每個出口向程序配置系統(tǒng)的用戶提供有關(guān)“目的”對象的種類的標(biāo)幟,而源對象必須與該“目的”對象連接才能發(fā)揮作用。
本發(fā)明的目的是利用程序配置方法和裝置為建立計算機程序提供方便,該程序配置方法和裝置允許一個或更多個子程序單元和一個或更多個圖形接口單元的變量和函數(shù)部分和其他子程序單元或圖形接口單元中的變量或函數(shù)連接起來,以便將一定類型的計算機程序的功能完全加以配置并準(zhǔn)備付諸執(zhí)行,而不需用戶直接閱讀、編寫或編輯該特定計算機語言的編碼。程序配置實用系統(tǒng)用于具備可見顯示的計算機系統(tǒng)內(nèi),在該可見顯示上應(yīng)用程序由一個圖形圖象所代表,而該應(yīng)用程序具有至少兩個子程序或至少一個子程序和至少一個圖形接口單元,如該應(yīng)用程序具有至少兩個子程序,則每個子程序都有變量和動作部分。程序配置實用系統(tǒng)可使非編程人員或只有初步編程技巧的人有能力將一個或更多的子程序的集合配置成一個完整的計算機程序,而不是局限于只將程序用戶接口配置成不可見的,功能性程序單元。
尤其是,本發(fā)明將現(xiàn)有技術(shù)加以改善,提供一個系統(tǒng)和過程,后者通過激勵子程序去建立便于將該子程序和其他子程序連接的新出口,可在程序配置期間為子程序定義任意數(shù)量的出口。在本發(fā)明的特定實施例中,新出口的名稱或a)依靠將一個子程序試圖連接到其他子程序而獲得,或b)由程序配置系統(tǒng)用戶直接輸入出口名稱而提供,例如在鍵盤上將出口名稱敲入。此外,根據(jù)本發(fā)明的一個方面,出口可具有一個或更多約束參數(shù)而得到擴充,這些約束參數(shù)可用于保證這些連接只建立起合適的關(guān)系。這些約束參數(shù)包括a)所允許的連接數(shù)量,b)所允許的連接種類,c)目的對象的類,和d)所需要的目的對象操作。
附圖中
圖1、2、3、6和7顯示出給本發(fā)明的計算機程序配置系統(tǒng)和方法的用戶所展現(xiàn)的屏幕顯示;圖4和5分別顯示出圖3和6的屏幕顯示的一部分;圖8至13顯示用于實現(xiàn)本發(fā)明的過程的一部分的流程圖;圖14顯示根據(jù)本發(fā)明所存儲信息的表格;圖15是實現(xiàn)本發(fā)明的系統(tǒng)和方法的計算機的典型硬件配置的框圖;圖16顯示出圖6的屏幕顯示的一部分;以及圖17顯示出子程序,它們的出口和出口屬性之間的關(guān)系。
雖然本發(fā)明的程序配置系統(tǒng)可用于使用任何數(shù)量的編程語言的計算機上,但最合適的情況是和運行面向?qū)ο蟮木幊陶Z言的計算機一起使用,本發(fā)明的最佳實施例是為執(zhí)行用C編程語言編寫的程序的計算機所設(shè)計的,因此,下面的討論將至少部分地適合于面向?qū)ο蟮木幊?,尤其適合于面向?qū)ο蟮腃編程。然而應(yīng)該理解本發(fā)明并不只局限于運行面向?qū)ο缶幊陶Z言的系統(tǒng)。
本發(fā)明的程序配置系統(tǒng)是一個自包含實用系統(tǒng),它和將被配置的程序是分開的。假定任何被配置的計算機程序所需的部件函數(shù)、對象、和子程序在和程序配置系統(tǒng)一起使用之前都已編寫并在一般情況下能夠執(zhí)行。
要理解下面的解釋,必須定義幾項術(shù)語。
一個“對象”是一個由一個或更多個在一個特定的子程序內(nèi)一起定義的數(shù)據(jù)結(jié)構(gòu)和有關(guān)的操作所組成的自包含群體。
一個“連接”是一個由程序配置系統(tǒng)建立的對象,用于獲取“源”對象和“目的”對象間的關(guān)系細(xì)節(jié)。連接是在程序配置過程中建立的,它們在程序執(zhí)行期間被其他對象使用。連接對象通常獲取圖14所示的關(guān)系細(xì)節(jié),這在下面還將解釋?,F(xiàn)時發(fā)明的程序配置系統(tǒng)的關(guān)鍵功能是如適當(dāng)?shù)膶ο箝g交互作用所需要的那樣為對象間連接的定義提供方便。
一個“出口”是一個用于提供信息的數(shù)據(jù)結(jié)構(gòu)或?qū)ο?,該信息是在從一特定“源”對象到一個或更多個“目的”對象建立連接時所需要的。根據(jù)本發(fā)明的一個方面,出口是在特殊設(shè)計用來與其他對象交互工作的“源”對象內(nèi)所定義,或由“源”對象的功能操作所建立。借助于出口的名稱或相關(guān)的出口變量的名稱,每個出口向程序配置系統(tǒng)的用戶提供有關(guān)“目的”對象的種類的標(biāo)幟,而源對象必須與該“目的”對象連接才能發(fā)揮作用。除名稱之外,根據(jù)本發(fā)明的一個方面,出口可具有一個或更多約束參數(shù)而得到擴充,這些約束參數(shù)可用于保證這些連接只建立起合適的關(guān)系。這些約束參數(shù)包括a)所允許的連接數(shù)量,b)所允許的連接種類,c)目的對象的類,和d)所需要的目的對象操作。
決定于應(yīng)用程序的設(shè)計,一定的對象為了要發(fā)揮功能,就要求它們出口的初始集合在程序配置時加以擴充(例如增加數(shù)量)。根據(jù)本發(fā)明的原理,當(dāng)由來自程序配置工具包的信息所激勵時,為擴充出口的初始集合而提供附加的出口的對象就進(jìn)行擴充操作。用此種方法附加到對象的出口的原始集合的出口在這里稱作“獲取的”出口,并用程序配置工具包個別地賦予名稱。通過從合適的“目的”對象的功能取得一串名稱和/或通過提示用戶手動輸入所希望的出口名稱,例如用鍵盤,程序配置工具包可用于自動地為獲取的出口命名。
根據(jù)本發(fā)明,獲取的出口a)由程序配置系統(tǒng)顯示和注解,b)由用戶使用程序配置系統(tǒng)加以改變,以及c)可以具有對用戶有特殊意義的名稱,例如,目的電子數(shù)據(jù)表子程序的范圍名稱,或數(shù)據(jù)庫特性。
為了有利于解釋子程序,它們的出口、和出口屬性間的關(guān)系,讀者可將注意力放在圖17。為簡明起見,也只為了下面圖17的解釋,出口將顯式地看成出口對象。一個子程序?qū)ο?701可能有例如指針指向一個或更多出口對象1702。每個出口對象1702有至少一個名稱1703,并可能有例如指針指向一個或更多被命名的連接類型對象1705。每個連接類型的對象1705有一個名稱1706和不同的參數(shù),例如,這些參數(shù)用于描述a)所需要的連接數(shù)量1707,b)目標(biāo)子程序所需要的方法1708(這里用作技術(shù)術(shù)語,即功能子程序),c)所需要的目標(biāo)子程序的類1709,以及d)一個用于描述出口的可能用途的標(biāo)識參數(shù)1710,例如出口是否可能用于從一個目標(biāo)子程序獲取其他出口名稱的目的。
現(xiàn)轉(zhuǎn)向圖1,其中顯示了計算機顯示的圖象,在下列情況時能看到該顯示1)用戶進(jìn)入本發(fā)明的程序配置系統(tǒng),2)為所要配置的程序?qū)⒊绦蛭募ο到y(tǒng)加以標(biāo)識,和3)為了用于所配置程序?qū)⑺璨考映绦蚝蛨D形接口域加以標(biāo)識。此種情況下,命名為MY—PRO-GRAM的所配置的程序是一個簡單程序,用于將兩個數(shù)X和Y作為輸入量和將它們的和數(shù)作為結(jié)果r加以顯示。顯示10顯示了程序配置系統(tǒng)。文件窗口13包括一個代表MY—PROGRAM的圖形單元130,代表MY—WINDOW14的圖形單元131,代表一個稱為FUNCTION—1的子程序的圖形單元133,和代表另一個命名為CONNECTIONS—1的子程序的圖形單元134。在圖形單元131上按鼠標(biāo),用戶即可打開或關(guān)閉MY—WINDOW14。
用戶已定義MY—WINDOW14為包括1)前面標(biāo)以文字標(biāo)號“X”的域140,2)前面標(biāo)以文字標(biāo)號“Y”的域141,3)前面標(biāo)以文字標(biāo)號“r”的域142,和4)帶有標(biāo)號“+”的按鈕143。MY—WIN-DOW14,域140—142和按鈕143由用戶按下法建立用戶從調(diào)色板/工具箱12中選取合適的項目,并把所選項目復(fù)制到顯示10上所希望的位置上。應(yīng)用本程序時可將代表鼠標(biāo)光標(biāo)的箭頭20移動至域140并按鼠標(biāo)按鈕,這就允許輸入數(shù)值X,接著對域141進(jìn)行同樣操作,將數(shù)值y輸入,再將箭頭移至按鈕143并按鼠標(biāo),這樣的操作將MY—PROGRAM130中所用子程序—本例中是CONNECTIONS1134和FUNCTION—1 133—加以結(jié)合,以便計算r值并將它在域142中顯示。
根據(jù)本發(fā)明的原理,要使這樣一個程序運行的一個方法是將包括為用于較大程序而編寫的對象的子程序分別加以配置,將它們連接在一起并和一個用戶接口子程序連接起來,該用戶接口子程序能提供一個具有一定數(shù)量用戶接口域—例如MY—WINDOW14的域140—143—的顯示。FUNCTION—1 133是一個這樣的可配置的子程序?qū)ο螅诒纠兴且粋€特定的電子數(shù)據(jù)表子程序?qū)ο?,它提供用于計算特定類型的和?shù)所需全部程序邏輯?!癈ONNEC-TIONS—1”134是另一個這樣的子程序?qū)ο?,它是一個連接函數(shù),能提供同步觸發(fā)功能。一旦所有子程序,例如用于控制MY-WIN-DOW14、FUNCTION—1 133、CONNECTIONS—1 134的代碼,都已編寫完,它們可連接在一起以定義一個完整的可運行的程序。要做到這點,必須在調(diào)色板/工具箱12中提供一個用于代表稱為“FUNCTION—1”和“CONNECTIONS—1”的子程序的圖形圖象,并至少一次將它們每一個復(fù)制到上面討論的程序文件窗口13中去。一般講來,和調(diào)色板/工具箱中所代表的其他函數(shù)一樣,F(xiàn)UNC-TION—1 133、CONNECTIONS—1 134事先必須至少部分編寫好,以便在它們的圖象存入調(diào)色板/工具箱12時每個這樣的函數(shù)或子程序都是可執(zhí)行的。熟悉技術(shù)的人知道怎樣制做這樣的子程序。
為建立所需連接,程序配置系統(tǒng)按下列示范方式工作為特定地將子程序CONNECTIONS—1 134和子程序FUNCTION—1 133相聯(lián),用戶操作如下為了選用CONNEC-TIONS—1 134將箭頭20移至文件窗口13中它的圖形表示處,并在按下計算機鍵盤的控制(CTRL)鍵的同時按鼠標(biāo)按鈕。雖然在圖1中沒有其他子程序,有時會有不止一個其他子程序要加以選擇。如圖2所示,按著鼠標(biāo)按鈕不放—控制鍵可以放開—,用戶移動鼠標(biāo)來將箭頭20移向感興趣的特定子程序處,從最初選用的子程序表示如CONNECTIONS—1 134畫一直線21。當(dāng)該線抵達(dá)感興趣的子程序如FUNCTION—1 133時,用戶放開鼠標(biāo)按鈕,結(jié)果就在所增亮的兩個子程序之間建立了連接。圖3中顯示了這樣的增亮的連接。如果檢查員窗口30沒有在以前的活動中顯示出來,則這時候該窗口30即在顯示10上出現(xiàn)。
圖4顯示檢查員窗口30更詳細(xì)的圖象。在所示操作模式即已知為鏈接或“連接”模式中,檢查員窗口的功能是a)在子窗口400中顯示上一次所選子程序如CONNECTIONS—1 134的出口,b)在另一個子窗口401中顯示目標(biāo)子程序如FUNCTION—1 133的合適的可執(zhí)行函數(shù),而其他子程序或圖形單元可以和它連接起來,c)顯示從所選出口至所選子程序所允許的連接類型(如圖5中TYPE—1 501),以及d)便于完成這種鏈接或連接。標(biāo)號為“出口”的子窗口400列舉了所選子程序即本例中的CONNECTIONS—1134的初始變量。標(biāo)號為“目的處的動作”的子窗口401列舉了可用于連接目標(biāo)子程序函數(shù)程序,在本例中是FUNCTION—1 133內(nèi)可用的一套適當(dāng)?shù)暮瘮?shù)。
正如上面所蘊含的,檢查員窗口30具有幾種不同的操作模式。檢查員窗口30包括模式子窗口425,后者顯示出檢查員窗口30的當(dāng)前操作模式。如圖4和5所示,檢查員窗口30處于“連接”模式。圖16顯示處于“屬性”模式的圖5的檢查員。檢查員窗口30還有“按鈕“423、424和427,當(dāng)按鼠標(biāo)時,它們中每一個都將一個特定函數(shù)加以初始化。當(dāng)前標(biāo)以“連接”的按鈕423可用作連接和斷開兩種函數(shù),因此有時候如圖5中更詳細(xì)地描述的和顯示的那樣,標(biāo)號為“斷開”。
用戶將箭頭20放置于出口名稱上方并按鼠標(biāo)按鈕、即可在子窗口400中選擇一個出口。用戶接著可以將所選出口和目的子程序內(nèi)可用的動作加以聯(lián)接。這是通過將箭頭20放置于子窗口401中的描述字上方并再次按鼠標(biāo)按鈕而完成的。如果一個建議的連接有可能規(guī)定不止一種連接類型,可用的類型列舉于子窗口420中。用戶將箭頭20放置于所希望的連接類型名稱上方,并按鼠標(biāo)按鈕,即可選擇或改變連接類型。
將箭頭20放置于“連接”按鈕423上并按鼠標(biāo)按鈕,即可在所選子程序和目標(biāo)子程序的有關(guān)動作之間完成所選類型的連接。在本例中,在程序運行期間,當(dāng)子程序CONNECTIONS—1 134中以前所定義的程序指令的順序操作使該子程序向另一個由所連接出口所指向的子程序發(fā)送一個動作信息時,檢查員窗口30中為該連接所選的特定動作信息將送至本例中的FUNCTION一1 133。
根據(jù)本發(fā)明,用戶不時地可能在任意選擇的源和目的對象之間規(guī)定一個所希望的連接。如上面所描述那樣,通常做法是將箭頭20放置在屏幕的源對象表示上方并如上描述畫條線到某些目的對象,然后放開鼠標(biāo)按鈕。每次當(dāng)用戶操作時,系統(tǒng)將顯示同源對象相關(guān)聯(lián)的檢查員窗口30并在檢查員窗口30內(nèi)列舉源對象的出口變量名稱。當(dāng)檢查員窗口30中特定出口被選擇和/或增亮?xí)r,系統(tǒng)從目的對象獲取全部所需信息,從決定a)何種連接類型可用于連接至目的對象,b)多少個連接可連至目的對象,以及c)何種目的對象函數(shù)可由從所增亮出口到目的對象的信息所觸發(fā)。從目的對象如此獲得的信息用于決定在檢查員窗口30中列舉何種函數(shù)和連接類型,作為選項供用戶選擇。根據(jù)本發(fā)明的一個方面,用戶被系統(tǒng)限制為只能選擇那些對所選目的對象適用的連接的類型和數(shù)量。有利的是,這些連接將只觸發(fā)目的對象中那些有意義的函數(shù)。
根據(jù)本發(fā)明,一定子程序中的“源”出口用于從一個或更多個目的子程序獲取和使用附加出口。當(dāng)這種特定類型的源子程序和出口連接至合適的目的子程序時,這些源子程序?qū)@取附加出口,然后也列舉在子窗口400中。另外,當(dāng)那些由一定的子程序所獲取的源出口連接到合適的目的子程序時,這些源出口也可用于獲取附加的源出口。如圖5所示,所獲取出口從被獲取時起即列舉于子窗口400中并一直停留在那里,直至遇到下列情況之一或其他一些源對象被選擇,或那些促使所獲取對象被獲取的出口本身被斷開。在子窗口400內(nèi),a)符號“@”500緊挨著任何所獲取出口列舉出來以及b)符號“+”406緊挨著任何在所選子程序的上下文中用來或可能用來從目的子程序中獲取源出口的出口列舉出來。星號符號“*”404也緊挨著任何用在源和目的子程序間的一個或更多連接內(nèi)的出口列舉出來。
根據(jù)本發(fā)明,用于從眾多源變量同步地復(fù)制數(shù)據(jù)到一個目標(biāo)對象時所必需的對象特別適合于使用所獲取出口。本例中,眾多用戶接口對象連接至由CONNECTIONS—1 134所代表的對象,后者接著又連接到對象FUNCTION—1 133,---一個特定的電子數(shù)據(jù)表。對象CONNECTIONS—1 134具有能力通過特定命名為“SPREADSHEET”的出口從任何它所連接的電子數(shù)據(jù)表中獲取附加出口。如此獲得的出口被理解為目標(biāo)電子數(shù)據(jù)表的范圍名稱。一旦獲得這些出口,所獲取出口可用于連接至其他對象,這包括但不局限于提供用戶接口的對象。然而這些所獲取出口,以及特別是傳送給與之連接的其他對象的信息,仍然處于進(jìn)行獲取的對象的控制之下。因此,進(jìn)行獲取的源對象隨時提供送往目的對象的信息同步操作,例如,該同步操作可由被用戶接口所捕獲的單個按鼠標(biāo)操作所產(chǎn)生的送往目的對象的單個信息所觸發(fā)。
相似地,設(shè)計用于連接到數(shù)據(jù)庫模塊的對象也可能隨時準(zhǔn)備獲取對應(yīng)于數(shù)據(jù)庫特性的出口。例如,已經(jīng)獲取了代表數(shù)據(jù)庫特性的出口的對象對于收集那些形成數(shù)據(jù)庫查詢所必需的數(shù)據(jù)以及使收集操作同步化特別有用。
根據(jù)本發(fā)明的一個方面,對一定類型的進(jìn)行獲取的對象講,如圖16所示,當(dāng)檢查員處于“屬性”模式時,用戶可以直接將出口名稱輸入到檢查員窗口30中去(圖6),從而規(guī)定將要獲取的出口。任何時候只要檢查員窗口30以屬性模式顯示出來,用戶就可以選用出口列表921中的空白區(qū)并鍵入所希望的出口名稱。另一種方法是,用戶可在列表內(nèi)選用已有的所獲取的出口,并在所增亮的名稱上鍵入,從而改變出口名稱。用這種方法獲取出口的對象在提供多重同步化的邏輯、算術(shù)或語法比較時特別有用。例如,借助于這種方法可由一個對象獲取多個出口,可由一個事件或由其他對象來的一個信息觸發(fā)多個單獨的但同時的比較,并且單一的結(jié)果可送至一個或更多其他對象。
圖5顯示出檢查員窗口30,它是在一個目的子程序例如圖1中FUNCTION—1 133的變量自動地和直接地加以獲取并由所選子程序例如CONNECTIONS—1 134的功能子程序所采用,然后又在子窗口400中顯示之后顯示的。用戶將箭頭20移動至所希望的變量處,例如圖5中的變量A1B1 407,再按鼠標(biāo)使它增亮。如圖6所示,一旦一個變量被選增亮,以及當(dāng)箭頭20(圖1)位于和當(dāng)前檢查員窗口30相關(guān)聯(lián)的子程序圖形表示上方時,用戶再按一個鼠標(biāo),并畫另一條線111(圖6)至另一個子程序,或如本例中顯示上的接口域140。
當(dāng)鼠標(biāo)箭頭接近程序用戶接口中所定義的任何域或文件窗口13(圖1)中任一其他子程序時,由情況決定,目標(biāo)域或子程序?qū)⒃隽痢.?dāng)一個域或子程序如此增亮而用戶放開鼠標(biāo)按鈕時,在源和目的對象間畫了一條可見的連線,用于顯示未決邏輯連接。當(dāng)未決邏輯連接被顯示時,a)相對應(yīng)的源出口在子窗口400(圖4)中得到增亮,b)目的處所選動作在子窗口401中得到增亮,c)所選連接類型在子窗口420中得到增亮,以及d)如果它是一個早已存在的連接,它將和從其他所選對象出口來的其他連接一起列舉于子窗口419中。當(dāng)用戶將箭頭20放置于a)“連接類型”子窗口420中的字510上方,b)“源出口”子窗口400中的字407上方,或c)“目的處動作”子窗口401中字403上方時,他只要按鼠標(biāo)按鈕,即可進(jìn)一步標(biāo)明或改變所建議要建立的連接的類型。
如所建議連接得到證實,只要按“連接”按鈕423,該連接將a)被建立起來以及b)在子窗口419內(nèi)列舉出來,并有增亮的顯示。當(dāng)一個出口第一次連接時,一個像星號404那樣的指示符將在子窗口400中緊挨著出口名稱顯示出來,標(biāo)志著該出口至少已連接過一次。如圖5所示,當(dāng)一個特定連接被選擇并在子窗口419中增亮?xí)r,連接/斷開按鈕423的標(biāo)號即改變?yōu)椤皵嚅_”。每個所選連接和它的類型將一直停留在子窗口419的列表中,直至當(dāng)箭頭20位于特定連接上方時按鼠標(biāo)和又一次在標(biāo)號為“斷開”的按鈕423上按鼠標(biāo)。
當(dāng)檢查員窗口30第一次打開時,如在子窗口400中已列舉了連接好的出口名稱,例如從前次連接操作來的出口名稱,則每個所連接出口都將有星號404顯示出來。如用戶選用一個早就連接好的出口名稱,像線111(圖6)那樣的線將顯示出來,表示連接列表中和所選出口到一個接口域或子程序有關(guān)的第一次連接。當(dāng)箭頭20位于子窗口419中其他連接上方而用戶按鼠標(biāo)按鈕時,將顯示其他線。這樣可以檢查連接,或確認(rèn)它們的正確性,或找出它們是什么。如用戶已畫了線111(圖6),意圖是連接一個尚未連接的出口,但欲錯誤地將一個連接到其一個其他圖形表示的出口加以增亮,則線111將會消失,并將被一條線所代替,該線是在該出口連接的域或子程序與例如CONNECTIONS—1 134那樣的所選子程序之間畫出的。在一個實施例中,在將所選出口407連接至其他域或子程序之前,用戶必須重新畫制線111。可以應(yīng)用一個“廢除”函數(shù),它使早已連好的出口減亮并自動恢復(fù)線111。再者,任何時候只要有一個連接被顯示按鈕423將用“斷開”為標(biāo)號,這時用戶有一個選項供選擇,或在該按鈕上按鼠標(biāo),從而將出口斷開,或不理睬“斷開”按鈕而選擇另一個出口、連接、連接類型、或動作。
根據(jù)本發(fā)明的一個方面,如果某特定子程序的任何出口用于從它可能與之連接的目的子程序中獲取附加出口,則檢查員子窗口400在列舉該出口名稱時同時顯示一個特殊顯示符,如符號“+”406。這就告知用戶,該特定子程序在連接至一個或更多個其他共同合作的子函數(shù)時將會獲取附加出口。
根據(jù)本發(fā)明的一個方面,如果從一個特定子程序例如CON-NECTIONS—1 134中的一個出口建立連接,而該特定子程序是用于從它與之連接的目的子程序如FUNCTION—1 133中獲取附加出口的,則附加出口名稱被自動獲取并在同一子窗口401中和符號“@”500一起列舉出來。這提醒用戶,所獲取出口和它們的連接依賴于某些已經(jīng)建立的連接。
在本發(fā)明的一個實施例中,所有出口名稱都有一套和它們相關(guān)聯(lián)的“連接類型”,因此,如上所述,在建立連接之前都為每個連接選擇一個特定的連接類型。當(dāng)一個特定的出口在子窗口400內(nèi)增亮?xí)r,它的當(dāng)前所選連接類型在子窗口420內(nèi)列舉并增亮。用戶要改變選擇時,可將箭頭20置于子窗口420中所需連接類型510的字上方,同時按鼠標(biāo)按鈕。
上述過程可以一再重復(fù),直至其他子程序內(nèi)的所有域或出口都連結(jié)到其他所需子程序的所需出口和動作。本例中,三個域140、141、142都連接到子程序CONNECTIONS—1 134內(nèi)的出口A1B1、A2B1和A3B1,而子程序134本身又有4個出口A1B1、A2B1、A3B1、和SPREADSHEET連接至FUNCTION—1 133。此外,域143的出口也連接至子程序CONNECTIONS—1 134中的一個動作,而子程序134本身又觸發(fā)所連接的FUNCTION—1133的所需操作。
在本發(fā)明的一個實施例中,只有指定的“出口”的變量或函數(shù)才能連接至子程序。因此,當(dāng)在目的子程序中要起動一個動作時,這由送至一個出口的信息所觸發(fā),而該出口支持?jǐn)y帶動作信息給目的子程序的連接的類型。如圖5所示,在動作連接過程中一個出口能送給目的子程序的特定動作信息在子窗口400列舉出來。所有由增亮的出口名稱所支持的連接的類型都在連接類型窗口420中列舉出來。
正如在所有出口的情況下那樣,一個星號或其他標(biāo)示符(未示出)緊挨著所連接動作的名稱顯示出來,而當(dāng)兩者都增亮?xí)r,按鈕423變?yōu)椤皵嚅_”按鈕。類似地,如連接動作被增亮,則現(xiàn)有的到子程序的連接將顯示出來。
本例中,根據(jù)本發(fā)明的一個方面,當(dāng)箭頭20位于按鈕“+”143上方時按鼠標(biāo)按鈕,即觸發(fā)子程序CONNECTIONS—1 134,以提供適當(dāng)?shù)膭幼餍畔碛|發(fā)FUNCTION—1的操作。為建立此連接,程序配置系統(tǒng)的用戶將箭頭20放置于按鈕“+”上方,并按鼠標(biāo)按鈕,以選擇代表按鈕“+”的函數(shù)的圖形單元143,然后畫一條線(未示出)到程序文件窗口13中的子程序CONNECTIONS—1 134的圖形單元。如圖7所示,當(dāng)放開鼠標(biāo)按鈕時,兩個圖形單元間的連接211將顯示出來。在建立該連接后,一個和檢查員窗口30相類似但和第一個所選圖形單元—本例中是按鈕“+”143—相關(guān)連的檢查員窗口(未示出)顯露出來,并且如上面描述那樣可用于將從“+”域子程序中定義的出口到子程序“CONNECTIONS—1”134中定義的動作的連接給予建立、改變或檢查。
參照以上所述,在程序早已存在的例子中,通過被認(rèn)為是工作空間管理程序的操作系統(tǒng)的功能,該程序的特性和子程序可供本發(fā)明的程序配置系統(tǒng)使用。圖1示出,工作空間管理程序提供了窗口15,其中顯示了不同可用文件的表示。用戶通過a)在工作空間管理程序窗口15中增亮早已存在的程序例如MY—PROGRAM的圖形表示,b)把它拉向文件窗口13,以及c)將它放在那里,可以讓程序配置系統(tǒng)了解早已存在的程序如MY—PROGRAM的特性。
當(dāng)一個程序配置完畢和用戶通過從菜單(未示出)選擇“存放”項來表示配置過程的結(jié)束時,程序配置系統(tǒng)在一個文件中存儲和每個子程序有關(guān)的全部編程對象的列表,并且如果有的話,圖形用戶接口,和連接列表。對于每一個由用戶規(guī)定的連接,系統(tǒng)將圖14所示表格501的復(fù)制件作為程序配置文件的一部分加以存儲。每一個這樣的表格501復(fù)制件包括a)以不同連接類型列表中索引形式出現(xiàn)的連接域的類型(類型)502,b)都以指向?qū)ο罅斜碇姓_對象的指針形式出現(xiàn)的源子程序域(源)503和目的子程序域(目的)504兩項,以及c)出口域505中的出口變量名稱和動作域506中的動作函數(shù)名稱(如有的話)。另外,對于每一個由用戶建立的連接,系統(tǒng)在表格501中的“所有者”域507中存放用來獲取和特定的連接(如果有的話)有關(guān)的“出口”域505中所命名的出口的出口變量名稱。當(dāng)包括一個或更多個表格501的程序配置文件存放以后,本發(fā)明的程序配置系統(tǒng)的工作即完成。
程序配置系統(tǒng)提供了一個程序,其第一行是一條指令,用于裝載并執(zhí)行程序配置文件。執(zhí)行配置文件的結(jié)果是裝載正確文件;部分依據(jù)于一個或更多表格501來建立恰當(dāng)連接;以及顯示由于不同子程序和它們互相間的連接之間的相互作用所提供的正確功能。
圖8至11顯示了今后稱之為主連接過程的這一過程的流程圖,在步驟60處,當(dāng)CTRL鍵按下而鼠標(biāo)箭頭20位于如FUNCTION—1 133和CONNECTIONS—1 134這樣的子程序表示上方或位于如按鈕143這樣的屏幕按鈕對象上方時,如用戶按鼠標(biāo)按鈕就能引用該主連接過程。條件轉(zhuǎn)移點61用于測試確定箭頭是否移動過。如條件轉(zhuǎn)移點61測試結(jié)果是YES,這標(biāo)志著箭頭已移動過,接著條件轉(zhuǎn)移點62測試確定是否有早已存在的連接線。如步驟62的測試結(jié)果是YES,這標(biāo)志著有早已存在的連接線,因此在步驟63將這些連接線從屏幕上清除。如步驟62的測試結(jié)果是NO,或者執(zhí)行完步驟63后,控制即交給步驟64,此早顯示出如CONNECTIONS—1 134那樣的所選子程序和箭頭20之間的新連接線。接著控制又交回給步驟61,以便測試進(jìn)一步的箭頭移動操作。
如步驟61的測試結(jié)果是NO,這標(biāo)志著箭頭沒有移動過,控制即交給條件轉(zhuǎn)移點65,在那里測試確定鼠標(biāo)按鈕是否已經(jīng)放開。如果步驟65的測試結(jié)果是NO,這標(biāo)志著鼠標(biāo)按鈕尚未放開,則控制又交回給步驟61去繼續(xù)檢查箭頭移動操作。如步驟65的測試結(jié)果是YES,這標(biāo)志著鼠標(biāo)按鈕已經(jīng)放開,控制交給條件轉(zhuǎn)移點66,在那里測試確定箭頭20是否位于某一類型對象上方,如連接線從子程序CONNECTIONS—1 134出發(fā),則該子程序134可連接至這一類型對象,如連接線從143處所用按鈕出發(fā),則該按鈕可連接至這一類型對象。
如步驟66的測試結(jié)果是NO,這標(biāo)志著鼠標(biāo)按鈕已放開,但箭頭20尚未放置于可與之建立連接的對象的上方,于是在步驟67中將任何已顯示的連接線加以消隱,并且主連接過程在步驟68中結(jié)束退出。系統(tǒng)接著等待用戶選擇另一任務(wù)。
如步驟66的測試結(jié)果是YES,這標(biāo)志著箭頭位于可與之建立連接的對象上方,于是控制交給步驟69,其中圍繞該對象顯示一個方框,因而將它增亮。在步驟69后或67后的任一種情況下,條件轉(zhuǎn)移點600測試確定檢查員窗口30是否可見。如步驟600的測試結(jié)果是NO,這標(biāo)志著檢查員窗口30不可見,則在步驟601使它變?yōu)榭梢?。如步驟600的測試結(jié)果是YES,或在執(zhí)行步驟601后,控制交給條件轉(zhuǎn)移點602(圖9),其中測試確定檢查員窗口30是否處于連接模式。如步驟602的測試結(jié)果是NO,則檢查員窗口30不處于連接模式,控制交給步驟603,在步驟603檢查員窗口30設(shè)置為連接模式。如步驟602的測試結(jié)果是YES,或在執(zhí)行步驟603后,控制交給步驟604,其中在檢查員窗口30的左列內(nèi)顯示出可用的程序出口。
接著,條件轉(zhuǎn)移點630測試確定由步驟604顯示的任何出口是否早已連接。如有任何出口早已連接,條件轉(zhuǎn)移點631測試確定所有可能獲取的出口是否在檢查員子窗口400(圖5)中列舉出來。如步驟631(圖9)的測試結(jié)果是NO,控制交給步驟632,在步驟632所有已獲取但未列舉的出口都加到列表中去。接著控制交回給條件轉(zhuǎn)移點631,以測試所有可能獲取的出口是否都已列舉。
在可能的幾個周期后,當(dāng)所有出口和已獲取出口都已標(biāo)識和列舉后,步驟631的測試結(jié)果成為YES,控制即交給步驟633,其中任何所列舉出口只要用在連至一個或更多個目的子程序的一個或更多個連接中,它們即被標(biāo)以星號404(圖5)。根據(jù)本發(fā)明的一個方面,在步驟634(圖9)中,緊挨著所獲取出口的名稱標(biāo)以符號“@”500(圖5)。以后,在步驟635(圖9)中,從所選源子程序或域來的所有連接的列表在子窗口400(圖5)中顯示出來。如步驟630(圖9)的測試結(jié)果是NO,或在執(zhí)行步驟635后,控制交給步驟636,其中對于用來從目的子程序中獲取附加出口的所顯示的出口,不論它是否連接了,都緊挨著它們的名稱標(biāo)以符號“+”406(圖5)。其次,在步驟638(圖9)中第一個由步驟604或632列舉的、可用于建立連接的出口得到增亮。根據(jù)本發(fā)明的一個方面,在步驟637,由子窗口400(圖5)中增亮的出口所支持的連接類型的列表在子窗口419中顯示出來。
如圖10A所示,控制交給步驟607,其中測試確定鼠標(biāo)按鈕是否按下。如在步驟607處(圖10A)鼠標(biāo)按鈕沒有按下,系統(tǒng)在步驟607處繼續(xù)等待按鼠標(biāo)。如步驟607處測試結(jié)果是YES,這標(biāo)志著鼠標(biāo)按鈕已按下過,控制交給條件轉(zhuǎn)移點608,其中測試確定箭頭20(圖5)是否位于檢查員窗口30內(nèi)。如箭頭20不在檢查員窗口30內(nèi),步驟608(圖10A)的測試結(jié)果是NO,并在步驟609將所有連接線從屏幕上取消。然后在步驟610主連接程序結(jié)束并退出。
如步驟608的測試結(jié)果是YES,這標(biāo)志著箭頭20(圖5)位于檢查員窗口30內(nèi),則條件轉(zhuǎn)移點611(圖1OA)測試確定箭頭20(圖5)是否位于檢查員窗口30的右列401中目的動作名稱上方。如步驟611(圖10A)的測試結(jié)果是YES,這標(biāo)志著箭頭位于檢查員窗口的右列中一個動作名稱的上方,則控制即交給步驟612,其中箭頭20(圖5)下的動作被增亮,而任何以前增亮的動作都被減亮。
如步驟611(圖10A)的測試結(jié)果是NO,這標(biāo)志著箭頭20不位于檢查員窗口30的右列401(圖5)中動作名稱上方,則控制即交給條件轉(zhuǎn)移點645(圖10A),它測試確定箭頭20(圖5)是否位于連接類型子窗口420(圖5)的連接類型名稱上方。如步驟645(圖10A)的測試結(jié)果是YES,這標(biāo)志著箭頭20(圖5)位于連接類型名稱510(圖5)的上方,則控制交給步驟643(圖10A),其中系統(tǒng)將子窗口420(圖5)中的連接類型增亮,而將任何其他可能已被增亮的連接類型減亮。
如步驟645(圖10A)的測試結(jié)果是NO,這標(biāo)志著箭頭20(圖5)不是位于子窗口420中連接類型名稱上方,則控制交給條件轉(zhuǎn)移點670(圖10A),它測試確定箭頭20(圖5)是否位于檢查員模式按鈕427上方。如步驟670(圖10A)的測試結(jié)果是YES,這標(biāo)志著箭頭20(圖5)位于檢查員模式按鈕427上方,則控制交給步驟700(圖10B),其中將模式加以改變。
如步驟670(圖10A)的測試結(jié)果是NO,則控制交給條件轉(zhuǎn)移點646,它測試確定箭頭是否位于左列子窗口400(圖5)中出口名稱上方。如步驟646(圖10A)的測試結(jié)果是YES,這標(biāo)志著箭頭20(圖5)位于出口名稱上方,則控制交給步驟644(圖10A),它將出品增亮,并將其他任何增亮出口加以減亮。接著在步驟642,該出口的有效連接類型和已增亮的目的均列舉出來。
在步驟642列舉有效出口后,或在步驟643將連接增亮后,控制交給步驟641,其中所增亮出口的任何有效目的動作和連接類型均在子窗口420(圖5)中列舉出來。在步驟641(圖10A)中列舉有效目的動作之后,或在步驟612(圖10A)中將箭頭20(圖5)下的動作增亮之后,控制交給步驟640,它將按鈕423(圖5)上的標(biāo)號設(shè)為“連接”,并將子窗口419中可能已被增亮的任何連接加以減亮。步驟640之后(圖10A),控制交回給步驟607,以等待再次按鼠標(biāo)按鈕。
如步驟670(圖10A)的測試結(jié)果是YES,這標(biāo)志著當(dāng)箭頭20(圖5)位于檢查員模式按鈕427(圖5)上方時按了鼠標(biāo)按鈕,則控制交給步驟700(圖10B),其中如圖16所示,檢查員模式切換至“屬性”模式。
在步驟700(圖10B)中將檢查員模式由“連接”模式切換至“屬性”模式后,控制交給步驟701(圖10B),控制交給步驟701(圖10B),其中為所增亮對象顯示屬性檢查員模式,以代替連接模式檢查員30(圖5)。其次,條件轉(zhuǎn)移點702(圖10B)測試確定增亮的對象是否已獲取了出口。如步驟702(圖10B)的測試結(jié)果是YES,這標(biāo)志著該對象已獲取了出口,則在步驟703中這些出口在檢查員窗口的出口窗口920(圖16)中列舉出來。
在步驟703之后,或如步驟702的測試結(jié)果是NO,則條件轉(zhuǎn)移點704測試確定當(dāng)箭頭20位于屬性檢查員上方時鼠標(biāo)按鈕是否按下過。如步驟704的測試結(jié)果是NO,鼠標(biāo)按鈕并未按下過,則控制仍停留在步驟704,同時所列舉出口繼續(xù)得到顯示,直至鼠標(biāo)按鈕按下時止。如步驟704的測試結(jié)果是YES,這標(biāo)志著當(dāng)箭頭20位于檢查員模式按鈕927(圖16)上方時,鼠標(biāo)按鈕按下了,則控制交給條件轉(zhuǎn)移點602(圖9),其中檢查員模式切換回至連接模式。如步驟704(圖10B)的測試結(jié)果是NO,這標(biāo)志著當(dāng)按鼠標(biāo)按鈕時箭頭20不位于檢查員模式按鈕上方,控制交給步驟706,它測試確定箭頭20是否位于所獲取出口921(圖16)的列表中空白區(qū)上方。如步驟706(圖10B)的測試結(jié)果是YES,這標(biāo)志著當(dāng)箭頭20位于列表中空白區(qū)上方時按下鼠標(biāo)按鈕,則控制交給步驟707,其中將空白區(qū)增亮。如步驟706的測試結(jié)果是NO,控制交給條件轉(zhuǎn)移點711,它測試確定光標(biāo)是否位于圖16所示檢查員窗口上所獲取出口921的列表中一個所列舉的出口名稱920(圖16)的上方。如步驟711(圖10B)的測試結(jié)果是NO,這標(biāo)志著箭頭20不是位于所列舉出口名稱上方,則控制交回給步驟701,以等待再一次按鼠標(biāo)按鈕。如步驟711測試結(jié)果是YES,這標(biāo)志著箭頭20位于所列舉出口名稱上方,則控制交給步驟712,其中所選出口名稱得到增亮,并在步驟713去檢測所增亮出口。在步驟713或步驟707之后,在步驟708中接收一個用戶提供的輸入,例如鍵盤輸入,用于定義一個新的出口名稱。在條件轉(zhuǎn)移點709中所輸入出口名稱的語義是要測試是否有效,也即要檢查它是否為一有效名稱(例如并不是全空白)。如步驟709的測試結(jié)果是NO,名稱無效,于是控制交回到步驟704,去等待再次按鼠標(biāo)按鈕。如步驟709的測試結(jié)果是YES,則步驟708中由鍵盤輸入的出口名稱有效,于是在步驟710中送信息至增亮的對象以獲得取所命名的出口。在步驟710中增亮的對象獲取該出口后,控制交回至步驟701,去等待再次按鼠標(biāo)按鈕。
如步驟646(圖10A)的測試結(jié)果是NO,這標(biāo)志著箭頭20(圖5)不是位于出口名稱上方,則控制交給條件轉(zhuǎn)移點647(圖11),它測試確定箭頭20(圖5)是否位于連接顯示子窗口419中一個連接的上方。如步驟647(圖11)的測試結(jié)果是YES,這標(biāo)志著箭頭20(圖5)位于連接顯示子窗口419中一個連接的上方,則控制交給步驟650(圖11),其中系統(tǒng)將所有連接線都消隱掉,并重畫所選連接的線條,以此來只是增亮所連接子程序的源和目的圖形表示。接著在步驟651中,系統(tǒng)將子窗口400(圖5)中已增亮連接的出口加以增亮,而將所有其他已增亮的出口加以減亮。
步驟652(圖11)中,所有被選出口的允許的連接類型都在子窗口420(圖5)中列舉出來,并在步驟653(圖11)中,所選連接的連接類型得到增亮,而所有其他連接類型加以減亮。其次在步驟654中,在子窗口401(圖5)中顯示出由所選出口至所選目的連接的類型所允許的動作。此后,在步驟655(圖11)中,所增亮連接的所選動作得到增亮,而顯示中所有其他以前增亮過的動作則都減亮。接著在步驟656中,CONNECT按鈕423(圖5)上的標(biāo)號設(shè)置為“斷開”(“DIS-CONNECT”)。接著控制交還給步驟607(圖10A),去等待另一次按鼠標(biāo)。
如步驟647的測試結(jié)果是NO,這標(biāo)志著箭頭20不是位于連接顯示中的任一連接上方,則控制交給條件轉(zhuǎn)移點616,它測試確定箭頭20是否位于連接按鈕423(圖5)上方。如步驟616的測試結(jié)果是NO,這標(biāo)志著箭頭20不是位于連接按鈕423(圖5)上方,則控制交還給步驟607(圖10A),去等待按鼠標(biāo)。如步驟616的測試結(jié)果是YES,則控制交給步驟617,它分別引用圖12和13所示的連接刪除/建立過程。
圖12和13一起組成了圖11中步驟617所引用的連接刪除/建立過程的流程圖。當(dāng)箭頭20位于檢查員窗口30的“連接”(“CON-NECT”)按鈕423(圖5)上方,并且按鼠標(biāo)按鈕時,在步驟80(圖12)處即進(jìn)入該過程。接著條件轉(zhuǎn)移點81(圖12)測試確定在連接顯示列表419(圖5)中是否存在一個所選連接。
如步驟81(圖12)的測試結(jié)果是NO,這標(biāo)志著不存在增亮的已選連接,則控制交給條件轉(zhuǎn)移點82(圖13),它測試確定是否有一個增亮的出口將要連接。如步驟82的測試結(jié)果是NO,這標(biāo)志著沒有增亮的出口要連接,系統(tǒng)回至步驟607(圖10A),去等待另一次按鼠標(biāo)。如步驟82的測試結(jié)果是YES,這標(biāo)志著存在一個增亮的出口,則控制交給條件轉(zhuǎn)移點83,它測試確定對某個存在的連接是否早已定義了a)增亮的出口,b)增亮的連接類型,c)增亮的目的,和d)增亮的動作這四項的組合。如步驟83的測試結(jié)果是YES,這標(biāo)志著早已存在著這樣一個連接,則控制交給步驟84,其中有信息提醒用戶,說明在請求一條冗余連接??刂萍唇贿€給步驟607(圖10A),去等待另一次按鼠標(biāo)。
如步驟83(圖13)的測試結(jié)果是NO,這標(biāo)志著沒有冗余連接,則控制交給條件轉(zhuǎn)移點850,它測試確定和增亮的出口相關(guān)聯(lián)的參數(shù)是否允許對增亮的目的作一連接。本實施例中,在條件轉(zhuǎn)移點850,和每個出口相關(guān)聯(lián)的參數(shù)不準(zhǔn)程序配置系統(tǒng)為不恰當(dāng)目的建立連接。特別不準(zhǔn)為沒有所需操作的目的對象建立連接。如步驟850的測試結(jié)果是NO,這標(biāo)志著這些出口參數(shù)排除對所選目的建立所選類型的連接,則控制交給步驟85,其中向用戶顯示一條約束破壞信息,說明在出口參數(shù)、連接類型、和目的對象操作之間蘊含著矛盾??刂平又贿€給步驟607(圖10A),去等待另一次按鼠標(biāo)。
然而,如步驟850(圖13)的測試結(jié)果是YES,這標(biāo)志著增亮的出口和增亮的連接類型的參數(shù)允許對增亮的目的對象建立一個連接,則控制交給步驟851,其中建立一個與增亮動作關(guān)聯(lián)的從增亮出口至增亮目的的所選類型的新連接。還有,在子窗口400中緊挨著出口名稱顯示一個星號404(圖5)。其次,在步驟852(圖13)中,新連接的細(xì)節(jié)附加到子窗口419(圖5)中的連接顯示中去。
此后,條件轉(zhuǎn)移點853(圖13)測試確定增亮的新連接是否用于獲取出口。如步驟853(圖13)的測試結(jié)果是YES,這標(biāo)志著新連接用于從目的子程序或域獲取新出口,則控制交給步驟854,在那里系統(tǒng)使所選源對象去獲取附加出口,并在檢查員窗口中將這些出口連同緊挨著每個這種出口所顯示的符號“@”一起列舉顯示出來,以標(biāo)志每一個這樣的出口是一個獲取的出口。
如步驟853的測試結(jié)果是NO,這標(biāo)志著系統(tǒng)發(fā)現(xiàn)新連接不是用于任何獲取的出口,或如在執(zhí)行步驟854后,則控制交給步驟855,其中如圖5所示,按鈕423(圖4)的標(biāo)號改變?yōu)椤皵嚅_”(“DIS-CONNECT”)423。于是控制交還給步驟607(圖10A),去等待一次按鼠標(biāo)。
如步驟81(圖12)的測試結(jié)果是YES,這標(biāo)志著在連接顯示列表419(圖5)中存在著增亮的連接,則控制交給步驟810(圖12),其中開始斷開所選連接和更新顯示的過程。在步驟810中該過程繼續(xù)進(jìn)行,其中所選連接從用于所選出口的連接列表中被清除掉。其次在步驟811中,檢查員窗口30(圖5)中的子窗口400(圖5)被清除。在步驟812(圖12)中,由所選源對象提供的出口列表在子窗口400(圖5)中重新加以顯示。
條件轉(zhuǎn)移點830(圖12)測試確定步驟812中顯示的任何出口是否早已連接。如存在這種早已連接的出口,步驟830的測試結(jié)果是YES,同時控制交給條件轉(zhuǎn)移點831,它測試確定是否所有可能的獲取的出口都在檢查員子窗口400(圖5)中列舉出來。在步驟832中所有獲取的而以前又沒有列舉的出口都附加到列表中。接著控制交還給步驟831去測試是否所有可能的獲取出口都已列舉出來。
在經(jīng)過測試831和步驟832之間可能的幾個循環(huán)后,所有出口和所獲取出口都得到標(biāo)識和列舉,則控制交給步驟833,其中如果任何列舉的出口用在連至一個或更多個目的子程序或域的一個或更多個連接中,它們都用一個星號404(圖5)加以標(biāo)注。在步驟834(圖9)中,所有獲取的出口都用一個符號“@”500(圖5)加以標(biāo)注,該符號500是緊挨著出口名稱的,以及在步驟835(圖9)中,從所選源子程序或域來的所有連接的列表在子窗口400(圖5)中顯示出來,其次在步驟836(圖12)中,用于從目的子程序獲取附加出口的出口,不論它們是否連接,都用符號“+”406(圖5)標(biāo)注,該符號406是緊挨著出口名稱的。此后,在步驟837(圖12)中,由子窗口400(圖5)中增亮的出口所支持的連接類型列表在子窗口420(圖5)中顯示出來。接著控制交還步驟607(圖10A),去等待另一次按鼠標(biāo)。
根據(jù)本發(fā)明的原理,本系統(tǒng)通過發(fā)送一條信息給程序存儲器中的由所選圖形單元所代表的對象,并向?qū)ο蟛樵兯某隹谇鍐?,來激勵“源”對象程序邏輯去獲取出口。當(dāng)一個恰當(dāng)設(shè)計的源對象這樣被查詢時,它就接下來向所連接(和增亮的)的目的對象查詢可能用于命名新出口變量或?qū)ο蟮男再|(zhì)名稱。接著源對象為用于它自己的程序邏輯而建立新出口,此時使用對查詢作出響應(yīng)的目的對象所提供的名字。由源對象功能這樣所建立的新出口稱為“獲取的”出口,并且在檢查員顯示中緊挨著符號“@”列舉出來,在最佳實施例中,被 查詢過名字的特定目的對象是用于產(chǎn)生出口名稱的那種類型的早已存在連接的一部分(例如,在檢查員窗口中其出口用“+”標(biāo)注的連接)。
在舉例的程序中,當(dāng)檢查員窗口第一次顯示時,系統(tǒng)向源對象“CONNECTIONS—1”查詢它的出口列表,以便將它們在檢查員窗口30中列舉出來。當(dāng)存儲器內(nèi)和“CONNECTIONS—1”相關(guān)聯(lián)的對象如此被查詢時,建立到FUNCTION—1的一個連接連同每個子程序的功能一起將CONNECTIONS—1加以激勵,向FUNC-TION—1查詢名稱列表,后者可能用作出口變量名稱或?qū)⒈籆ON-NECTIONS—1所獲取的對象。
在最佳操作模式中,有一些對象包含了功能,該功能是通過查詢所連接目的對象來獲取出口變量名稱或出口對象時所必需的,系統(tǒng)可操縱包含該功能的對象,使系統(tǒng)用戶使用系統(tǒng)鍵盤直接敲入所需出口變量名稱。系統(tǒng)從連接檢查員30切換到屬性檢查員,可供用戶利用鍵盤手動地增加、刪除、和改變所獲取出口的名稱。為了切換到屬性檢查員,用戶可將鼠標(biāo)放置于檢查員模式按鈕上方并按鼠標(biāo)按鈕。利用同樣過程,用戶可退回至連接檢查員。
本發(fā)明可以很好地在差不多任何常規(guī)計算機系統(tǒng)中實現(xiàn),實現(xiàn)本發(fā)明的示范性計算機系統(tǒng)900示于圖15。系統(tǒng)900包括a)CPU901;b)主存儲器902;c)視頻存儲器903;d)供用戶輸入用的鍵盤904;e)用于根據(jù)本發(fā)明操縱圖形圖象的鼠標(biāo)905;以及f)可能包括固定和可換媒體的海量存儲器906,其中使用了一種或更多種磁、光或光磁存儲技術(shù)或任何其他可用的海量存儲技術(shù)。這些部件通過常規(guī)雙向系統(tǒng)總線907互相連接??偩€907包括32條地址線,用于對存儲902和903的任何部分進(jìn)行尋址。系統(tǒng)總線907還包括一條32位數(shù)據(jù)總線,用于在下列部件間傳送數(shù)據(jù)a)CPU901,b)主存儲器902,c)視頻存儲器903,和d)海量存儲器906。在所示實施例中,CPU901是一個Motorola 68030 32位微處理器,但任何其他合適的微處理器或微機也可作為替代方案加以使用。Motorola公司(Arizona的Phoenix市)印刷的MC68030用戶手冊提供了有關(guān)68030微處理器的詳細(xì)信息,特別是有關(guān)指令系統(tǒng)、總線結(jié)構(gòu)和控制線的詳細(xì)信息。
系統(tǒng)900的主存儲器902包括8兆字節(jié)常規(guī)動態(tài)隨機存取存儲器,當(dāng)然更多或更少的存儲器容量也是合適的。視頻存儲器903包括256K字節(jié)常規(guī)雙口視頻隨機存取存儲器。再者,視所需分辨率而定,可使用更多或更少這樣的存儲器。視頻存儲器903的一個端口連接了一個視頻多路分配(MUX)和移位器電路908,它又接到視頻放大器909。視頻放大器909驅(qū)動陰極射線管(CRT)光柵顯示器910。常規(guī)的視頻多路分配和移位器電路908和視頻放大器909將視頻存儲器903中存儲的象素數(shù)據(jù)轉(zhuǎn)換成適用于顯示器910的光柵信號。顯示器910的類型適合于顯示圖形圖象,具有1120象素和832象素高的分辨率。
以上所述只是解釋了本發(fā)明的原理??梢岳斫猓煜ぜ夹g(shù)的人能夠設(shè)計不同的雖然在這里未曾明顯地解釋或示出過但卻能體現(xiàn)本發(fā)明原理因而不越出本發(fā)明實質(zhì)和范圍的設(shè)備和裝置。
權(quán)利要求
1.一種用于配置包含至少兩個子程序的程序的系統(tǒng),它包括;用于向子程序發(fā)送信息,從而激勵所述子程序去建立便于連接到其他子程序的新出口的裝置;和用于提供說明所述新出口已可用于連接的標(biāo)志的裝置。
2.權(quán)利要求1中所定義的系統(tǒng)還包括用于在所述子程序的所述所建立的新出口與至少一個其他子程序之間建立連接的裝置。
3.權(quán)利要求1中所定義的系統(tǒng),其中所述子程序通過導(dǎo)出一個出口名稱列表而建立所述新出口,所述出口名稱列表是從通過與第二子程序?qū)ο蠼粨Q信息而獲得的信息中導(dǎo)出的。
4.權(quán)利要求3所定義的系統(tǒng),其中所述第二子程序在送給所述子程序的所述信息中提供對象名稱列表,而所述子程序則從所述對象名稱列表中建立所述新出口。
5.權(quán)利要求1所定義的系統(tǒng),其中所述子程序通過從由人員提供的信息中導(dǎo)出一個出口名稱列表來建立所述子程序的所述新出口。
6.權(quán)利要求5所定義的系統(tǒng),其中所述人員通過在鍵盤敲入來提供所述出口名稱列表。
7.權(quán)利要求3所定義的系統(tǒng),其中在所述子程序的所述新建立的至少一個出口和第二個子程序之間的連接被約束為依從于至少一種特定的連接類型。
8.權(quán)利要求7所定義的系統(tǒng),其中所述特定的連接類型包括一項限制,即對在所述子程序的所述新建立的至少一個出口和第二個子程序之間的連結(jié)數(shù)量的限制。
9.權(quán)利要求7所定義的系統(tǒng),其中所述特定的連接類型包括一項要求,即要求第二個子程序?qū)ο缶哂刑囟ǖ念A(yù)定特性。
10.一種在具有能顯示至少第一和第二對象的圖形顯示的計算機程序配置系統(tǒng)中使用的方法,該方法包括以下步驟從所述第一對象到所述第二對象建立一個連接;依據(jù)于利用所述連接從所述第二對象所提供的信息,將所述第一對象加以激勵,以建立至少一個出口;將依據(jù)于所述信息而由所述第一對象所建立的所述至少一個出口加以顯示;以及將所述第一對象的所述至少一個所建立的出口連接至其他對象。
11.一種具有能顯示至少第一和第二對象的圖形顯示的計算機程序配置系統(tǒng),所述第二對象具有至少一個出口,所述計算機程序配置系統(tǒng)包括用于顯示由所述第一對象從所述第二對象所獲取的出口的裝置,所述獲取的出口是通過在所述第一和第二對象間交換信息而獲取的;以及用于將所述第一對象的所述獲取的出口進(jìn)一步連結(jié)到至少一個其他對象的裝置。
12.權(quán)利要求11所定義的系統(tǒng),其中所述其他對象是所述第二對象。
13.權(quán)利要求11所定義的系統(tǒng),其中所述其他對象是一個第三對象。
14.一種在具有至少第一和第二對象的計算機系統(tǒng)中使用的方法,在所述計算機系統(tǒng)中至少某些所述對象具有出口,所述出口具有名稱,所述方法包括以下步驟從所述第一對象向所述第二對象發(fā)送一條信息,要求所述第二對象將它的出口名稱發(fā)送給所述第一對象;從所述第二對象接收所述出口名稱;以及為從所述第二對象接收到的每一個名稱在所述第一對象內(nèi)建立一個出口,所述所建立的出口適用于將所述對象連接至其他對象。
全文摘要
一種圖形程序配置系統(tǒng),它允許用戶建立完整計算機程序。它所提供的系統(tǒng)和過程允許一個子程序可具有任意個在程序配置期間可能定義的出口,其方法是激勵子程序去建立新的方便于將子程序連接至其他子程序的出口。在本發(fā)明的特定實施例中,新出口的名稱可或者a)借助于由一個子程序到其他子程序所嘗試的連接來獲取,或b)由程序配置系統(tǒng)的用戶直接輸入出口名稱來提供,例如由用戶在鍵盤上敲入出口名稱。
文檔編號G06F9/44GK1124379SQ9410956
公開日1996年6月12日 申請日期1994年8月19日 優(yōu)先權(quán)日1993年8月23日
發(fā)明者丹尼爾·F·赫爾利, 厄爾·H·韋斯特 申請人:美國電報電話公司