本申請(qǐng)要求2013年12月5日提交的美國(guó)申請(qǐng)序列號(hào)61/912,057和2014年7月31日提交的美國(guó)申請(qǐng)序列號(hào)62/031,388的優(yōu)先權(quán)。
背景技術(shù):
本說(shuō)明書(shū)涉及管理數(shù)據(jù)流圖中的子圖所用的接口。
許多軟件應(yīng)用程序?yàn)榱颂幚頂?shù)據(jù)而存在。這些軟件應(yīng)用程序中的一部分被指定為數(shù)據(jù)流圖。數(shù)據(jù)流圖通常包括通過(guò)有時(shí)被稱(chēng)為“流(flow)”的鏈接而相互連接的多個(gè)數(shù)據(jù)處理組件。
在執(zhí)行數(shù)據(jù)流圖的情況下,從數(shù)據(jù)庫(kù)或者從一些其它數(shù)據(jù)存儲(chǔ)器或數(shù)據(jù)排隊(duì)系統(tǒng)接收數(shù)據(jù)(例如,數(shù)據(jù)集)。所接收到的數(shù)據(jù)通過(guò)根據(jù)組件和流的相互連接所定義的依賴(lài)性而傳播通過(guò)流并進(jìn)入組件來(lái)行進(jìn)通過(guò)數(shù)據(jù)流圖。各組件在經(jīng)由流提供處理后的數(shù)據(jù)作為輸出數(shù)據(jù)之前,根據(jù)與該組件相關(guān)聯(lián)的預(yù)定功能來(lái)處理所接收到的數(shù)據(jù)。在數(shù)據(jù)流圖的輸出處,處理后的數(shù)據(jù)例如存儲(chǔ)在其它數(shù)據(jù)存儲(chǔ)器或數(shù)據(jù)排隊(duì)系統(tǒng)中,提供給其它下游系統(tǒng)或呈現(xiàn)給用戶(hù)。
數(shù)據(jù)流圖的開(kāi)發(fā)者通常通過(guò)將表示組件的塊拖拽到圖形用戶(hù)接口所提供的圖形工作區(qū)域(或“畫(huà)布(canvas)”)上,并且利用表示數(shù)據(jù)流的鏈接使這些組件相互連接來(lái)確定圖,以使得該數(shù)據(jù)流圖實(shí)現(xiàn)期望功能。一旦開(kāi)發(fā)者對(duì)其數(shù)據(jù)流圖的實(shí)現(xiàn)滿意,則該開(kāi)發(fā)者可以將該數(shù)據(jù)流圖保存至存儲(chǔ)器以供以后使用。通常,如果開(kāi)發(fā)者需要在以后改變數(shù)據(jù)流圖的實(shí)現(xiàn),則該開(kāi)發(fā)者可以使圖形用戶(hù)接口從存儲(chǔ)器讀取所保存的數(shù)據(jù)流圖,對(duì)該數(shù)據(jù)流圖進(jìn)行改變,然后將修改后的數(shù)據(jù)流圖再保存至存儲(chǔ)器。
在一些示例中,數(shù)據(jù)流圖的一段或多段自身是使用數(shù)據(jù)流圖來(lái)實(shí)現(xiàn)的,該一段或多段被稱(chēng)為“子圖”。在這些示例中,子圖是數(shù)據(jù)流圖的一部分。因而,為了改變給定數(shù)據(jù)流圖內(nèi)所使用的子圖,開(kāi)發(fā)者請(qǐng)求系統(tǒng)從盤(pán)讀取該數(shù)據(jù)流圖,由此使得開(kāi)發(fā)者能夠在圖形用戶(hù)接口中打開(kāi)該數(shù)據(jù)流圖。然后開(kāi)發(fā)者將在同一圖形用戶(hù)接口內(nèi)打開(kāi)子圖段,以使得可以編輯子圖。開(kāi)發(fā)者可以對(duì)子圖進(jìn)行改變,然后開(kāi)發(fā)者使數(shù)據(jù)流圖與修改后的子圖一起再保存至存儲(chǔ)器,由此將子圖的變化嵌入在所保存的數(shù)據(jù)流圖中。
技術(shù)實(shí)現(xiàn)要素:
在一方面,通常,一種用于組合數(shù)據(jù)流圖的規(guī)格的方法,所述方法包括:經(jīng)由輸入裝置或端口接收多個(gè)數(shù)據(jù)流圖規(guī)格,所述多個(gè)數(shù)據(jù)流圖規(guī)格包括:(“子圖”所用的)第一數(shù)據(jù)流圖規(guī)格,其確定通過(guò)表示組件之間的數(shù)據(jù)的流的鏈接而連接的兩個(gè)以上組件,所述兩個(gè)以上組件包括第一組件和第二組件,其中至少一個(gè)組件表示應(yīng)用于流入該組件的端口的數(shù)據(jù)的計(jì)算,并且至少一個(gè)組件表示用于提供流出該組件的端口的數(shù)據(jù)的計(jì)算,以及(“容器圖”所用的)第二數(shù)據(jù)流圖規(guī)格,其確定至少一個(gè)第三組件和至少一個(gè)子圖接口,其中所述子圖接口包括下述(1)和(2)之間的連接的至少一個(gè)流匯合點(diǎn),其中(1)是所述子圖接口外部的至/來(lái)自所述第三組件的端口的數(shù)據(jù)的流,(2)是所述子圖接口內(nèi)部的至/來(lái)自所述第一數(shù)據(jù)流圖規(guī)格的組件的端口的數(shù)據(jù)的流。該方法包括使用至少一個(gè)處理器來(lái)處理包括所述第一數(shù)據(jù)流圖規(guī)格和所述第二數(shù)據(jù)流圖規(guī)格的信息,以生成組合數(shù)據(jù)流圖規(guī)格,所述處理包括:識(shí)別所述子圖接口和所述第一數(shù)據(jù)流圖規(guī)格之間的關(guān)聯(lián);針對(duì)所述子圖接口上的至少第一流匯合點(diǎn),確定與傳送數(shù)據(jù)的描述符或計(jì)算用特性的值相關(guān)聯(lián)的方向,以及根據(jù)所確定出的方向?qū)?shù)據(jù)的描述符或計(jì)算用特性的值從所述第一流匯合點(diǎn)傳送至所述第一數(shù)據(jù)流圖規(guī)格所確定的組件或所述第二數(shù)據(jù)流圖規(guī)格所確定的組件。
方面可以包括以下特征中的一個(gè)或多個(gè)特征。
所述第一數(shù)據(jù)流圖規(guī)格包括至少一個(gè)指示,該至少一個(gè)指示表示與所述第一組件相關(guān)聯(lián)的描述符與同所述第二組件相關(guān)聯(lián)的描述符相同。
所確定出的方向與數(shù)據(jù)的第一描述符或計(jì)算用特性的值從所述子圖接口上的所述第一流匯合點(diǎn)向所述第二組件的向內(nèi)傳送相對(duì)應(yīng)。
所述第一描述符是從所述第三組件向所述第一流匯合點(diǎn)提供的。
所述第一描述符是從所述第二組件向所述第一組件提供的。
所述第二數(shù)據(jù)流圖規(guī)格包括至少一個(gè)指示,該至少一個(gè)指示表示與所述第三組件相關(guān)聯(lián)的描述符與同所述子圖接口相關(guān)聯(lián)的描述符相同。
所述第二數(shù)據(jù)流圖規(guī)格包括至少一個(gè)指示,該至少一個(gè)指示表示與第四組件相關(guān)聯(lián)的描述符與同所述第三組件相關(guān)聯(lián)的描述符相同。
所確定出的方向與數(shù)據(jù)的第一描述符或計(jì)算用特性的值從所述子圖接口上的所述第一流匯合點(diǎn)向所述第三組件的向外傳送相對(duì)應(yīng)。
所述第一描述符是從所述第一組件向所述第一流匯合點(diǎn)提供的。
所述第一描述符是從所述第三組件向所述第四組件提供的。
所述描述符用于描述所述第一組件的端口和所述第二組件的端口之間所傳送的數(shù)據(jù)的數(shù)據(jù)特性。
所述數(shù)據(jù)特性包括所傳送的數(shù)據(jù)內(nèi)的記錄的字段的格式。
所述描述符用于描述所述第一數(shù)據(jù)流圖規(guī)格和所述第二數(shù)據(jù)流圖規(guī)格至少之一的組件的計(jì)算用特性。
所述計(jì)算用特性包括所述組件所表示的計(jì)算的執(zhí)行的并行程度。
對(duì)所述第一數(shù)據(jù)流圖進(jìn)行加密。
對(duì)所述第二數(shù)據(jù)流圖進(jìn)行加密。
所述第一數(shù)據(jù)流圖的所述兩個(gè)以上組件分布在所述第一數(shù)據(jù)流圖中的第一組多個(gè)順次執(zhí)行的級(jí)中。
所述第二數(shù)據(jù)流圖包括多個(gè)組件,所述多個(gè)組件和所述子圖接口分布在所述第二數(shù)據(jù)流圖中的第二組多個(gè)順次執(zhí)行的級(jí)中。
使數(shù)據(jù)流圖準(zhǔn)備好執(zhí)行包括基于所述第一組多個(gè)順次執(zhí)行的級(jí)和所述第二組多個(gè)順次執(zhí)行的級(jí)來(lái)確定包括在所述數(shù)據(jù)流圖中的多個(gè)級(jí)。
在另一方面,通常,一種以非瞬態(tài)形式存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上的軟件,用于組合數(shù)據(jù)流圖的規(guī)格,所述軟件包括使計(jì)算系統(tǒng)執(zhí)行以下處理的指令:經(jīng)由輸入裝置或端口接收多個(gè)數(shù)據(jù)流圖規(guī)格,所述多個(gè)數(shù)據(jù)流圖規(guī)格包括:第一數(shù)據(jù)流圖規(guī)格,其確定通過(guò)表示組件之間的數(shù)據(jù)的流的鏈接而連接的兩個(gè)以上組件,所述兩個(gè)以上組件包括第一組件和第二組件,其中至少一個(gè)組件表示應(yīng)用于流入該組件的端口的數(shù)據(jù)的計(jì)算,并且至少一個(gè)組件表示用于提供流出該組件的端口的數(shù)據(jù)的計(jì)算,以及第二數(shù)據(jù)流圖規(guī)格,其確定至少一個(gè)第三組件和至少一個(gè)子圖接口,其中所述子圖接口包括表示下述(1)和(2)之間的連接的至少一個(gè)流匯合點(diǎn),其中(1)是所述子圖接口外部的至/來(lái)自所述第三組件的端口的數(shù)據(jù)的流,(2)是所述子圖接口內(nèi)部的至/來(lái)自所述第一數(shù)據(jù)流圖規(guī)格的組件的端口的數(shù)據(jù)的流;以及使用至少一個(gè)處理器來(lái)處理包括所述第一數(shù)據(jù)流圖規(guī)格和所述第二數(shù)據(jù)流圖規(guī)格的信息,以生成組合數(shù)據(jù)流圖規(guī)格,所述處理包括:識(shí)別所述子圖接口和所述第一數(shù)據(jù)流圖規(guī)格之間的關(guān)聯(lián);針對(duì)所述子圖接口上的至少第一流匯合點(diǎn),確定與傳送數(shù)據(jù)的描述符或計(jì)算用特性的值相關(guān)聯(lián)的方向,以及根據(jù)所確定出的方向?qū)?shù)據(jù)的描述符或計(jì)算用特性的值從所述第一流匯合點(diǎn)傳送至所述第一數(shù)據(jù)流圖規(guī)格所確定的組件或所述第二數(shù)據(jù)流圖規(guī)格所確定的組件。
在另一方面,通常,一種計(jì)算系統(tǒng),用于組合數(shù)據(jù)流圖的規(guī)格,所述計(jì)算系統(tǒng)包括:輸入裝置或端口,用于接收多個(gè)數(shù)據(jù)流圖規(guī)格,所述多個(gè)數(shù)據(jù)流圖規(guī)格包括:第一數(shù)據(jù)流圖規(guī)格,其確定通過(guò)表示組件之間的數(shù)據(jù)的流的鏈接而連接的兩個(gè)以上組件,所述兩個(gè)以上組件包括第一組件和第二組件,其中至少一個(gè)組件表示應(yīng)用于流入該組件的端口的數(shù)據(jù)的計(jì)算,并且至少一個(gè)組件表示用于提供流出該組件的端口的數(shù)據(jù)的計(jì)算,以及第二數(shù)據(jù)流圖規(guī)格,其確定至少一個(gè)第三組件和至少一個(gè)子圖接口,其中所述子圖接口包括表示下述(1)和(2)之間的連接的至少一個(gè)流匯合點(diǎn),其中(1)是所述子圖接口外部的至/來(lái)自所述第三組件的端口的數(shù)據(jù)的流,(2)是所述子圖接口內(nèi)部的至/來(lái)自所述第一數(shù)據(jù)流圖規(guī)格的組件的端口的數(shù)據(jù)的流;以及至少一個(gè)處理器,用于處理包括所述第一數(shù)據(jù)流圖規(guī)格和所述第二數(shù)據(jù)流圖規(guī)格的信息,以生成組合數(shù)據(jù)流圖規(guī)格,所述處理包括:識(shí)別所述子圖接口和所述第一數(shù)據(jù)流圖規(guī)格之間的關(guān)聯(lián);針對(duì)所述子圖接口上的至少第一流匯合點(diǎn),確定與傳送數(shù)據(jù)的描述符或計(jì)算用特性的值相關(guān)聯(lián)的方向,以及根據(jù)所確定出的方向?qū)?shù)據(jù)的描述符或計(jì)算用特性的值從所述第一流匯合點(diǎn)傳送至所述第一數(shù)據(jù)流圖規(guī)格所確定的組件或所述第二數(shù)據(jù)流圖規(guī)格所確定的組件。
在另一方面,通常,一種用于確定數(shù)據(jù)流圖的方法,所述方法包括:在第一用戶(hù)接口中渲染第一數(shù)據(jù)流圖的表示,所述渲染包括:渲染所述第一數(shù)據(jù)流圖的多個(gè)組件,其中至少一個(gè)組件表示與流入輸入端口的數(shù)據(jù)和流出輸出端口的數(shù)據(jù)至少之一相關(guān)聯(lián)的計(jì)算,以及基于表示從所述第一數(shù)據(jù)流圖的第一組件的輸出端口到所述第一數(shù)據(jù)流圖的第二組件的輸入端口的數(shù)據(jù)的流的用戶(hù)輸入,渲染所述第一組件的輸出端口和所述第二組件的輸入端口之間的鏈接;以及在第二用戶(hù)接口中渲染所述第一數(shù)據(jù)流圖的子圖的表示,所述渲染包括:渲染至少一個(gè)子圖接口,所述子圖接口包括一個(gè)或多個(gè)流匯合點(diǎn),其中所述子圖接口的第一流匯合點(diǎn)表示下述(1)和(2)之間的連接,其中(1)是所述子圖接口外部的至/來(lái)自所述第一數(shù)據(jù)流圖的第三組件的端口的數(shù)據(jù)的流,(2)是所述子圖接口內(nèi)部的至/來(lái)自所述子圖的第一組件的端口的數(shù)據(jù)的流,基于表示下述(1)和(2)之間的關(guān)系的用戶(hù)輸入來(lái)渲染所述子圖接口的所述第一流匯合點(diǎn)和第二流匯合點(diǎn)之間的鏈接,其中(1)是與所述子圖接口的所述第一流匯合點(diǎn)相關(guān)聯(lián)的數(shù)據(jù)的第一描述符或計(jì)算用特性,(2)是與所述子圖接口的所述第二流匯合點(diǎn)相關(guān)聯(lián)的數(shù)據(jù)的第二描述符或計(jì)算用特性,以及渲染所述第二用戶(hù)接口的一部分,該部分用于接收確定所述子圖接口的所定義的流匯合點(diǎn)的集合中的各流匯合點(diǎn)的屬性的用戶(hù)輸入,其中所述屬性包括與傳送同相應(yīng)流匯合點(diǎn)相關(guān)聯(lián)的數(shù)據(jù)的描述符或計(jì)算用特性相關(guān)聯(lián)的方向。
在另一方面,通常,一種用于確定數(shù)據(jù)流圖的方法,所述方法包括:在第一用戶(hù)接口中渲染第一數(shù)據(jù)流圖的表示,所述渲染包括:渲染所述第一數(shù)據(jù)流圖的多個(gè)組件,其中至少一個(gè)組件表示與流入輸入端口的數(shù)據(jù)和流出輸出端口的數(shù)據(jù)至少之一相關(guān)聯(lián)的計(jì)算,以及基于表示從所述第一數(shù)據(jù)流圖的第一組件的輸出端口到所述第一數(shù)據(jù)流圖的第二組件的輸入端口的數(shù)據(jù)的流的用戶(hù)輸入,渲染所述第一組件的輸出端口和所述第二組件的輸入端口之間的鏈接;以及在第二用戶(hù)接口中渲染所述第一數(shù)據(jù)流圖的子圖的表示,所述渲染包括:渲染至少一個(gè)子圖接口,所述子圖接口包括一個(gè)或多個(gè)流匯合點(diǎn),其中所述子圖接口的第一流匯合點(diǎn)表示下述(1)和(2)之間的連接,其中(1)是所述子圖接口外部的至/來(lái)自所述第一數(shù)據(jù)流圖的第三組件的端口的數(shù)據(jù)的流,(2)是所述子圖接口內(nèi)部的至/來(lái)自所述子圖的第一組件的端口的數(shù)據(jù)的流,以及基于表示下述(1)和(2)之間的關(guān)系的用戶(hù)輸入來(lái)渲染所述子圖接口的所述第一流匯合點(diǎn)和第二流匯合點(diǎn)之間的鏈接,其中(1)是與所述子圖接口的所述第一流匯合點(diǎn)相關(guān)聯(lián)的數(shù)據(jù)的第一描述符或計(jì)算用特性,(2)是與所述子圖接口的所述第二流匯合點(diǎn)相關(guān)聯(lián)的數(shù)據(jù)的第二描述符或計(jì)算用特性。
方面可以包括以下特征中的一個(gè)或多個(gè)特征。
所述方法還包括生成用于存儲(chǔ)所述第一數(shù)據(jù)流圖的表示的數(shù)據(jù)結(jié)構(gòu),所述數(shù)據(jù)結(jié)構(gòu)包括:表示第一組一個(gè)或多個(gè)組件的數(shù)據(jù),該第一組一個(gè)或多個(gè)組件包括經(jīng)由所述子圖接口外部的一個(gè)或多個(gè)流匯合點(diǎn)所連接的數(shù)據(jù)的一個(gè)或多個(gè)流;以及表示第二組一個(gè)或多個(gè)組件的數(shù)據(jù),該第二組一個(gè)或多個(gè)組件包括經(jīng)由所述子圖接口內(nèi)部的一個(gè)或多個(gè)流匯合點(diǎn)所連接的數(shù)據(jù)的一個(gè)或多個(gè)流。
所述關(guān)系對(duì)應(yīng)于所述第一描述符和所述第二描述符相同。
所述第二用戶(hù)接口包括用于接收用戶(hù)輸入的部分,所述用戶(hù)輸入確定所述子圖接口的所定義的流匯合點(diǎn)的集合中的各流匯合點(diǎn)的屬性。
所述屬性包括與傳送同相應(yīng)流匯合點(diǎn)相關(guān)聯(lián)的數(shù)據(jù)的描述符或計(jì)算用特性相關(guān)聯(lián)的方向。
所述方向與數(shù)據(jù)的第一描述符或計(jì)算用特性的值從所述第一流匯合點(diǎn)向所述子圖的所述第一組件的向內(nèi)傳送相對(duì)應(yīng)。
所述方向與數(shù)據(jù)的第一描述符或計(jì)算用特性的值從所述第一流匯合點(diǎn)向所述第一數(shù)據(jù)流圖的所述第三組件的向外傳送相對(duì)應(yīng)。
所述第一描述符用于描述所述第一數(shù)據(jù)流圖的所述第三組件的端口和所述子圖的所述第一組件的端口之間所傳送的數(shù)據(jù)的數(shù)據(jù)特性。
所述數(shù)據(jù)特性包括所傳送的數(shù)據(jù)內(nèi)的記錄的字段的格式。
所述描述符用于描述所述第一數(shù)據(jù)流圖的所述第三組件和所述子圖的所述第一組件至少之一的計(jì)算用特性。
所述計(jì)算用特性包括所述第一數(shù)據(jù)流圖的所述第三組件或所述子圖的所述第一組件所表示的計(jì)算的執(zhí)行的并行程度。
所述第一用戶(hù)接口是由第一計(jì)算系統(tǒng)所生成的。
所述第二用戶(hù)接口是由與所述第一計(jì)算系統(tǒng)不同的第二計(jì)算系統(tǒng)所生成的。
在另一方面,通常,一種以非瞬態(tài)形式存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的軟件,用于確定數(shù)據(jù)流圖,所述軟件包括用于使計(jì)算系統(tǒng)執(zhí)行以下處理的指令:在第一用戶(hù)接口中渲染第一數(shù)據(jù)流圖的表示,所述渲染包括:渲染所述第一數(shù)據(jù)流圖的多個(gè)組件,其中至少一個(gè)組件表示與流入輸入端口的數(shù)據(jù)和流出輸出端口的數(shù)據(jù)至少之一相關(guān)聯(lián)的計(jì)算,以及基于表示從所述第一數(shù)據(jù)流圖的第一組件的輸出端口到所述第一數(shù)據(jù)流圖的第二組件的輸入端口的數(shù)據(jù)的流的用戶(hù)輸入,渲染所述第一組件的輸出端口和所述第二組件的輸入端口之間的鏈接;以及在第二用戶(hù)接口中渲染所述第一數(shù)據(jù)流圖的子圖的表示,所述渲染包括:渲染至少一個(gè)子圖接口,所述子圖接口包括一個(gè)或多個(gè)流匯合點(diǎn),其中所述子圖接口的第一流匯合點(diǎn)表示下述(1)和(2)之間的連接,其中(1)是所述子圖接口外部的至/來(lái)自所述第一數(shù)據(jù)流圖的第三組件的端口的數(shù)據(jù)的流,(2)是所述子圖接口內(nèi)部的至/來(lái)自所述子圖的第一組件的端口的數(shù)據(jù)的流,以及基于表示下述(1)和(2)之間的關(guān)系的用戶(hù)輸入來(lái)渲染所述子圖接口的所述第一流匯合點(diǎn)和第二流匯合點(diǎn)之間的鏈接,其中(1)是與所述子圖接口的所述第一流匯合點(diǎn)相關(guān)聯(lián)的數(shù)據(jù)的第一描述符或計(jì)算用特性,(2)是與所述子圖接口的所述第二流匯合點(diǎn)相關(guān)聯(lián)的數(shù)據(jù)的第二描述符或計(jì)算用特性。
在另一方面,通常,一種計(jì)算系統(tǒng),用于確定數(shù)據(jù)流圖,所述計(jì)算系統(tǒng)包括:第一計(jì)算裝置,用于在第一用戶(hù)接口中渲染第一數(shù)據(jù)流圖的表示,所述渲染包括:渲染所述第一數(shù)據(jù)流圖的多個(gè)組件,其中至少一個(gè)組件表示與流入輸入端口的數(shù)據(jù)和流出輸出端口的數(shù)據(jù)至少之一相關(guān)聯(lián)的計(jì)算,以及基于表示從所述第一數(shù)據(jù)流圖的第一組件的輸出端口到所述第一數(shù)據(jù)流圖的第二組件的輸入端口的數(shù)據(jù)的流的用戶(hù)輸入,渲染所述第一組件的輸出端口和所述第二組件的輸入端口之間的鏈接;以及第二計(jì)算裝置,用于在第二用戶(hù)接口中渲染所述第一數(shù)據(jù)流圖的子圖的表示,所述渲染包括:渲染至少一個(gè)子圖接口,所述子圖接口包括一個(gè)或多個(gè)流匯合點(diǎn),其中所述子圖接口的第一流匯合點(diǎn)表示下述(1)和(2)之間的連接,其中(1)是所述子圖接口外部的至/來(lái)自所述第一數(shù)據(jù)流圖的第三組件的端口的數(shù)據(jù)的流,(2)是所述子圖接口內(nèi)部的至/來(lái)自所述子圖的第一組件的端口的數(shù)據(jù)的流,基于表示下述(1)和(2)之間的關(guān)系的用戶(hù)輸入來(lái)渲染所述子圖接口的所述第一流匯合點(diǎn)和第二流匯合點(diǎn)之間的鏈接,其中(1)是與所述子圖接口的所述第一流匯合點(diǎn)相關(guān)聯(lián)的數(shù)據(jù)的第一描述符或計(jì)算用特性,(2)是與所述子圖接口的所述第二流匯合點(diǎn)相關(guān)聯(lián)的數(shù)據(jù)的第二描述符或計(jì)算用特性。
方面可以包括以下優(yōu)點(diǎn)中的一個(gè)或多個(gè)優(yōu)點(diǎn)。
除其它優(yōu)點(diǎn)以外,用以管理包括子圖的動(dòng)態(tài)鏈接的子圖接口的方法便于使代碼抽象化以及在數(shù)據(jù)流圖開(kāi)發(fā)環(huán)境中重復(fù)使用。子圖向子圖接口的動(dòng)態(tài)鏈接涉及使針對(duì)要使用多個(gè)可能子圖中的哪一個(gè)來(lái)實(shí)現(xiàn)與該子圖接口相關(guān)聯(lián)的功能的判斷延遲(例如,直到恰好在執(zhí)行之前為止)。因而,容器圖(即,具有一個(gè)或多個(gè)子圖接口的數(shù)據(jù)流圖)可以用作能夠重復(fù)使用并定制的模板。模板數(shù)據(jù)流圖可以發(fā)送至客戶(hù)。然后,客戶(hù)可以供給用于實(shí)現(xiàn)子圖接口的圖邏輯并且針對(duì)客戶(hù)的需求和操作環(huán)境來(lái)定制模板數(shù)據(jù)流圖??蛻?hù)可以包括定制數(shù)據(jù)流圖的用戶(hù),以及/或者向其它用戶(hù)提供定制數(shù)據(jù)流圖的開(kāi)發(fā)者。
子圖接口提供制作遍及接口的多個(gè)實(shí)現(xiàn)而通用的數(shù)據(jù)流圖的能力。子圖接口提供在子圖接口的任何實(shí)現(xiàn)之前針對(duì)接口開(kāi)發(fā)圖的能力。子圖接口提供在無(wú)需使用的具體實(shí)例的情況下針對(duì)接口驗(yàn)證實(shí)現(xiàn)的能力。子圖接口提供區(qū)分子圖的實(shí)現(xiàn)的發(fā)送位置、許可、加密或其它屬性的能力。
一些實(shí)施例使得能夠根據(jù)與子圖接口相關(guān)聯(lián)的實(shí)現(xiàn)子圖得出包括該子圖接口的容器圖中的元數(shù)據(jù)。元數(shù)據(jù)例如可以包括提供給組件或從組件提供的數(shù)據(jù)的描述符(例如,記錄格式)、組件的計(jì)算用特性或者與組件相關(guān)聯(lián)的計(jì)算資源。有利地,根據(jù)實(shí)現(xiàn)子圖得出容器圖所用的元數(shù)據(jù)使得該容器圖相對(duì)于從該實(shí)現(xiàn)子圖得到或者進(jìn)入該實(shí)現(xiàn)子圖的數(shù)據(jù)的類(lèi)型是可配置的。這在開(kāi)發(fā)者指定實(shí)現(xiàn)子圖讀取具有特定記錄格式的數(shù)據(jù)并且將該數(shù)據(jù)傳遞至預(yù)定義的容器圖以供進(jìn)一步處理的情況下尤其有用。在一些示例中,預(yù)定義的容器圖是由一些其它實(shí)體所指定的并且可以是只讀的、加密的或者以一些其它方式受到保護(hù)以免被查看和/或修改。在一些示例中,實(shí)現(xiàn)子圖可以是只讀的,加密的或者以一些其它方式受到保護(hù)以免被查看和/或修改。這種圖需要能夠容納來(lái)自實(shí)現(xiàn)子圖的不同類(lèi)型的記錄格式而無(wú)需用戶(hù)干預(yù)。還可以根據(jù)包括子圖接口的容器圖得出與該子圖接口相關(guān)聯(lián)的實(shí)現(xiàn)子圖中的元數(shù)據(jù),這可以使得不同容器圖中的實(shí)現(xiàn)子圖的使用具有一定的靈活性。
開(kāi)發(fā)者可以有利地創(chuàng)建并使用子圖接口的實(shí)現(xiàn)的庫(kù)。這些庫(kù)可以用于減少開(kāi)發(fā)時(shí)間并且鼓勵(lì)代碼重復(fù)使用。
一些實(shí)施例使得能夠根據(jù)容器圖對(duì)子圖接口的子圖實(shí)現(xiàn)進(jìn)行依賴(lài)性分析和內(nèi)省。
用于開(kāi)發(fā)容器圖的圖形用戶(hù)接口可以包括多級(jí)以及如何將這些級(jí)應(yīng)用于任意子圖接口的圖形指示,這使得開(kāi)發(fā)者能夠理解這些級(jí)將如何影響數(shù)據(jù)流圖的不同部分(例如,哪些數(shù)據(jù)流將穿過(guò)級(jí)邊界,由此使得通過(guò)該數(shù)據(jù)流的數(shù)據(jù)持久地存儲(chǔ)在緩沖器中)。
用于開(kāi)發(fā)子圖接口的圖形用戶(hù)接口鼓勵(lì)開(kāi)發(fā)者將動(dòng)態(tài)鏈接的子圖視為受制于強(qiáng)抽象邊界,由此要求與開(kāi)發(fā)一個(gè)或多個(gè)子圖實(shí)現(xiàn)分開(kāi)地(或通常在開(kāi)發(fā)一個(gè)或多個(gè)子圖實(shí)現(xiàn)之前)開(kāi)發(fā)子圖接口,并且在一些示例中,與開(kāi)發(fā)容器圖分開(kāi)地(或者在開(kāi)發(fā)容器圖之前)開(kāi)發(fā)子圖接口。
根據(jù)以下說(shuō)明書(shū)、以及根據(jù)權(quán)利要求書(shū),本發(fā)明的其它特征和有點(diǎn)將變得明顯。
附圖說(shuō)明
圖1A是被配置為使用動(dòng)態(tài)鏈接的子圖的系統(tǒng)的框圖。
圖1B是準(zhǔn)備數(shù)據(jù)流圖以供執(zhí)行的不同階段的流程圖。
圖2A是包括子圖接口的數(shù)據(jù)流圖。
圖2B是子圖接口的實(shí)現(xiàn)。
圖2C是組合數(shù)據(jù)流圖。
圖2D是子圖接口開(kāi)發(fā)用戶(hù)接口。
圖2E是子圖接口屬性用戶(hù)接口的端口配置標(biāo)簽。
圖3A示出圖2A的數(shù)據(jù)流圖中的編輯時(shí)間記錄格式元數(shù)據(jù)傳播。
圖3B示出圖2B的子圖接口的實(shí)現(xiàn)中的編輯時(shí)間記錄格式元數(shù)據(jù)傳播。
圖3C示出圖2C的組合數(shù)據(jù)流圖中的鏈接時(shí)間記錄格式元數(shù)據(jù)傳播。
圖4A示出圖2A的數(shù)據(jù)流圖中的編輯時(shí)間布局元數(shù)據(jù)傳播。
圖4B示出圖2B的子圖接口的實(shí)現(xiàn)中的編輯時(shí)間布局元數(shù)據(jù)傳播。
圖4C示出圖2C的組合數(shù)據(jù)流圖中的鏈接時(shí)間布局元數(shù)據(jù)傳播。
具體實(shí)施方式
圖1A示出可以使用動(dòng)態(tài)鏈接的子圖的數(shù)據(jù)處理系統(tǒng)100的示例。系統(tǒng)100包括數(shù)據(jù)源102,其中該數(shù)據(jù)源102可以包括諸如存儲(chǔ)裝置或者至線上數(shù)據(jù)流的連接等的一個(gè)或多個(gè)數(shù)據(jù)的源,其中該一個(gè)或多個(gè)數(shù)據(jù)的源各自可以以各種格式(例如,數(shù)據(jù)庫(kù)表、電子表格文件、非結(jié)構(gòu)文本(flat text)文件或大型機(jī)所使用的原始格式)中的任何格式來(lái)存儲(chǔ)或提供數(shù)據(jù)。執(zhí)行環(huán)境104包括圖準(zhǔn)備模塊106和圖執(zhí)行模塊112。很通常地,圖準(zhǔn)備模塊106將數(shù)據(jù)流圖的規(guī)格(以下更詳細(xì)地說(shuō)明)裝配并鏈接到可由圖執(zhí)行模塊112執(zhí)行的表示中。執(zhí)行環(huán)境104例如可以在諸如某個(gè)版本的UNIX操作系統(tǒng)等的適當(dāng)?shù)牟僮飨到y(tǒng)的控制下安裝在一個(gè)或多個(gè)通用計(jì)算機(jī)上。例如,執(zhí)行環(huán)境104可以包括包含使用多個(gè)中央處理單元(CPU)或多個(gè)處理器內(nèi)核的計(jì)算機(jī)系統(tǒng)的結(jié)構(gòu)的多節(jié)點(diǎn)并行計(jì)算環(huán)境,可以是本地的(例如,諸如對(duì)稱(chēng)多處理(SMP)計(jì)算機(jī)等的多處理器系統(tǒng))或本地分布式的(例如,作為集群所連接的多個(gè)處理器或大規(guī)模并行處理(MPP)系統(tǒng))、或者遠(yuǎn)程或遠(yuǎn)程分布式的(例如,經(jīng)由局域網(wǎng)(LAN)和/或廣域網(wǎng)(WAN)連接的多個(gè)處理器)、或者它們的任何組合。
在一些示例中,執(zhí)行環(huán)境104從數(shù)據(jù)源102讀取數(shù)據(jù),通過(guò)(例如,利用圖執(zhí)行模塊112)執(zhí)行與該數(shù)據(jù)有關(guān)的數(shù)據(jù)流圖來(lái)處理該數(shù)據(jù),并且將處理后的數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)存儲(chǔ)系統(tǒng)中。提供數(shù)據(jù)源102的存儲(chǔ)裝置相對(duì)于執(zhí)行環(huán)境104可以是本地的,例如,可以存儲(chǔ)在連接至安裝有執(zhí)行環(huán)境104的計(jì)算機(jī)的存儲(chǔ)介質(zhì)(例如,硬盤(pán)驅(qū)動(dòng)器108)上,或者相對(duì)于執(zhí)行環(huán)境104可以是遠(yuǎn)程的,例如,安裝在經(jīng)由(例如,云計(jì)算基礎(chǔ)設(shè)施所提供的)遠(yuǎn)程連接與安裝有執(zhí)行環(huán)境104的計(jì)算機(jī)進(jìn)行通信的遠(yuǎn)程系統(tǒng)(例如,大型機(jī)110)上。
圖執(zhí)行模塊112使用圖準(zhǔn)備模塊106所生成的數(shù)據(jù)流圖的表示來(lái)處理數(shù)據(jù)源102所提供的數(shù)據(jù)。輸出數(shù)據(jù)可以存儲(chǔ)回?cái)?shù)據(jù)源102或者存儲(chǔ)在執(zhí)行環(huán)境104可訪問(wèn)的數(shù)據(jù)存儲(chǔ)系統(tǒng)116中,或者被使用。開(kāi)發(fā)環(huán)境118A也可以訪問(wèn)數(shù)據(jù)存儲(chǔ)系統(tǒng)116,其中在開(kāi)發(fā)環(huán)境118A中,開(kāi)發(fā)者120A能夠?qū)τ脩?hù)接口121A內(nèi)的數(shù)據(jù)流圖的規(guī)格進(jìn)行改變。在本示例中,存在用于開(kāi)發(fā)獨(dú)立用戶(hù)接口內(nèi)的不同數(shù)據(jù)流圖的規(guī)格的多個(gè)獨(dú)立開(kāi)發(fā)環(huán)境。例如,第一開(kāi)發(fā)者120A使用開(kāi)發(fā)環(huán)境118A的第一用戶(hù)接口121A來(lái)開(kāi)發(fā)包括子圖接口123的容器圖122A。可能不同的第二開(kāi)發(fā)者120B使用開(kāi)發(fā)環(huán)境118B的第二用戶(hù)接口121B來(lái)開(kāi)發(fā)要加載在容器圖122A的子圖接口123中的實(shí)現(xiàn)子圖122B,其中實(shí)現(xiàn)子圖適應(yīng)于子圖接口123。在一些示例中,開(kāi)發(fā)環(huán)境118A或118B是用于開(kāi)發(fā)作為數(shù)據(jù)流圖的應(yīng)用程序的系統(tǒng),其中數(shù)據(jù)流圖包括頂點(diǎn)(表示數(shù)據(jù)處理組件或數(shù)據(jù)集),并且這些頂點(diǎn)通過(guò)頂點(diǎn)之間的有向鏈接(directed link)(表示工作元素(即,數(shù)據(jù))的流)相連接。例如,在通過(guò)引用包含于此的標(biāo)題為“Managing Parameters for Graph-Based Applications”的美國(guó)專(zhuān)利公開(kāi)號(hào)2007/0011668中更詳細(xì)地說(shuō)明了這種環(huán)境。在通過(guò)引用包含于此的標(biāo)題為“EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS”的美國(guó)專(zhuān)利5,966,072中說(shuō)明了用于執(zhí)行這種基于圖的計(jì)算的系統(tǒng)。根據(jù)該系統(tǒng)所制作的數(shù)據(jù)流圖提供用于將信息輸入至圖組件所表示的個(gè)別處理或從圖組件所表示的個(gè)別處理獲得信息的方法、用于在處理之間移動(dòng)信息的方法以及用于定義處理的運(yùn)行順序的方法。該系統(tǒng)包括用于從任何可用方法中選取處理間通信方法的算法(例如,與圖的鏈接相對(duì)應(yīng)的通信路徑可以使用TCP/IP或UNIX域套接字或者使用共享存儲(chǔ)器在處理之間傳遞數(shù)據(jù))。
執(zhí)行模塊104可以接收來(lái)自包括不同形式的數(shù)據(jù)庫(kù)系統(tǒng)的可以實(shí)現(xiàn)數(shù)據(jù)源102的各種系統(tǒng)的數(shù)據(jù)。該數(shù)據(jù)可以被組織成具有針對(duì)各字段(還被稱(chēng)為“屬性”或“列”)的值的可能包括空值的記錄。在第一次從數(shù)據(jù)源讀取數(shù)據(jù)的情況下,執(zhí)行模塊104通常從與該數(shù)據(jù)源中的記錄有關(guān)的一些初始格式信息開(kāi)始。在一些情形中,數(shù)據(jù)源的記錄結(jié)構(gòu)最初可能是未知的并且作為替代可以在對(duì)該數(shù)據(jù)源或數(shù)據(jù)進(jìn)行了分析之后才確定。與記錄有關(guān)的初始信息例如可以包括表示獨(dú)特值的位的數(shù)量、記錄內(nèi)的字段的順序以及位所表示的值的類(lèi)型(例如,字符串、有符號(hào)/無(wú)符號(hào)整數(shù))。
圖1B示出使用數(shù)據(jù)處理系統(tǒng)100來(lái)準(zhǔn)備數(shù)據(jù)流圖以供執(zhí)行以及執(zhí)行數(shù)據(jù)流圖的不同階段的示例。在編輯時(shí)間,任意數(shù)量的開(kāi)發(fā)者編輯(150)不同的數(shù)據(jù)流圖,其中任意數(shù)量的開(kāi)發(fā)者可以包括編輯容器圖的一個(gè)開(kāi)發(fā)者120A,以及對(duì)實(shí)現(xiàn)該數(shù)據(jù)流圖中所包括的子圖接口的實(shí)現(xiàn)子圖進(jìn)行編輯的另一開(kāi)發(fā)者120B。在一些情況下,實(shí)現(xiàn)子圖自身可以包括將由其自身嵌套的實(shí)現(xiàn)子圖來(lái)實(shí)現(xiàn)的子圖接口。然后,圖開(kāi)發(fā)者或圖用戶(hù)可以開(kāi)始由圖準(zhǔn)備模塊106來(lái)執(zhí)行的使用子圖的動(dòng)態(tài)鏈接來(lái)準(zhǔn)備數(shù)據(jù)流圖以供執(zhí)行的處理。圖準(zhǔn)備模塊106判斷(152)準(zhǔn)備中的數(shù)據(jù)流圖中是否存在任何未鏈接的子圖接口。如果存在,則模塊106鏈接(154)適當(dāng)?shù)淖訄D。在該可能遞歸的鏈接處理期間(稱(chēng)為“鏈接時(shí)間”),可能存在與需要評(píng)價(jià)的數(shù)據(jù)流圖相關(guān)聯(lián)的各種參數(shù),其中這些參數(shù)包括表示哪個(gè)特定實(shí)現(xiàn)子圖應(yīng)鏈接至給定子圖接口的參數(shù)。在動(dòng)態(tài)鏈接完成之后,模塊106(在“編譯時(shí)間”)將完全裝配好的數(shù)據(jù)流圖編譯(156)成可執(zhí)行形式,并且執(zhí)行模塊104(在“運(yùn)行時(shí)間”)執(zhí)行(158)編譯后的數(shù)據(jù)流圖??赡艽嬖谂c在編譯時(shí)間或運(yùn)行時(shí)間評(píng)價(jià)的數(shù)據(jù)流圖相關(guān)聯(lián)的某些參數(shù)。
1容器圖、子圖和子圖接口
參考圖2A,第一數(shù)據(jù)流圖200的框圖被配置為使用多個(gè)組件處理來(lái)自第一輸入數(shù)據(jù)集202A和第二輸入數(shù)據(jù)集202B的數(shù)據(jù)并且將所得到的處理后的數(shù)據(jù)存儲(chǔ)在輸出數(shù)據(jù)集202C中。第一數(shù)據(jù)流圖200包括第一組件208A、第二組件208B和子圖接口210。很通常地,子圖接口210使得子圖能夠動(dòng)態(tài)地加載在第一數(shù)據(jù)流圖中。在一些示例中,第一數(shù)據(jù)流圖200由于其包括子圖接口而被稱(chēng)為“容器圖”。
組件各自具有用于接收輸入數(shù)據(jù)的一個(gè)或多個(gè)輸入端口以及用于提供輸出數(shù)據(jù)的一個(gè)或多個(gè)輸出端口。通常,各組件對(duì)流入其輸入端口的輸入數(shù)據(jù)應(yīng)用計(jì)算并且經(jīng)由該組件的輸出端口提供計(jì)算結(jié)果作為輸出。注意,在一些示例中,某些類(lèi)型的組件可以?xún)H包括輸入端口或者僅包括輸出端口。子圖接口包括一個(gè)或多個(gè)流匯合點(diǎn),其中流匯合點(diǎn)定義容器圖和與子圖接口相關(guān)聯(lián)的子圖中的流之間的連接點(diǎn)(以下更詳細(xì)地說(shuō)明)。各流匯合點(diǎn)表示至/來(lái)自第一數(shù)據(jù)流圖的組件上的端口的數(shù)據(jù)的流和至/來(lái)自第二數(shù)據(jù)流圖的組件上的端口的數(shù)據(jù)的流之間的連接(或“匯合點(diǎn)”)。數(shù)據(jù)集和組件的端口以及子圖接口的流匯合點(diǎn)通過(guò)流206A~206E相互連接,這定義了數(shù)據(jù)如何在第一數(shù)據(jù)流圖200的數(shù)據(jù)集、組件和子圖接口之間傳播。
具體地,針對(duì)圖2A的第一數(shù)據(jù)流圖200,第一組件208A上所包括的第一輸入端口204B使用第一流206A連接至第二輸入數(shù)據(jù)集202B上所包括的第一輸出端口204A。子圖接口210上所包括的第一流匯合點(diǎn)204D使用第二流206B連接至第一輸入數(shù)據(jù)集202A上所包括的第二輸出端口204C。子圖接口210上所包括的第二流匯合點(diǎn)204F使用第三流206C連接至第一組件208A上所包括的第三輸出端口204E。第二組件208B上所包括的第二輸入端口204H使用第四流206D連接至子圖接口210上所包括的第三流匯合點(diǎn)204G。最后,輸出數(shù)據(jù)集202C上所包括的第三輸入端口204J使用第五流206E連接至子圖接口210上所包括的第四輸出端口204I。
在第一數(shù)據(jù)流圖200中,第一組件208A和第二組件208B是傳統(tǒng)上已知的實(shí)現(xiàn)諸如排序、聯(lián)合和各種數(shù)據(jù)變換等的功能的數(shù)據(jù)流圖組件。
子圖接口210是數(shù)據(jù)流圖中使得能夠使用子圖的動(dòng)態(tài)鏈接來(lái)管理第一數(shù)據(jù)流圖200的一部分的規(guī)格的特殊類(lèi)型的節(jié)點(diǎn)。在一些示例中,子圖接口210接收包括指向盤(pán)上的第二數(shù)據(jù)流圖規(guī)格的路徑的參數(shù)輸入PS 212。緊挨在第一數(shù)據(jù)流圖200的執(zhí)行之前,第二數(shù)據(jù)流圖動(dòng)態(tài)地鏈接到第一數(shù)據(jù)流圖200中,實(shí)質(zhì)上取代了子圖接口210。
通常,為了可以使第二數(shù)據(jù)流圖動(dòng)態(tài)鏈接到第一數(shù)據(jù)流圖200中,第二數(shù)據(jù)流圖必須適應(yīng)于子圖接口210所定義的接口。也就是說(shuō),第二數(shù)據(jù)流圖必須具有連接至子圖接口的流匯合點(diǎn)的端口。通過(guò)使第二數(shù)據(jù)流圖強(qiáng)制適應(yīng)于子圖接口210,已知在無(wú)需檢驗(yàn)第二數(shù)據(jù)流圖的情況下,連接至第一數(shù)據(jù)流圖200中的子圖接口210的端口的流可以直接連接至第二數(shù)據(jù)流圖中的子圖接口210的端口,由此在這兩個(gè)數(shù)據(jù)流圖中的端口之間形成單個(gè)流。
參考圖2B,第二數(shù)據(jù)流圖201的一個(gè)示例適應(yīng)于圖2A的子圖接口210。在一些示例中,由于第二數(shù)據(jù)流圖210適應(yīng)于子圖接口210并且針對(duì)子圖接口210實(shí)現(xiàn)功能,因此第二數(shù)據(jù)流圖201被稱(chēng)為“實(shí)現(xiàn)子圖”。
第二數(shù)據(jù)流圖201被配置為使用多個(gè)組件處理來(lái)自子圖接口210所確定的第一流匯合點(diǎn)204D和第二流匯合點(diǎn)204F的數(shù)據(jù),并且提供所得到的處理后的數(shù)據(jù)作為至子圖接口210所定義的第三流匯合點(diǎn)204G的輸出。組件各自具有用于接收輸入數(shù)據(jù)的一個(gè)或多個(gè)輸入端口以及用于提供輸出數(shù)據(jù)的一個(gè)或多個(gè)輸出端口。組件的端口通過(guò)流206F~206I相互連接,這定義了數(shù)據(jù)如何在第二數(shù)據(jù)流圖201的子圖接口210和組件之間傳播。
具體地,針對(duì)圖2B的第二數(shù)據(jù)流圖201,第三組件208C上所包括的第四輸入端口204K使用第六流206F連接至圖形接口210上所包括的第二流匯合點(diǎn)204F。第四組件208D上所包括的第五輸入端口204M使用第七流206G連接至圖形接口210上所包括的第一流匯合點(diǎn)204D。第四組件208D上所包括的第六輸入端口204N使用第八流206H連接至第三組件208C上所包括的第五輸出端口204L。圖形接口210上所包括的第三流匯合點(diǎn)204G使用第九流206I連接至第四組件208D上所包括的第六輸出端口204O。
注意,在一些示例中,第二數(shù)據(jù)流圖201中的組件的端口和流匯合點(diǎn)(即,206F、206G、206I)之間的連接不是傳統(tǒng)的流而是流匯合點(diǎn)和端口之間的綁定(即,關(guān)聯(lián))或終端連接器。在第二數(shù)據(jù)流圖201鏈接到第一數(shù)據(jù)流圖200中的情況下,剝?nèi)ソ壎ɑ蚪K端連接器并且第二數(shù)據(jù)流圖201中的組件的端口直接連接至第一數(shù)據(jù)流圖200的流。
2動(dòng)態(tài)鏈接
再參考圖2A,緊挨在圖執(zhí)行模塊112執(zhí)行數(shù)據(jù)流圖之前,圖準(zhǔn)備模塊106處理第一數(shù)據(jù)流圖200和第二數(shù)據(jù)流圖201的一部分,以準(zhǔn)備第一數(shù)據(jù)流圖200以供執(zhí)行。除了其它步驟以外,該處理包括在第一數(shù)據(jù)流圖200中的子圖接口210的位置處將第二數(shù)據(jù)流圖201動(dòng)態(tài)鏈接(即,綁定)到第一數(shù)據(jù)流圖200中。
為了將第二數(shù)據(jù)流圖201動(dòng)態(tài)鏈接到第一數(shù)據(jù)流圖200中,圖準(zhǔn)備模塊106對(duì)提供至子圖接口210的參數(shù)輸入PS 212進(jìn)行分析以確定盤(pán)上所存儲(chǔ)的哪個(gè)實(shí)現(xiàn)子圖與子圖接口210相關(guān)聯(lián)。加載所確定出的實(shí)現(xiàn)子圖(例如,第二數(shù)據(jù)流圖201)并對(duì)其進(jìn)行實(shí)例化,并且將該實(shí)現(xiàn)子圖的參數(shù)和端口綁定在第一數(shù)據(jù)流圖200中以構(gòu)成組合數(shù)據(jù)流圖。然后對(duì)子圖接口的流匯合點(diǎn)的至少一部分進(jìn)行分析以確定元數(shù)據(jù)傳播的方向,其中該方向?qū)?yīng)于與流匯合點(diǎn)相關(guān)聯(lián)的數(shù)據(jù)的描述符或計(jì)算用特性(即,元數(shù)據(jù))的傳送方向。在元數(shù)據(jù)傳播的處理中,針對(duì)至少部分流匯合點(diǎn),根據(jù)所確定出的方向?qū)?shù)據(jù)的描述符或計(jì)算用特性從該流匯合點(diǎn)傳送至第一數(shù)據(jù)流圖200中的組件或組件上的端口或者第二數(shù)據(jù)流圖201中的組件或組件上的端口。以下詳細(xì)說(shuō)明元數(shù)據(jù)傳播的該處理。
參考圖2C,組合數(shù)據(jù)流圖300包括圖2A的第一數(shù)據(jù)流圖200以及取代子圖接口210而鏈接的第二數(shù)據(jù)流圖201。由于第二數(shù)據(jù)流圖201是子圖接口210的實(shí)現(xiàn)并且適應(yīng)于子圖接口210,因此第二數(shù)據(jù)流圖210的所有輸入和輸出端口經(jīng)由流連接至第一數(shù)據(jù)流圖200的組件。
組合數(shù)據(jù)流圖300可由圖執(zhí)行模塊112來(lái)執(zhí)行。
3元數(shù)據(jù)傳播
在數(shù)據(jù)流圖中,通常,管理與數(shù)據(jù)流圖中的組件的端口相關(guān)聯(lián)的元數(shù)據(jù)以及/或者與這些組件自身相關(guān)聯(lián)的元數(shù)據(jù)很重要。如上所述,在一些示例中,元數(shù)據(jù)包括數(shù)據(jù)的描述符(例如,端口所用的包括流入或流出端口的記錄的字段序列和數(shù)據(jù)類(lèi)型的記錄格式)或者計(jì)算用特性(例如,組件的分區(qū)或布局)。在一些示例中,元數(shù)據(jù)可以包括組件可以使用的一定量的存儲(chǔ)器、組件可以使用哪些計(jì)算資源、有序程度(sortedness)、壓縮方法、字符集、二進(jìn)制表示(例如,大字節(jié)序(big-endian)、小字節(jié)序(little-endian))或數(shù)據(jù)變換。
元數(shù)據(jù)管理可以手動(dòng)、自動(dòng)或者通過(guò)使用手動(dòng)和自動(dòng)元數(shù)據(jù)管理的組合來(lái)實(shí)現(xiàn)。針對(duì)手動(dòng)元數(shù)據(jù)管理,元數(shù)據(jù)例如由圖開(kāi)發(fā)者或圖用戶(hù)來(lái)供給。對(duì)于自動(dòng)元數(shù)據(jù)管理,元數(shù)據(jù)從圖中(例如,由圖開(kāi)發(fā)者或者由圖用戶(hù))顯式定義了元數(shù)據(jù)的部分傳播至圖中未顯式定義元數(shù)據(jù)的部分。在圖用戶(hù)或開(kāi)發(fā)者沒(méi)有直接供給給定端口或組件所用的元數(shù)據(jù)的情況下使用元數(shù)據(jù)傳播。在這種情況下,從圖中的其它端口或組件得出給定端口或組件所用的元數(shù)據(jù)。這里所使用的術(shù)語(yǔ)“元數(shù)據(jù)傳播”是指該得出處理。
在圖2A的第一數(shù)據(jù)流圖200中,傳統(tǒng)元數(shù)據(jù)傳播的一個(gè)簡(jiǎn)單示例在針對(duì)第一組件208A的第一輸入端口204B未顯式定義記錄格式元數(shù)據(jù)的情況下發(fā)生。第一輸入端口204B經(jīng)由第一流206A連接至第二輸入數(shù)據(jù)集202B的第一輸出端口204A。通常,第二輸入數(shù)據(jù)集202B所供給的數(shù)據(jù)的記錄格式始終是顯式已知的,因此與第一輸出端口204A相關(guān)聯(lián)的元數(shù)據(jù)是顯式定義的。與第一輸出端口204A相關(guān)聯(lián)的顯式定義的元數(shù)據(jù)經(jīng)由第一流206A向第一輸入端口204B傳播,其中該元數(shù)據(jù)與第一輸入端口204B相關(guān)聯(lián)。
上述的第一輸出端口204A和第一輸入端口204B之間的元數(shù)據(jù)傳播經(jīng)由第一流206A在與數(shù)據(jù)流經(jīng)數(shù)據(jù)流圖相同的方向(即,從左向右)上發(fā)生。然而,在一些示例中,元數(shù)據(jù)經(jīng)由流在與數(shù)據(jù)流經(jīng)數(shù)據(jù)流圖的方向相反的方向上傳播。例如,與輸出數(shù)據(jù)集202C的第三輸入端口204J相關(guān)聯(lián)的顯式定義的元數(shù)據(jù)經(jīng)由第五流206E在與數(shù)據(jù)經(jīng)由第五流206E流動(dòng)的方向相反的方向上向第二組件208B的第四輸出端口204I傳播。
在包括傳統(tǒng)組件和數(shù)據(jù)集的傳統(tǒng)數(shù)據(jù)流圖中,顯式定義的元數(shù)據(jù)傳播通過(guò)數(shù)據(jù)流圖使得數(shù)據(jù)流圖中的所有端口和組件與元數(shù)據(jù)相關(guān)聯(lián)。通常對(duì)元數(shù)據(jù)傳播中出現(xiàn)的任何沖突進(jìn)行標(biāo)記以供開(kāi)發(fā)者進(jìn)行干預(yù)。然而,通常以與僅包括傳統(tǒng)組件的數(shù)據(jù)流圖的元數(shù)據(jù)傳播不同的方式來(lái)應(yīng)對(duì)包括子圖接口的數(shù)據(jù)流圖的元數(shù)據(jù)傳播。特別地,元數(shù)據(jù)可以分兩個(gè)階段傳播:編輯時(shí)間元數(shù)據(jù)傳播階段和鏈接時(shí)間元數(shù)據(jù)解析階段。
使用該兩階段方式,在編輯時(shí)間,容器圖(即,包括子圖接口的圖)的開(kāi)發(fā)者以及將取代子圖接口而鏈接的實(shí)現(xiàn)子圖(即,適應(yīng)于子圖接口的子圖)的開(kāi)發(fā)者不必知道彼此的元數(shù)據(jù)。在無(wú)權(quán)訪問(wèn)傳播信息的情況下,傳統(tǒng)的元數(shù)據(jù)傳播將無(wú)法得知元數(shù)據(jù)應(yīng)在“向內(nèi)”的方向上傳播到實(shí)現(xiàn)子圖中(即,容器圖用作實(shí)現(xiàn)子圖所用的元數(shù)據(jù)的源)還是在“向外”的方向上從實(shí)現(xiàn)子圖傳播(即,容器圖用作來(lái)自實(shí)現(xiàn)子圖的元數(shù)據(jù)的宿(sink))。
為了便于在包括子圖接口的數(shù)據(jù)流圖中傳播元數(shù)據(jù),子圖接口的各流匯合點(diǎn)確定元數(shù)據(jù)傳播的方向。在編輯時(shí)間元數(shù)據(jù)傳播期間,元數(shù)據(jù)與流匯合點(diǎn)相關(guān)聯(lián),然后,在鏈接時(shí)間根據(jù)元數(shù)據(jù)傳播的方向從流匯合點(diǎn)傳送相關(guān)聯(lián)的元數(shù)據(jù)。在一些示例中,元數(shù)據(jù)傳播的可能方向的集合包括“向內(nèi)”傳播和“向外”傳播??梢圆捎貌紶?Boolean)變量的形式來(lái)存儲(chǔ)特定的向內(nèi)方向值和特定的向外方向值,其中,例如可以針對(duì)這種傳播或者為了確定所指示的元數(shù)據(jù)傳播的方向?qū)υ摬紶栕兞窟M(jìn)行檢索。
3.1.1向內(nèi)元數(shù)據(jù)傳播
在聲明子圖接口上的流匯合點(diǎn)具有“向內(nèi)”的元數(shù)據(jù)傳播方向的情況下,容器圖中的元數(shù)據(jù)傳播經(jīng)由連接至流匯合點(diǎn)(最終至連接到實(shí)現(xiàn)子圖中的流(或綁定)的端口)的流來(lái)供給元數(shù)據(jù)定義。
也就是說(shuō),在容器圖中,編輯時(shí)間元數(shù)據(jù)傳播將流匯合點(diǎn)視為元數(shù)據(jù)宿。特別地,容器圖中的編輯時(shí)間元數(shù)據(jù)傳播使用如上所述的傳統(tǒng)元數(shù)據(jù)傳播在容器圖的傳統(tǒng)組件之間傳播元數(shù)據(jù)。在元數(shù)據(jù)傳播至子圖接口上的具有“向內(nèi)”元數(shù)據(jù)傳播方向的流匯合點(diǎn)的情況下,該元數(shù)據(jù)不能再繼續(xù)傳播。該元數(shù)據(jù)維持在流匯合點(diǎn)處,直到實(shí)現(xiàn)子圖鏈接到容器圖中并且可以(如下所述)進(jìn)行鏈接時(shí)間元數(shù)據(jù)解析為止。
在實(shí)現(xiàn)子圖中,編輯時(shí)間元數(shù)據(jù)傳播將具有“向內(nèi)”元數(shù)據(jù)傳播方向的流匯合點(diǎn)視為元數(shù)據(jù)源。然而,在實(shí)現(xiàn)子圖的情況下,子圖接口上的流匯合點(diǎn)處的實(shí)際元數(shù)據(jù)值是未知的(這是由于該值僅可以在鏈接時(shí)間從容器圖獲得)。因而,為了針對(duì)實(shí)現(xiàn)子圖進(jìn)行編輯時(shí)間傳播,針對(duì)流匯合點(diǎn)處的元數(shù)據(jù)分配占位符值并且如上所述使用傳統(tǒng)元數(shù)據(jù)傳播使該占位符值傳播通過(guò)實(shí)現(xiàn)子圖。在實(shí)現(xiàn)子圖鏈接到容器圖中并且進(jìn)行鏈接時(shí)間元數(shù)據(jù)解析的情況下對(duì)該占位符值進(jìn)行解析。
在鏈接時(shí)間元數(shù)據(jù)解析階段,在實(shí)現(xiàn)子圖鏈接到容器圖中的情況下,將維持在具有“向內(nèi)”元數(shù)據(jù)傳播方向的流匯合點(diǎn)處的元數(shù)據(jù)傳送到實(shí)現(xiàn)子圖中并且傳送至該實(shí)現(xiàn)子圖的組件的適當(dāng)端口。在一些示例中,鏈接時(shí)間元數(shù)據(jù)解析僅通過(guò)利用容器圖中的相應(yīng)流匯合點(diǎn)處所維持的元數(shù)據(jù)值來(lái)簡(jiǎn)單替換實(shí)現(xiàn)子圖中的流匯合點(diǎn)處的占位符值來(lái)解析該占位符值。
在一些示例中,“向內(nèi)”元數(shù)據(jù)傳播是默認(rèn)的,并且即使在圖容器子圖接口將始終供給顯式元數(shù)據(jù)定義的情況下也是適當(dāng)?shù)摹?/p>
3.1.2向外元數(shù)據(jù)傳播
在聲明子圖接口上的流匯合點(diǎn)具有“向外”的元數(shù)據(jù)傳播方向的情況下,實(shí)現(xiàn)子圖中的元數(shù)據(jù)傳播向容器圖供給流匯合點(diǎn)所用的元數(shù)據(jù)定義。
也就是說(shuō),在容器圖中,盡管不存在針對(duì)元數(shù)據(jù)的編輯時(shí)間定義(這是由于該定義僅可以在鏈接時(shí)間從實(shí)現(xiàn)子圖獲得),編輯時(shí)間元數(shù)據(jù)傳播仍將流匯合點(diǎn)視為元數(shù)據(jù)源。特別地,容器圖中的編輯時(shí)間元數(shù)據(jù)傳播使用如上所述的傳統(tǒng)元數(shù)據(jù)傳播在容器圖中的傳統(tǒng)組件之間傳播元數(shù)據(jù)。在子圖接口上的具有向外的元數(shù)據(jù)傳播方向的流匯合點(diǎn)上進(jìn)行元數(shù)據(jù)傳播的情況下,針對(duì)該流匯合點(diǎn)處的元數(shù)據(jù)分配占位符值,并且使用傳統(tǒng)元數(shù)據(jù)傳播使該占位符值傳播通過(guò)容器圖。
在實(shí)現(xiàn)子圖中,編輯時(shí)間元數(shù)據(jù)傳播將具有“向外”的元數(shù)據(jù)傳播方向的流匯合點(diǎn)視為元數(shù)據(jù)宿。特定的,實(shí)現(xiàn)子圖中的編輯時(shí)間元數(shù)據(jù)傳播使用如上所述的傳統(tǒng)元數(shù)據(jù)傳播在容器圖中的傳統(tǒng)組件之間傳播元數(shù)據(jù)。在元數(shù)據(jù)傳播至子圖接口上的具有“向外”的元數(shù)據(jù)傳播方向的流匯合點(diǎn)的情況下,元數(shù)據(jù)不能再繼續(xù)傳播。該元數(shù)據(jù)維持在流匯合點(diǎn)處,直到實(shí)現(xiàn)子圖鏈接到容器圖中并且可以(如下所述)進(jìn)行鏈接時(shí)間元數(shù)據(jù)解析為止。
在鏈接時(shí)間元數(shù)據(jù)解析階段,在實(shí)現(xiàn)子圖鏈接到容器圖中的情況下,將維持在具有“向外”的元數(shù)據(jù)傳播方向的流匯合點(diǎn)處的元數(shù)據(jù)傳送出至容器圖,并且傳送出至容器圖的組件的適當(dāng)端口。在一些示例中,鏈接時(shí)間元數(shù)據(jù)解析識(shí)別容器子圖中的流匯合點(diǎn)處的占位符值并且僅利用實(shí)現(xiàn)子圖中的流匯合點(diǎn)處所維持的元數(shù)據(jù)值來(lái)簡(jiǎn)單替換該占位符值。
在一些示例中,不允許開(kāi)發(fā)者顯式定義具有“向外”的元數(shù)據(jù)傳播方向的流匯合點(diǎn)所用的元數(shù)據(jù)。
4子圖接口開(kāi)發(fā)圖形用戶(hù)接口
參考圖2D,子圖接口開(kāi)發(fā)圖形用戶(hù)接口220便于創(chuàng)建、檢驗(yàn)和修改子圖接口224。子圖用戶(hù)接口開(kāi)發(fā)圖形用戶(hù)接口220包括顯示窗口222,其中該顯示窗口222用于向開(kāi)發(fā)者呈現(xiàn)包括多個(gè)輸入流匯合點(diǎn)226、輸出流匯合點(diǎn)228以及輸入流匯合點(diǎn)226和輸出流匯合點(diǎn)228之間的一個(gè)或多個(gè)鏈接229的子圖接口224的圖形表示。
很通常地,子圖接口224用作嚴(yán)格原型,其中子圖接口224的任何子圖實(shí)現(xiàn)和包括子圖接口224的任何容器圖必須適應(yīng)于該原型。這樣,圖形用戶(hù)接口220的子圖接口224的外部可以被視為獨(dú)立開(kāi)發(fā)的容器圖所用的占位符,并且圖形用戶(hù)接口中的子圖接口224的內(nèi)部可以被視為獨(dú)立開(kāi)發(fā)的子圖實(shí)現(xiàn)所用的占位符。
流匯合點(diǎn)226、228被配置在子圖接口224的邊界上并且用作連接至/來(lái)自子圖接口224外部的組件的端口的數(shù)據(jù)的流(例如,來(lái)自容器圖中的組件的端口的數(shù)據(jù)的流)以及至/來(lái)自子圖接口224內(nèi)部的組件的端口的數(shù)據(jù)的流(即,至子圖實(shí)現(xiàn)中的組件的端口的數(shù)據(jù)的流)的橋梁。在圖2D中,子圖接口224包括兩個(gè)輸入流匯合點(diǎn)226(即,in0和in1)以及兩個(gè)輸出流匯合點(diǎn)228(即,out0和out1)。然而,子圖接口224可以包括任意數(shù)量的輸入流匯合點(diǎn)226和輸出流匯合點(diǎn)228。
各輸入流匯合點(diǎn)226與數(shù)據(jù)的描述符和/或計(jì)算用特性(即,元數(shù)據(jù))的傳播方向(即,向內(nèi)或向外)相關(guān)聯(lián)。如上所述,傳播方向判斷傳播通過(guò)輸入流匯合點(diǎn)226的元數(shù)據(jù)是由容器圖所提供的還是由子圖實(shí)現(xiàn)所提供的。如果輸入流匯合點(diǎn)226的傳播方向?yàn)橄蛲?,則輸入流匯合點(diǎn)226定義通過(guò)輸入流匯合點(diǎn)226的數(shù)據(jù)的記錄格式以及附接至輸入流匯合點(diǎn)226的組件的布局。
類(lèi)似地,各輸出流匯合點(diǎn)228與數(shù)據(jù)的描述符和/或計(jì)算用特性(即,元數(shù)據(jù))的傳播方向(即,向內(nèi)或向外)相關(guān)聯(lián)。如上所述,傳播方向判斷傳播通過(guò)輸出流匯合點(diǎn)228的元數(shù)據(jù)是由容器圖所提供的還是由子圖實(shí)現(xiàn)所提供的。如果輸出流匯合點(diǎn)228的傳播方向?yàn)橄蛲?,則輸出流匯合點(diǎn)228定義通過(guò)輸出流匯合點(diǎn)228的數(shù)據(jù)的記錄格式以及附接至輸出流匯合點(diǎn)228的組件的布局。
在一些示例中,開(kāi)發(fā)者可以通過(guò)右擊子圖接口224的邊界并且從右擊菜單中選擇“添加輸入流匯合點(diǎn)”或“添加輸出流匯合點(diǎn)”菜單項(xiàng)來(lái)添加流匯合點(diǎn)226、228。在其它示例中,圖形用戶(hù)接口220包括用于向子圖接口224添加流匯合點(diǎn)的特殊工具。類(lèi)似地,可以使用右擊菜單選項(xiàng)或?qū)S霉ぞ邚淖訄D接口224中移除流匯合點(diǎn)
輸入流匯合點(diǎn)226和輸出流匯合點(diǎn)228之間的一個(gè)或多個(gè)鏈接229表示與輸入流匯合點(diǎn)226相關(guān)聯(lián)的數(shù)據(jù)的數(shù)據(jù)描述符或計(jì)算用特性(即,元數(shù)據(jù))以及與輸出流匯合點(diǎn)226相關(guān)聯(lián)的數(shù)據(jù)的數(shù)據(jù)描述符或計(jì)算用特性(即,元數(shù)據(jù))之間的關(guān)系。在圖2D中,單個(gè)鏈接229將第一輸入流匯合點(diǎn)in0連接至第一輸出流匯合點(diǎn)out0。鏈接229表示在與第一輸入流匯合點(diǎn)in0相關(guān)聯(lián)的數(shù)據(jù)或計(jì)算用特性(元數(shù)據(jù))和與第一輸出流匯合點(diǎn)out0相關(guān)聯(lián)的數(shù)據(jù)或計(jì)算用特性(即,元數(shù)據(jù))之間存在關(guān)系。在一些示例中,鏈接229表示與第一輸入流匯合點(diǎn)in0和第一輸出流匯合點(diǎn)out0相關(guān)聯(lián)的任何數(shù)據(jù)或計(jì)算用特性(即,元數(shù)據(jù))必須是相同的。這可以通過(guò)表示一個(gè)特性是根據(jù)其它特性所得出的鏈接229來(lái)實(shí)現(xiàn)。
在一些示例中,開(kāi)發(fā)者可以通過(guò)點(diǎn)擊第一種類(lèi)型的第一流匯合點(diǎn)(例如,輸入流匯合點(diǎn))并且在子圖接口224內(nèi)部從第一流匯合點(diǎn)到第二種類(lèi)型的第二流會(huì)匯合點(diǎn)(例如,輸出流匯合點(diǎn))繪制一條線由此使用該線來(lái)連接這兩個(gè)流匯合點(diǎn),從而創(chuàng)建輸入流匯合點(diǎn)226和輸出流匯合點(diǎn)228之間的鏈接229。
參考圖2E,子圖接口屬性用戶(hù)接口232的流匯合點(diǎn)配置標(biāo)簽230使得用戶(hù)能夠配置子圖接口的一個(gè)或多個(gè)流匯合點(diǎn)。流匯合點(diǎn)配置標(biāo)簽包括匯合點(diǎn)列表控制234以及包括記錄格式元數(shù)據(jù)傳播方向控制238的傳播控制部分236、布局元數(shù)據(jù)傳播方向控制240、布局關(guān)聯(lián)控制242、“可扇入扇出(can fan)”控制244和要求控制246。
流匯合點(diǎn)列表控制234顯示所有流匯合點(diǎn)的列表,其中流匯合點(diǎn)分類(lèi)為輸入流匯合點(diǎn)類(lèi)別248和輸出流匯合點(diǎn)類(lèi)別250。開(kāi)發(fā)者可以從流匯合點(diǎn)列表控制234中選擇一個(gè)或多個(gè)流匯合點(diǎn)以進(jìn)行配置。然后,開(kāi)發(fā)者可以使用傳播控制部分236中的控制238、240、242、244和246來(lái)配置所選擇的流匯合點(diǎn)。特別地,開(kāi)發(fā)者可以使用記錄格式元數(shù)據(jù)傳播方向控制238來(lái)選擇所選擇的流匯合點(diǎn)的記錄格式元數(shù)據(jù)傳播的方向是向內(nèi)還是向外。開(kāi)發(fā)者可以使用布局元數(shù)據(jù)傳播方向控制240來(lái)選擇所選擇的流匯合點(diǎn)的布局元數(shù)據(jù)傳播的方向是向內(nèi)還是向外。開(kāi)發(fā)者可以使用布局關(guān)聯(lián)控制242來(lái)選擇與所選擇的流匯合點(diǎn)相關(guān)聯(lián)的布局參數(shù)的名稱(chēng)。開(kāi)發(fā)者可以使用“can fan”控制244來(lái)指定是否允許所選擇的流匯合點(diǎn)扇入或扇出。開(kāi)發(fā)者可以使用要求控制246來(lái)指定所選擇的流匯合點(diǎn)是否是子圖接口所要求的。
在一些示例中,開(kāi)發(fā)者可以通過(guò)右擊子圖接口并且從右擊菜單中選擇屬性項(xiàng)來(lái)訪問(wèn)子圖接口屬性用戶(hù)接口232的流匯合點(diǎn)配置標(biāo)簽230。
在一些示例中,還可以利用圖2D的圖形用戶(hù)接口220來(lái)定義子圖接口224的子圖接口中所允許的多個(gè)級(jí)。
5示例
以下章節(jié)提供圖2A和2B的數(shù)據(jù)流圖的元數(shù)據(jù)傳播的示例。圖3A~3C和圖4A~4C中的粗虛線表示元數(shù)據(jù)傳播,并且線上的箭頭表示元數(shù)據(jù)傳播的方向。
5.1記錄格式元數(shù)據(jù)傳播
參考圖3A~3C,示出圖2A的第一數(shù)據(jù)流圖200和圖2B的第二數(shù)據(jù)流圖201中的記錄格式元數(shù)據(jù)傳播的示例?,F(xiàn)在參考圖3A,在本示例中,假定子圖接口210的第一流匯合點(diǎn)204D和子圖接口210的第二流匯合點(diǎn)204F均具有“向內(nèi)”的元數(shù)據(jù)傳播方向,并且子圖接口的第三流匯合點(diǎn)204G具有“向外”的元數(shù)據(jù)傳播方向。還假定第一數(shù)據(jù)流圖200中僅有的顯式定義的元數(shù)據(jù)是與第一輸入數(shù)據(jù)集202A的第二輸出端口204C相關(guān)聯(lián)的記錄格式A、與第二輸入數(shù)據(jù)集202B的第一輸出端口204A相關(guān)聯(lián)的記錄格式B以及與輸出數(shù)據(jù)集202C的第三輸入端口204J相關(guān)聯(lián)的記錄格式C。
在圖開(kāi)發(fā)者正在編輯第一數(shù)據(jù)流圖200的情況下,在第一數(shù)據(jù)流圖200上進(jìn)行編輯時(shí)間記錄格式元數(shù)據(jù)傳播。特別地,記錄格式A經(jīng)由第二流206B從第一輸入數(shù)據(jù)集202A的第二輸出端口204C向子圖接口210的第一流匯合點(diǎn)204D傳播。由于第一流匯合點(diǎn)204D具有“向內(nèi)”的元數(shù)據(jù)傳播方向,因此記錄格式A不再繼續(xù)傳播并且維持在第一流匯合點(diǎn)204D處以供以后在鏈接時(shí)間元數(shù)據(jù)解析階段使用。
記錄格式B經(jīng)由第一流206A從第二輸入數(shù)據(jù)集202B的第一輸出端口204A向第一組件208A的第一輸入端口204B傳播,其中記錄格式B與第一輸入端口204B相關(guān)聯(lián)。編輯時(shí)間元數(shù)據(jù)傳播處理判斷為第一組件208A沒(méi)有對(duì)元數(shù)據(jù)應(yīng)用任何變換,因此使記錄格式B傳播通過(guò)該組件并且使記錄格式B與第一組件208A的第三輸出端口204E相關(guān)聯(lián)。
然后,記錄格式B經(jīng)由第三流206C從第一組件208A的第三輸出端口204E向子圖接口210的第二流匯合點(diǎn)204F傳播。由于第二流匯合點(diǎn)204F具有“向內(nèi)”的元數(shù)據(jù)傳播方向,因此記錄格式B不再繼續(xù)傳播并且維持在第二流匯合點(diǎn)204F處以供以后在鏈接時(shí)間元數(shù)據(jù)解析中使用。
然后,記錄格式C經(jīng)由第五流206E從輸出數(shù)據(jù)集202C的第三輸入端口204J向第二組件208B的第四輸出端口204I傳播,其中記錄格式C與第四輸出端口204I相關(guān)聯(lián)。
由于子圖接口210的第三流匯合點(diǎn)204G具有“向外”的元數(shù)據(jù)傳播方向,因此在第一數(shù)據(jù)流圖200中,與流匯合點(diǎn)相關(guān)聯(lián)的元數(shù)據(jù)在編輯時(shí)間是未知的并且預(yù)期要由實(shí)現(xiàn)子圖在鏈接時(shí)間提供。由于該原因,因此暫時(shí)使占位符記錄格式TBD1與第三流匯合點(diǎn)204G相關(guān)聯(lián)。占位符記錄格式TBD1經(jīng)由第四流206D向第二組件208B的第二輸入端口204H傳播,其中占位符記錄格式TBD1與第二輸入端口204H相關(guān)聯(lián)。該占位符維持在第三流匯合點(diǎn)204G和第二輸入端口204H處,直到鏈接時(shí)間元數(shù)據(jù)解析對(duì)TBD1的實(shí)際值進(jìn)行解析并且將該實(shí)際值關(guān)聯(lián)為第三流匯合點(diǎn)204G和第二輸入端口204H所用的元數(shù)據(jù)為止。
參考圖3B,在圖開(kāi)發(fā)者正在編輯第二數(shù)據(jù)流圖201的情況下,在第二數(shù)據(jù)流圖201上進(jìn)行編輯時(shí)間元數(shù)據(jù)傳播。第二數(shù)據(jù)流圖201具有單個(gè)端口(也就是第四組件208D的第六輸出端口204O),并且元數(shù)據(jù)被顯式定義為記錄格式E。
如上所述,第二數(shù)據(jù)流圖201適應(yīng)于子圖接口210(即,第一數(shù)據(jù)流圖200中所包括的子圖接口)。由于該原因,子圖接口210的端口的元數(shù)據(jù)傳播方向在第二數(shù)據(jù)流圖201中與在第一數(shù)據(jù)流圖200中相同。也就是說(shuō),子圖接口210的第一流匯合點(diǎn)204D和子圖接口210的第二流匯合點(diǎn)204F均具有“向內(nèi)”的元數(shù)據(jù)傳播方向,并且子圖接口的第三流匯合點(diǎn)204G具有“向外”的元數(shù)據(jù)傳播方向。
由于第一流匯合點(diǎn)204D具有“向內(nèi)”的元數(shù)據(jù)傳播方向,因此在第二數(shù)據(jù)流圖201中,與端口相關(guān)聯(lián)的元數(shù)據(jù)在編輯時(shí)間是未知的,并且預(yù)期要由容器圖(即,第一數(shù)據(jù)流圖200)在鏈接時(shí)間提供。由于該原因,因此暫時(shí)將占位符記錄格式TBD2與第一流匯合點(diǎn)204D相關(guān)聯(lián)。占位符記錄格式TBD2經(jīng)由第七流206G向第四組件208D的第五輸入端口204M傳播,其中占位符記錄格式TBD2與第五輸入端口204M暫時(shí)相關(guān)聯(lián)。該占位符維持在第一流匯合點(diǎn)204D和第五輸入端口204M處,直到鏈接時(shí)間元數(shù)據(jù)解析對(duì)TBD2的實(shí)際值進(jìn)行解析并且將該實(shí)際值關(guān)聯(lián)為第五輸入204M所用的元數(shù)據(jù)為止。
類(lèi)似地,由于第二流匯合點(diǎn)204F具有“向內(nèi)”的元數(shù)據(jù)傳播方向,因此在第二數(shù)據(jù)流圖201中,與端口相關(guān)聯(lián)的元數(shù)據(jù)在編輯時(shí)間是未知的,并且要由容器圖(即,第一數(shù)據(jù)流圖200)在鏈接時(shí)間提供。由于該原因,因此暫時(shí)將占位符記錄格式TBD3與第二流匯合點(diǎn)204F相關(guān)聯(lián)。占位符記錄格式TBD3經(jīng)由第六流206F向第三組件208C的第四輸入端口204K傳播,其中占位符記錄格式TBD3與第四輸入端口204K暫時(shí)相關(guān)聯(lián)。然后,編輯時(shí)間元數(shù)據(jù)傳播處理判斷為第三組件208C沒(méi)有對(duì)元數(shù)據(jù)應(yīng)用任何變換,因此使記錄格式TBD3傳播通過(guò)該組件并且使記錄格式TBD3與第三組件208C的第五輸出端口204L相關(guān)聯(lián)。然后,TBD3經(jīng)由第八流206H向第四組件208D的第六輸入端口204N傳播,其中TBD3與第六輸入端口204N暫時(shí)相關(guān)聯(lián)。
占位符TBD3維持在第二流匯合點(diǎn)204F以及三個(gè)端口204K、204L、204N處,直到鏈接時(shí)間元數(shù)據(jù)解析對(duì)TBD3的實(shí)際值進(jìn)行解析并且將該實(shí)際值關(guān)聯(lián)為這些端口所用的元數(shù)據(jù)為止。
記錄格式E經(jīng)由第九流206I從第四組件208D的第六輸出端口204O向子圖接口210的第三流匯合點(diǎn)204G傳播。由于第三流匯合點(diǎn)204G具有“向外”的元數(shù)據(jù)傳播方向,因此記錄格式F不再繼續(xù)傳播并且維持在第三流匯合點(diǎn)端口204G處以供以后在鏈接時(shí)間元數(shù)據(jù)解析中使用。
參考圖3C,緊挨在運(yùn)行時(shí)間之前,第二數(shù)據(jù)流圖201鏈接到第一數(shù)據(jù)流圖200中,得到組合數(shù)據(jù)流圖300,并且進(jìn)行鏈接時(shí)間元數(shù)據(jù)解析。為了進(jìn)行鏈接時(shí)間元數(shù)據(jù)解析,對(duì)子圖接口210的各流匯合點(diǎn)的屬性進(jìn)行分析以確定關(guān)聯(lián)的元數(shù)據(jù)傳播的方向。針對(duì)子圖接口210的具有向內(nèi)的元數(shù)據(jù)傳播方向的流匯合點(diǎn),將維持在第一數(shù)據(jù)流圖200中的流匯合點(diǎn)處的記錄格式元數(shù)據(jù)“向內(nèi)”傳送至第二數(shù)據(jù)流圖201的組件的適當(dāng)端口。類(lèi)似地,針對(duì)子圖接口210的具有向外的元數(shù)據(jù)傳播方向的流匯合點(diǎn),將維持在第二數(shù)據(jù)流圖201中的流匯合點(diǎn)處的記錄格式元數(shù)據(jù)向外傳送至第一數(shù)據(jù)流圖200的組件的適當(dāng)端口。
特別地,對(duì)第一流匯合點(diǎn)204D進(jìn)行分析并且確定第一流匯合點(diǎn)204D具有“向內(nèi)”的元數(shù)據(jù)傳播方向。然后,確定第一流匯合點(diǎn)204D與第一數(shù)據(jù)流圖200中所定義的元數(shù)據(jù)記錄格式A相關(guān)聯(lián)并且與第二數(shù)據(jù)流圖201中的占位符元數(shù)據(jù)TBD2相關(guān)聯(lián)。鏈接時(shí)間元數(shù)據(jù)解析階段使與第二數(shù)據(jù)流圖201中的TBD2相關(guān)聯(lián)的所有端口(即,第五輸入端口204M)與記錄格式A相關(guān)聯(lián)。
對(duì)第二流匯合點(diǎn)204F進(jìn)行分析并且確定第二流匯合點(diǎn)204F具有“向內(nèi)”的元數(shù)據(jù)傳播方向。然后,確定第二流匯合點(diǎn)204F與第一數(shù)據(jù)流圖200中所定義的元數(shù)據(jù)記錄格式B相關(guān)聯(lián)并且與第二數(shù)據(jù)流圖201中的占位符元數(shù)據(jù)TBD3相關(guān)聯(lián)。鏈接時(shí)間元數(shù)據(jù)解析階段使與第二數(shù)據(jù)流圖201中的TBD3相關(guān)聯(lián)的所有端口(即,第四輸入端口204K、第五輸出端口204L和第六輸入端口204N)與記錄格式B相關(guān)聯(lián)。
對(duì)第三流匯合點(diǎn)204G進(jìn)行分析并且確定第三流匯合點(diǎn)204G具有“向外”的元數(shù)據(jù)傳播方向。然后,確定第三流匯合點(diǎn)204G與第二數(shù)據(jù)流圖201中所定義的元數(shù)據(jù)記錄格式E相關(guān)聯(lián)并且與第一數(shù)據(jù)流圖200中的占位符元數(shù)據(jù)TBD1相關(guān)聯(lián)。鏈接時(shí)間元數(shù)據(jù)解析階段使與第一數(shù)據(jù)流圖200中的TBD1相關(guān)聯(lián)的所有端口(即,第二輸入端口204H)與記錄格式E相關(guān)聯(lián)。
作為上述的編輯時(shí)間元數(shù)據(jù)傳播處理和鏈接時(shí)間元數(shù)據(jù)解析處理的結(jié)果,組合數(shù)據(jù)流圖300中的所有端口與有效記錄格式元數(shù)據(jù)相關(guān)聯(lián)。
5.2布局元數(shù)據(jù)傳播
參考圖4A~4C,示出圖2A的第一數(shù)據(jù)流圖200和圖2B的第二數(shù)據(jù)流圖201中的布局元數(shù)據(jù)傳播的示例。為了便于傳播布局元數(shù)據(jù),子圖接口212的設(shè)計(jì)者指定了與子圖接口212相關(guān)聯(lián)的一個(gè)或多個(gè)布局元數(shù)據(jù)參數(shù)。針對(duì)該一個(gè)或多個(gè)布局元數(shù)據(jù)參數(shù)中的各布局元數(shù)據(jù)參數(shù),子圖接口設(shè)計(jì)者指定了元數(shù)據(jù)傳播的方向。在定義了布局元數(shù)據(jù)參數(shù)的情況下,子圖接口212的設(shè)計(jì)者使子圖接口的各流匯合點(diǎn)與布局元數(shù)據(jù)參數(shù)其中之一相關(guān)聯(lián)。在一些示例中,各流匯合點(diǎn)確定其自身的唯一布局元數(shù)據(jù)參數(shù)。在其它示例中,布局元數(shù)據(jù)參數(shù)比流匯合點(diǎn)少,并且某些布局元數(shù)據(jù)參數(shù)與多于一個(gè)流匯合點(diǎn)相關(guān)聯(lián)。在這種示例中,共用共通的布局元數(shù)據(jù)參數(shù)的流匯合點(diǎn)必須全部符合元數(shù)據(jù)傳播的方向以及所傳播的與共通的布局元數(shù)據(jù)參數(shù)相關(guān)聯(lián)的布局值。
現(xiàn)在參考圖4A,在本示例中,假定子圖接口212具有與其相關(guān)聯(lián)的兩個(gè)布局元數(shù)據(jù)參數(shù):具有“向外”的元數(shù)據(jù)傳播方向的第一布局元數(shù)據(jù)參數(shù)和具有“向內(nèi)”的元數(shù)據(jù)傳播方向的第二布局元數(shù)據(jù)參數(shù)。第一布局元數(shù)據(jù)參數(shù)與第一流匯合點(diǎn)204D和第二流匯合點(diǎn)204F相關(guān)聯(lián)。第二布局元數(shù)據(jù)參數(shù)與第三流匯合點(diǎn)204G相關(guān)聯(lián)。還假定與第一組件208A和第二組件208B相關(guān)聯(lián)的布局元數(shù)據(jù)并非是顯式定義的,因此由元數(shù)據(jù)傳播來(lái)定義。
在圖開(kāi)發(fā)者正在編輯第一數(shù)據(jù)流圖200的情況下,在第一數(shù)據(jù)流圖200上進(jìn)行編輯時(shí)間布局元數(shù)據(jù)傳播。由于第一組件208A所用的布局元數(shù)據(jù)并非是顯式定義的,因此預(yù)期從與具有“向外”的元數(shù)據(jù)傳播方向的第一布局元數(shù)據(jù)參數(shù)相關(guān)聯(lián)的第二流匯合點(diǎn)204F來(lái)傳播第一組件208A所用的布局元數(shù)據(jù)。然而,在第一數(shù)據(jù)流圖200中,與第二流匯合點(diǎn)204F相關(guān)聯(lián)的布局元數(shù)據(jù)在編輯時(shí)間是未知的并且預(yù)期要由實(shí)現(xiàn)子圖在鏈接時(shí)間提供。由于該原因,向第一組件208A傳播占位符布局元數(shù)據(jù)TBD1并且暫時(shí)使占位符布局元數(shù)據(jù)TBD1與第一組件208A相關(guān)聯(lián)。該占位符布局元數(shù)據(jù)維持在第一組件208A處,直到鏈接時(shí)間元數(shù)據(jù)解析對(duì)TBD1的實(shí)際值進(jìn)行解析并且將該實(shí)際值關(guān)聯(lián)為第一組件208A所用的布局元數(shù)據(jù)為止。
類(lèi)似地,第二組件208B所用的布局元數(shù)據(jù)并非是顯式定義的。然而,編輯時(shí)間布局元數(shù)據(jù)傳播可以對(duì)連接至第二組件208B的第四輸出端口204I的輸出數(shù)據(jù)集202C的配置進(jìn)行分析以推斷出第二組件208B所用的布局元數(shù)據(jù)。在圖4A的示例中,元數(shù)據(jù)傳播對(duì)輸出數(shù)據(jù)集202C的配置進(jìn)行分析并且判斷為輸出數(shù)據(jù)集202C被配置為從其上游組件(即,第二組件208B)的兩個(gè)并行執(zhí)行的實(shí)例接收數(shù)據(jù)?;谳敵鰯?shù)據(jù)集202C的配置,元數(shù)據(jù)傳播推斷第二組件208B的兩個(gè)實(shí)例在第一數(shù)據(jù)流圖200的執(zhí)行期間并行執(zhí)行(即,第二組件208C運(yùn)行表示為圖中的2x的“雙向并行”)?;谠撆袛啵獢?shù)據(jù)傳播使2x布局元數(shù)據(jù)與第二組件208B相關(guān)聯(lián)。
然后,元數(shù)據(jù)傳播將2x布局元數(shù)據(jù)從第二組件208B向第三流匯合點(diǎn)204G傳播。由于第三流匯合點(diǎn)204G與具有“向內(nèi)”的元數(shù)據(jù)傳播方向的第二布局元數(shù)據(jù)參數(shù)相關(guān)聯(lián),因此布局元數(shù)據(jù)2x不再繼續(xù)傳播并且維持在第三流匯合點(diǎn)204G處以供以后在鏈接時(shí)間元數(shù)據(jù)解析中使用。
注意,由于已經(jīng)具有布局元數(shù)據(jù)的文件連接至第一數(shù)據(jù)流圖200中的第一流匯合點(diǎn)204D,因此沒(méi)有經(jīng)由第一流匯合點(diǎn)204D發(fā)生布局元數(shù)據(jù)傳播。
參考圖4B,在圖開(kāi)發(fā)者正在編輯第二數(shù)據(jù)流圖201的情況下,在第二數(shù)據(jù)流圖201上進(jìn)行編輯時(shí)間布局元數(shù)據(jù)傳播。第二數(shù)據(jù)流圖201中所包括的第三組件208C具有顯式定義的布局元數(shù)據(jù),其中該布局元數(shù)據(jù)表示在第二數(shù)據(jù)流圖201的執(zhí)行期間運(yùn)行第三組件208C的一個(gè)實(shí)例(表示為圖中的1x)。第二數(shù)據(jù)流圖201中所包括的第四組件208D所用的布局元數(shù)據(jù)并非是顯式定義的,因此由元數(shù)據(jù)傳播來(lái)定義。
由于第二流匯合點(diǎn)204F與具有“向外”的元數(shù)據(jù)傳播方向的第一布局元數(shù)據(jù)參數(shù)相關(guān)聯(lián),因此第三組件208C所用的1x布局元數(shù)據(jù)向第二流匯合點(diǎn)204F傳播,其中該1x布局元數(shù)據(jù)維持在第二流匯合點(diǎn)204F處以供以后在鏈接時(shí)間元數(shù)據(jù)解析階段使用。
由于第四組件208D所用的布局元數(shù)據(jù)并非是顯式定義的,因此預(yù)期將從與具有“向內(nèi)”的元數(shù)據(jù)傳播方向的第二布局元數(shù)據(jù)參數(shù)相關(guān)聯(lián)的第三流匯合點(diǎn)204G來(lái)傳播第四組件208D的布局元數(shù)據(jù)。然而,在第二數(shù)據(jù)流圖201中,與第三流匯合點(diǎn)204G相關(guān)聯(lián)的布局元數(shù)據(jù)在編輯時(shí)間是未知的,并且預(yù)期要由容器圖在鏈接時(shí)間提供。由于該原因,向第四組件208D傳播占位符布局元數(shù)據(jù)TBD2并且使占位符布局元數(shù)據(jù)TBD2暫時(shí)與第四組件208D相關(guān)聯(lián)。占位符布局元數(shù)據(jù)維持在第四組件208D處,直到鏈接時(shí)間元數(shù)據(jù)解析對(duì)TBD2的實(shí)際值進(jìn)行解析并且將該實(shí)際值關(guān)聯(lián)為第四組件208D所用的布局元數(shù)據(jù)為止。
參考圖4C,緊挨在運(yùn)行時(shí)間之前,第二數(shù)據(jù)流圖201鏈接到第一數(shù)據(jù)流圖200中,得到組合數(shù)據(jù)流圖300并且進(jìn)行鏈路時(shí)間元數(shù)據(jù)解析。為了進(jìn)行鏈路時(shí)間元數(shù)據(jù)解析,對(duì)與子圖接口210的各流匯合點(diǎn)相關(guān)聯(lián)的布局元數(shù)據(jù)參數(shù)進(jìn)行分析以確定與各流匯合點(diǎn)相關(guān)聯(lián)的元數(shù)據(jù)傳播的方向。針對(duì)子圖接口210的具有“向內(nèi)”的元數(shù)據(jù)傳播方向的流匯合點(diǎn),將維持在第一數(shù)據(jù)流圖200中的流匯合點(diǎn)處的布局元數(shù)據(jù)向內(nèi)傳送至第二數(shù)據(jù)流圖201的適當(dāng)組件。類(lèi)似地,針對(duì)子圖接口210的具有“向外”的元數(shù)據(jù)傳播方向的端口,將維持在第二數(shù)據(jù)流圖201中的流匯合點(diǎn)處的布局元數(shù)據(jù)向外傳送至第一數(shù)據(jù)流圖200的適當(dāng)組件。
特別地,對(duì)與第二流匯合點(diǎn)204F相關(guān)聯(lián)的第一布局元數(shù)據(jù)參數(shù)進(jìn)行分析并且判斷為第二流匯合點(diǎn)204F具有“向外”的元數(shù)據(jù)傳播方向。然后,判斷為第二流匯合點(diǎn)204F與第二數(shù)據(jù)流圖201中的顯式定義的布局元數(shù)據(jù)(即,1x)相關(guān)聯(lián)并且與第一數(shù)據(jù)流圖200中的占位符布局元數(shù)據(jù)TBD1相關(guān)聯(lián)。鏈接時(shí)間元數(shù)據(jù)解析階段使與第一數(shù)據(jù)流圖200中的TBD1相關(guān)聯(lián)的所有組件(即,第一組件208A)與布局元數(shù)據(jù)1x相關(guān)聯(lián)。
對(duì)與第三流匯合點(diǎn)204G相關(guān)聯(lián)的第二布局元數(shù)據(jù)參數(shù)進(jìn)行分析并且判斷為第三流匯合點(diǎn)204G具有“向內(nèi)”的元數(shù)據(jù)傳播方向。然后,判斷為第三流匯合點(diǎn)204G與第二數(shù)據(jù)流圖201中的占位符布局元數(shù)據(jù)TBD2相關(guān)聯(lián)并且與第一數(shù)據(jù)流圖200中的顯式定義的布局元數(shù)據(jù)(即,2x)相關(guān)聯(lián)。鏈接時(shí)間元數(shù)據(jù)解析使與第二數(shù)據(jù)流圖201中的TBD2相關(guān)聯(lián)的所有組件(即,第四組件208D)與布局元數(shù)據(jù)2x相關(guān)聯(lián)。
作為上述的編輯時(shí)間元數(shù)據(jù)傳播處理和鏈接時(shí)間元數(shù)據(jù)解析處理的結(jié)果,組合數(shù)據(jù)流圖300中的所有組件與有效的布局元數(shù)據(jù)相關(guān)聯(lián)。
在上述的部分示例中,將元數(shù)據(jù)傳播描述為用于將與給定端口、終端或組件相關(guān)聯(lián)的顯式定義的元數(shù)據(jù)復(fù)制到具有未定義的元數(shù)據(jù)的其它端口、終端或組件的操作。然后,使所復(fù)制的元數(shù)據(jù)與該其它端口、終端或組件相關(guān)聯(lián)。
然而,在一些示例中,代替復(fù)制元數(shù)據(jù),元數(shù)據(jù)傳播使用指示器來(lái)表示具有顯式定義的元數(shù)據(jù)的端口、終端或組件與具有未定義的元數(shù)據(jù)的端口、終端或組件之間的關(guān)聯(lián)。例如,具有未定義的元數(shù)據(jù)的給定端口可以具有元數(shù)據(jù)指示器,其中元數(shù)據(jù)傳播將該元數(shù)據(jù)指示器分配給與另一不同的端口相關(guān)聯(lián)的顯式定義的元數(shù)據(jù)。在鏈接時(shí)間,傳播不再發(fā)生。反而,對(duì)該指示器進(jìn)行解析以使得該顯式定義的元數(shù)據(jù)與該另一不同的端口相關(guān)聯(lián)。
6應(yīng)用
在一些示例中,給定子圖接口可以與適應(yīng)于該子圖接口的實(shí)現(xiàn)子圖的庫(kù)相關(guān)聯(lián)。然后,將該子圖接口放置在容器圖中的圖開(kāi)發(fā)者可以易于在開(kāi)發(fā)期間從該庫(kù)的任意實(shí)現(xiàn)子圖中進(jìn)行挑選。
在一些示例中,上述的子圖接口的使用便于代碼的抽象化。例如,子圖接口的給定實(shí)現(xiàn)可以?xún)H存在于盤(pán)上的一個(gè)位置但可以用在許多容器圖中。針對(duì)盤(pán)上的實(shí)現(xiàn)所進(jìn)行的改變對(duì)在不要求容器圖的任何修改的情況下使用該實(shí)現(xiàn)的所有容器圖的功能產(chǎn)生影響。
7替代例
在一些示例中,對(duì)某些實(shí)現(xiàn)子圖進(jìn)行加密以使得未授權(quán)用戶(hù)不能檢驗(yàn)這些子圖的內(nèi)容。在這種示例中,子圖接口能夠鏈接加密的實(shí)現(xiàn)子圖。在一些示例中,對(duì)某些容器圖進(jìn)行加密以使得未授權(quán)用戶(hù)不能檢驗(yàn)這些容器圖的內(nèi)容。
在一些示例中,圖接口的各流匯合點(diǎn)包括以下屬性中的一個(gè)或多個(gè):標(biāo)簽、數(shù)據(jù)流方向、流匯合點(diǎn)扇入還是扇出的指示、是否要求流匯合點(diǎn)的指示、元數(shù)據(jù)傳播方向以及關(guān)聯(lián)的布局元數(shù)據(jù)參數(shù)的名稱(chēng)。
在一些示例中,子圖接口的設(shè)計(jì)者可以指定用于定義子圖接口的兩個(gè)以上流匯合點(diǎn)之間的元數(shù)據(jù)關(guān)系的規(guī)則。例如,子圖接口設(shè)計(jì)者可以指定輸入流匯合點(diǎn)和輸出流匯合點(diǎn)具有相同的元數(shù)據(jù)。
在一些示例中,子圖接口可以被實(shí)現(xiàn)為使得該子圖接口支持多級(jí)子圖實(shí)現(xiàn)。很通常地,多級(jí)圖是使組件分割成以預(yù)定義順序順次執(zhí)行的兩個(gè)以上的“級(jí)”的圖。例如,多級(jí)圖可以包括三級(jí):一級(jí)、二級(jí)和三級(jí),其中這三級(jí)各自包括一個(gè)或多個(gè)組件。在操作時(shí),在第一級(jí)的組件完成它們的處理之前,第二級(jí)的組件不開(kāi)始處理數(shù)據(jù)。類(lèi)似地,在第二級(jí)的組件完成它們的處理之前,第三級(jí)的組件不開(kāi)始處理數(shù)據(jù)。
為了容納具有多級(jí)的動(dòng)態(tài)子圖,子圖接口包括使得子圖接口的設(shè)計(jì)者能夠指定子圖接口是單級(jí)還是多級(jí)的參數(shù)。在將子圖接口指定為多級(jí)的情況下,設(shè)計(jì)者不需要針對(duì)該子圖接口指定固定數(shù)量的級(jí)。
針對(duì)被指定為多級(jí)的子圖接口的實(shí)現(xiàn)的要求的示例包括以下要求。子圖接口的任何實(shí)現(xiàn)必須使所有組件在單級(jí)內(nèi)連接至該子圖接口的輸入端口(或流匯合點(diǎn))。此外,子圖接口的任何實(shí)現(xiàn)必須使所有組件在單級(jí)內(nèi)連接至該子圖接口的輸出端口(或流匯合點(diǎn)),其中,是該實(shí)現(xiàn)中最大的級(jí)。子圖接口的實(shí)現(xiàn)可以具有僅處于子圖實(shí)現(xiàn)內(nèi)部的任意數(shù)量的級(jí)。
在正在編輯包括多級(jí)子圖接口的容器圖的情況下,暫時(shí)假定子圖實(shí)現(xiàn)的輸出處的級(jí)等于輸入處的級(jí)+1。這足以使圖開(kāi)發(fā)者確定下游組件將會(huì)在何時(shí)處于同一級(jí)內(nèi)。然而,編輯時(shí)間級(jí)不必與運(yùn)行時(shí)間級(jí)相同。
在代替子圖接口而綁定實(shí)現(xiàn)子圖的情況下,按照如下方式來(lái)更新組合圖所用的整體級(jí)信息:
1)針對(duì)給定子圖實(shí)現(xiàn),設(shè)I為用于向該給定子圖實(shí)現(xiàn)的輸入流匯合點(diǎn)進(jìn)行寫(xiě)入的組件的級(jí)的最大值。針對(duì)給定的輸入級(jí)的值I處的所有多級(jí)子圖實(shí)現(xiàn),計(jì)算作為這些多級(jí)子圖實(shí)現(xiàn)中的純內(nèi)部級(jí)的數(shù)量的最大值的M。
2)使圖中具有大于I的級(jí)的所有組件的級(jí)遞增M,并且向下游傳遞級(jí)增量。
3)將子圖實(shí)現(xiàn)的輸出級(jí)O設(shè)置為子圖實(shí)現(xiàn)的輸出端口的下游組件的集合的調(diào)整后的級(jí)的最小值。
4)針對(duì)包括一個(gè)或多個(gè)多級(jí)子圖實(shí)現(xiàn)的組合圖中的各級(jí)重復(fù)該處理。
如果子圖實(shí)現(xiàn)中的輸入級(jí)不為0,則一定數(shù)量m(m>0)的內(nèi)部級(jí)發(fā)生在子圖實(shí)現(xiàn)的第一輸入級(jí)之前。子圖實(shí)現(xiàn)的這些“前置級(jí)(pre-phase)”是有用的,例如用于創(chuàng)建主輸入處理中所要使用的查找文件。在這種情況下,如果則可能需要使所有組件的整體級(jí)遞增以使得該m個(gè)前置級(jí)可以在組合數(shù)據(jù)流圖中以正級(jí)數(shù)來(lái)運(yùn)行。這可以以級(jí)方式在級(jí)中執(zhí)行,由此在起始級(jí)I(調(diào)整之前)中進(jìn)行值為所有子圖實(shí)現(xiàn)的前置級(jí)的最大值的遞增,向下游傳播級(jí)增量并且針對(duì)下一級(jí)進(jìn)行迭代。
在一些示例中,以上的調(diào)整算法可能會(huì)引起子圖實(shí)現(xiàn)中的組件的級(jí)編號(hào)之間的空隙(例如,如果在與該子圖實(shí)現(xiàn)相同的輸入級(jí)中存在具有內(nèi)部級(jí)的其它子圖實(shí)現(xiàn))。例如,考慮輸入級(jí)0中的兩個(gè)子圖實(shí)現(xiàn):具有兩個(gè)內(nèi)部級(jí)的A和具有一個(gè)內(nèi)部級(jí)的B。A和B的下一下游組件的級(jí)至少為1,這是由于A和B是多級(jí)圖實(shí)現(xiàn)。內(nèi)部級(jí)計(jì)數(shù)的最大值是2,因此A和B兩者的調(diào)整后的整體輸出級(jí)是3。這意味著B(niǎo)將包括級(jí)空隙,B的輸入級(jí)將為0,B僅有的純內(nèi)部級(jí)將為1,但B的輸出級(jí)將為3。這種級(jí)空隙對(duì)于數(shù)據(jù)流圖的操作并非是有害的。
在一些示例中,同一輸入級(jí)I中的多個(gè)子圖實(shí)現(xiàn)的純內(nèi)部級(jí)將彼此重疊。這可能由于資源限制而成問(wèn)題并且子圖實(shí)現(xiàn)優(yōu)選具有私有的內(nèi)部級(jí)空間。由于該原因,可以使得子圖實(shí)現(xiàn)選擇不與其它子圖實(shí)現(xiàn)共享該子圖實(shí)現(xiàn)的內(nèi)部級(jí)。這可以例如使用與子圖實(shí)現(xiàn)有關(guān)的可以被解析為布爾值的(例如,命名為private_internal_phasing的)本地參數(shù)來(lái)實(shí)現(xiàn)。在private_internal_phasing為真的情況下,將以上步驟1中的M的計(jì)算改變?yōu)檩斎爰?jí)I處的子圖實(shí)現(xiàn)在private_internal_phasing被設(shè)置為真的情況下的內(nèi)部級(jí)之和,并將該和與輸入級(jí)I處的剩余子圖實(shí)現(xiàn)的內(nèi)部級(jí)計(jì)數(shù)的最大值相加。
在一些示例中,子圖接口可能不具有任何流終端,但仍可以用于使得用戶(hù)能夠根據(jù)加載了哪個(gè)子圖實(shí)現(xiàn)來(lái)定義資源的不同集合(例如,查找文件)以供特定容器圖使用。
在一些示例中,通過(guò)使用接口的簡(jiǎn)單文字規(guī)格而不通過(guò)使用圖形用戶(hù)接口來(lái)實(shí)現(xiàn)子圖接口。
在一些示例中,將子圖接口的實(shí)現(xiàn)簡(jiǎn)化為使用“向?qū)А憋L(fēng)格的圖形用戶(hù)接口。例如,向?qū)эL(fēng)格的圖形用戶(hù)接口將通過(guò)提出一系列問(wèn)題并且基于用戶(hù)的答案自動(dòng)生成子圖接口來(lái)引導(dǎo)用戶(hù)實(shí)現(xiàn)子圖接口。在一個(gè)示例中,向?qū)эL(fēng)格的圖形用戶(hù)接口包括多個(gè)頁(yè)面,其中這些頁(yè)面包括但不限于預(yù)檢檢查頁(yè)面(即,介紹頁(yè)面)、文件名稱(chēng)和位置頁(yè)面、參數(shù)定義頁(yè)面、流匯合點(diǎn)定義和元數(shù)據(jù)傳播頁(yè)面、布局元數(shù)據(jù)頁(yè)面和匯總頁(yè)面。
8系統(tǒng)配置
可以例如使用執(zhí)行適當(dāng)軟件的指令的可編程計(jì)算系統(tǒng)來(lái)實(shí)現(xiàn)上述的用于管理子圖和子圖接口的方法,或者可以在諸如現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)等的適當(dāng)硬件中或者以某種混合形式來(lái)實(shí)現(xiàn)這些方法。例如,在編程方法中,該軟件可以包括在一個(gè)或多個(gè)編程或可編程計(jì)算系統(tǒng)(可以具有諸如分布式、客戶(hù)端/服務(wù)器或網(wǎng)格等的各種架構(gòu))上執(zhí)行的一個(gè)或多個(gè)計(jì)算機(jī)程序中的進(jìn)程,其中該一個(gè)或多個(gè)編程或可編程計(jì)算系統(tǒng)各自包括至少一個(gè)處理器、至少一個(gè)數(shù)據(jù)存儲(chǔ)系統(tǒng)(包括易失性和/或非易失性存儲(chǔ)器和/或存儲(chǔ)元件)、(用于使用至少一個(gè)輸入裝置或端口接收輸入、并且用于使用至少一個(gè)輸出裝置或端口提供輸出的)至少一個(gè)用戶(hù)界面。該軟件可以包括例如提供與數(shù)據(jù)流圖的設(shè)計(jì)、結(jié)構(gòu)和執(zhí)行相關(guān)的服務(wù)的更大程序的一個(gè)或多個(gè)模塊。該程序的模塊(例如,數(shù)據(jù)流圖的元素)可以實(shí)現(xiàn)為數(shù)據(jù)結(jié)構(gòu)或符合數(shù)據(jù)倉(cāng)庫(kù)中所存儲(chǔ)的數(shù)據(jù)模型的其它有組織的數(shù)據(jù)。
可以將軟件設(shè)置在諸如CD-ROM或(例如,利用通用或?qū)S糜?jì)算系統(tǒng)或裝置可讀取的)其它計(jì)算機(jī)可讀介質(zhì)等的有形非瞬態(tài)介質(zhì)上、或者經(jīng)由網(wǎng)絡(luò)的通信介質(zhì)(例如,以編碼在傳送信號(hào)中的形式)傳遞至執(zhí)行該軟件的計(jì)算系統(tǒng)的有形非瞬態(tài)介質(zhì)??梢栽趯?zhuān)用計(jì)算機(jī)上、或者使用諸如協(xié)處理器或現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)或?qū)S眉呻娐?ASIC)等的專(zhuān)用硬件來(lái)進(jìn)行該處理的一部分或全部??梢砸岳貌煌挠?jì)算元件來(lái)進(jìn)行軟件所指定的計(jì)算的不同部分的分布式方式來(lái)實(shí)現(xiàn)該處理。優(yōu)選將這種計(jì)算機(jī)程序各自存儲(chǔ)在通用或?qū)S每删幊逃?jì)算機(jī)可訪問(wèn)的存儲(chǔ)裝置的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)(例如,固態(tài)存儲(chǔ)器或介質(zhì)、或者磁性或光學(xué)介質(zhì))上或者下載至該計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),以在利用計(jì)算機(jī)讀取存儲(chǔ)裝置介質(zhì)以進(jìn)行這里所述的處理的情況下配置計(jì)算機(jī)并使該計(jì)算機(jī)進(jìn)行工作。本發(fā)明的系統(tǒng)還可被視為作為配置有計(jì)算機(jī)程序的有形非瞬態(tài)介質(zhì)來(lái)實(shí)現(xiàn),其中如此配置成的介質(zhì)使計(jì)算機(jī)以特定的預(yù)定義方式進(jìn)行工作,以進(jìn)行這里所述的處理步驟中的一個(gè)或多個(gè)。
已經(jīng)說(shuō)明了多個(gè)實(shí)施例。然而,應(yīng)當(dāng)理解,上述說(shuō)明意圖例示而并非限制由所附權(quán)利要求書(shū)的范圍所定義的本發(fā)明的范圍。因此,其它實(shí)施例也在所附權(quán)利要求書(shū)的范圍內(nèi)。例如,可以在沒(méi)有背離本發(fā)明的范圍的情況下進(jìn)行各種變形。另外,上述步驟中的一部分可以是順序獨(dú)立的,因而可以以與所述順序不同的順序來(lái)進(jìn)行。