欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

管理包括子圖的數據流圖所用的接口的制作方法

文檔序號:11814618閱讀:338來源:國知局
管理包括子圖的數據流圖所用的接口的制作方法與工藝

本申請要求2013年12月5日提交的美國申請序列號61/912,057和2014年7月31日提交的美國申請序列號62/031,388的優(yōu)先權。



背景技術:

本說明書涉及管理數據流圖中的子圖所用的接口。

許多軟件應用程序為了處理數據而存在。這些軟件應用程序中的一部分被指定為數據流圖。數據流圖通常包括通過有時被稱為“流(flow)”的鏈接而相互連接的多個數據處理組件。

在執(zhí)行數據流圖的情況下,從數據庫或者從一些其它數據存儲器或數據排隊系統(tǒng)接收數據(例如,數據集)。所接收到的數據通過根據組件和流的相互連接所定義的依賴性而傳播通過流并進入組件來行進通過數據流圖。各組件在經由流提供處理后的數據作為輸出數據之前,根據與該組件相關聯的預定功能來處理所接收到的數據。在數據流圖的輸出處,處理后的數據例如存儲在其它數據存儲器或數據排隊系統(tǒng)中,提供給其它下游系統(tǒng)或呈現給用戶。

數據流圖的開發(fā)者通常通過將表示組件的塊拖拽到圖形用戶接口所提供的圖形工作區(qū)域(或“畫布(canvas)”)上,并且利用表示數據流的鏈接使這些組件相互連接來確定圖,以使得該數據流圖實現期望功能。一旦開發(fā)者對其數據流圖的實現滿意,則該開發(fā)者可以將該數據流圖保存至存儲器以供以后使用。通常,如果開發(fā)者需要在以后改變數據流圖的實現,則該開發(fā)者可以使圖形用戶接口從存儲器讀取所保存的數據流圖,對該數據流圖進行改變,然后將修改后的數據流圖再保存至存儲器。

在一些示例中,數據流圖的一段或多段自身是使用數據流圖來實現的,該一段或多段被稱為“子圖”。在這些示例中,子圖是數據流圖的一部分。因而,為了改變給定數據流圖內所使用的子圖,開發(fā)者請求系統(tǒng)從盤讀取該數據流圖,由此使得開發(fā)者能夠在圖形用戶接口中打開該數據流圖。然后開發(fā)者將在同一圖形用戶接口內打開子圖段,以使得可以編輯子圖。開發(fā)者可以對子圖進行改變,然后開發(fā)者使數據流圖與修改后的子圖一起再保存至存儲器,由此將子圖的變化嵌入在所保存的數據流圖中。



技術實現要素:

在一方面,通常,一種用于組合數據流圖的規(guī)格的方法,所述方法包括:經由輸入裝置或端口接收多個數據流圖規(guī)格,所述多個數據流圖規(guī)格包括:(“子圖”所用的)第一數據流圖規(guī)格,其確定通過表示組件之間的數據的流的鏈接而連接的兩個以上組件,所述兩個以上組件包括第一組件和第二組件,其中至少一個組件表示應用于流入該組件的端口的數據的計算,并且至少一個組件表示用于提供流出該組件的端口的數據的計算,以及(“容器圖”所用的)第二數據流圖規(guī)格,其確定至少一個第三組件和至少一個子圖接口,其中所述子圖接口包括下述(1)和(2)之間的連接的至少一個流匯合點,其中(1)是所述子圖接口外部的至/來自所述第三組件的端口的數據的流,(2)是所述子圖接口內部的至/來自所述第一數據流圖規(guī)格的組件的端口的數據的流。該方法包括使用至少一個處理器來處理包括所述第一數據流圖規(guī)格和所述第二數據流圖規(guī)格的信息,以生成組合數據流圖規(guī)格,所述處理包括:識別所述子圖接口和所述第一數據流圖規(guī)格之間的關聯;針對所述子圖接口上的至少第一流匯合點,確定與傳送數據的描述符或計算用特性的值相關聯的方向,以及根據所確定出的方向將數據的描述符或計算用特性的值從所述第一流匯合點傳送至所述第一數據流圖規(guī)格所確定的組件或所述第二數據流圖規(guī)格所確定的組件。

方面可以包括以下特征中的一個或多個特征。

所述第一數據流圖規(guī)格包括至少一個指示,該至少一個指示表示與所述第一組件相關聯的描述符與同所述第二組件相關聯的描述符相同。

所確定出的方向與數據的第一描述符或計算用特性的值從所述子圖接口上的所述第一流匯合點向所述第二組件的向內傳送相對應。

所述第一描述符是從所述第三組件向所述第一流匯合點提供的。

所述第一描述符是從所述第二組件向所述第一組件提供的。

所述第二數據流圖規(guī)格包括至少一個指示,該至少一個指示表示與所述第三組件相關聯的描述符與同所述子圖接口相關聯的描述符相同。

所述第二數據流圖規(guī)格包括至少一個指示,該至少一個指示表示與第四組件相關聯的描述符與同所述第三組件相關聯的描述符相同。

所確定出的方向與數據的第一描述符或計算用特性的值從所述子圖接口上的所述第一流匯合點向所述第三組件的向外傳送相對應。

所述第一描述符是從所述第一組件向所述第一流匯合點提供的。

所述第一描述符是從所述第三組件向所述第四組件提供的。

所述描述符用于描述所述第一組件的端口和所述第二組件的端口之間所傳送的數據的數據特性。

所述數據特性包括所傳送的數據內的記錄的字段的格式。

所述描述符用于描述所述第一數據流圖規(guī)格和所述第二數據流圖規(guī)格至少之一的組件的計算用特性。

所述計算用特性包括所述組件所表示的計算的執(zhí)行的并行程度。

對所述第一數據流圖進行加密。

對所述第二數據流圖進行加密。

所述第一數據流圖的所述兩個以上組件分布在所述第一數據流圖中的第一組多個順次執(zhí)行的級中。

所述第二數據流圖包括多個組件,所述多個組件和所述子圖接口分布在所述第二數據流圖中的第二組多個順次執(zhí)行的級中。

使數據流圖準備好執(zhí)行包括基于所述第一組多個順次執(zhí)行的級和所述第二組多個順次執(zhí)行的級來確定包括在所述數據流圖中的多個級。

在另一方面,通常,一種以非瞬態(tài)形式存儲在計算機可讀介質上的軟件,用于組合數據流圖的規(guī)格,所述軟件包括使計算系統(tǒng)執(zhí)行以下處理的指令:經由輸入裝置或端口接收多個數據流圖規(guī)格,所述多個數據流圖規(guī)格包括:第一數據流圖規(guī)格,其確定通過表示組件之間的數據的流的鏈接而連接的兩個以上組件,所述兩個以上組件包括第一組件和第二組件,其中至少一個組件表示應用于流入該組件的端口的數據的計算,并且至少一個組件表示用于提供流出該組件的端口的數據的計算,以及第二數據流圖規(guī)格,其確定至少一個第三組件和至少一個子圖接口,其中所述子圖接口包括表示下述(1)和(2)之間的連接的至少一個流匯合點,其中(1)是所述子圖接口外部的至/來自所述第三組件的端口的數據的流,(2)是所述子圖接口內部的至/來自所述第一數據流圖規(guī)格的組件的端口的數據的流;以及使用至少一個處理器來處理包括所述第一數據流圖規(guī)格和所述第二數據流圖規(guī)格的信息,以生成組合數據流圖規(guī)格,所述處理包括:識別所述子圖接口和所述第一數據流圖規(guī)格之間的關聯;針對所述子圖接口上的至少第一流匯合點,確定與傳送數據的描述符或計算用特性的值相關聯的方向,以及根據所確定出的方向將數據的描述符或計算用特性的值從所述第一流匯合點傳送至所述第一數據流圖規(guī)格所確定的組件或所述第二數據流圖規(guī)格所確定的組件。

在另一方面,通常,一種計算系統(tǒng),用于組合數據流圖的規(guī)格,所述計算系統(tǒng)包括:輸入裝置或端口,用于接收多個數據流圖規(guī)格,所述多個數據流圖規(guī)格包括:第一數據流圖規(guī)格,其確定通過表示組件之間的數據的流的鏈接而連接的兩個以上組件,所述兩個以上組件包括第一組件和第二組件,其中至少一個組件表示應用于流入該組件的端口的數據的計算,并且至少一個組件表示用于提供流出該組件的端口的數據的計算,以及第二數據流圖規(guī)格,其確定至少一個第三組件和至少一個子圖接口,其中所述子圖接口包括表示下述(1)和(2)之間的連接的至少一個流匯合點,其中(1)是所述子圖接口外部的至/來自所述第三組件的端口的數據的流,(2)是所述子圖接口內部的至/來自所述第一數據流圖規(guī)格的組件的端口的數據的流;以及至少一個處理器,用于處理包括所述第一數據流圖規(guī)格和所述第二數據流圖規(guī)格的信息,以生成組合數據流圖規(guī)格,所述處理包括:識別所述子圖接口和所述第一數據流圖規(guī)格之間的關聯;針對所述子圖接口上的至少第一流匯合點,確定與傳送數據的描述符或計算用特性的值相關聯的方向,以及根據所確定出的方向將數據的描述符或計算用特性的值從所述第一流匯合點傳送至所述第一數據流圖規(guī)格所確定的組件或所述第二數據流圖規(guī)格所確定的組件。

在另一方面,通常,一種用于確定數據流圖的方法,所述方法包括:在第一用戶接口中渲染第一數據流圖的表示,所述渲染包括:渲染所述第一數據流圖的多個組件,其中至少一個組件表示與流入輸入端口的數據和流出輸出端口的數據至少之一相關聯的計算,以及基于表示從所述第一數據流圖的第一組件的輸出端口到所述第一數據流圖的第二組件的輸入端口的數據的流的用戶輸入,渲染所述第一組件的輸出端口和所述第二組件的輸入端口之間的鏈接;以及在第二用戶接口中渲染所述第一數據流圖的子圖的表示,所述渲染包括:渲染至少一個子圖接口,所述子圖接口包括一個或多個流匯合點,其中所述子圖接口的第一流匯合點表示下述(1)和(2)之間的連接,其中(1)是所述子圖接口外部的至/來自所述第一數據流圖的第三組件的端口的數據的流,(2)是所述子圖接口內部的至/來自所述子圖的第一組件的端口的數據的流,基于表示下述(1)和(2)之間的關系的用戶輸入來渲染所述子圖接口的所述第一流匯合點和第二流匯合點之間的鏈接,其中(1)是與所述子圖接口的所述第一流匯合點相關聯的數據的第一描述符或計算用特性,(2)是與所述子圖接口的所述第二流匯合點相關聯的數據的第二描述符或計算用特性,以及渲染所述第二用戶接口的一部分,該部分用于接收確定所述子圖接口的所定義的流匯合點的集合中的各流匯合點的屬性的用戶輸入,其中所述屬性包括與傳送同相應流匯合點相關聯的數據的描述符或計算用特性相關聯的方向。

在另一方面,通常,一種用于確定數據流圖的方法,所述方法包括:在第一用戶接口中渲染第一數據流圖的表示,所述渲染包括:渲染所述第一數據流圖的多個組件,其中至少一個組件表示與流入輸入端口的數據和流出輸出端口的數據至少之一相關聯的計算,以及基于表示從所述第一數據流圖的第一組件的輸出端口到所述第一數據流圖的第二組件的輸入端口的數據的流的用戶輸入,渲染所述第一組件的輸出端口和所述第二組件的輸入端口之間的鏈接;以及在第二用戶接口中渲染所述第一數據流圖的子圖的表示,所述渲染包括:渲染至少一個子圖接口,所述子圖接口包括一個或多個流匯合點,其中所述子圖接口的第一流匯合點表示下述(1)和(2)之間的連接,其中(1)是所述子圖接口外部的至/來自所述第一數據流圖的第三組件的端口的數據的流,(2)是所述子圖接口內部的至/來自所述子圖的第一組件的端口的數據的流,以及基于表示下述(1)和(2)之間的關系的用戶輸入來渲染所述子圖接口的所述第一流匯合點和第二流匯合點之間的鏈接,其中(1)是與所述子圖接口的所述第一流匯合點相關聯的數據的第一描述符或計算用特性,(2)是與所述子圖接口的所述第二流匯合點相關聯的數據的第二描述符或計算用特性。

方面可以包括以下特征中的一個或多個特征。

所述方法還包括生成用于存儲所述第一數據流圖的表示的數據結構,所述數據結構包括:表示第一組一個或多個組件的數據,該第一組一個或多個組件包括經由所述子圖接口外部的一個或多個流匯合點所連接的數據的一個或多個流;以及表示第二組一個或多個組件的數據,該第二組一個或多個組件包括經由所述子圖接口內部的一個或多個流匯合點所連接的數據的一個或多個流。

所述關系對應于所述第一描述符和所述第二描述符相同。

所述第二用戶接口包括用于接收用戶輸入的部分,所述用戶輸入確定所述子圖接口的所定義的流匯合點的集合中的各流匯合點的屬性。

所述屬性包括與傳送同相應流匯合點相關聯的數據的描述符或計算用特性相關聯的方向。

所述方向與數據的第一描述符或計算用特性的值從所述第一流匯合點向所述子圖的所述第一組件的向內傳送相對應。

所述方向與數據的第一描述符或計算用特性的值從所述第一流匯合點向所述第一數據流圖的所述第三組件的向外傳送相對應。

所述第一描述符用于描述所述第一數據流圖的所述第三組件的端口和所述子圖的所述第一組件的端口之間所傳送的數據的數據特性。

所述數據特性包括所傳送的數據內的記錄的字段的格式。

所述描述符用于描述所述第一數據流圖的所述第三組件和所述子圖的所述第一組件至少之一的計算用特性。

所述計算用特性包括所述第一數據流圖的所述第三組件或所述子圖的所述第一組件所表示的計算的執(zhí)行的并行程度。

所述第一用戶接口是由第一計算系統(tǒng)所生成的。

所述第二用戶接口是由與所述第一計算系統(tǒng)不同的第二計算系統(tǒng)所生成的。

在另一方面,通常,一種以非瞬態(tài)形式存儲在計算機可讀介質中的軟件,用于確定數據流圖,所述軟件包括用于使計算系統(tǒng)執(zhí)行以下處理的指令:在第一用戶接口中渲染第一數據流圖的表示,所述渲染包括:渲染所述第一數據流圖的多個組件,其中至少一個組件表示與流入輸入端口的數據和流出輸出端口的數據至少之一相關聯的計算,以及基于表示從所述第一數據流圖的第一組件的輸出端口到所述第一數據流圖的第二組件的輸入端口的數據的流的用戶輸入,渲染所述第一組件的輸出端口和所述第二組件的輸入端口之間的鏈接;以及在第二用戶接口中渲染所述第一數據流圖的子圖的表示,所述渲染包括:渲染至少一個子圖接口,所述子圖接口包括一個或多個流匯合點,其中所述子圖接口的第一流匯合點表示下述(1)和(2)之間的連接,其中(1)是所述子圖接口外部的至/來自所述第一數據流圖的第三組件的端口的數據的流,(2)是所述子圖接口內部的至/來自所述子圖的第一組件的端口的數據的流,以及基于表示下述(1)和(2)之間的關系的用戶輸入來渲染所述子圖接口的所述第一流匯合點和第二流匯合點之間的鏈接,其中(1)是與所述子圖接口的所述第一流匯合點相關聯的數據的第一描述符或計算用特性,(2)是與所述子圖接口的所述第二流匯合點相關聯的數據的第二描述符或計算用特性。

在另一方面,通常,一種計算系統(tǒng),用于確定數據流圖,所述計算系統(tǒng)包括:第一計算裝置,用于在第一用戶接口中渲染第一數據流圖的表示,所述渲染包括:渲染所述第一數據流圖的多個組件,其中至少一個組件表示與流入輸入端口的數據和流出輸出端口的數據至少之一相關聯的計算,以及基于表示從所述第一數據流圖的第一組件的輸出端口到所述第一數據流圖的第二組件的輸入端口的數據的流的用戶輸入,渲染所述第一組件的輸出端口和所述第二組件的輸入端口之間的鏈接;以及第二計算裝置,用于在第二用戶接口中渲染所述第一數據流圖的子圖的表示,所述渲染包括:渲染至少一個子圖接口,所述子圖接口包括一個或多個流匯合點,其中所述子圖接口的第一流匯合點表示下述(1)和(2)之間的連接,其中(1)是所述子圖接口外部的至/來自所述第一數據流圖的第三組件的端口的數據的流,(2)是所述子圖接口內部的至/來自所述子圖的第一組件的端口的數據的流,基于表示下述(1)和(2)之間的關系的用戶輸入來渲染所述子圖接口的所述第一流匯合點和第二流匯合點之間的鏈接,其中(1)是與所述子圖接口的所述第一流匯合點相關聯的數據的第一描述符或計算用特性,(2)是與所述子圖接口的所述第二流匯合點相關聯的數據的第二描述符或計算用特性。

方面可以包括以下優(yōu)點中的一個或多個優(yōu)點。

除其它優(yōu)點以外,用以管理包括子圖的動態(tài)鏈接的子圖接口的方法便于使代碼抽象化以及在數據流圖開發(fā)環(huán)境中重復使用。子圖向子圖接口的動態(tài)鏈接涉及使針對要使用多個可能子圖中的哪一個來實現與該子圖接口相關聯的功能的判斷延遲(例如,直到恰好在執(zhí)行之前為止)。因而,容器圖(即,具有一個或多個子圖接口的數據流圖)可以用作能夠重復使用并定制的模板。模板數據流圖可以發(fā)送至客戶。然后,客戶可以供給用于實現子圖接口的圖邏輯并且針對客戶的需求和操作環(huán)境來定制模板數據流圖??蛻艨梢园ǘㄖ茢祿鲌D的用戶,以及/或者向其它用戶提供定制數據流圖的開發(fā)者。

子圖接口提供制作遍及接口的多個實現而通用的數據流圖的能力。子圖接口提供在子圖接口的任何實現之前針對接口開發(fā)圖的能力。子圖接口提供在無需使用的具體實例的情況下針對接口驗證實現的能力。子圖接口提供區(qū)分子圖的實現的發(fā)送位置、許可、加密或其它屬性的能力。

一些實施例使得能夠根據與子圖接口相關聯的實現子圖得出包括該子圖接口的容器圖中的元數據。元數據例如可以包括提供給組件或從組件提供的數據的描述符(例如,記錄格式)、組件的計算用特性或者與組件相關聯的計算資源。有利地,根據實現子圖得出容器圖所用的元數據使得該容器圖相對于從該實現子圖得到或者進入該實現子圖的數據的類型是可配置的。這在開發(fā)者指定實現子圖讀取具有特定記錄格式的數據并且將該數據傳遞至預定義的容器圖以供進一步處理的情況下尤其有用。在一些示例中,預定義的容器圖是由一些其它實體所指定的并且可以是只讀的、加密的或者以一些其它方式受到保護以免被查看和/或修改。在一些示例中,實現子圖可以是只讀的,加密的或者以一些其它方式受到保護以免被查看和/或修改。這種圖需要能夠容納來自實現子圖的不同類型的記錄格式而無需用戶干預。還可以根據包括子圖接口的容器圖得出與該子圖接口相關聯的實現子圖中的元數據,這可以使得不同容器圖中的實現子圖的使用具有一定的靈活性。

開發(fā)者可以有利地創(chuàng)建并使用子圖接口的實現的庫。這些庫可以用于減少開發(fā)時間并且鼓勵代碼重復使用。

一些實施例使得能夠根據容器圖對子圖接口的子圖實現進行依賴性分析和內省。

用于開發(fā)容器圖的圖形用戶接口可以包括多級以及如何將這些級應用于任意子圖接口的圖形指示,這使得開發(fā)者能夠理解這些級將如何影響數據流圖的不同部分(例如,哪些數據流將穿過級邊界,由此使得通過該數據流的數據持久地存儲在緩沖器中)。

用于開發(fā)子圖接口的圖形用戶接口鼓勵開發(fā)者將動態(tài)鏈接的子圖視為受制于強抽象邊界,由此要求與開發(fā)一個或多個子圖實現分開地(或通常在開發(fā)一個或多個子圖實現之前)開發(fā)子圖接口,并且在一些示例中,與開發(fā)容器圖分開地(或者在開發(fā)容器圖之前)開發(fā)子圖接口。

根據以下說明書、以及根據權利要求書,本發(fā)明的其它特征和有點將變得明顯。

附圖說明

圖1A是被配置為使用動態(tài)鏈接的子圖的系統(tǒng)的框圖。

圖1B是準備數據流圖以供執(zhí)行的不同階段的流程圖。

圖2A是包括子圖接口的數據流圖。

圖2B是子圖接口的實現。

圖2C是組合數據流圖。

圖2D是子圖接口開發(fā)用戶接口。

圖2E是子圖接口屬性用戶接口的端口配置標簽。

圖3A示出圖2A的數據流圖中的編輯時間記錄格式元數據傳播。

圖3B示出圖2B的子圖接口的實現中的編輯時間記錄格式元數據傳播。

圖3C示出圖2C的組合數據流圖中的鏈接時間記錄格式元數據傳播。

圖4A示出圖2A的數據流圖中的編輯時間布局元數據傳播。

圖4B示出圖2B的子圖接口的實現中的編輯時間布局元數據傳播。

圖4C示出圖2C的組合數據流圖中的鏈接時間布局元數據傳播。

具體實施方式

圖1A示出可以使用動態(tài)鏈接的子圖的數據處理系統(tǒng)100的示例。系統(tǒng)100包括數據源102,其中該數據源102可以包括諸如存儲裝置或者至線上數據流的連接等的一個或多個數據的源,其中該一個或多個數據的源各自可以以各種格式(例如,數據庫表、電子表格文件、非結構文本(flat text)文件或大型機所使用的原始格式)中的任何格式來存儲或提供數據。執(zhí)行環(huán)境104包括圖準備模塊106和圖執(zhí)行模塊112。很通常地,圖準備模塊106將數據流圖的規(guī)格(以下更詳細地說明)裝配并鏈接到可由圖執(zhí)行模塊112執(zhí)行的表示中。執(zhí)行環(huán)境104例如可以在諸如某個版本的UNIX操作系統(tǒng)等的適當的操作系統(tǒng)的控制下安裝在一個或多個通用計算機上。例如,執(zhí)行環(huán)境104可以包括包含使用多個中央處理單元(CPU)或多個處理器內核的計算機系統(tǒng)的結構的多節(jié)點并行計算環(huán)境,可以是本地的(例如,諸如對稱多處理(SMP)計算機等的多處理器系統(tǒng))或本地分布式的(例如,作為集群所連接的多個處理器或大規(guī)模并行處理(MPP)系統(tǒng))、或者遠程或遠程分布式的(例如,經由局域網(LAN)和/或廣域網(WAN)連接的多個處理器)、或者它們的任何組合。

在一些示例中,執(zhí)行環(huán)境104從數據源102讀取數據,通過(例如,利用圖執(zhí)行模塊112)執(zhí)行與該數據有關的數據流圖來處理該數據,并且將處理后的數據存儲在數據存儲系統(tǒng)中。提供數據源102的存儲裝置相對于執(zhí)行環(huán)境104可以是本地的,例如,可以存儲在連接至安裝有執(zhí)行環(huán)境104的計算機的存儲介質(例如,硬盤驅動器108)上,或者相對于執(zhí)行環(huán)境104可以是遠程的,例如,安裝在經由(例如,云計算基礎設施所提供的)遠程連接與安裝有執(zhí)行環(huán)境104的計算機進行通信的遠程系統(tǒng)(例如,大型機110)上。

圖執(zhí)行模塊112使用圖準備模塊106所生成的數據流圖的表示來處理數據源102所提供的數據。輸出數據可以存儲回數據源102或者存儲在執(zhí)行環(huán)境104可訪問的數據存儲系統(tǒng)116中,或者被使用。開發(fā)環(huán)境118A也可以訪問數據存儲系統(tǒng)116,其中在開發(fā)環(huán)境118A中,開發(fā)者120A能夠對用戶接口121A內的數據流圖的規(guī)格進行改變。在本示例中,存在用于開發(fā)獨立用戶接口內的不同數據流圖的規(guī)格的多個獨立開發(fā)環(huán)境。例如,第一開發(fā)者120A使用開發(fā)環(huán)境118A的第一用戶接口121A來開發(fā)包括子圖接口123的容器圖122A??赡懿煌牡诙_發(fā)者120B使用開發(fā)環(huán)境118B的第二用戶接口121B來開發(fā)要加載在容器圖122A的子圖接口123中的實現子圖122B,其中實現子圖適應于子圖接口123。在一些示例中,開發(fā)環(huán)境118A或118B是用于開發(fā)作為數據流圖的應用程序的系統(tǒng),其中數據流圖包括頂點(表示數據處理組件或數據集),并且這些頂點通過頂點之間的有向鏈接(directed link)(表示工作元素(即,數據)的流)相連接。例如,在通過引用包含于此的標題為“Managing Parameters for Graph-Based Applications”的美國專利公開號2007/0011668中更詳細地說明了這種環(huán)境。在通過引用包含于此的標題為“EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS”的美國專利5,966,072中說明了用于執(zhí)行這種基于圖的計算的系統(tǒng)。根據該系統(tǒng)所制作的數據流圖提供用于將信息輸入至圖組件所表示的個別處理或從圖組件所表示的個別處理獲得信息的方法、用于在處理之間移動信息的方法以及用于定義處理的運行順序的方法。該系統(tǒng)包括用于從任何可用方法中選取處理間通信方法的算法(例如,與圖的鏈接相對應的通信路徑可以使用TCP/IP或UNIX域套接字或者使用共享存儲器在處理之間傳遞數據)。

執(zhí)行模塊104可以接收來自包括不同形式的數據庫系統(tǒng)的可以實現數據源102的各種系統(tǒng)的數據。該數據可以被組織成具有針對各字段(還被稱為“屬性”或“列”)的值的可能包括空值的記錄。在第一次從數據源讀取數據的情況下,執(zhí)行模塊104通常從與該數據源中的記錄有關的一些初始格式信息開始。在一些情形中,數據源的記錄結構最初可能是未知的并且作為替代可以在對該數據源或數據進行了分析之后才確定。與記錄有關的初始信息例如可以包括表示獨特值的位的數量、記錄內的字段的順序以及位所表示的值的類型(例如,字符串、有符號/無符號整數)。

圖1B示出使用數據處理系統(tǒng)100來準備數據流圖以供執(zhí)行以及執(zhí)行數據流圖的不同階段的示例。在編輯時間,任意數量的開發(fā)者編輯(150)不同的數據流圖,其中任意數量的開發(fā)者可以包括編輯容器圖的一個開發(fā)者120A,以及對實現該數據流圖中所包括的子圖接口的實現子圖進行編輯的另一開發(fā)者120B。在一些情況下,實現子圖自身可以包括將由其自身嵌套的實現子圖來實現的子圖接口。然后,圖開發(fā)者或圖用戶可以開始由圖準備模塊106來執(zhí)行的使用子圖的動態(tài)鏈接來準備數據流圖以供執(zhí)行的處理。圖準備模塊106判斷(152)準備中的數據流圖中是否存在任何未鏈接的子圖接口。如果存在,則模塊106鏈接(154)適當的子圖。在該可能遞歸的鏈接處理期間(稱為“鏈接時間”),可能存在與需要評價的數據流圖相關聯的各種參數,其中這些參數包括表示哪個特定實現子圖應鏈接至給定子圖接口的參數。在動態(tài)鏈接完成之后,模塊106(在“編譯時間”)將完全裝配好的數據流圖編譯(156)成可執(zhí)行形式,并且執(zhí)行模塊104(在“運行時間”)執(zhí)行(158)編譯后的數據流圖。可能存在與在編譯時間或運行時間評價的數據流圖相關聯的某些參數。

1容器圖、子圖和子圖接口

參考圖2A,第一數據流圖200的框圖被配置為使用多個組件處理來自第一輸入數據集202A和第二輸入數據集202B的數據并且將所得到的處理后的數據存儲在輸出數據集202C中。第一數據流圖200包括第一組件208A、第二組件208B和子圖接口210。很通常地,子圖接口210使得子圖能夠動態(tài)地加載在第一數據流圖中。在一些示例中,第一數據流圖200由于其包括子圖接口而被稱為“容器圖”。

組件各自具有用于接收輸入數據的一個或多個輸入端口以及用于提供輸出數據的一個或多個輸出端口。通常,各組件對流入其輸入端口的輸入數據應用計算并且經由該組件的輸出端口提供計算結果作為輸出。注意,在一些示例中,某些類型的組件可以僅包括輸入端口或者僅包括輸出端口。子圖接口包括一個或多個流匯合點,其中流匯合點定義容器圖和與子圖接口相關聯的子圖中的流之間的連接點(以下更詳細地說明)。各流匯合點表示至/來自第一數據流圖的組件上的端口的數據的流和至/來自第二數據流圖的組件上的端口的數據的流之間的連接(或“匯合點”)。數據集和組件的端口以及子圖接口的流匯合點通過流206A~206E相互連接,這定義了數據如何在第一數據流圖200的數據集、組件和子圖接口之間傳播。

具體地,針對圖2A的第一數據流圖200,第一組件208A上所包括的第一輸入端口204B使用第一流206A連接至第二輸入數據集202B上所包括的第一輸出端口204A。子圖接口210上所包括的第一流匯合點204D使用第二流206B連接至第一輸入數據集202A上所包括的第二輸出端口204C。子圖接口210上所包括的第二流匯合點204F使用第三流206C連接至第一組件208A上所包括的第三輸出端口204E。第二組件208B上所包括的第二輸入端口204H使用第四流206D連接至子圖接口210上所包括的第三流匯合點204G。最后,輸出數據集202C上所包括的第三輸入端口204J使用第五流206E連接至子圖接口210上所包括的第四輸出端口204I。

在第一數據流圖200中,第一組件208A和第二組件208B是傳統(tǒng)上已知的實現諸如排序、聯合和各種數據變換等的功能的數據流圖組件。

子圖接口210是數據流圖中使得能夠使用子圖的動態(tài)鏈接來管理第一數據流圖200的一部分的規(guī)格的特殊類型的節(jié)點。在一些示例中,子圖接口210接收包括指向盤上的第二數據流圖規(guī)格的路徑的參數輸入PS 212。緊挨在第一數據流圖200的執(zhí)行之前,第二數據流圖動態(tài)地鏈接到第一數據流圖200中,實質上取代了子圖接口210。

通常,為了可以使第二數據流圖動態(tài)鏈接到第一數據流圖200中,第二數據流圖必須適應于子圖接口210所定義的接口。也就是說,第二數據流圖必須具有連接至子圖接口的流匯合點的端口。通過使第二數據流圖強制適應于子圖接口210,已知在無需檢驗第二數據流圖的情況下,連接至第一數據流圖200中的子圖接口210的端口的流可以直接連接至第二數據流圖中的子圖接口210的端口,由此在這兩個數據流圖中的端口之間形成單個流。

參考圖2B,第二數據流圖201的一個示例適應于圖2A的子圖接口210。在一些示例中,由于第二數據流圖210適應于子圖接口210并且針對子圖接口210實現功能,因此第二數據流圖201被稱為“實現子圖”。

第二數據流圖201被配置為使用多個組件處理來自子圖接口210所確定的第一流匯合點204D和第二流匯合點204F的數據,并且提供所得到的處理后的數據作為至子圖接口210所定義的第三流匯合點204G的輸出。組件各自具有用于接收輸入數據的一個或多個輸入端口以及用于提供輸出數據的一個或多個輸出端口。組件的端口通過流206F~206I相互連接,這定義了數據如何在第二數據流圖201的子圖接口210和組件之間傳播。

具體地,針對圖2B的第二數據流圖201,第三組件208C上所包括的第四輸入端口204K使用第六流206F連接至圖形接口210上所包括的第二流匯合點204F。第四組件208D上所包括的第五輸入端口204M使用第七流206G連接至圖形接口210上所包括的第一流匯合點204D。第四組件208D上所包括的第六輸入端口204N使用第八流206H連接至第三組件208C上所包括的第五輸出端口204L。圖形接口210上所包括的第三流匯合點204G使用第九流206I連接至第四組件208D上所包括的第六輸出端口204O。

注意,在一些示例中,第二數據流圖201中的組件的端口和流匯合點(即,206F、206G、206I)之間的連接不是傳統(tǒng)的流而是流匯合點和端口之間的綁定(即,關聯)或終端連接器。在第二數據流圖201鏈接到第一數據流圖200中的情況下,剝去綁定或終端連接器并且第二數據流圖201中的組件的端口直接連接至第一數據流圖200的流。

2動態(tài)鏈接

再參考圖2A,緊挨在圖執(zhí)行模塊112執(zhí)行數據流圖之前,圖準備模塊106處理第一數據流圖200和第二數據流圖201的一部分,以準備第一數據流圖200以供執(zhí)行。除了其它步驟以外,該處理包括在第一數據流圖200中的子圖接口210的位置處將第二數據流圖201動態(tài)鏈接(即,綁定)到第一數據流圖200中。

為了將第二數據流圖201動態(tài)鏈接到第一數據流圖200中,圖準備模塊106對提供至子圖接口210的參數輸入PS 212進行分析以確定盤上所存儲的哪個實現子圖與子圖接口210相關聯。加載所確定出的實現子圖(例如,第二數據流圖201)并對其進行實例化,并且將該實現子圖的參數和端口綁定在第一數據流圖200中以構成組合數據流圖。然后對子圖接口的流匯合點的至少一部分進行分析以確定元數據傳播的方向,其中該方向對應于與流匯合點相關聯的數據的描述符或計算用特性(即,元數據)的傳送方向。在元數據傳播的處理中,針對至少部分流匯合點,根據所確定出的方向將數據的描述符或計算用特性從該流匯合點傳送至第一數據流圖200中的組件或組件上的端口或者第二數據流圖201中的組件或組件上的端口。以下詳細說明元數據傳播的該處理。

參考圖2C,組合數據流圖300包括圖2A的第一數據流圖200以及取代子圖接口210而鏈接的第二數據流圖201。由于第二數據流圖201是子圖接口210的實現并且適應于子圖接口210,因此第二數據流圖210的所有輸入和輸出端口經由流連接至第一數據流圖200的組件。

組合數據流圖300可由圖執(zhí)行模塊112來執(zhí)行。

3元數據傳播

在數據流圖中,通常,管理與數據流圖中的組件的端口相關聯的元數據以及/或者與這些組件自身相關聯的元數據很重要。如上所述,在一些示例中,元數據包括數據的描述符(例如,端口所用的包括流入或流出端口的記錄的字段序列和數據類型的記錄格式)或者計算用特性(例如,組件的分區(qū)或布局)。在一些示例中,元數據可以包括組件可以使用的一定量的存儲器、組件可以使用哪些計算資源、有序程度(sortedness)、壓縮方法、字符集、二進制表示(例如,大字節(jié)序(big-endian)、小字節(jié)序(little-endian))或數據變換。

元數據管理可以手動、自動或者通過使用手動和自動元數據管理的組合來實現。針對手動元數據管理,元數據例如由圖開發(fā)者或圖用戶來供給。對于自動元數據管理,元數據從圖中(例如,由圖開發(fā)者或者由圖用戶)顯式定義了元數據的部分傳播至圖中未顯式定義元數據的部分。在圖用戶或開發(fā)者沒有直接供給給定端口或組件所用的元數據的情況下使用元數據傳播。在這種情況下,從圖中的其它端口或組件得出給定端口或組件所用的元數據。這里所使用的術語“元數據傳播”是指該得出處理。

在圖2A的第一數據流圖200中,傳統(tǒng)元數據傳播的一個簡單示例在針對第一組件208A的第一輸入端口204B未顯式定義記錄格式元數據的情況下發(fā)生。第一輸入端口204B經由第一流206A連接至第二輸入數據集202B的第一輸出端口204A。通常,第二輸入數據集202B所供給的數據的記錄格式始終是顯式已知的,因此與第一輸出端口204A相關聯的元數據是顯式定義的。與第一輸出端口204A相關聯的顯式定義的元數據經由第一流206A向第一輸入端口204B傳播,其中該元數據與第一輸入端口204B相關聯。

上述的第一輸出端口204A和第一輸入端口204B之間的元數據傳播經由第一流206A在與數據流經數據流圖相同的方向(即,從左向右)上發(fā)生。然而,在一些示例中,元數據經由流在與數據流經數據流圖的方向相反的方向上傳播。例如,與輸出數據集202C的第三輸入端口204J相關聯的顯式定義的元數據經由第五流206E在與數據經由第五流206E流動的方向相反的方向上向第二組件208B的第四輸出端口204I傳播。

在包括傳統(tǒng)組件和數據集的傳統(tǒng)數據流圖中,顯式定義的元數據傳播通過數據流圖使得數據流圖中的所有端口和組件與元數據相關聯。通常對元數據傳播中出現的任何沖突進行標記以供開發(fā)者進行干預。然而,通常以與僅包括傳統(tǒng)組件的數據流圖的元數據傳播不同的方式來應對包括子圖接口的數據流圖的元數據傳播。特別地,元數據可以分兩個階段傳播:編輯時間元數據傳播階段和鏈接時間元數據解析階段。

使用該兩階段方式,在編輯時間,容器圖(即,包括子圖接口的圖)的開發(fā)者以及將取代子圖接口而鏈接的實現子圖(即,適應于子圖接口的子圖)的開發(fā)者不必知道彼此的元數據。在無權訪問傳播信息的情況下,傳統(tǒng)的元數據傳播將無法得知元數據應在“向內”的方向上傳播到實現子圖中(即,容器圖用作實現子圖所用的元數據的源)還是在“向外”的方向上從實現子圖傳播(即,容器圖用作來自實現子圖的元數據的宿(sink))。

為了便于在包括子圖接口的數據流圖中傳播元數據,子圖接口的各流匯合點確定元數據傳播的方向。在編輯時間元數據傳播期間,元數據與流匯合點相關聯,然后,在鏈接時間根據元數據傳播的方向從流匯合點傳送相關聯的元數據。在一些示例中,元數據傳播的可能方向的集合包括“向內”傳播和“向外”傳播??梢圆捎貌紶?Boolean)變量的形式來存儲特定的向內方向值和特定的向外方向值,其中,例如可以針對這種傳播或者為了確定所指示的元數據傳播的方向對該布爾變量進行檢索。

3.1.1向內元數據傳播

在聲明子圖接口上的流匯合點具有“向內”的元數據傳播方向的情況下,容器圖中的元數據傳播經由連接至流匯合點(最終至連接到實現子圖中的流(或綁定)的端口)的流來供給元數據定義。

也就是說,在容器圖中,編輯時間元數據傳播將流匯合點視為元數據宿。特別地,容器圖中的編輯時間元數據傳播使用如上所述的傳統(tǒng)元數據傳播在容器圖的傳統(tǒng)組件之間傳播元數據。在元數據傳播至子圖接口上的具有“向內”元數據傳播方向的流匯合點的情況下,該元數據不能再繼續(xù)傳播。該元數據維持在流匯合點處,直到實現子圖鏈接到容器圖中并且可以(如下所述)進行鏈接時間元數據解析為止。

在實現子圖中,編輯時間元數據傳播將具有“向內”元數據傳播方向的流匯合點視為元數據源。然而,在實現子圖的情況下,子圖接口上的流匯合點處的實際元數據值是未知的(這是由于該值僅可以在鏈接時間從容器圖獲得)。因而,為了針對實現子圖進行編輯時間傳播,針對流匯合點處的元數據分配占位符值并且如上所述使用傳統(tǒng)元數據傳播使該占位符值傳播通過實現子圖。在實現子圖鏈接到容器圖中并且進行鏈接時間元數據解析的情況下對該占位符值進行解析。

在鏈接時間元數據解析階段,在實現子圖鏈接到容器圖中的情況下,將維持在具有“向內”元數據傳播方向的流匯合點處的元數據傳送到實現子圖中并且傳送至該實現子圖的組件的適當端口。在一些示例中,鏈接時間元數據解析僅通過利用容器圖中的相應流匯合點處所維持的元數據值來簡單替換實現子圖中的流匯合點處的占位符值來解析該占位符值。

在一些示例中,“向內”元數據傳播是默認的,并且即使在圖容器子圖接口將始終供給顯式元數據定義的情況下也是適當的。

3.1.2向外元數據傳播

在聲明子圖接口上的流匯合點具有“向外”的元數據傳播方向的情況下,實現子圖中的元數據傳播向容器圖供給流匯合點所用的元數據定義。

也就是說,在容器圖中,盡管不存在針對元數據的編輯時間定義(這是由于該定義僅可以在鏈接時間從實現子圖獲得),編輯時間元數據傳播仍將流匯合點視為元數據源。特別地,容器圖中的編輯時間元數據傳播使用如上所述的傳統(tǒng)元數據傳播在容器圖中的傳統(tǒng)組件之間傳播元數據。在子圖接口上的具有向外的元數據傳播方向的流匯合點上進行元數據傳播的情況下,針對該流匯合點處的元數據分配占位符值,并且使用傳統(tǒng)元數據傳播使該占位符值傳播通過容器圖。

在實現子圖中,編輯時間元數據傳播將具有“向外”的元數據傳播方向的流匯合點視為元數據宿。特定的,實現子圖中的編輯時間元數據傳播使用如上所述的傳統(tǒng)元數據傳播在容器圖中的傳統(tǒng)組件之間傳播元數據。在元數據傳播至子圖接口上的具有“向外”的元數據傳播方向的流匯合點的情況下,元數據不能再繼續(xù)傳播。該元數據維持在流匯合點處,直到實現子圖鏈接到容器圖中并且可以(如下所述)進行鏈接時間元數據解析為止。

在鏈接時間元數據解析階段,在實現子圖鏈接到容器圖中的情況下,將維持在具有“向外”的元數據傳播方向的流匯合點處的元數據傳送出至容器圖,并且傳送出至容器圖的組件的適當端口。在一些示例中,鏈接時間元數據解析識別容器子圖中的流匯合點處的占位符值并且僅利用實現子圖中的流匯合點處所維持的元數據值來簡單替換該占位符值。

在一些示例中,不允許開發(fā)者顯式定義具有“向外”的元數據傳播方向的流匯合點所用的元數據。

4子圖接口開發(fā)圖形用戶接口

參考圖2D,子圖接口開發(fā)圖形用戶接口220便于創(chuàng)建、檢驗和修改子圖接口224。子圖用戶接口開發(fā)圖形用戶接口220包括顯示窗口222,其中該顯示窗口222用于向開發(fā)者呈現包括多個輸入流匯合點226、輸出流匯合點228以及輸入流匯合點226和輸出流匯合點228之間的一個或多個鏈接229的子圖接口224的圖形表示。

很通常地,子圖接口224用作嚴格原型,其中子圖接口224的任何子圖實現和包括子圖接口224的任何容器圖必須適應于該原型。這樣,圖形用戶接口220的子圖接口224的外部可以被視為獨立開發(fā)的容器圖所用的占位符,并且圖形用戶接口中的子圖接口224的內部可以被視為獨立開發(fā)的子圖實現所用的占位符。

流匯合點226、228被配置在子圖接口224的邊界上并且用作連接至/來自子圖接口224外部的組件的端口的數據的流(例如,來自容器圖中的組件的端口的數據的流)以及至/來自子圖接口224內部的組件的端口的數據的流(即,至子圖實現中的組件的端口的數據的流)的橋梁。在圖2D中,子圖接口224包括兩個輸入流匯合點226(即,in0和in1)以及兩個輸出流匯合點228(即,out0和out1)。然而,子圖接口224可以包括任意數量的輸入流匯合點226和輸出流匯合點228。

各輸入流匯合點226與數據的描述符和/或計算用特性(即,元數據)的傳播方向(即,向內或向外)相關聯。如上所述,傳播方向判斷傳播通過輸入流匯合點226的元數據是由容器圖所提供的還是由子圖實現所提供的。如果輸入流匯合點226的傳播方向為向外,則輸入流匯合點226定義通過輸入流匯合點226的數據的記錄格式以及附接至輸入流匯合點226的組件的布局。

類似地,各輸出流匯合點228與數據的描述符和/或計算用特性(即,元數據)的傳播方向(即,向內或向外)相關聯。如上所述,傳播方向判斷傳播通過輸出流匯合點228的元數據是由容器圖所提供的還是由子圖實現所提供的。如果輸出流匯合點228的傳播方向為向外,則輸出流匯合點228定義通過輸出流匯合點228的數據的記錄格式以及附接至輸出流匯合點228的組件的布局。

在一些示例中,開發(fā)者可以通過右擊子圖接口224的邊界并且從右擊菜單中選擇“添加輸入流匯合點”或“添加輸出流匯合點”菜單項來添加流匯合點226、228。在其它示例中,圖形用戶接口220包括用于向子圖接口224添加流匯合點的特殊工具。類似地,可以使用右擊菜單選項或專用工具從子圖接口224中移除流匯合點

輸入流匯合點226和輸出流匯合點228之間的一個或多個鏈接229表示與輸入流匯合點226相關聯的數據的數據描述符或計算用特性(即,元數據)以及與輸出流匯合點226相關聯的數據的數據描述符或計算用特性(即,元數據)之間的關系。在圖2D中,單個鏈接229將第一輸入流匯合點in0連接至第一輸出流匯合點out0。鏈接229表示在與第一輸入流匯合點in0相關聯的數據或計算用特性(元數據)和與第一輸出流匯合點out0相關聯的數據或計算用特性(即,元數據)之間存在關系。在一些示例中,鏈接229表示與第一輸入流匯合點in0和第一輸出流匯合點out0相關聯的任何數據或計算用特性(即,元數據)必須是相同的。這可以通過表示一個特性是根據其它特性所得出的鏈接229來實現。

在一些示例中,開發(fā)者可以通過點擊第一種類型的第一流匯合點(例如,輸入流匯合點)并且在子圖接口224內部從第一流匯合點到第二種類型的第二流會匯合點(例如,輸出流匯合點)繪制一條線由此使用該線來連接這兩個流匯合點,從而創(chuàng)建輸入流匯合點226和輸出流匯合點228之間的鏈接229。

參考圖2E,子圖接口屬性用戶接口232的流匯合點配置標簽230使得用戶能夠配置子圖接口的一個或多個流匯合點。流匯合點配置標簽包括匯合點列表控制234以及包括記錄格式元數據傳播方向控制238的傳播控制部分236、布局元數據傳播方向控制240、布局關聯控制242、“可扇入扇出(can fan)”控制244和要求控制246。

流匯合點列表控制234顯示所有流匯合點的列表,其中流匯合點分類為輸入流匯合點類別248和輸出流匯合點類別250。開發(fā)者可以從流匯合點列表控制234中選擇一個或多個流匯合點以進行配置。然后,開發(fā)者可以使用傳播控制部分236中的控制238、240、242、244和246來配置所選擇的流匯合點。特別地,開發(fā)者可以使用記錄格式元數據傳播方向控制238來選擇所選擇的流匯合點的記錄格式元數據傳播的方向是向內還是向外。開發(fā)者可以使用布局元數據傳播方向控制240來選擇所選擇的流匯合點的布局元數據傳播的方向是向內還是向外。開發(fā)者可以使用布局關聯控制242來選擇與所選擇的流匯合點相關聯的布局參數的名稱。開發(fā)者可以使用“can fan”控制244來指定是否允許所選擇的流匯合點扇入或扇出。開發(fā)者可以使用要求控制246來指定所選擇的流匯合點是否是子圖接口所要求的。

在一些示例中,開發(fā)者可以通過右擊子圖接口并且從右擊菜單中選擇屬性項來訪問子圖接口屬性用戶接口232的流匯合點配置標簽230。

在一些示例中,還可以利用圖2D的圖形用戶接口220來定義子圖接口224的子圖接口中所允許的多個級。

5示例

以下章節(jié)提供圖2A和2B的數據流圖的元數據傳播的示例。圖3A~3C和圖4A~4C中的粗虛線表示元數據傳播,并且線上的箭頭表示元數據傳播的方向。

5.1記錄格式元數據傳播

參考圖3A~3C,示出圖2A的第一數據流圖200和圖2B的第二數據流圖201中的記錄格式元數據傳播的示例?,F在參考圖3A,在本示例中,假定子圖接口210的第一流匯合點204D和子圖接口210的第二流匯合點204F均具有“向內”的元數據傳播方向,并且子圖接口的第三流匯合點204G具有“向外”的元數據傳播方向。還假定第一數據流圖200中僅有的顯式定義的元數據是與第一輸入數據集202A的第二輸出端口204C相關聯的記錄格式A、與第二輸入數據集202B的第一輸出端口204A相關聯的記錄格式B以及與輸出數據集202C的第三輸入端口204J相關聯的記錄格式C。

在圖開發(fā)者正在編輯第一數據流圖200的情況下,在第一數據流圖200上進行編輯時間記錄格式元數據傳播。特別地,記錄格式A經由第二流206B從第一輸入數據集202A的第二輸出端口204C向子圖接口210的第一流匯合點204D傳播。由于第一流匯合點204D具有“向內”的元數據傳播方向,因此記錄格式A不再繼續(xù)傳播并且維持在第一流匯合點204D處以供以后在鏈接時間元數據解析階段使用。

記錄格式B經由第一流206A從第二輸入數據集202B的第一輸出端口204A向第一組件208A的第一輸入端口204B傳播,其中記錄格式B與第一輸入端口204B相關聯。編輯時間元數據傳播處理判斷為第一組件208A沒有對元數據應用任何變換,因此使記錄格式B傳播通過該組件并且使記錄格式B與第一組件208A的第三輸出端口204E相關聯。

然后,記錄格式B經由第三流206C從第一組件208A的第三輸出端口204E向子圖接口210的第二流匯合點204F傳播。由于第二流匯合點204F具有“向內”的元數據傳播方向,因此記錄格式B不再繼續(xù)傳播并且維持在第二流匯合點204F處以供以后在鏈接時間元數據解析中使用。

然后,記錄格式C經由第五流206E從輸出數據集202C的第三輸入端口204J向第二組件208B的第四輸出端口204I傳播,其中記錄格式C與第四輸出端口204I相關聯。

由于子圖接口210的第三流匯合點204G具有“向外”的元數據傳播方向,因此在第一數據流圖200中,與流匯合點相關聯的元數據在編輯時間是未知的并且預期要由實現子圖在鏈接時間提供。由于該原因,因此暫時使占位符記錄格式TBD1與第三流匯合點204G相關聯。占位符記錄格式TBD1經由第四流206D向第二組件208B的第二輸入端口204H傳播,其中占位符記錄格式TBD1與第二輸入端口204H相關聯。該占位符維持在第三流匯合點204G和第二輸入端口204H處,直到鏈接時間元數據解析對TBD1的實際值進行解析并且將該實際值關聯為第三流匯合點204G和第二輸入端口204H所用的元數據為止。

參考圖3B,在圖開發(fā)者正在編輯第二數據流圖201的情況下,在第二數據流圖201上進行編輯時間元數據傳播。第二數據流圖201具有單個端口(也就是第四組件208D的第六輸出端口204O),并且元數據被顯式定義為記錄格式E。

如上所述,第二數據流圖201適應于子圖接口210(即,第一數據流圖200中所包括的子圖接口)。由于該原因,子圖接口210的端口的元數據傳播方向在第二數據流圖201中與在第一數據流圖200中相同。也就是說,子圖接口210的第一流匯合點204D和子圖接口210的第二流匯合點204F均具有“向內”的元數據傳播方向,并且子圖接口的第三流匯合點204G具有“向外”的元數據傳播方向。

由于第一流匯合點204D具有“向內”的元數據傳播方向,因此在第二數據流圖201中,與端口相關聯的元數據在編輯時間是未知的,并且預期要由容器圖(即,第一數據流圖200)在鏈接時間提供。由于該原因,因此暫時將占位符記錄格式TBD2與第一流匯合點204D相關聯。占位符記錄格式TBD2經由第七流206G向第四組件208D的第五輸入端口204M傳播,其中占位符記錄格式TBD2與第五輸入端口204M暫時相關聯。該占位符維持在第一流匯合點204D和第五輸入端口204M處,直到鏈接時間元數據解析對TBD2的實際值進行解析并且將該實際值關聯為第五輸入204M所用的元數據為止。

類似地,由于第二流匯合點204F具有“向內”的元數據傳播方向,因此在第二數據流圖201中,與端口相關聯的元數據在編輯時間是未知的,并且要由容器圖(即,第一數據流圖200)在鏈接時間提供。由于該原因,因此暫時將占位符記錄格式TBD3與第二流匯合點204F相關聯。占位符記錄格式TBD3經由第六流206F向第三組件208C的第四輸入端口204K傳播,其中占位符記錄格式TBD3與第四輸入端口204K暫時相關聯。然后,編輯時間元數據傳播處理判斷為第三組件208C沒有對元數據應用任何變換,因此使記錄格式TBD3傳播通過該組件并且使記錄格式TBD3與第三組件208C的第五輸出端口204L相關聯。然后,TBD3經由第八流206H向第四組件208D的第六輸入端口204N傳播,其中TBD3與第六輸入端口204N暫時相關聯。

占位符TBD3維持在第二流匯合點204F以及三個端口204K、204L、204N處,直到鏈接時間元數據解析對TBD3的實際值進行解析并且將該實際值關聯為這些端口所用的元數據為止。

記錄格式E經由第九流206I從第四組件208D的第六輸出端口204O向子圖接口210的第三流匯合點204G傳播。由于第三流匯合點204G具有“向外”的元數據傳播方向,因此記錄格式F不再繼續(xù)傳播并且維持在第三流匯合點端口204G處以供以后在鏈接時間元數據解析中使用。

參考圖3C,緊挨在運行時間之前,第二數據流圖201鏈接到第一數據流圖200中,得到組合數據流圖300,并且進行鏈接時間元數據解析。為了進行鏈接時間元數據解析,對子圖接口210的各流匯合點的屬性進行分析以確定關聯的元數據傳播的方向。針對子圖接口210的具有向內的元數據傳播方向的流匯合點,將維持在第一數據流圖200中的流匯合點處的記錄格式元數據“向內”傳送至第二數據流圖201的組件的適當端口。類似地,針對子圖接口210的具有向外的元數據傳播方向的流匯合點,將維持在第二數據流圖201中的流匯合點處的記錄格式元數據向外傳送至第一數據流圖200的組件的適當端口。

特別地,對第一流匯合點204D進行分析并且確定第一流匯合點204D具有“向內”的元數據傳播方向。然后,確定第一流匯合點204D與第一數據流圖200中所定義的元數據記錄格式A相關聯并且與第二數據流圖201中的占位符元數據TBD2相關聯。鏈接時間元數據解析階段使與第二數據流圖201中的TBD2相關聯的所有端口(即,第五輸入端口204M)與記錄格式A相關聯。

對第二流匯合點204F進行分析并且確定第二流匯合點204F具有“向內”的元數據傳播方向。然后,確定第二流匯合點204F與第一數據流圖200中所定義的元數據記錄格式B相關聯并且與第二數據流圖201中的占位符元數據TBD3相關聯。鏈接時間元數據解析階段使與第二數據流圖201中的TBD3相關聯的所有端口(即,第四輸入端口204K、第五輸出端口204L和第六輸入端口204N)與記錄格式B相關聯。

對第三流匯合點204G進行分析并且確定第三流匯合點204G具有“向外”的元數據傳播方向。然后,確定第三流匯合點204G與第二數據流圖201中所定義的元數據記錄格式E相關聯并且與第一數據流圖200中的占位符元數據TBD1相關聯。鏈接時間元數據解析階段使與第一數據流圖200中的TBD1相關聯的所有端口(即,第二輸入端口204H)與記錄格式E相關聯。

作為上述的編輯時間元數據傳播處理和鏈接時間元數據解析處理的結果,組合數據流圖300中的所有端口與有效記錄格式元數據相關聯。

5.2布局元數據傳播

參考圖4A~4C,示出圖2A的第一數據流圖200和圖2B的第二數據流圖201中的布局元數據傳播的示例。為了便于傳播布局元數據,子圖接口212的設計者指定了與子圖接口212相關聯的一個或多個布局元數據參數。針對該一個或多個布局元數據參數中的各布局元數據參數,子圖接口設計者指定了元數據傳播的方向。在定義了布局元數據參數的情況下,子圖接口212的設計者使子圖接口的各流匯合點與布局元數據參數其中之一相關聯。在一些示例中,各流匯合點確定其自身的唯一布局元數據參數。在其它示例中,布局元數據參數比流匯合點少,并且某些布局元數據參數與多于一個流匯合點相關聯。在這種示例中,共用共通的布局元數據參數的流匯合點必須全部符合元數據傳播的方向以及所傳播的與共通的布局元數據參數相關聯的布局值。

現在參考圖4A,在本示例中,假定子圖接口212具有與其相關聯的兩個布局元數據參數:具有“向外”的元數據傳播方向的第一布局元數據參數和具有“向內”的元數據傳播方向的第二布局元數據參數。第一布局元數據參數與第一流匯合點204D和第二流匯合點204F相關聯。第二布局元數據參數與第三流匯合點204G相關聯。還假定與第一組件208A和第二組件208B相關聯的布局元數據并非是顯式定義的,因此由元數據傳播來定義。

在圖開發(fā)者正在編輯第一數據流圖200的情況下,在第一數據流圖200上進行編輯時間布局元數據傳播。由于第一組件208A所用的布局元數據并非是顯式定義的,因此預期從與具有“向外”的元數據傳播方向的第一布局元數據參數相關聯的第二流匯合點204F來傳播第一組件208A所用的布局元數據。然而,在第一數據流圖200中,與第二流匯合點204F相關聯的布局元數據在編輯時間是未知的并且預期要由實現子圖在鏈接時間提供。由于該原因,向第一組件208A傳播占位符布局元數據TBD1并且暫時使占位符布局元數據TBD1與第一組件208A相關聯。該占位符布局元數據維持在第一組件208A處,直到鏈接時間元數據解析對TBD1的實際值進行解析并且將該實際值關聯為第一組件208A所用的布局元數據為止。

類似地,第二組件208B所用的布局元數據并非是顯式定義的。然而,編輯時間布局元數據傳播可以對連接至第二組件208B的第四輸出端口204I的輸出數據集202C的配置進行分析以推斷出第二組件208B所用的布局元數據。在圖4A的示例中,元數據傳播對輸出數據集202C的配置進行分析并且判斷為輸出數據集202C被配置為從其上游組件(即,第二組件208B)的兩個并行執(zhí)行的實例接收數據?;谳敵鰯祿?02C的配置,元數據傳播推斷第二組件208B的兩個實例在第一數據流圖200的執(zhí)行期間并行執(zhí)行(即,第二組件208C運行表示為圖中的2x的“雙向并行”)。基于該判斷,元數據傳播使2x布局元數據與第二組件208B相關聯。

然后,元數據傳播將2x布局元數據從第二組件208B向第三流匯合點204G傳播。由于第三流匯合點204G與具有“向內”的元數據傳播方向的第二布局元數據參數相關聯,因此布局元數據2x不再繼續(xù)傳播并且維持在第三流匯合點204G處以供以后在鏈接時間元數據解析中使用。

注意,由于已經具有布局元數據的文件連接至第一數據流圖200中的第一流匯合點204D,因此沒有經由第一流匯合點204D發(fā)生布局元數據傳播。

參考圖4B,在圖開發(fā)者正在編輯第二數據流圖201的情況下,在第二數據流圖201上進行編輯時間布局元數據傳播。第二數據流圖201中所包括的第三組件208C具有顯式定義的布局元數據,其中該布局元數據表示在第二數據流圖201的執(zhí)行期間運行第三組件208C的一個實例(表示為圖中的1x)。第二數據流圖201中所包括的第四組件208D所用的布局元數據并非是顯式定義的,因此由元數據傳播來定義。

由于第二流匯合點204F與具有“向外”的元數據傳播方向的第一布局元數據參數相關聯,因此第三組件208C所用的1x布局元數據向第二流匯合點204F傳播,其中該1x布局元數據維持在第二流匯合點204F處以供以后在鏈接時間元數據解析階段使用。

由于第四組件208D所用的布局元數據并非是顯式定義的,因此預期將從與具有“向內”的元數據傳播方向的第二布局元數據參數相關聯的第三流匯合點204G來傳播第四組件208D的布局元數據。然而,在第二數據流圖201中,與第三流匯合點204G相關聯的布局元數據在編輯時間是未知的,并且預期要由容器圖在鏈接時間提供。由于該原因,向第四組件208D傳播占位符布局元數據TBD2并且使占位符布局元數據TBD2暫時與第四組件208D相關聯。占位符布局元數據維持在第四組件208D處,直到鏈接時間元數據解析對TBD2的實際值進行解析并且將該實際值關聯為第四組件208D所用的布局元數據為止。

參考圖4C,緊挨在運行時間之前,第二數據流圖201鏈接到第一數據流圖200中,得到組合數據流圖300并且進行鏈路時間元數據解析。為了進行鏈路時間元數據解析,對與子圖接口210的各流匯合點相關聯的布局元數據參數進行分析以確定與各流匯合點相關聯的元數據傳播的方向。針對子圖接口210的具有“向內”的元數據傳播方向的流匯合點,將維持在第一數據流圖200中的流匯合點處的布局元數據向內傳送至第二數據流圖201的適當組件。類似地,針對子圖接口210的具有“向外”的元數據傳播方向的端口,將維持在第二數據流圖201中的流匯合點處的布局元數據向外傳送至第一數據流圖200的適當組件。

特別地,對與第二流匯合點204F相關聯的第一布局元數據參數進行分析并且判斷為第二流匯合點204F具有“向外”的元數據傳播方向。然后,判斷為第二流匯合點204F與第二數據流圖201中的顯式定義的布局元數據(即,1x)相關聯并且與第一數據流圖200中的占位符布局元數據TBD1相關聯。鏈接時間元數據解析階段使與第一數據流圖200中的TBD1相關聯的所有組件(即,第一組件208A)與布局元數據1x相關聯。

對與第三流匯合點204G相關聯的第二布局元數據參數進行分析并且判斷為第三流匯合點204G具有“向內”的元數據傳播方向。然后,判斷為第三流匯合點204G與第二數據流圖201中的占位符布局元數據TBD2相關聯并且與第一數據流圖200中的顯式定義的布局元數據(即,2x)相關聯。鏈接時間元數據解析使與第二數據流圖201中的TBD2相關聯的所有組件(即,第四組件208D)與布局元數據2x相關聯。

作為上述的編輯時間元數據傳播處理和鏈接時間元數據解析處理的結果,組合數據流圖300中的所有組件與有效的布局元數據相關聯。

在上述的部分示例中,將元數據傳播描述為用于將與給定端口、終端或組件相關聯的顯式定義的元數據復制到具有未定義的元數據的其它端口、終端或組件的操作。然后,使所復制的元數據與該其它端口、終端或組件相關聯。

然而,在一些示例中,代替復制元數據,元數據傳播使用指示器來表示具有顯式定義的元數據的端口、終端或組件與具有未定義的元數據的端口、終端或組件之間的關聯。例如,具有未定義的元數據的給定端口可以具有元數據指示器,其中元數據傳播將該元數據指示器分配給與另一不同的端口相關聯的顯式定義的元數據。在鏈接時間,傳播不再發(fā)生。反而,對該指示器進行解析以使得該顯式定義的元數據與該另一不同的端口相關聯。

6應用

在一些示例中,給定子圖接口可以與適應于該子圖接口的實現子圖的庫相關聯。然后,將該子圖接口放置在容器圖中的圖開發(fā)者可以易于在開發(fā)期間從該庫的任意實現子圖中進行挑選。

在一些示例中,上述的子圖接口的使用便于代碼的抽象化。例如,子圖接口的給定實現可以僅存在于盤上的一個位置但可以用在許多容器圖中。針對盤上的實現所進行的改變對在不要求容器圖的任何修改的情況下使用該實現的所有容器圖的功能產生影響。

7替代例

在一些示例中,對某些實現子圖進行加密以使得未授權用戶不能檢驗這些子圖的內容。在這種示例中,子圖接口能夠鏈接加密的實現子圖。在一些示例中,對某些容器圖進行加密以使得未授權用戶不能檢驗這些容器圖的內容。

在一些示例中,圖接口的各流匯合點包括以下屬性中的一個或多個:標簽、數據流方向、流匯合點扇入還是扇出的指示、是否要求流匯合點的指示、元數據傳播方向以及關聯的布局元數據參數的名稱。

在一些示例中,子圖接口的設計者可以指定用于定義子圖接口的兩個以上流匯合點之間的元數據關系的規(guī)則。例如,子圖接口設計者可以指定輸入流匯合點和輸出流匯合點具有相同的元數據。

在一些示例中,子圖接口可以被實現為使得該子圖接口支持多級子圖實現。很通常地,多級圖是使組件分割成以預定義順序順次執(zhí)行的兩個以上的“級”的圖。例如,多級圖可以包括三級:一級、二級和三級,其中這三級各自包括一個或多個組件。在操作時,在第一級的組件完成它們的處理之前,第二級的組件不開始處理數據。類似地,在第二級的組件完成它們的處理之前,第三級的組件不開始處理數據。

為了容納具有多級的動態(tài)子圖,子圖接口包括使得子圖接口的設計者能夠指定子圖接口是單級還是多級的參數。在將子圖接口指定為多級的情況下,設計者不需要針對該子圖接口指定固定數量的級。

針對被指定為多級的子圖接口的實現的要求的示例包括以下要求。子圖接口的任何實現必須使所有組件在單級內連接至該子圖接口的輸入端口(或流匯合點)。此外,子圖接口的任何實現必須使所有組件在單級內連接至該子圖接口的輸出端口(或流匯合點),其中,是該實現中最大的級。子圖接口的實現可以具有僅處于子圖實現內部的任意數量的級。

在正在編輯包括多級子圖接口的容器圖的情況下,暫時假定子圖實現的輸出處的級等于輸入處的級+1。這足以使圖開發(fā)者確定下游組件將會在何時處于同一級內。然而,編輯時間級不必與運行時間級相同。

在代替子圖接口而綁定實現子圖的情況下,按照如下方式來更新組合圖所用的整體級信息:

1)針對給定子圖實現,設I為用于向該給定子圖實現的輸入流匯合點進行寫入的組件的級的最大值。針對給定的輸入級的值I處的所有多級子圖實現,計算作為這些多級子圖實現中的純內部級的數量的最大值的M。

2)使圖中具有大于I的級的所有組件的級遞增M,并且向下游傳遞級增量。

3)將子圖實現的輸出級O設置為子圖實現的輸出端口的下游組件的集合的調整后的級的最小值。

4)針對包括一個或多個多級子圖實現的組合圖中的各級重復該處理。

如果子圖實現中的輸入級不為0,則一定數量m(m>0)的內部級發(fā)生在子圖實現的第一輸入級之前。子圖實現的這些“前置級(pre-phase)”是有用的,例如用于創(chuàng)建主輸入處理中所要使用的查找文件。在這種情況下,如果則可能需要使所有組件的整體級遞增以使得該m個前置級可以在組合數據流圖中以正級數來運行。這可以以級方式在級中執(zhí)行,由此在起始級I(調整之前)中進行值為所有子圖實現的前置級的最大值的遞增,向下游傳播級增量并且針對下一級進行迭代。

在一些示例中,以上的調整算法可能會引起子圖實現中的組件的級編號之間的空隙(例如,如果在與該子圖實現相同的輸入級中存在具有內部級的其它子圖實現)。例如,考慮輸入級0中的兩個子圖實現:具有兩個內部級的A和具有一個內部級的B。A和B的下一下游組件的級至少為1,這是由于A和B是多級圖實現。內部級計數的最大值是2,因此A和B兩者的調整后的整體輸出級是3。這意味著B將包括級空隙,B的輸入級將為0,B僅有的純內部級將為1,但B的輸出級將為3。這種級空隙對于數據流圖的操作并非是有害的。

在一些示例中,同一輸入級I中的多個子圖實現的純內部級將彼此重疊。這可能由于資源限制而成問題并且子圖實現優(yōu)選具有私有的內部級空間。由于該原因,可以使得子圖實現選擇不與其它子圖實現共享該子圖實現的內部級。這可以例如使用與子圖實現有關的可以被解析為布爾值的(例如,命名為private_internal_phasing的)本地參數來實現。在private_internal_phasing為真的情況下,將以上步驟1中的M的計算改變?yōu)檩斎爰塈處的子圖實現在private_internal_phasing被設置為真的情況下的內部級之和,并將該和與輸入級I處的剩余子圖實現的內部級計數的最大值相加。

在一些示例中,子圖接口可能不具有任何流終端,但仍可以用于使得用戶能夠根據加載了哪個子圖實現來定義資源的不同集合(例如,查找文件)以供特定容器圖使用。

在一些示例中,通過使用接口的簡單文字規(guī)格而不通過使用圖形用戶接口來實現子圖接口。

在一些示例中,將子圖接口的實現簡化為使用“向導”風格的圖形用戶接口。例如,向導風格的圖形用戶接口將通過提出一系列問題并且基于用戶的答案自動生成子圖接口來引導用戶實現子圖接口。在一個示例中,向導風格的圖形用戶接口包括多個頁面,其中這些頁面包括但不限于預檢檢查頁面(即,介紹頁面)、文件名稱和位置頁面、參數定義頁面、流匯合點定義和元數據傳播頁面、布局元數據頁面和匯總頁面。

8系統(tǒng)配置

可以例如使用執(zhí)行適當軟件的指令的可編程計算系統(tǒng)來實現上述的用于管理子圖和子圖接口的方法,或者可以在諸如現場可編程門陣列(FPGA)等的適當硬件中或者以某種混合形式來實現這些方法。例如,在編程方法中,該軟件可以包括在一個或多個編程或可編程計算系統(tǒng)(可以具有諸如分布式、客戶端/服務器或網格等的各種架構)上執(zhí)行的一個或多個計算機程序中的進程,其中該一個或多個編程或可編程計算系統(tǒng)各自包括至少一個處理器、至少一個數據存儲系統(tǒng)(包括易失性和/或非易失性存儲器和/或存儲元件)、(用于使用至少一個輸入裝置或端口接收輸入、并且用于使用至少一個輸出裝置或端口提供輸出的)至少一個用戶界面。該軟件可以包括例如提供與數據流圖的設計、結構和執(zhí)行相關的服務的更大程序的一個或多個模塊。該程序的模塊(例如,數據流圖的元素)可以實現為數據結構或符合數據倉庫中所存儲的數據模型的其它有組織的數據。

可以將軟件設置在諸如CD-ROM或(例如,利用通用或專用計算系統(tǒng)或裝置可讀取的)其它計算機可讀介質等的有形非瞬態(tài)介質上、或者經由網絡的通信介質(例如,以編碼在傳送信號中的形式)傳遞至執(zhí)行該軟件的計算系統(tǒng)的有形非瞬態(tài)介質??梢栽趯S糜嬎銠C上、或者使用諸如協(xié)處理器或現場可編程門陣列(FPGA)或專用集成電路(ASIC)等的專用硬件來進行該處理的一部分或全部。可以以利用不同的計算元件來進行軟件所指定的計算的不同部分的分布式方式來實現該處理。優(yōu)選將這種計算機程序各自存儲在通用或專用可編程計算機可訪問的存儲裝置的計算機可讀存儲介質(例如,固態(tài)存儲器或介質、或者磁性或光學介質)上或者下載至該計算機可讀存儲介質,以在利用計算機讀取存儲裝置介質以進行這里所述的處理的情況下配置計算機并使該計算機進行工作。本發(fā)明的系統(tǒng)還可被視為作為配置有計算機程序的有形非瞬態(tài)介質來實現,其中如此配置成的介質使計算機以特定的預定義方式進行工作,以進行這里所述的處理步驟中的一個或多個。

已經說明了多個實施例。然而,應當理解,上述說明意圖例示而并非限制由所附權利要求書的范圍所定義的本發(fā)明的范圍。因此,其它實施例也在所附權利要求書的范圍內。例如,可以在沒有背離本發(fā)明的范圍的情況下進行各種變形。另外,上述步驟中的一部分可以是順序獨立的,因而可以以與所述順序不同的順序來進行。

當前第1頁1 2 3 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
香格里拉县| 马龙县| 社会| 泾阳县| 施甸县| 宁明县| 长泰县| 桃园县| 自贡市| 探索| 敖汉旗| 黄浦区| 夏邑县| 阿拉善盟| 万全县| 高台县| 双辽市| 长葛市| 略阳县| 罗江县| 任丘市| 潢川县| 衡阳县| 嘉峪关市| 湖北省| 札达县| 霸州市| 敖汉旗| 休宁县| 海门市| 桂阳县| 宣城市| 阿克| 封丘县| 涪陵区| 若尔盖县| 巨野县| 阿合奇县| 旬邑县| 兴隆县| 佛坪县|