两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

在對象模型中的影響分析的制作方法

文檔序號:6620573閱讀:196來源:國知局
專利名稱:在對象模型中的影響分析的制作方法
技術(shù)領(lǐng)域
本發(fā)明主要涉及對象模型領(lǐng)域,尤其涉及分析數(shù)據(jù)結(jié)構(gòu)或系統(tǒng)中對象之間的關(guān)系。
(2)背景技術(shù)存儲系統(tǒng)通常把對象排列在特定的結(jié)構(gòu)中,比如圖表。結(jié)構(gòu)中的對象間存在隱含的依賴關(guān)系,所以對一個(gè)對象的改變可能改變或影響該結(jié)構(gòu)中的其他對象,或者整個(gè)系統(tǒng)。在確定對一個(gè)對象的改變對于結(jié)構(gòu)或整個(gè)系統(tǒng)的影響上存在問題。這種改變的影響只有在結(jié)構(gòu)中的對象間相互作用完全基于結(jié)構(gòu)中對象的位置時(shí)才是顯而易見的。但情況通常并非如此,特別是當(dāng)結(jié)構(gòu)中的對象包含有可執(zhí)行代碼,可以以任意方式運(yùn)行。所以在對象間依賴關(guān)系并非顯而易見的環(huán)境中,有克服發(fā)現(xiàn)改變的影響-影響分析-的困難的需要。
一種類型的存儲系統(tǒng)是數(shù)據(jù)庫管理系統(tǒng)。計(jì)算機(jī)上的關(guān)系數(shù)據(jù)庫管理系統(tǒng)中的數(shù)據(jù)記錄以表的形式維護(hù),表是有相同列的行的集合。每一列為構(gòu)成行的數(shù)據(jù)記錄保存有關(guān)一個(gè)特定類型的數(shù)據(jù)的信息。每個(gè)表可關(guān)聯(lián)一個(gè)或多個(gè)索引。索引是根據(jù)表中一列或多列中的數(shù)據(jù)排序的指向表中數(shù)據(jù)記錄的指針集。在某些情況下,一個(gè)查詢所需的全部信息可以在索引中找到,而無需搜索實(shí)表。一個(gè)索引由行即索引項(xiàng)組成,索引項(xiàng)包含索引鍵和指向表中具有該索引項(xiàng)鍵的鍵列值的數(shù)據(jù)庫記錄的指針。索引鍵包括提供表中記錄排序的索引鍵列。索引鍵列包含表中的列,且可包含對特定的列可能的值中的任意值。那些經(jīng)常被用來訪問表的列可被用作關(guān)鍵列。
數(shù)據(jù)庫表中的外鍵—也可稱作外部關(guān)鍵字—是涉及(或指向)所用表中的特定鍵—通常為主鍵—的來自其他表的鍵。主鍵可以被其他表中的多個(gè)外鍵所指向。但是主鍵并非必需被外鍵所指向。當(dāng)用戶的具體需求改變時(shí),是能夠更改表中的主鍵的。例如,在一個(gè)應(yīng)用中,一個(gè)城鎮(zhèn)中的人們可以根據(jù)他們的駕駛執(zhí)照號碼唯一地予以標(biāo)識,但在另一情況下,可能根據(jù)他們的電話號碼來標(biāo)識他們更方便。當(dāng)表中的主鍵被更改時(shí),如果存在任何相關(guān)聯(lián)的外鍵集,通常也會因此而改變。容易判定外鍵和主鍵間的關(guān)系,且容易理解外鍵的改變是如何影響主鍵的,反之亦然。
已經(jīng)定義了各種提供軟件組件間的標(biāo)準(zhǔn)互連機(jī)制的對象模型。根據(jù)這些對象模型,軟件組件在面向?qū)ο笠饬x上是“對象”,且軟件組件提供“接口”,通過接口他們的功能性能被訪問。就一個(gè)對象模型而言,很難確定對象模型中一個(gè)對象的改變對結(jié)構(gòu)或整個(gè)系統(tǒng)的影響。
許多組織需要將數(shù)據(jù)集中,用以改進(jìn)團(tuán)體的決策。然而,他們的數(shù)據(jù)可能以多種形式存儲,并存儲在不同的位置。DTS通過提供一組允許對不同來源的數(shù)據(jù)進(jìn)行提取、轉(zhuǎn)換和合并至單個(gè)或多個(gè)由DTS連通性所支持的目的文件的工具而解決了這種需求。通過使用DTS工具以繪圖形式生成DTS包或者通過用DTS對象模型來對包進(jìn)行編程,可以按要求制定定制數(shù)據(jù)移動(dòng)解決方案。
DTS包是連接、DTS任務(wù)、DTS轉(zhuǎn)換、變量和或用一DTS工具匯編或程序性地匯編成多種協(xié)同操作的計(jì)算應(yīng)用程序或結(jié)構(gòu)化的存儲文件的工作流程約束的有組織的集合。一般,每個(gè)包包含嚴(yán)格或多個(gè)當(dāng)包運(yùn)行時(shí)順序執(zhí)行或并行執(zhí)行的步驟。當(dāng)被執(zhí)行時(shí),該包連接至正確的數(shù)據(jù)源、復(fù)制數(shù)據(jù)和數(shù)據(jù)庫對象、轉(zhuǎn)換數(shù)據(jù)、并把事件通知其他用戶或進(jìn)程。例如,程序包可以被編輯、用口令保護(hù)、確定執(zhí)行的時(shí)間、并通過版本來檢索。
用戶通??梢酝ㄟ^一次一個(gè)地添加各種組件、然后測試該更改而一件一件地創(chuàng)建或編輯包。這樣的包可以是任意復(fù)雜的,而且難以—即使有點(diǎn)可能—在不實(shí)際運(yùn)行程序的情況下確定對第一對象的一更改或更新對第二對象的影響。這導(dǎo)致反反復(fù)復(fù)的試驗(yàn)循環(huán)才可以得到想要的行為。
根據(jù)以上所述,可以理解,存在著對克服現(xiàn)有技術(shù)問題的系統(tǒng)和方法的需求。
(3)發(fā)明內(nèi)容下面的概述提供對本發(fā)明多個(gè)方面的概覽。并非旨在提供對本發(fā)明所有的重要方面的詳盡描述,也不是要定義本發(fā)明的范圍。相反,本概述意欲作為對以下詳細(xì)描述和附圖的引言。
本發(fā)明涉及影響分析,影響分析提供確定一特定對象所依賴或所使用的對象的能力、和確定依賴于和使用一特定對象的對象的能力。術(shù)語“對象”,例如,可以指任務(wù)和/或?qū)ο箢愋?。影響分析對于改善大的?fù)雜文檔中的用戶生產(chǎn)效率是非常重要,因?yàn)樗阌诖_定一對象是怎樣和在哪里被系統(tǒng)中其他對象所使用的,由此可能節(jié)省大量手工勞動(dòng)。
一示例性實(shí)現(xiàn)使用一個(gè)引用追蹤器以允許該使用資源的組件(任務(wù))聲明他們使用的資源(對象類型)。換言之,該引用追蹤器通過創(chuàng)建一從使用資源的的組件至所使用資源的引用條目而記錄該任務(wù)和該對象類型間的關(guān)系。爾后在和任務(wù)之間、變量和任務(wù)之間創(chuàng)建鏈接。該引用追蹤器充填一追蹤列表,其為每一為影響分析而被追蹤的對象類型提供。當(dāng)一個(gè)對象假定依賴于(或使用)另一對象,它會在引用追蹤器登記該依賴性,在追蹤列表中添加一新條目。當(dāng)該使用被更改或終止時(shí),引用追蹤器再次被通知,且相應(yīng)的條目從追蹤列表中移除。
根據(jù)本發(fā)明的諸方面,在追蹤列表被生成之后,會接收到對一對象類型的更改。對該對象的更改的影響通過參考該追蹤列表來確定對象模型中的哪些其它對象類型被登記為正使用該對象來確定。該信息隨后返回給用戶或應(yīng)用程序。
本發(fā)明的其它特性和優(yōu)點(diǎn)通過以下關(guān)于本發(fā)明的詳細(xì)描述和附圖可變得明顯。
(4)


當(dāng)結(jié)合附圖閱讀時(shí),能更好地理解前述概述和以下優(yōu)選實(shí)施例的詳細(xì)描述。為闡明本發(fā)明,附圖中顯示了本發(fā)明的示例性結(jié)構(gòu);但是,本發(fā)明并不必局限于該被揭示的具體方法和手段。附圖中圖1是表現(xiàn)本發(fā)明的各個(gè)方面可納入其中的計(jì)算機(jī)系統(tǒng)的結(jié)構(gòu)圖;圖2是表現(xiàn)本發(fā)明的各個(gè)方面可納入其中的網(wǎng)絡(luò)的示意圖;圖3所示是一有益于描述本發(fā)明各個(gè)方面的示例性數(shù)據(jù)流執(zhí)行;圖4是有益于描述本發(fā)明各個(gè)方面的示例性結(jié)構(gòu)的圖;圖5是根據(jù)本發(fā)明的一種示例性方法的流程圖;圖6是依照本發(fā)明的一示例性追蹤列表的圖;和圖7是依照本發(fā)明的另一種示例性方法的流程圖。
(5)具體實(shí)施方式
本發(fā)明的主題內(nèi)容以專指性的方式描述以滿足法定要求。但是,該描述本身并非意欲于限制本專利的范圍。相反,本發(fā)明的發(fā)明人預(yù)期權(quán)利要求中的主題內(nèi)容可以用其它方式實(shí)現(xiàn),以包括不同的步驟或與本文描述的步驟相似的、結(jié)合其它現(xiàn)有的或?qū)淼募夹g(shù)的步驟的組合。而且,盡管術(shù)語“步驟”可以在這里用來意指所采用的方法的不同元素,但該術(shù)語不應(yīng)當(dāng)被解釋成暗示這里所揭示的多個(gè)步驟之間的任何特定順序,除非單個(gè)步驟的順序被明確地描述。
示例性計(jì)算環(huán)境本發(fā)明的眾多實(shí)施例可以在一臺計(jì)算機(jī)上執(zhí)行。圖1和以下討論旨在提供對適于本發(fā)明實(shí)現(xiàn)的計(jì)算環(huán)境的簡要概括描述。盡管不是被要求的,但本發(fā)明會將在計(jì)算機(jī)可執(zhí)行指令,諸如由客戶工作站或服務(wù)器等計(jì)算機(jī)執(zhí)行的程序模塊的一般上下文中描述。一般,程序模塊包括例行程序、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等實(shí)現(xiàn)特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型者。一個(gè)“對象”是硬件/軟件接口系統(tǒng)可訪問的可存儲信息的一個(gè)單元,其擁有通過硬件/軟件接口系統(tǒng)外殼暴露給一最終用戶的所有對象共同支持的一基本組的屬性。對象還擁有包括允許引入新屬性和關(guān)系的特征在內(nèi)的所有類型共同支持的屬性和關(guān)系。
而且,本領(lǐng)域的技術(shù)人員可以理解,本發(fā)明可以在其它計(jì)算機(jī)系統(tǒng)配置下運(yùn)行,包括手持式設(shè)備、多處理器系統(tǒng)、基于微處理器或可編程消費(fèi)者電子裝置、網(wǎng)絡(luò)PC、小型機(jī)、大型計(jì)算機(jī)等。本發(fā)明也可在分布式的計(jì)算環(huán)境中實(shí)現(xiàn),其中任務(wù)通過由一通信網(wǎng)絡(luò)連接的遠(yuǎn)程處理設(shè)備執(zhí)行。在分布式計(jì)算環(huán)境中,程序模塊可以位于本地和遠(yuǎn)程存儲設(shè)備中。
如圖1所示,一示例性通用計(jì)算系統(tǒng)包括一臺常規(guī)個(gè)人計(jì)算機(jī)20或類似裝置,它包括處理單元21、系統(tǒng)存儲器22和耦合包括系統(tǒng)存儲器在內(nèi)的多個(gè)系統(tǒng)組件到處理單元21的系統(tǒng)總線23。系統(tǒng)總線23可以是任何類型的總線結(jié)構(gòu),包括存儲器總線或存儲器控制器、外部總線和使用多種總線體系結(jié)構(gòu)中一種的本地總線。該系統(tǒng)存儲器包括只讀存儲器(ROM)24和隨機(jī)存取存儲器(RAM)25。基本輸入/輸出系統(tǒng)26(BIOS),包含諸如在啟動(dòng)時(shí)用以幫助在個(gè)人計(jì)算機(jī)20中元素間傳遞信息的基本例行程序,被存儲在ROM 24中。
個(gè)人計(jì)算機(jī)20還可以包括硬盤驅(qū)動(dòng)器27用以從硬盤中讀取或?qū)懭胗脖P,未示出,磁盤驅(qū)動(dòng)器28用以從可移動(dòng)磁盤29中讀取或?qū)懭氪疟P,和光盤驅(qū)動(dòng)器30用以從可移動(dòng)光盤31諸如CD-ROM或其它光學(xué)媒體中讀取或?qū)懭牍獗P。硬盤驅(qū)動(dòng)器27、磁盤驅(qū)動(dòng)器28和光盤驅(qū)動(dòng)器30分別通過硬盤驅(qū)動(dòng)器接口32、磁盤驅(qū)動(dòng)器接口33和光盤驅(qū)動(dòng)器接口34連接至系統(tǒng)總線23。這些驅(qū)動(dòng)器和他們相應(yīng)的計(jì)算機(jī)可讀媒體向個(gè)人計(jì)算機(jī)20提供了對計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的非易失性存儲。
盡管這里所描述的示例性環(huán)境使用了硬盤、可移動(dòng)磁盤29和可移動(dòng)光盤32,本領(lǐng)域的技術(shù)人員應(yīng)該理解,其它類型的能夠存儲可被計(jì)算機(jī)訪問的數(shù)據(jù)的計(jì)算機(jī)可讀媒體,諸如磁帶、閃存卡、數(shù)字視頻光盤(DVD)、伯努里式磁帶、隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)等也可以在該示例性操作環(huán)境中使用。
多個(gè)程序模塊,包括操作系統(tǒng)35,一個(gè)或多個(gè)應(yīng)用程序36,其它程序模塊37和程序數(shù)據(jù)38可以被存儲在硬盤、磁盤29、光盤31、ROM 24或RAM 25,上。用戶可以向個(gè)人計(jì)算機(jī)20輸入命令和信息通過輸入設(shè)備,諸如鍵盤40和定點(diǎn)設(shè)備42。其它輸入設(shè)備(未顯示)可以包括麥克風(fēng)、操縱桿、游戲手柄、衛(wèi)星天線、掃描儀等。這些和其它輸入設(shè)備通常通過與系統(tǒng)總線耦合在一起的串行端口接口46連接至處理單元21,但也可以通過其它接口連接,諸如并行端口、游戲端口或通用串行總線(USB)。監(jiān)視器47或其它類型的顯示設(shè)備也通過一接口,諸如視頻適配器48連接至系統(tǒng)總線23。除監(jiān)視器47之外,個(gè)人計(jì)算機(jī)通常包括其他外部輸出設(shè)備(未示出),諸如揚(yáng)聲器和打印機(jī)。圖1中的示例性系統(tǒng)也包括主機(jī)適配器55、小型計(jì)算機(jī)系統(tǒng)接口(SCSI)總線56和連接至SCSI總線56的外部存儲設(shè)備62。
個(gè)人計(jì)算機(jī)20可以運(yùn)行在使用邏輯連接至諸如遠(yuǎn)程計(jì)算機(jī)49的一臺或多臺遠(yuǎn)程計(jì)算機(jī)的網(wǎng)絡(luò)環(huán)境中。遠(yuǎn)程計(jì)算機(jī)49可以是另一臺個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等設(shè)備或其它公共網(wǎng)絡(luò)節(jié)點(diǎn),且通常包括上述與個(gè)人計(jì)算機(jī)20相關(guān)描述的多個(gè)或所有元素,盡管圖1只示出存儲設(shè)備50。圖1中描述的邏輯連接包括局域網(wǎng)(LAN)51和廣域網(wǎng)(WAN)52。這樣的網(wǎng)絡(luò)環(huán)境在辦公室、企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、企業(yè)內(nèi)部互聯(lián)網(wǎng)和因特網(wǎng)中是常見的。
當(dāng)在LAN網(wǎng)絡(luò)環(huán)境中使用時(shí),個(gè)人計(jì)算機(jī)20通過網(wǎng)絡(luò)接口或適配器53連接至LAN 51。當(dāng)在WAN網(wǎng)絡(luò)環(huán)境中使用時(shí),個(gè)人計(jì)算機(jī)20典型地包括調(diào)制解調(diào)器54或其它在諸如因特網(wǎng)的廣域網(wǎng)52上建立通信的手段。調(diào)制解調(diào)器54,可以是內(nèi)置的或外置的,通過串行接口46連接至系統(tǒng)總線23。在網(wǎng)絡(luò)環(huán)境中,與個(gè)人計(jì)算機(jī)20相關(guān)描述的程序模塊或其中的部分,可以存儲在遠(yuǎn)程存儲設(shè)備中。將會認(rèn)識到,所示網(wǎng)絡(luò)連接是示例性的,其它在計(jì)算機(jī)間建立通信連接的方法也可以使用。
盡管預(yù)想到本發(fā)明的多種實(shí)施方式都是十分適合于計(jì)算機(jī)化的環(huán)境的,但本文中沒有任何一部分是要將本發(fā)明局限于這些實(shí)施方式的。相反,正如這里使用的術(shù)語“計(jì)算機(jī)系統(tǒng)”意在包含任何和所有包括按鈕、或能夠確定按鈕被按壓、或按鈕被按壓的等價(jià)動(dòng)作的設(shè)備,而不管此類設(shè)備是實(shí)質(zhì)上是電子的、機(jī)械的、邏輯的或虛擬的。
網(wǎng)絡(luò)環(huán)境圖2闡述了本發(fā)明在其中可以被采用的一示例性網(wǎng)絡(luò)環(huán)境。當(dāng)然,實(shí)際的網(wǎng)絡(luò)和數(shù)據(jù)庫環(huán)境可以組織成多種配置;然而,這里所示的示例性環(huán)境提供了一個(gè)框架,用以理解本發(fā)明可以在其中運(yùn)行的環(huán)境的類型。其它環(huán)境也被預(yù)見。
該網(wǎng)絡(luò)可以包含客戶計(jì)算機(jī)20a、服務(wù)器計(jì)算機(jī)20b、數(shù)據(jù)源計(jì)算機(jī)20c和數(shù)據(jù)庫70、72a和72b。客戶計(jì)算機(jī)20a和數(shù)據(jù)源計(jì)算機(jī)20c通過通信網(wǎng)絡(luò)80,諸如企業(yè)內(nèi)部互聯(lián)網(wǎng),與服務(wù)器計(jì)算機(jī)20b進(jìn)行電子通信。客戶計(jì)算機(jī)20a和數(shù)據(jù)源計(jì)算機(jī)20c通過通信接口82連接至通信網(wǎng)絡(luò)。通信接口82可以是任何眾所周知的通信接口中的一個(gè),諸如以太網(wǎng)連接、調(diào)制解調(diào)器連接等。
服務(wù)器20b通過數(shù)據(jù)庫服務(wù)器系統(tǒng)軟件提供對數(shù)據(jù)庫70的管理。如此,服務(wù)器20b成為從多個(gè)數(shù)據(jù)來源中得到的數(shù)據(jù)的倉庫,并把該數(shù)據(jù)提供給多個(gè)數(shù)據(jù)消費(fèi)者。
在圖2的示例中,數(shù)據(jù)來源由數(shù)據(jù)源計(jì)算機(jī)20c提供。數(shù)據(jù)源計(jì)算機(jī)20c經(jīng)由通信網(wǎng)絡(luò)80將數(shù)據(jù)傳遞給服務(wù)器計(jì)算機(jī)20b,它可以是LAN、WAN、企業(yè)內(nèi)部互聯(lián)網(wǎng)、因特網(wǎng)等。數(shù)據(jù)源計(jì)算機(jī)20c把數(shù)據(jù)以本地方式存儲在數(shù)據(jù)庫72a、72b中,其可以是關(guān)系數(shù)據(jù)庫服務(wù)器、電子數(shù)據(jù)表、文件等。例如,數(shù)據(jù)庫72a顯示了存儲在表150、152和154中的數(shù)據(jù)。由數(shù)據(jù)源20c提供的數(shù)據(jù)被合并并且被存儲在一個(gè)大型數(shù)據(jù)庫中,諸如由服務(wù)器20b維護(hù)的數(shù)據(jù)倉庫。
想要使用由服務(wù)器計(jì)算機(jī)20b所存儲的數(shù)據(jù)的客戶計(jì)算機(jī)20a可以經(jīng)由通信網(wǎng)絡(luò)80訪問數(shù)據(jù)庫70??蛻粲?jì)算機(jī)20a通過對數(shù)據(jù)70中存儲的數(shù)據(jù)進(jìn)行SQL查詢(如,更新、插入和刪除)請求數(shù)據(jù)。
數(shù)據(jù)庫體系結(jié)構(gòu)數(shù)據(jù)庫是相關(guān)數(shù)據(jù)的一個(gè)集合。在一種類型的數(shù)據(jù)庫中,如關(guān)系數(shù)據(jù)庫中,數(shù)據(jù)以一個(gè)被稱為表的二維列—行的形式組織。圖2闡明了存儲在數(shù)據(jù)庫72a中的表,諸如150、152和154。一個(gè)關(guān)系數(shù)據(jù)庫通常包括多張表。一張表可以包含零個(gè)或多個(gè)記錄,每個(gè)記錄中至少有一個(gè)字段。記錄是表中由被稱作記錄標(biāo)識符的唯一的數(shù)字所標(biāo)識的一行。字段是一個(gè)記錄的細(xì)分,其限度是使得表中的一列數(shù)據(jù)代表表中每個(gè)記錄的同一個(gè)字段。
數(shù)據(jù)庫通常也包括關(guān)聯(lián)結(jié)構(gòu)。關(guān)聯(lián)結(jié)構(gòu)的一個(gè)示例是索引,典型地,但不是必需地,是B-樹或散列索引的形式。索引為查找一個(gè)表中特定的行提供了一個(gè)接近常數(shù)的訪問時(shí)間,不管表的大小。關(guān)聯(lián)結(jié)構(gòu)被要求對數(shù)據(jù)庫用戶是透明的,并且?guī)椭峁?shù)據(jù)庫管理系統(tǒng)高效的操作和控制。數(shù)據(jù)庫管理系統(tǒng)(DBMS),尤其是關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS),是一種控制系統(tǒng),其支持包括—但不限于在一存儲媒體上儲存數(shù)據(jù)、從存儲媒體上檢索數(shù)據(jù)何在存儲媒體上更新數(shù)據(jù)的數(shù)據(jù)庫特征。
一般,存儲在關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)是通過用戶定義的使用諸如SQL查詢語言構(gòu)造的查詢來訪問的。典型地,對于任何給定的SQL查詢,有多個(gè)需要在數(shù)據(jù)上執(zhí)行的程序性操作,以實(shí)現(xiàn)SQL查詢的目的。例如,可能存在要予執(zhí)行的多個(gè)結(jié)合和表掃描,才能達(dá)到期望的目標(biāo)。
數(shù)據(jù)轉(zhuǎn)換服務(wù)和數(shù)據(jù)轉(zhuǎn)換管道示例性的數(shù)據(jù)轉(zhuǎn)換服務(wù)系統(tǒng)(DTS)包括從一個(gè)數(shù)據(jù)來源接收數(shù)據(jù)的能力(諸如從一來源接收數(shù)據(jù)的數(shù)據(jù)檢索系統(tǒng))、有在其中存儲被轉(zhuǎn)換了的和/或未被轉(zhuǎn)換的數(shù)據(jù)的能力的數(shù)據(jù)目的地(一個(gè)用以存儲數(shù)據(jù)的目的地?cái)?shù)據(jù)存儲系統(tǒng))和數(shù)據(jù)轉(zhuǎn)換管道(DTP),DTP以流水線方式使數(shù)據(jù)通過各種互連的節(jié)點(diǎn)(當(dāng)實(shí)例化后,其變成管道中的組件)從一個(gè)或多個(gè)來源流向一個(gè)或多個(gè)目的地而構(gòu)造復(fù)雜的端到端數(shù)據(jù)轉(zhuǎn)換功能性(數(shù)據(jù)流執(zhí)行即DFE)用于當(dāng)數(shù)據(jù)流過時(shí)轉(zhuǎn)換數(shù)據(jù)(在這里術(shù)語“轉(zhuǎn)換”被用于廣泛地描述可對數(shù)據(jù)、和數(shù)據(jù)一起、由數(shù)據(jù)及在數(shù)據(jù)上所進(jìn)行的交互作用領(lǐng)域)。管道中的每個(gè)組件擁有特定的預(yù)定義的數(shù)據(jù)轉(zhuǎn)換功能,且組件間的邏輯連接定義了操作意義上的數(shù)據(jù)流路徑。
數(shù)據(jù)轉(zhuǎn)換管道(DTP)使用戶得以經(jīng)由圖形用戶界面(GUI)以圖形的方式描述和表示所期望的從一個(gè)或多個(gè)來源通過多個(gè)互連的節(jié)點(diǎn)(圖)流向一個(gè)或多個(gè)目的地的數(shù)據(jù)流,開發(fā)出復(fù)雜的端到端數(shù)據(jù)轉(zhuǎn)換功能(DFE)。圖中由用戶所選擇且納入圖中的每個(gè)節(jié)點(diǎn)代表特定的預(yù)定義數(shù)據(jù)轉(zhuǎn)換功能(每個(gè)組件一個(gè)),節(jié)點(diǎn)(組件)間的連接定義了數(shù)據(jù)流路徑。
圖3所示是在包320中在來源350和目的地360之間的示例性數(shù)據(jù)流執(zhí)行的示意圖。元素322、326、328、330是指在其中數(shù)據(jù)被操縱的各種操作。來源350例如從一個(gè)文件、一個(gè)數(shù)據(jù)庫、一個(gè)網(wǎng)站等接收數(shù)據(jù)。提取組件322從數(shù)據(jù)源350處提取數(shù)據(jù)。轉(zhuǎn)換組件326根據(jù)組件326的輸入/輸出功能轉(zhuǎn)換該數(shù)據(jù)。第二轉(zhuǎn)換組件328根據(jù)它特定的功能進(jìn)一步處理數(shù)據(jù)。裝載組件330然后將某些數(shù)據(jù)裝載至數(shù)據(jù)目的地360。這樣一來,復(fù)雜數(shù)據(jù)轉(zhuǎn)換的開發(fā)得以進(jìn)行。
示例性實(shí)施方式DTS是一個(gè)示例性計(jì)算環(huán)境,擁有可擴(kuò)展的組件和通信,在其中本發(fā)明的各方面中可以被實(shí)現(xiàn)。許多組織機(jī)構(gòu)需要將數(shù)據(jù)集中起來用以改進(jìn)團(tuán)體的決策過程。然而,他們的數(shù)據(jù)可能被以多種格式存儲,并存儲在不同位置。DTS是這樣來解決這種需求的,即提供一組工具,這組工具允許對不同來源的數(shù)據(jù)進(jìn)行提取、轉(zhuǎn)換和合并至單個(gè)或多個(gè)由DTS連通性支持的目的文件。通過使用DTS工具以繪圖方式生成DTS包或通過使用DTS對象模型把包進(jìn)行編程,可以創(chuàng)建出針對專門企業(yè)需求而量身定做的定制數(shù)據(jù)移動(dòng)解決方案。
DTS包是用DTS工具匯編的或可編程地匯編的并保存在例如MICROSOFTSQLServerTM或XML中的連接、DTS任務(wù)、DTS轉(zhuǎn)換和工作流程約束的經(jīng)組織的集合。一般,每個(gè)包包含當(dāng)包在運(yùn)行時(shí)即順序地執(zhí)行或并行地執(zhí)行的一個(gè)或多個(gè)步驟。當(dāng)被執(zhí)行時(shí),該包連接至正確的數(shù)據(jù)來源、復(fù)制數(shù)據(jù)和數(shù)據(jù)庫對象、轉(zhuǎn)換數(shù)據(jù)、并把事件向其他用戶或進(jìn)程通報(bào)。程序包可以被編輯、進(jìn)行口令保護(hù)、預(yù)定執(zhí)行的時(shí)間、并用版本來檢索。
隨同DTS包,存在DTS任務(wù)。DTS任務(wù)是一個(gè)功能的離散集合,在包中作為單個(gè)步驟執(zhí)行。每一個(gè)任務(wù)定義一個(gè)工作項(xiàng)目作為數(shù)據(jù)移動(dòng)和數(shù)據(jù)轉(zhuǎn)換過程的一部分,或作為一個(gè)被執(zhí)行的作業(yè)。通用的DTS任務(wù)的例子包括1)輸入和輸出數(shù)據(jù),2)轉(zhuǎn)換數(shù)據(jù),3)復(fù)制數(shù)據(jù)庫對象,和4)發(fā)送信息至其他用戶和包及從其他用戶和包處接收信息。完成DTS組件和操作就是DTS轉(zhuǎn)換。DTS轉(zhuǎn)換是在數(shù)據(jù)到達(dá)目的地之前施加到數(shù)據(jù)片段使的一個(gè)或多個(gè)功能或操作。
影響分析提供確定一特定對象所依賴或使用的對象的能力、和確定依賴于和使用一特定對象的對象的能力。例如,在本發(fā)明中,術(shù)語“對象”可以指任務(wù)和/或?qū)ο箢愋?。影響分析對于改善大的?fù)雜文檔中的用戶生產(chǎn)效率非常重要,因?yàn)樗龠M(jìn)確定一個(gè)對象是怎樣和在哪里被系統(tǒng)中的其他對象所使用,由此可能節(jié)省大量手工勞動(dòng)。
示例性的對象類型包括連接和變量,諸如讀-訪問變量和讀/寫訪問變量。盡管該示例性實(shí)施例在這里就連接和變量來描述的,但是該示例性的實(shí)施例預(yù)計(jì)到了其它對象類型可以根據(jù)本發(fā)明被使用和追蹤。此類對象類型會被希望追蹤,如果確定它們會影響到一個(gè)包的話。本發(fā)明理想的是在一個(gè)對象模型而不是一個(gè)數(shù)據(jù)庫中實(shí)現(xiàn)。因此,提供了一種可擴(kuò)展的對象模型,在其中對象間暗含的關(guān)系根據(jù)本發(fā)明被展露。
在一個(gè)包中,如上文所述,來源接收到數(shù)據(jù)。該數(shù)據(jù)然后在到達(dá)其在包中的目的地之前被操縱。根據(jù)本發(fā)明,提供了一個(gè)連接清單,其顯示了什么包是關(guān)于什么的。換言之,一個(gè)包包括一個(gè)任務(wù)(與組件)和對象類型。例如,為了創(chuàng)建一個(gè)包,用戶通過用戶界面提供任務(wù)和對象類型。然后,系統(tǒng)創(chuàng)建樹形結(jié)構(gòu),諸如圖4所示者。在圖4的示例性結(jié)構(gòu)中,一個(gè)包被顯示為含有一個(gè)包括組件的任務(wù),組件中其一為一個(gè)實(shí)現(xiàn)任務(wù)1和2的來源。連接1和2、變量1和2,都被顯示為對象類型。像這樣的一個(gè)樹形結(jié)構(gòu)可以被用于開發(fā)一個(gè)追蹤列表,陳述如下。
圖5顯示了根據(jù)本發(fā)明的一種示例性方法的流程圖。最初,在步驟500處用一個(gè)使用資源的組件(例如一個(gè)任務(wù))和一個(gè)與該使用資源的組件相關(guān)聯(lián)的來源創(chuàng)建一個(gè)包。一個(gè)被使用的資源(例如,諸如連接或變量的一個(gè)對象類型)也被描述。在步驟510處訪問一個(gè)引用追蹤器,以允許該使用資源的組件(任務(wù))聲明它們使用哪個(gè)資源(對象類型)。換言之,通過創(chuàng)建從使用資源的組件至所使用資源的引用,引用追蹤器記錄任務(wù)和對象類型間的關(guān)系。然后,在步驟520處創(chuàng)建連接和任務(wù)之間、變量和任務(wù)之間的鏈接。
引用追蹤器在步驟530處充填一個(gè)追蹤列表,其為用于影響分析而追蹤的每個(gè)對象類型提供。在步驟540處,當(dāng)一個(gè)對象假定依賴于(或使用)另一對象時(shí),它在引用追蹤器上登記該依賴性,這會在追蹤列表中添加一個(gè)新條目。在步驟550處,當(dāng)該使用被更改或終止時(shí),引用追蹤器再次被通知,且相應(yīng)的條目從追蹤列表中移除。
一個(gè)對象類型(例如,TASK1)的示例性追蹤列表示于圖6中。在這里,追蹤列表提供了一TASK1所依賴(或使用)的連接的清單,和一個(gè)TASK1所依賴或使用的變量的清單。每個(gè)連接優(yōu)選通過一個(gè)來源標(biāo)識符標(biāo)識,且每個(gè)變量優(yōu)選通過其名稱、類型和/或描述來標(biāo)識。理想的是,一追蹤列表響應(yīng)于使用變量和/或連接的任務(wù)或組件、或?yàn)橛绊懛治龆槐槐O(jiān)視的無論哪種對象類型而創(chuàng)建。
追蹤列表是一個(gè)關(guān)系型結(jié)構(gòu),是可以用多種方式被查詢和報(bào)告的,例如,對于被某一特定對象所使用的對象,對于使用某一特定對象的對象,對于所有某一特定類型的對象,對于使用某一特定類型對象的對象,對于被某一特定類型的對象所使用的對象等。對對象進(jìn)行更改的歷史可以通過追蹤列表被維護(hù)。預(yù)期可以從這些信息得到的總覽結(jié)報(bào)告。
根據(jù)本發(fā)明的另一示例性方法在圖7的流程圖中給出。當(dāng)追蹤列表被生成后(例如,通過關(guān)于圖5所描述的示例性方法),在步驟700處,對一個(gè)對象類型的更改可以被接收。通過參考追蹤列表以確定對象模型中的什么其它對象類型被登記為正在使用該對象,對該對象的更改所產(chǎn)生的影響在步驟710處確定。在步驟720處,該信息而后被傳回給用戶或應(yīng)用程序。
例如,假設(shè)TASK1(圖6所示的示例性追蹤列表中)正在被刪除或以其它方式更改,例如在一個(gè)數(shù)據(jù)庫中的一個(gè)對象模型中。該追蹤列表被訪問以確定什么會被影響,且這個(gè)信息(TASK1的追蹤列表中的連接和變量)被提供給用戶或應(yīng)用程序。這樣,依照本發(fā)明,此類對對象類型的更改的影響被檢測到,且可以被報(bào)告或以其它方式被保持。理想的是,潛在的更改能在進(jìn)行更改之前被確定和通信告知。
在一示例性實(shí)施例中,實(shí)現(xiàn)了IDTSObjectReferenceTracker界面。如這里所述,引用追蹤器是用于對象模型中的影響分析的一個(gè)可擴(kuò)展機(jī)制。對象的用戶登記他們在使用的對象和在哪里使用。然后,例如,如果該用戶試圖刪除一個(gè)對象,系統(tǒng)可以核實(shí)該對象是沒有在其它地方正在使用的,如果在其它地方被使用,系統(tǒng)則將這個(gè)信息顯示給用戶。該用戶也可以主動(dòng)詢問追蹤列表以獲得關(guān)于在對象模型中一特定對象的使用的信息。
使用變量或連接的一個(gè)運(yùn)行時(shí)任務(wù)或管道組件理想地創(chuàng)建這些對象類型的一個(gè)追蹤列表。它提供該列表的使用位置和描述。例如,一個(gè)單變量的任務(wù)能夠使用任務(wù)的名稱作為位置信息,且關(guān)于該變量被用來干什么的描述被作為描述。
對變量和連接進(jìn)行多種不同的使用的任務(wù)和組件可以按需要?jiǎng)?chuàng)建多個(gè)單獨(dú)的追蹤列表。例如,“有條件分裂”組件在輸出表達(dá)式中使用變量,且理想地為每個(gè)使用變量的輸出表達(dá)式創(chuàng)建一個(gè)追蹤列表。它可以將組件名稱設(shè)定為使用位置,且在描述中包括該表達(dá)式及的哪里它能被找到。以這種方式,如果相同的變量在多個(gè)表達(dá)式中使用,每個(gè)使用位置都將被系統(tǒng)所追蹤。
管道組件理想地使用一個(gè)基類存取器,諸如GetReferenceTracker(),以獲得接口。對該接口的設(shè)計(jì)允許系統(tǒng)被動(dòng)態(tài)地?cái)U(kuò)展。即,其它程序員可以創(chuàng)建他們自己的任務(wù)或組件,在相同的引用追蹤器進(jìn)行登記,由此允許他們在影響分析模型中完全參與?,F(xiàn)在,如果第三方任務(wù)登記它對變量和連接的使用,當(dāng)用戶試圖刪除變量和連結(jié)時(shí),該任務(wù)將會被通知。
當(dāng)對象不再被使用或已被摧毀時(shí),追蹤列表中的引用可以被除去。例如,當(dāng)擁有一個(gè)列表的那個(gè)對象被摧毀時(shí),整個(gè)追蹤列表可以從引用追蹤器系統(tǒng)中被除去。追蹤列表也可以在擁有列表的那個(gè)對象被刷新時(shí)、和在一個(gè)新的列表被創(chuàng)建時(shí),被除去。例如,在“有條件分裂”轉(zhuǎn)換中,如果對一個(gè)輸出的表達(dá)式被改變,用于該表達(dá)式的追蹤列表可能被摧毀,且一個(gè)新的列表可在新的表達(dá)式被解析時(shí)被創(chuàng)建。
可提供用于一個(gè)追蹤列表的元數(shù)據(jù)。例如,使用位置可以是擁有該列表的那個(gè)任務(wù)或組件的名稱。使用描述可以給出關(guān)于在該列表中的對象如何被使用的更詳細(xì)的描述。預(yù)計(jì)使用位置和使用描述可以按需要時(shí)常地更新或更改。
結(jié)論在這里描述的各種系統(tǒng)、方法和技術(shù)可以使用硬件或軟件、或合適時(shí)兩者的組合來實(shí)現(xiàn)。本發(fā)明的方法和裝置,或其中的某些方面或部分,可以采用包含在有形媒體中的程序代碼(例如,指令)的形式,諸如軟盤、CD-ROM、硬盤驅(qū)動(dòng)器或任何其它機(jī)器可讀存儲媒介,其中,當(dāng)該程序代碼被裝載至一臺諸如計(jì)算機(jī)的機(jī)器并被該機(jī)器執(zhí)行時(shí),該機(jī)器成為一臺實(shí)現(xiàn)本發(fā)明的裝置。在程序代碼是在可編程計(jì)算機(jī)上執(zhí)行的情形中,該計(jì)算機(jī)通常會包括一處理器、一可被處理器讀取的存儲媒介(包括易失和非易失存儲器和/或存儲元件)、至少一個(gè)輸入設(shè)備和至少一個(gè)輸出設(shè)備。一個(gè)或多個(gè)程序優(yōu)選使用一高級過程或面向?qū)ο蟮木幊陶Z言來實(shí)現(xiàn),用以與計(jì)算機(jī)系統(tǒng)通信。然而,該程序可以使用匯編或機(jī)器語言實(shí)現(xiàn),如果需要。在任何情況下,該語言可以是編譯的或解釋的語言,且同硬件實(shí)現(xiàn)相組合。
本發(fā)明的方法和組織也可以以在某些傳輸介質(zhì)上傳輸?shù)某绦虼a的形式實(shí)現(xiàn),諸如在電線或電纜上、通過光導(dǎo)纖維或通過其它形式的傳輸,其中當(dāng)程序代碼被接收并裝載至一臺機(jī)器上并被該機(jī)器執(zhí)行時(shí),該機(jī)器諸如,EPROM、門陣列、可編程邏輯器件(PLD)、客戶計(jì)算機(jī)、錄影機(jī)等,該機(jī)器成為一臺實(shí)現(xiàn)本發(fā)明的裝置。當(dāng)在一通用處理器上實(shí)現(xiàn)時(shí),該程序代碼與處理器相組合以提供運(yùn)行來實(shí)現(xiàn)本發(fā)明功能的一個(gè)獨(dú)特裝置。
雖然本發(fā)明是結(jié)合各種附圖的優(yōu)選實(shí)施方式描述的,應(yīng)該理解其他類似的實(shí)施方式可以被使用,或者對所述實(shí)施方式進(jìn)行修改和添加用以實(shí)現(xiàn)本發(fā)明的相同的功能,而不背離本發(fā)明。因此,本發(fā)明不應(yīng)局限于任何單個(gè)實(shí)施方式,而應(yīng)完全按照所附要求來詮釋其寬度和范圍。
權(quán)利要求
1.一種將組件與資源相關(guān)聯(lián)的方法,包括接收包括所述組件與所述資源的包;確定所述組件和所述資源之間的關(guān)系;和在一追蹤列表中為所述資源創(chuàng)建一追蹤列表?xiàng)l目。
2.如權(quán)利要求1所述的方法,其中所述組件是一個(gè)任務(wù),且所述資源是一個(gè)對象類型。
3.如權(quán)利要求2所述的方法,其中所述對象類型是連接、讀訪問變量和讀/寫訪問變量中的一種。
4.如權(quán)利要求1所述的方法,其中確定所述組件和所述資源之間的關(guān)系包括訪問一個(gè)引用追蹤器用以創(chuàng)建從所述組件到所述資源的引用。
5.如權(quán)利要求1所述的方法,其中確定所述組件和所述資源之間的關(guān)系包括創(chuàng)建所述組件和所述資源之間的鏈接。
6.如權(quán)利要求1所述的方法,其中所述追蹤列表包括影響所述資源的一列對象。
7.如權(quán)利要求1所述的方法,其中所述追蹤列表揭示對象之間的隱含關(guān)系。
8.如權(quán)利要求1所述的方法,其中所述接收、確定和創(chuàng)建的步驟在一個(gè)對象模型中發(fā)生。
9.如權(quán)利要求1所述的方法,還包括從一個(gè)對象接收關(guān)于所述資源的依賴性數(shù)據(jù),且基于所述依賴性數(shù)據(jù)更新所述追蹤列表。
10.如權(quán)利要求1所述的方法,還包括基于所述追蹤列表確定影響分析,且向一個(gè)用戶或一個(gè)應(yīng)用程序提供所述影響分析。
11.一種提供影響分析的方法,包括生成包括影響一個(gè)資源的一列對象的追蹤列表;接收—更改所述資源的聲明;確定—包括會被所述更改資源的聲明所影響的來自追蹤列表的對象的影響分析;和向一用戶或一應(yīng)用程序提供所述影響分析。
12.如權(quán)利要求11所述的方法,其中接收、確定和創(chuàng)建的步驟在一個(gè)對象模型中發(fā)生。
13.如權(quán)利要求11所述的方法,其中所述資源是一個(gè)對象類型。
14.如權(quán)利要求13所述的方法,其中所述對象類型是連接、讀訪問變量和讀/寫訪問變量中的一種。
15.如權(quán)利要求11所述的方法,其中所述追蹤列表揭示對象之間的隱含關(guān)系。
16.一種在其上存儲有數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀媒體,所述數(shù)據(jù)結(jié)構(gòu)包括一個(gè)對象模型中的追蹤列表,所述追蹤列表括含影響一個(gè)資源的一列對象。
17.如權(quán)利要求16所述的計(jì)算機(jī)可讀媒體,其中所述追蹤列表揭示對象之間的隱含關(guān)系。
18.如權(quán)利要求16所述的計(jì)算機(jī)可讀媒體,其中所述資源是一個(gè)對象類型。
19.如權(quán)利要求18所述的計(jì)算機(jī)可讀媒體,其中所述對象類型是連接、讀訪問變量和讀/寫訪問變量中的一種。
20.一種用于影響分析的系統(tǒng),包括一引用追蹤器,運(yùn)行在一個(gè)對象模型上追蹤以確定組件和資源之間的關(guān)系;和為所述資源服務(wù)的一個(gè)追蹤列表,所述追蹤列表包含影響所述資源的一列對象。
21.如權(quán)利要求20所述的系統(tǒng),其中所述組件是一個(gè)任務(wù),且所述資源是一個(gè)對象類型。
22.如權(quán)利要求20所述的系統(tǒng),其中所述對象類型是連接、讀訪問變量和讀/寫訪問變量中的一種。
23.如權(quán)利要求20所述的系統(tǒng),其中所述追蹤列表揭示對象之間的隱含關(guān)系。
24.如權(quán)利要求20所述的系統(tǒng),還包括一用于確定包括會被一更改資源的聲明影響到的追蹤列表中的對象的影響分析的處理器,并向一用戶或一應(yīng)用程序提供所述影響分析。
25.一種數(shù)據(jù)轉(zhuǎn)換服務(wù),包括一數(shù)據(jù)檢索系統(tǒng),以從一來源接收數(shù)據(jù);一數(shù)據(jù)轉(zhuǎn)換管道,包括多個(gè)組件對象;一個(gè)圖形用戶界面,通過所述界面用戶可以將數(shù)據(jù)轉(zhuǎn)換表示成圖中的一系列互連的節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)對應(yīng)所述多個(gè)組件對象中的一個(gè)組件對象;一個(gè)翻譯程序,其遍歷所述圖,并將所述圖翻譯成一個(gè)數(shù)據(jù)流執(zhí)行計(jì)劃和至少一個(gè)工作列表,所述工作列表包含至少一個(gè)工作項(xiàng)目;和一個(gè)管道引擎,以基于所述數(shù)據(jù)流執(zhí)行計(jì)劃建立一數(shù)據(jù)流執(zhí)行,所述數(shù)據(jù)流執(zhí)行包括一組從所述多個(gè)組件對象的實(shí)例化而來的組件;一引用追蹤器,運(yùn)行在一個(gè)對象模型上追蹤以確定組件和資源之間的關(guān)系;一用于所述資源追蹤列表,所述追蹤列表包括影響所述資源的一列對象;一目的地?cái)?shù)據(jù)存儲系統(tǒng),以存儲數(shù)據(jù)。
26.如權(quán)利要求25所述的數(shù)據(jù)轉(zhuǎn)換服務(wù),其中所述組件是一個(gè)任務(wù),且所述資源是一個(gè)對象類型。
27.如權(quán)利要求26所述的數(shù)據(jù)轉(zhuǎn)換服務(wù),其中所述對象類型是連接、讀訪問變量和讀/寫訪問變量中的一種。
28.如權(quán)利要求25所述的數(shù)據(jù)轉(zhuǎn)換服務(wù),其中所述追蹤列表揭示對象之間的隱含關(guān)系。
29.如權(quán)利要求25所述的數(shù)據(jù)轉(zhuǎn)換服務(wù),還包括一用于確定包括會被一更改資源的聲明影響到的追蹤列表中的對象的影響分析的處理器。
30.如權(quán)利要求29所述的數(shù)據(jù)轉(zhuǎn)換服務(wù),其中所述目的地?cái)?shù)據(jù)存儲系統(tǒng)存儲所述影響分析。
全文摘要
影響分析提供了確定某一特定對象所依賴或使用的那些對象,和依賴或使用某一特定對象的那些對象的能力。術(shù)語“對象”,舉例說,可以指任務(wù)和/或?qū)ο箢愋?。影響分析在提高大型、?fù)雜文檔中的用戶生產(chǎn)效率非常重要,因?yàn)樗鼛椭_定怎樣和哪里一個(gè)對象被系統(tǒng)中其他對象所使用,從而潛在地節(jié)省了大量體力勞動(dòng)。
文檔編號G06F17/00GK1713179SQ20051007401
公開日2005年12月28日 申請日期2005年5月23日 優(yōu)先權(quán)日2004年6月23日
發(fā)明者J·K·哈塞爾登, M·J·T·杜利, M·E·戴維, S·伊萬諾夫 申請人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
天津市| 太原市| 德阳市| 瓦房店市| 任丘市| 柘荣县| 洪江市| 和静县| 白沙| 光山县| 景宁| 镇平县| 长汀县| 巴里| 名山县| 沛县| 荣昌县| 龙胜| 高雄县| 安徽省| 镇康县| 西乌| 巴彦淖尔市| 嘉义县| 旌德县| 芒康县| 花莲市| 永登县| 漾濞| 盘锦市| 天长市| 新乡市| 邵东县| 宝丰县| 宜都市| 桃江县| 伊金霍洛旗| 抚远县| 襄汾县| 镇宁| 江安县|