專利名稱:為用戶接口組件適配數(shù)據(jù)模型的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明通常涉及數(shù)據(jù)的圖形顯示,更具體地說,涉及適配源數(shù)據(jù)模型以用于在具有目標(biāo)數(shù)據(jù)模型的用戶接口組件中顯示的方法和系統(tǒng)。
背景技術(shù):
今天,工業(yè)界正努力在圖形用戶接口編程領(lǐng)域中提供改進(jìn)。因?yàn)榭焖俪尚偷氖褂煤椭T如甘特圖表(Gantt Chart)、地圖、統(tǒng)計(jì)視圖和其它復(fù)雜視覺顯示的視覺和交互軟件組件的開發(fā)變得越來越普遍,逐漸需要簡化將復(fù)雜應(yīng)用數(shù)據(jù)模型對接到顯示模型的這種復(fù)雜用戶接口組件的方法。如眾所知,復(fù)雜應(yīng)用模型與用戶接口組件的對接需要?jiǎng)?chuàng)建模型適配器。這種模型適配器已經(jīng)變成主要的開發(fā)項(xiàng)目,因?yàn)閼?yīng)用和用戶接口的復(fù)雜性都已增加。 另一方面,得到普遍認(rèn)同的是為給定的應(yīng)用實(shí)施圖形用戶接口的時(shí)間大約占用了軟件開發(fā)總時(shí)間的一半。為了減少這種時(shí)間,可視化工具包和組件提供了可以實(shí)例化并連接至匹配的數(shù)據(jù)模型的現(xiàn)成可視化。但是,對很多復(fù)雜用戶接口組件而言,創(chuàng)建數(shù)據(jù)模型以提供給組件的用戶互動(dòng)部分通常非常復(fù)雜。這就是說,復(fù)雜的模型適配器必須得到開發(fā)以允許特定的應(yīng)用利用用戶接口組件提供的高級特征。關(guān)于模型適配器已經(jīng)提出了很多關(guān)注點(diǎn)。一種關(guān)注點(diǎn)在于每個(gè)應(yīng)用數(shù)據(jù)模型都是獨(dú)特的,以至于這些模型適配器都不能在一種應(yīng)用和另一種應(yīng)用之間可用,并且很難維護(hù)。特別是,這些適配器緊密耦合至應(yīng)用和用戶接口,導(dǎo)致任意部分需要改進(jìn)時(shí)都會(huì)出現(xiàn)爭論點(diǎn)。在甘特圖表類型的用戶接口組件的一個(gè)實(shí)例中,圖形組件的數(shù)據(jù)模型元素是“任務(wù)”對象。每個(gè)任務(wù)對象都有時(shí)間、持續(xù)時(shí)間、還可能有附屬于這些對象的標(biāo)簽或各種約束。通常,在應(yīng)用的后端側(cè)有集成許多約束和由單個(gè)任務(wù)和附加數(shù)據(jù)組成的復(fù)雜活動(dòng)描述的復(fù)雜調(diào)度應(yīng)用。當(dāng)這種甘特圖表在諸如調(diào)度系統(tǒng)的一些最優(yōu)化系統(tǒng)中使用時(shí),可能發(fā)生用于最優(yōu)化的數(shù)據(jù)模型并不總是匹配將提供給用戶接口組件的數(shù)據(jù)模型的情況。而且,用于創(chuàng)建調(diào)度應(yīng)用的一些最優(yōu)化工具,例如IBM ILOG CP0,需要為可以由終端用戶輕易適配的隨時(shí)可用的用戶接口組件提供有限用戶接口配置。許多現(xiàn)有方案解決了為服務(wù)(例如存儲(chǔ),用戶接口,驗(yàn)證……)適配應(yīng)用數(shù)據(jù)模型的問題。一種用于創(chuàng)建用戶接口的方法提供能夠聲明性地指定模型適配器的一些數(shù)據(jù)綁定特征。例如,Dojo 數(shù)據(jù)綁定模塊(http://dojotoolkit. org/api/dojox/wire. html)提供將應(yīng)用數(shù)據(jù)模型綁定其接口的機(jī)制。這個(gè)模塊需要綁定將被映射并且在匹配并不直接的情況下也提供轉(zhuǎn)換步驟的每一個(gè)屬性。當(dāng)提供接口和應(yīng)用之間的松弛度時(shí),構(gòu)建這種模型適配器可能極端冗長,并且那些模型難以維護(hù),因?yàn)榻涌诤蛻?yīng)用任意一方發(fā)生變化都需要更新適配器。模型驅(qū)動(dòng)工程(MDE)領(lǐng)域中提供了其它方案。模型驅(qū)動(dòng)工程提供了互動(dòng)工具和語言的開發(fā)以允許將復(fù)雜的源數(shù)據(jù)模型映射到具有廣泛靈活性的目標(biāo)數(shù)據(jù)。模型驅(qū)動(dòng)工程系統(tǒng)普遍為確保源模型的語義保存而依賴用于將模型映射到另一模型的聲明性語言。這種 MDE 系統(tǒng)的實(shí)例在題為 “First experiments with the ATL model transformationlanguage: Transforming XSLT into XQuery” (OOPSLA 2003 研討會(huì),加利福尼亞州阿納海姆市,2003 年,作者Bezivin, J, Dupe, G, Jouault, F,Pitette, G,和 Rougui, JE)的文章以及題為 “Integrating dynamic views using model driven development”(關(guān)于協(xié)同石開究的高級研究中心的2006大會(huì)會(huì)議記錄,(加拿大安大略省多倫多,2006年10月16-19日),CASCON[Omicron]6. ACM出版社,紐約州紐約市,17,作者Bull, R. I)的文章中得到了描述。這種MDE方法涉及目的的普遍性并且僅聚焦于保存強(qiáng)語義。而且,MDE工具并不允許完全自動(dòng)進(jìn)行模型匹配,其代價(jià)在于可能出現(xiàn)錯(cuò)誤,不匹配或丟棄數(shù)據(jù)。被稱為“Perfect JPattern”組件的另一模型匹配方案提供了在源和目標(biāo)之間進(jìn)行匹配的部分名稱和類型。這種方案允許解決源和目標(biāo)之間的細(xì)微差異而無需特別的開發(fā)者干預(yù)。但是,這種組件并不適合用于互動(dòng)情境。其還需要組件的用戶明確激活特定匹配能力以從這種可適配性中受益。在組件找不到合適模型的事件中,不需要付出補(bǔ)充努力以提供工作匹配并且該組件會(huì)簡單地信號(hào)通知錯(cuò)誤和停止操作。
在US 7444330中描述了另一種方法,提供一種模型匹配方案以基于樹匹配算法將源模型匹配至目標(biāo)模型。在US 7444330的方法中,需要獲取源模型和目標(biāo)模型之間的完全匹配。如果該匹配被檢測到具有誤差,則該匹配需要進(jìn)行糾正,并且該糾正階段涉及提示用戶手動(dòng)提供輸入。另外,如果該模型適配器不能找到滿意的匹配,則用戶接口組件也會(huì)返回消息錯(cuò)誤和停止操作。
發(fā)明內(nèi)容
根據(jù)本發(fā)明,提供一種根據(jù)所附獨(dú)立權(quán)利要求I的適配源數(shù)據(jù)模型以用于用戶接口組件中顯示的方法,一種根據(jù)所附權(quán)利要求11的計(jì)算機(jī)程序和一種根據(jù)所附權(quán)利要求13的系統(tǒng)。所附的從屬權(quán)利要求2至10中定義了優(yōu)選的實(shí)施例。因此本發(fā)明提供了一種允許直接將特定應(yīng)用數(shù)據(jù)模型插入通用可視化組件的容錯(cuò)和透明模型適配方案。本發(fā)明在應(yīng)用數(shù)據(jù)模型上實(shí)施松散的圖形匹配,提取可以呈現(xiàn)給用戶的模型部分并且丟棄或呈現(xiàn)其它不能由用戶接口組件(可視化組件)呈現(xiàn)的部分的交互方式。本發(fā)明還允許將復(fù)雜的可視化組件,例如甘特圖表耦合到以最小開發(fā)開銷生成源數(shù)據(jù)模型的任意類型的應(yīng)用。本發(fā)明的特別優(yōu)點(diǎn)在于應(yīng)用原型設(shè)計(jì)的情境、嚴(yán)格時(shí)間限制下的開發(fā)、或更普遍地說用于只有有限資源可以花費(fèi)在用戶接口開發(fā)上的高級用戶接口的開發(fā)。根據(jù)本發(fā)明,無需具有為特殊源數(shù)據(jù)模型和目標(biāo)模型預(yù)定義的定制模型適配器。其適于為任意目標(biāo)用戶接口組件處理任何源數(shù)據(jù)模型。這在需要將數(shù)據(jù)模型與可視化組件直接掛鉤的開發(fā)的初級階段特別有用。因而本發(fā)明排除了用于構(gòu)建復(fù)雜模型適配器的中間開發(fā)階段的需求。在原型設(shè)計(jì)和開發(fā)涉及應(yīng)用數(shù)據(jù)模型和用戶接口上的迭代的概念軟件的證明的情境中,通過本發(fā)明的部分匹配方案獲得了更大的靈活性。更確切地說,模型適配完全自動(dòng)地從可能進(jìn)化的數(shù)據(jù)模型創(chuàng)建。根據(jù)本發(fā)明的模型適配方案允許
-外化大量匹配規(guī)則,從而可以將任意應(yīng)用數(shù)據(jù)模型匹配到多個(gè)用戶接口組件,每個(gè)組件提供特定的目標(biāo)數(shù)據(jù)模型。-廣泛接受“可能的”方案,即使匹配方案不完美或不存在,允許用戶使用所述用戶接口組件,至少部分不需要糾正階段。對本領(lǐng)域技術(shù)人員而言,通過檢查附圖和詳細(xì)的描述可以使本發(fā)明的其它優(yōu)點(diǎn)更加清楚。其目的在于在此加入任意附加優(yōu)點(diǎn)。
現(xiàn)在通過參考附圖描述本發(fā)明的實(shí)施例,其中相似附圖標(biāo)記表示相似的元件,并且其中圖I圖形示出根據(jù)本發(fā)明特定實(shí)施例的模型適配系統(tǒng);
圖2是根據(jù)本發(fā)明特定實(shí)施例的模型適配系統(tǒng)的高階流程圖;圖3是根據(jù)本發(fā)明特定替代實(shí)施例的模型適配系統(tǒng)的高階流程圖;圖4示出用于確定用于源數(shù)據(jù)模型中的給定源類型/對象的最佳匹配目標(biāo)類型的流程圖;圖5示出示例性名稱匹配規(guī)則的流程圖;圖6示出示例性類型匹配規(guī)則的流程圖;圖7示出用于確定目標(biāo)類型得分的流程圖;圖8示出用于確定屬性得分矩陣的流程圖;圖9示出用于確定輔助屬性得分的流程圖;圖10示出示例性源數(shù)據(jù)模型部分;圖11至13示出對應(yīng)于圖10的示例性部分的方案。附圖目的僅在于描述本發(fā)明的典型實(shí)施例,因此不該被看作限制本發(fā)明的范圍。另外,還以展示E補(bǔ)充詳細(xì)描述,該展示E包括使用根據(jù)本發(fā)明的系統(tǒng)和方法的代碼實(shí)現(xiàn)El至E5。在上述描述中,直接使用標(biāo)識(shí)符“E1”至“E5”作為展示E的實(shí)例的引用。展示El被分開放置以用于闡明詳細(xì)描述并使能更簡單的引用。因?yàn)槠淇赡茉谙率雒枋鲋幸茫琂ava和所有基于Java的標(biāo)記是Sun微系統(tǒng)公司在美國和其它國家的商標(biāo)或注冊商標(biāo)。其它公司,產(chǎn)品或服務(wù)可能是其它人的商標(biāo)或服務(wù)
己 O本發(fā)明文件的部分公開內(nèi)容包括可能從屬于版權(quán)保護(hù)的材料。版權(quán)擁有者沒有本專利文件或?qū)@_內(nèi)容的任何人的傳真復(fù)制,因?yàn)槠涑霈F(xiàn)在專利商標(biāo)局的專利文件或記錄中,但是另一方面其無論如何都會(huì)保留所有版權(quán)和/或作者權(quán)利。
具體實(shí)施例方式根據(jù)本發(fā)明的某種實(shí)施例,圖I示出用于為特定用戶接口組件108生成源數(shù)據(jù)模型101的顯示的計(jì)算機(jī)系統(tǒng)100。計(jì)算機(jī)系統(tǒng)100可以是任意類型的分布式計(jì)算機(jī)系統(tǒng),其包括通過諸如局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)的網(wǎng)絡(luò)連接的數(shù)個(gè)遠(yuǎn)程計(jì)算機(jī)服務(wù)器和客戶端。其也可能是獨(dú)立計(jì)算機(jī)設(shè)備,例如個(gè)人計(jì)算機(jī)、手持設(shè)備、服務(wù)器、對等設(shè)備或其它常見網(wǎng)絡(luò)節(jié)點(diǎn)。
計(jì)算機(jī)系統(tǒng)100中的每個(gè)計(jì)算機(jī)設(shè)備典型地包括一個(gè)通過總線連接存儲(chǔ)器的中央處理單元(CPU),存儲(chǔ)裝置和網(wǎng)絡(luò)接口設(shè)備以允許通過網(wǎng)絡(luò)(例如網(wǎng)絡(luò)適配器或其它網(wǎng)絡(luò)接口卡(NIC))進(jìn)行網(wǎng)絡(luò)通信。計(jì)算機(jī)系統(tǒng)100還可能包括一個(gè)或更多輸入設(shè)備103,其可以是用于為計(jì)算機(jī)系統(tǒng)100提供輸入的任意類型設(shè)備,例如鍵盤、鼠標(biāo)、小鍵盤等。其還包括用于為用戶提供輸出的輸出設(shè)備104,例如任意傳統(tǒng)的顯示屏。輸出設(shè)備104包括具有至少一個(gè)用戶接口組件1087的用戶接口 105。系統(tǒng)100包括用于管理用戶接口 105中的用戶接口組件108的顯示的用戶接口組件管理器107。用戶接口組件顯示任意類型的可視化顯示組件或具有特定可視化特征,例如甘特圖表、地圖、統(tǒng)計(jì)視圖或其它類型的復(fù)雜視覺顯示的工具。計(jì)算機(jī)系統(tǒng)100包括可能由任意類型的應(yīng)用生成或由用戶提供的源數(shù)據(jù)模型110(下面也稱為源數(shù)據(jù)組)。例如,源數(shù)據(jù)模型Iio可以從集成開發(fā)環(huán)境(IDE)的內(nèi)容中的程序源提取。源數(shù)據(jù)模型110被提供以在用戶接口組件108中得到顯示。 根據(jù)本發(fā)明的實(shí)施例,用戶接口組件管理器107還與定義用戶接口組件108支持的數(shù)據(jù)模型的目標(biāo)數(shù)據(jù)模型112 (下面也稱為目標(biāo)數(shù)據(jù)組)相關(guān)聯(lián)。例如,在甘特組件的情況下,組件可以顯示并讓用戶與數(shù)據(jù)對象元組交互,其包括開始日期(整數(shù))、結(jié)束日期(整數(shù))、和可選的名稱和布爾“存在”值。其它組件可以提供其它抽象接口。例如2D繪圖顯示將需要數(shù)據(jù)對象,每個(gè)數(shù)據(jù)對象都具有X和I坐標(biāo),具有可選尺寸,顏色和標(biāo)簽信息。計(jì)算機(jī)系統(tǒng)100也包括用于以透明和容錯(cuò)的方式為用戶接口組件108生成源數(shù)據(jù)模型的顯示的模型適配子系統(tǒng)101。模型適配子系統(tǒng)101包括用于匹配源數(shù)據(jù)模型110和至少一部分目標(biāo)數(shù)據(jù)模型112,并允許基于這個(gè)部分匹配在用戶接口組件108顯示源數(shù)據(jù)組110的模型匹配單元111。模型匹配單元111提供將被用于為用戶接口組件108適配源數(shù)據(jù)模型110的模型適配器102。模型匹配單元111允許用戶接口組件作為輸入采用可發(fā)現(xiàn)的任意源數(shù)據(jù)模型110(即構(gòu)成模型的對象可通過自省來檢查,并且可查詢他們的屬性和值),并可以內(nèi)省源數(shù)據(jù)模型110以進(jìn)行顯示并僅與匹配目標(biāo)數(shù)據(jù)模型112的項(xiàng)的子集進(jìn)行交互。更具體而言,模型匹配單元111檢查源數(shù)據(jù)模型110,并發(fā)現(xiàn)源數(shù)據(jù)模型的數(shù)據(jù)元素,所述數(shù)據(jù)元素具有其類型基于預(yù)定義屬性匹配規(guī)則114,例如命名和/或定型規(guī)則匹配與用戶接口組件108相關(guān)聯(lián)的目標(biāo)數(shù)據(jù)模型112的屬性(示例性的命名規(guī)則例如可以包括確定源屬性名稱是否大概匹配目標(biāo)屬性名稱,例如用于“start”和“stop”的“begin”和“end”,或用于“duration”的“l(fā)ength”等)。因此模型匹配單元111利用聲明的視圖構(gòu)建僅引用這些數(shù)據(jù)元素并為用戶接口組件管理器107提供模型適配器102的中間模型適配器102。用戶接口組件管理器107將生成對應(yīng)于用戶接口組件108中的模型適配器102的顯
/Jn ο源數(shù)據(jù)組110包括數(shù)據(jù)和作為組成該數(shù)據(jù)的類型組的數(shù)據(jù)結(jié)構(gòu)的描述。數(shù)據(jù)類型(或類型)包括一組已命名和定型的屬性并定義了可以在該組屬性上實(shí)施的一組運(yùn)算。類是指其運(yùn)算和屬性可以在子類型中擴(kuò)展和再定義的多態(tài)數(shù)據(jù)類型。在隨后的描述中,術(shù)語“數(shù)據(jù)類型”或“類型”或“目標(biāo)類型”或“源類型”具有相似的含義。源數(shù)據(jù)組110因此表示已命名和定型的屬性的集合。可以根據(jù)任意合適的語言或框架,例如由其組件(bean)描述的Java類,XML文件、JSON數(shù)據(jù)結(jié)構(gòu)或者甚至面向數(shù)據(jù)庫的SQL接口表示源數(shù)據(jù)組110。根據(jù)用于表示和管理源數(shù)據(jù)組110的語言,源數(shù)據(jù)組110可以被強(qiáng)定型,例如定型為Java類或SQL表表示,或弱定型例如具有JSON文件表示。在弱定型的語言中,每個(gè)對象定義了其自身的數(shù)據(jù)類型,而在強(qiáng)定型語言中,對象必然屬于有限組的類型。如果源數(shù)據(jù)組110被強(qiáng)定型,則例如在Java程序或SQL數(shù)據(jù)庫中,模型匹配單元112將應(yīng)用每個(gè)類型基礎(chǔ)以將該源模型110綁定至目標(biāo)模型112。如果源數(shù)據(jù)組110被弱定型,則例如在XML或JSON文件中,模型匹配單元112將應(yīng)用每個(gè)對象基礎(chǔ)以將該源模型110綁定至目標(biāo)模型。
展示El提供了一種根據(jù)OPL語言(IBM ILOG最優(yōu)化處理語言)的典型源數(shù)據(jù)組110作為一組元組。在展示El的實(shí)例中,源數(shù)據(jù)組110的描述包括四個(gè)類“start”,“end”,“duration”,“l(fā)abel”,前三個(gè)類具有整數(shù)類型“int”并且最后一個(gè)類具有串類型。目標(biāo)數(shù)據(jù)組112表示用戶接口組件108輸入所期待的特殊數(shù)據(jù)結(jié)構(gòu)。目標(biāo)數(shù)據(jù)模型112表示抽象數(shù)據(jù)類型。抽象數(shù)據(jù)類型指定已命名、已定型的屬性和可以在這些屬性上實(shí)施的運(yùn)算的集合。類是此外還具有封裝、繼承、和多態(tài)的特性的抽象數(shù)據(jù)類型;原型是另一類抽象類型,在例如JavaScript的語言情境中使用。目標(biāo)數(shù)據(jù)組112包括可以為用戶接口組件108接收為輸入的數(shù)據(jù)類型(例如定型的對象)的集合的描述。目標(biāo)數(shù)據(jù)模型112因此表示已命名和已定型的屬性的集合。源數(shù)據(jù)模型110和目標(biāo)數(shù)據(jù)模型112可以根據(jù)不同的格式或相同的格式得以表示。下面參考以根據(jù)僅用于說明性目的的Java編程語言的相同格式提供的源數(shù)據(jù)模型110和目標(biāo)數(shù)據(jù)模型112進(jìn)行描述。但是本領(lǐng)域技術(shù)人員會(huì)很容易理解本發(fā)明可以用于源數(shù)據(jù)模型110和目標(biāo)數(shù)據(jù)模型112可以程序化訪問和瀏覽的任意環(huán)境。展示E2的實(shí)例表示類型甘特圖表的用戶接口組件108,其預(yù)期根據(jù)Java接口表示的特定目標(biāo)數(shù)據(jù)模型。在展示E2的實(shí)例目標(biāo)數(shù)據(jù)模型中,TASK接口包括以下屬性具有浮點(diǎn)類型的“begin”,具有浮點(diǎn)類型的“end”,具有浮點(diǎn)類型的“duration”,并且可選包括具有串類型的“name”屬性。應(yīng)該注意的是,為數(shù)據(jù)源模型110提供的實(shí)例TUPLE結(jié)構(gòu)和為目標(biāo)數(shù)據(jù)模型112提供的實(shí)例Task接口結(jié)構(gòu)表示相似的對象,從而在表示用于這種實(shí)例的甘特圖表組件中的Tuple對象陣列(源數(shù)據(jù)模型)時(shí)可能具有優(yōu)點(diǎn)。也可以為用戶接口組件管理器107提供屬性信息存儲(chǔ)器109,該存儲(chǔ)器提供涉及由源數(shù)據(jù)模型112使用的屬性的信息。這種屬性信息存儲(chǔ)器109可能包括存儲(chǔ)用于識(shí)別用戶接口組件108所需要的第一組屬性(下面稱為“強(qiáng)制”屬性)和用戶接口組件108所不需要的第二組屬性(下面稱為“可選”屬性)的信息的屬性分類儲(chǔ)存庫113。其可能也包括為目標(biāo)數(shù)據(jù)模型112的每個(gè)屬性名稱提供詞匯同義詞列表的同義詞庫114和為目標(biāo)數(shù)據(jù)模型112中的每個(gè)屬性提供等同于已考慮屬性的輔助屬性邏輯組合的輔助數(shù)據(jù)儲(chǔ)存庫115 (例如屬性持續(xù)時(shí)間可以表達(dá)為開始屬性和結(jié)束屬性的組合)??蛇x地,屬性信息存儲(chǔ)器109可能由模型適配單元101為多數(shù)常規(guī)屬性而維持。
應(yīng)該注意的是盡管圖I僅示出了一種與特定Π組件108相關(guān)聯(lián)的用戶接口組件管理器107,但是本發(fā)明支持被提供以其各自的用戶接口組件管理器107,目標(biāo)數(shù)據(jù)模型112和可選被提供以屬性信息存儲(chǔ)器109的任意數(shù)量的用戶接口組件。圖2示出根據(jù)本發(fā)明特定實(shí)施例的為用戶接口組件生成源數(shù)據(jù)模型的顯示的流程圖。在步驟200,從應(yīng)用接收或直接由用戶提供源數(shù)據(jù)模型SM。例如源數(shù)據(jù)模型可以作為數(shù)據(jù)庫查詢的結(jié)果而生成,或存在于外部服務(wù)器上的XML文件中。在另一實(shí)例中,源數(shù)據(jù)模型可以來自于由用戶以IBM ILOG OPLStudio開發(fā)平臺(tái)內(nèi)的OPL語言編寫的程序(該平臺(tái)解譯由用戶輸入的程序,解析其數(shù)據(jù)結(jié)構(gòu)并提供顯示該程序的所有可用數(shù)據(jù)結(jié)構(gòu)的二級視圖)。在步驟202,從其存儲(chǔ)器位置檢索目標(biāo)數(shù)據(jù)模型TM。特別地,目標(biāo)數(shù)據(jù)模型112可能作為應(yīng)用運(yùn)算的結(jié)果存在于主存儲(chǔ)器中。即使步驟200和202被描繪為連續(xù)的步驟,但它們也可能同時(shí)實(shí)施,或以相反的順
序?qū)嵤?。步驟204至206計(jì)算將被提供給用于生成源數(shù)據(jù)模型的顯示的用戶組件管理器107的目標(biāo)數(shù)據(jù)模型對象的集合C。更具體而言,遍歷源數(shù)據(jù)結(jié)構(gòu)SM并且針對源數(shù)據(jù)結(jié)構(gòu)SM中的每個(gè)當(dāng)前對象A(在步驟204選擇),步驟205為該當(dāng)前對象確定目標(biāo)數(shù)據(jù)模型TM中的最佳匹配等效數(shù)據(jù)類型T。為了為當(dāng)前源對象A確定最佳匹配目標(biāo)類型,通過使用預(yù)定義匹配規(guī)則組并為每個(gè)匹配方案分配優(yōu)先得分來計(jì)算匹配方案的數(shù)量。提供具有最佳優(yōu)先得分的方案作為最佳匹配方案。在本說明書中,“最佳匹配”這一概念應(yīng)該被理解為指定具有最佳得分的匹配方案。如果在步驟205發(fā)現(xiàn)最佳匹配方案,則在步驟206創(chuàng)建代理對象形式的綁定數(shù)據(jù)結(jié)構(gòu),以將源數(shù)據(jù)模型的當(dāng)前對象A鏈接至目標(biāo)對象模型TM中的數(shù)據(jù)類型T的實(shí)例。重復(fù)步驟204和206,直到源數(shù)據(jù)組的所有對象都已得到處理(步驟208,209)。當(dāng)源數(shù)據(jù)組的所有對象都已得到處理時(shí),這樣獲得的代理對象的集合C在步驟210匯編并在步驟211被提供給用戶接口組件管理器。用戶接口組件管理器107然后將基于綁定數(shù)據(jù)結(jié)構(gòu)(代理對象)生成源數(shù)據(jù)模型的顯不O圖3示出根據(jù)涉及強(qiáng)定型源數(shù)據(jù)模型的本發(fā)明替代實(shí)施例,為用戶接口組件108生成源數(shù)據(jù)模型110的顯示的流程圖。針對強(qiáng)定型的源數(shù)據(jù)模型,不需要檢查源數(shù)據(jù)模型的每個(gè)單個(gè)對象,因?yàn)樗羞@些對象都將屬于在源數(shù)據(jù)模型中定義的數(shù)據(jù)類型之一。替代遍歷每個(gè)對象,直接檢查源數(shù)據(jù)類型以創(chuàng)建代理類并使其實(shí)例化。例如如果源數(shù)據(jù)模型被強(qiáng)定型并僅由類“Person”(類是一種數(shù)據(jù)類型)的對象構(gòu)成,該類person由屬性“name”、“date of birth”、“date of death”構(gòu)成,不需要檢查源模型中的所有單個(gè)對象以確定僅需要一種類型的代理對象。該代理將源數(shù)據(jù)模型中的“name”映射為目標(biāo)數(shù)據(jù)模型中的“name”, “date of birth” 映射為 “begin”, “date of death” 映射為 “end”。展示E4描繪了圖3的流程圖的實(shí)例代碼實(shí)現(xiàn)。
步驟300和302類似于步驟200和202。步驟304至306匯編將由用戶接口組件管理器107使用的目標(biāo)數(shù)據(jù)模型類型的集合C (例如類)以生成用戶接口組件108中的源數(shù)據(jù)模型SM的顯示。在步驟304,遍歷源數(shù)據(jù)結(jié)構(gòu)SM并且針對源數(shù)據(jù)結(jié)構(gòu)SM中的每個(gè)當(dāng)前源數(shù)據(jù)類型T (步驟304),步驟305試圖找到當(dāng)前類型和目標(biāo)數(shù)據(jù)模型中的類型之間的匹配(在E4中由“ClosestType” 函數(shù)示出)。如果在步驟305找到了匹配,則在步驟306創(chuàng)建代理類型(例如代理類)形式的綁定數(shù)據(jù)結(jié)構(gòu)以將源數(shù)據(jù)模型的當(dāng)前數(shù)據(jù)類型鏈接至目標(biāo)數(shù)據(jù)模型的數(shù)據(jù)類型。重復(fù)步驟304和306,直到源數(shù)據(jù)類型的所有對象都已得到處理(步驟308,309)。當(dāng)源數(shù)據(jù)組的所有數(shù)據(jù)類型都已得到處理時(shí),這樣獲得的代理類的集合C在步驟310用于匯編這些類匹配源對象的實(shí)例集合和目標(biāo)對象并在步驟311將該集合提供給用戶 接口組件。然后用戶接口組件管理器107關(guān)于步驟中匯編的代理對象集合透明運(yùn)行,從而為用戶接口組件108生成元數(shù)據(jù)模型的顯示。代理對象的集合定義模型適配器設(shè)計(jì)圖形。展示E5表示可能作為圖3中描述的方法的結(jié)果而為展示El和E2的實(shí)例模型生成的類和數(shù)據(jù)模型(該實(shí)例源數(shù)據(jù)模型使用的是強(qiáng)定型的OPL語言)。圖4是根據(jù)本發(fā)明的特定實(shí)施例的,為給定源對象或源數(shù)據(jù)組SM中的數(shù)據(jù)類型確定目標(biāo)數(shù)據(jù)模型TM (步驟205和305)中的最佳等效匹配的步驟的高階流程圖。圖4中的處理適用于表示已命名、已定型屬性(源對象或源類型)集合的任意源數(shù)據(jù)類型。即使在匹配被確定為不完美或即使當(dāng)沒有發(fā)現(xiàn)用于源數(shù)據(jù)對象部分的匹配時(shí),用于確定最佳目標(biāo)類型的方法,也允許目標(biāo)用戶接口組件透明生成源數(shù)據(jù)模型的具有有用性能的滿意顯示。更具體而言,為了為給定源類型或?qū)ο蟠_定最佳目標(biāo)類型,處理目標(biāo)數(shù)據(jù)模型(步驟400)中的每個(gè)目標(biāo)類型。針對目標(biāo)模型TM中的每個(gè)目標(biāo)類型(步驟401),步驟402通過對源類型中的每個(gè)源屬性和當(dāng)前目標(biāo)類型的第一組屬性中的每個(gè)目標(biāo)屬性(強(qiáng)制屬性)之間的對應(yīng)關(guān)系進(jìn)行計(jì)分來計(jì)算目標(biāo)類型匹配得分。在步驟402,甚至源屬性和目標(biāo)屬性之間的非精確匹配也會(huì)計(jì)分(下面參考圖7詳細(xì)描述步驟402)。步驟403存儲(chǔ)與在目標(biāo)類型候選列表中這樣獲得的目標(biāo)類型得分相關(guān)聯(lián)的目標(biāo)類型標(biāo)識(shí)符。為目標(biāo)數(shù)據(jù)模型中的所有目標(biāo)類型重復(fù)步驟401至403,直到所有目標(biāo)類型都已得到處理(步驟404)。當(dāng)所有目標(biāo)類型都已得到處理時(shí),步驟405確定最佳匹配目標(biāo)類型為具有目標(biāo)類型候選列表中的最佳目標(biāo)類型得分的類型。為了為每個(gè)目標(biāo)類型確定目標(biāo)類型得分(步驟402),將預(yù)定義名稱匹配規(guī)則組和/或預(yù)定義類型匹配規(guī)則組應(yīng)用于屬性對,每個(gè)對都包括目標(biāo)類型的目標(biāo)屬性TA和源類型或?qū)ο蟮脑磳傩許A。該名稱匹配規(guī)則組的應(yīng)用提供了名稱匹配規(guī)則得分nameMatch (SA,TA),該類型匹配規(guī)則組的應(yīng)用提供了類型匹配規(guī)則得分typeMatch (SA7TA)0名稱匹配規(guī)則得分nameMatch (SA, TA)和類型匹配規(guī)則得分typeMatch (SA, TA)的組合用于確定每個(gè)對{SA,TA}的屬性得分值。匹配規(guī)則包括源數(shù)據(jù)模型中的源屬性和目標(biāo)數(shù)據(jù)模型中的目標(biāo)屬性之間的屬性名稱和/或?qū)傩灶愋拖嚓P(guān)的條件的表達(dá),如果滿足該條件,還包括與該對{源屬性,目標(biāo)屬性}相關(guān)聯(lián)的優(yōu)先得分的定義。根據(jù)本發(fā)明的實(shí)施例,定義該組匹配規(guī)則的匹配規(guī)則以確保每個(gè)對{源屬性,目標(biāo)屬性}都將返回一個(gè)非零值,即使目標(biāo)屬性和源屬性不一致。匹配規(guī)則可能包括命名規(guī)則,該命名規(guī)則涉及源類型中的源屬性和目標(biāo)類型中的目標(biāo)屬性之間的與屬性名稱相關(guān)的對比。一個(gè)這種命名規(guī)則可能包括確定源屬性名稱是否精確匹配目標(biāo)屬性名稱。如果滿足這種規(guī)則,這些屬性將綁定在一起。其它名稱匹配規(guī)則此外還可能用于
-使用同義詞庫114確定源名稱是否是目標(biāo)屬性名稱的同義詞。例如,對于甘特圖表目標(biāo)模型而言,下列同義詞可能與一個(gè)Task(任務(wù))的“begin”屬性相關(guān)聯(lián)而使用“ start ”,“ debut ”,“ from” ......-確定源屬性名稱是否部分匹配目標(biāo)屬性名稱。例如如果源屬性名稱的一部分匹配目標(biāo)屬性名稱或其同義詞之一則進(jìn)行該確定。例如,如果源屬性名稱是"startActivity",將為目標(biāo)屬性名稱“start”檢測到匹配。在這種情況下,較低得分可能影響這種對應(yīng)關(guān)系,因?yàn)樵撈ヅ鋬H是部分性的。圖5是示出可能用于包括源屬性和目標(biāo)屬性的對的示例性匹配規(guī)則的流程圖(500)。步驟502確定源屬性名稱sourceName是否等價(jià)于目標(biāo)屬性名稱targetName,以及在步驟503中確定是否這樣影響最高優(yōu)先得分(第一優(yōu)先得分)。如果步驟502的測試失敗,則步驟504應(yīng)用與源和目標(biāo)屬性名稱相關(guān)的第二匹配規(guī)則,并且如果滿足該規(guī)則,則在步驟505中影響小于第一優(yōu)先得分的第二優(yōu)先得分。在圖5中,示出的第二匹配規(guī)則包括確定源屬性名稱sourceName是否包括目標(biāo)屬性名稱targetName。如果不滿足第二命名匹配規(guī)則,則步驟506應(yīng)用與源和目標(biāo)屬性名稱相關(guān)的第三匹配規(guī)則,并且如果滿足該第三規(guī)則,則小于第二優(yōu)先得分的第三優(yōu)先得分在步驟507影響該屬性對。在圖5中,示出的第三匹配規(guī)則在于確定源屬性名稱sourceName是否是目標(biāo)屬性名稱targetName的同義詞。如果不滿足第三命名匹配規(guī)則,則步驟508應(yīng)用與源和目標(biāo)屬性名稱相關(guān)的第四匹配規(guī)則,并且如果滿足該第四規(guī)則,則小于第三優(yōu)先得分的第四優(yōu)先得分在步驟509影響該對對應(yīng)關(guān)系。在圖5中,示出的第四匹配規(guī)則在于確定源屬性名稱sourceName是否包括目標(biāo)屬性名稱targetName的同義詞。最后,如果不滿足任何名稱匹配規(guī)則,則非零優(yōu)先得分在步驟510被分配給該對。由此本發(fā)明保證了源屬性和目標(biāo)屬性之間的每個(gè)對應(yīng)關(guān)系都分配一個(gè)非零優(yōu)先得分,即使該匹配并不精確或沒有滿足任何匹配規(guī)則。圖6示出可能用于對源屬性和目標(biāo)屬性之間的對應(yīng)關(guān)系計(jì)分的匹配規(guī)則的另一實(shí)例的流程圖。
在圖6的實(shí)例中,以預(yù)定義順序應(yīng)用與源屬性和目標(biāo)屬性的類型相關(guān)的匹配規(guī)貝U。當(dāng)屬性類型被確定為原子時(shí)(即該類型被認(rèn)為包括單一值,例如串,整數(shù),浮點(diǎn),日期……),允許該屬性類型被轉(zhuǎn)變?yōu)榱硪活愋停词乖撧D(zhuǎn)變只是近似的。例如,數(shù)字類型可以通過使用其十進(jìn)制表示法而被轉(zhuǎn)變?yōu)榇愋?。串類型可以通過將其字符解譯為字節(jié)序列并將頭8個(gè)字節(jié)轉(zhuǎn)變?yōu)槠鋽?shù)字等效而被轉(zhuǎn)變?yōu)閿?shù)字類型。日期可以通過自一個(gè)給定的起始點(diǎn)開始取其值為秒而被轉(zhuǎn)變?yōu)閿?shù)字類型。這保證了總能找到一個(gè)匹配結(jié)果(即匹配得分永遠(yuǎn)不會(huì)為O)。更具體而言,步驟600接收被認(rèn)為確定其匹配得分的源屬性和目標(biāo)屬性。在步驟601,確定源屬性類型sourceType是否是目標(biāo)屬性類型targetType的子類型。如果是,則在步驟602將最高優(yōu)先得分(第一優(yōu)先得分)分配給該對{源屬性,目標(biāo)屬性}。如果不滿足步驟601,則步驟603確定源屬性類型sourceType是否是日期類型并確定目標(biāo)屬性類型targetType是否是數(shù)字類型。如果是,則在步驟604將比第一優(yōu)先得分··值更低的第二優(yōu)先得分分配給該對{源屬性,目標(biāo)屬性}。如果不滿足步驟603,則步驟605確定源屬性類型sourceType是否是數(shù)字類型并確定目標(biāo)屬性類型targetType是否是日期類型。如果是,則在步驟606將比第一優(yōu)先得分值更低的第三優(yōu)先得分分配給該對{源屬性,目標(biāo)屬性}。如果不滿足步驟603,則最低優(yōu)先得分影響該對{源屬性,目標(biāo)屬性}。最后,如果不滿足任何類型匹配規(guī)則,則步驟607將非零優(yōu)先得分分配給該對應(yīng)關(guān)系{源屬性,目標(biāo)屬性}。根據(jù)本發(fā)明的其它實(shí)施例,附加匹配規(guī)則可以用于匹配源屬性和目標(biāo)數(shù)據(jù)模型110中的屬性。特別地,目標(biāo)匹配方法可以應(yīng)用與輔助數(shù)據(jù)儲(chǔ)存庫115中存儲(chǔ)的信息相關(guān)的其它匹配規(guī)則。例如,如果目標(biāo)屬性“duration”與目標(biāo)模型相關(guān)聯(lián),則可以由模型匹配單元111使用的輔助屬性表達(dá)可能是end O-Start O。類似地,默認(rèn)標(biāo)簽屬性可以被定義為源模型的所有屬性的串聯(lián)。為了再定義上述方案,內(nèi)容檢查規(guī)則此外還可以由模型匹配單元使用以檢查與源屬性相關(guān)聯(lián)的實(shí)際值上的條件,并且如果滿足內(nèi)容檢查規(guī)則,則將源屬性分配給特定目標(biāo)屬性。即使參考描述由已命名和已定型屬性的扁平集合組成的對象的源數(shù)據(jù)結(jié)構(gòu)進(jìn)行了上述描述,本發(fā)明也適用于未被提供為平面列表的其它源數(shù)據(jù)模型結(jié)構(gòu),通過使用合適的預(yù)處理階段以將源數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)變?yōu)閿?shù)據(jù)類型的平面列表(例如如果源數(shù)據(jù)模型是被組織為層次結(jié)構(gòu)的同構(gòu)對象的集合)。類似地,在源數(shù)據(jù)模型110被構(gòu)造為均勻?qū)ο蟮钠矫媪斜硗瑫r(shí)目標(biāo)數(shù)據(jù)模型期望節(jié)點(diǎn)層次或一個(gè)列表或多個(gè)列表或圖表的情境下,預(yù)處理階段可以用于再創(chuàng)建目標(biāo)對象組織。圖7是根據(jù)本發(fā)明特定實(shí)施例,用于確定當(dāng)前目標(biāo)類型的目標(biāo)類型得分的流程圖(圖4的步驟402)。在步驟700,處理開始于對于確定最佳匹配的源類型而得到處理的目標(biāo)模型TM的當(dāng)前Target Type (目標(biāo)類型)。在步驟704,處理目標(biāo)類型的第一組屬性。目標(biāo)類型的該第一組屬性特別表示用戶接口組件允許生成顯示所需要的屬性。這些屬性可以從存儲(chǔ)在目標(biāo)模型或?qū)傩孕畔⒋鎯?chǔ)器109中的信息中被識(shí)別。該第一組的屬性隨后被稱為“強(qiáng)制”目標(biāo)屬性。在步驟704,生成屬性得分?jǐn)?shù)據(jù)結(jié)構(gòu),例如矩陣M。屬性得分矩陣M存儲(chǔ)源類型/對象中的源屬性和目標(biāo)類型T中的每個(gè)強(qiáng)制屬性之間的每個(gè)對應(yīng)關(guān)系的得分值。通過應(yīng)用該匹配規(guī)則組114計(jì)算每個(gè)對的得分值。根據(jù)本發(fā)明,應(yīng)用該匹配規(guī)則組以保證每個(gè)對{源屬性,目標(biāo)屬性}都將具有非零得分值。例如,如果存在m個(gè)目標(biāo)強(qiáng)制屬性和η個(gè)可用源屬性,則矩陣M可以生成為m行(一行表示每個(gè)強(qiáng)制對象屬性)的列表,每行都有η列(一列表示每個(gè)源對象屬性)。然后矩陣中的每個(gè)單元都將識(shí)別一個(gè)目標(biāo)屬性,一個(gè)源屬性,并為在該單元中識(shí)別的該屬性對提供一個(gè)得分值。作為步驟704的結(jié)果,屬性得分矩陣M包括(目標(biāo)類型的)目標(biāo)屬性和(源類型的)源屬性的不同對的得分值。
這樣獲得的矩陣M然后被用于測試表示候選目標(biāo)類型的組合。每個(gè)組合將與每個(gè)具有源數(shù)據(jù)類型(對象)的唯一源屬性的每個(gè)目標(biāo)強(qiáng)制屬性相關(guān)聯(lián)。因此,每個(gè)當(dāng)前組合都見包括由目標(biāo)強(qiáng)制屬性和源屬性構(gòu)成的對(對的數(shù)量與目標(biāo)強(qiáng)制屬性一樣多)。針對每個(gè)已測試組合Ci,然后通過使用屬性得分矩陣M計(jì)算相應(yīng)的組合得分作為與每個(gè)對相關(guān)聯(lián)的得分的總和。對應(yīng)于目標(biāo)模型中的第二組屬性(“可選”屬性)的輔助得分值可以被加到當(dāng)前組合得分上。對應(yīng)于提供最佳組合得分的組合的目標(biāo)類型將作為用于已考慮源類型的目標(biāo)類型候選而返回(用于步驟405處理)。步驟706至725示出基于在步驟704獲得的屬性得分矩陣M的測試組合的這個(gè)階段的特定實(shí)施例。在步驟706,通過減少得分值首先逐行,然后逐列開始拓?fù)浞诸悓傩缘梅志仃嘙。通過得分分類矩陣的這個(gè)步驟目的在于限制組合測試階段的計(jì)算成本。更具體而言,矩陣中的每一行都可以通過減少得分進(jìn)行分類,從而用于給定強(qiáng)制源屬性的行中的第一條目對應(yīng)于與其最佳匹配的源屬性。然后可以通過減少得分分類列(例如第一列得分的遞減序列,或列得分的平均數(shù))。因此,在分類矩陣M之后,該矩陣的第一行將對應(yīng)于已經(jīng)找到最佳匹配的行。在步驟708,為目標(biāo)類型中的第二組屬性計(jì)算輔助屬性得分Sc0re_0p。第二組屬性(“可選”屬性)表示用戶接口組件管理器107所不需要的屬性。這些屬性可以在目標(biāo)數(shù)據(jù)模型112中得到識(shí)別??蛇x地,模型適配子系統(tǒng)101可以維持或預(yù)確定第二組屬性。在步驟708,只要可選屬性和源屬性之間的匹配得分大于一個(gè)預(yù)定義閾值,則目標(biāo)類型中的每個(gè)可選屬性匹配于源類型或?qū)ο蟮脑磳傩浴S蓾M足該條件的匹配得分計(jì)算輔助屬性得分Score_op (下面將結(jié)合圖9以更具體的細(xì)節(jié)描述步驟708)。在步驟710,對包括目標(biāo)強(qiáng)制屬性和(源類型/對象的)源屬性的對Ci的所有可能的組合開始迭代。每個(gè)組合關(guān)聯(lián)每個(gè)強(qiáng)制目標(biāo)屬性和已考慮源類型的唯一源屬性。計(jì)數(shù)器i被初始化為所述組合的計(jì)數(shù)器。特別地,每個(gè)組合可以由(步驟706中分類的)屬性得分矩陣M的行排列通過遞減的得分順序得以確定。根據(jù)圖7中示出的實(shí)施例,行排列(組合)被迭代至定義組合嘗試的最大數(shù)量的最大閾值Tmax。該最大閾值在實(shí)踐中永遠(yuǎn)不會(huì)達(dá)到。例如,給定目標(biāo)屬性{begin, end}和源屬性{start, stop, length},可能的行排列包括如下組Cl-{begin- > start, end- > stop},C2-{begin- > start, end- > length},C3_{begin- > stop, end- > start},C4-{begin- > stop, end- > length},C5_ {begin- > length, end- > start},andC6_ {begin- > length, end- > stop}}.排列迭代數(shù)量的限制可能對于涉及重要數(shù)量的強(qiáng)制屬性的目標(biāo)數(shù)據(jù)模型特別有 利,從而可能生成很多組合。通過根據(jù)遞減得分提前分類矩陣的行和列,可能首先找到最佳可能的匹配,由此優(yōu)化處理。在步驟712,針對當(dāng)前組合Ci,然后匹配得分是通過使用屬性得分矩陣M中維持的信息將對應(yīng)于組合對的得分值求和而計(jì)算的Score_Ci。在步驟714,組合匹配得分Score_Ci然后被加到為可選屬性確定的輔助屬性得分Score_op上。在步驟716,當(dāng)前組合被提交給用戶接口組件管理器107。用戶接口組件管理器107可以基于多種原因接受或拒絕建議的組合。例如,在檢查存儲(chǔ)在源數(shù)據(jù)模型中的實(shí)際數(shù)據(jù)和確定其將導(dǎo)致在不適合甘特顯示的開始之前結(jié)束的活動(dòng)之后,甘特組件可以拒絕組合{begin->stop, end_>start}。如果接受該組合,則在步驟718遞增可接受的組合計(jì)數(shù)器j以計(jì)算可接受組合的數(shù)量。在步驟720,確定當(dāng)前組合是否提供比為之前測試的組合計(jì)算的組合得分更好的組合得分Score_Ci。如果該組合具有可選的組合得分Sc0re_Ci,則存儲(chǔ)當(dāng)前組合得分用于然后在步驟724與隨后組合進(jìn)行比較(用于步驟720的隨后迭代)。然后實(shí)施步驟721以處理下一個(gè)組合。如果用戶接口組件在步驟718拒絕了該組合或者如果該組合得分Sc0re_Ci未被確定為高于之前在步驟720計(jì)算的得分,則也實(shí)施步驟 721。在處理下一個(gè)組合之前,步驟721提前檢查已經(jīng)計(jì)算為j的“可接受”組合的數(shù)量是否已經(jīng)達(dá)到預(yù)定義閾值Tacc或者檢查組合的數(shù)量i是否已經(jīng)達(dá)到允許排列的最大數(shù)量(Tmax)。如果達(dá)到了這些閾值之一,則步驟725返回已測試組合中提供最佳組合得分的組合(該組合在已測試組合中具有更高的組合得分)作為匹配目標(biāo)類型候選(在圖4的步驟405中使用)。如果步驟721中的條件都沒有得到滿足,通過重復(fù)步驟704至724處理下一個(gè)組
入
口 ο因此,本發(fā)明可以以兩種途徑為給定源類型/對象確定目標(biāo)類型候選-在第一種途徑中,為目標(biāo)類型(targetType)中的“強(qiáng)制”目標(biāo)屬性確定匹配并且評分該匹配對(盡管該匹配并不精確);瀏覽過的方案的數(shù)量可以封頂?shù)綄?shí)踐中不能達(dá)到的合理高的閾值;-在第二途徑中,可選屬性得到處理,但是其僅考慮是否找到了匹配的滿意等級。
圖8是用于為第一組屬性(強(qiáng)制屬性)確定屬性得分矩陣(圖7的步驟704)的流程圖。在步驟800,在目標(biāo)類型的第一屬性組中針對每個(gè)屬性TA,處理開始。針對第一屬性組的當(dāng)前目標(biāo)屬性TA,選擇源類型SourceType或源對象sourceObject中的每個(gè)屬性SA。步驟802作為匹配得分的組合計(jì)算該對{SA, TA}的得分值,其包括作為該對{SA,TA}上的名稱匹配規(guī)則組的結(jié)果獲得的第一匹配得分nameMatch(SA,TA)和作為該對{SA,TA}上的類型匹配規(guī)則組的結(jié)果獲得的第二匹配得分typeMatch(SA7TA)0特別地,該得分值被計(jì)算為得分=nameMatch(SA, TA) +typeMatch (SA, TA)。步驟804將這樣獲得的得分加到與所述目標(biāo)屬性和所述源屬性相關(guān)聯(lián)的屬性源矩陣中。為源類型中的其它源屬性重復(fù)步驟802至804,直到所有源屬性已經(jīng)被處理(步驟·806)。當(dāng)所有源屬性已經(jīng)被處理時(shí),在步驟808處理第一目標(biāo)屬性組中的下一個(gè)目標(biāo)屬性。當(dāng)?shù)谝荒繕?biāo)屬性組中的所有目標(biāo)屬性都已被處理時(shí)所述處理結(jié)束。然后在步驟810返回屬性得分矩陣。因此,在多數(shù)情況下,模型匹配單元111用于響應(yīng)于匹配規(guī)則組的應(yīng)用而返回正得分結(jié)果。因此,可以為任意源數(shù)據(jù)類型找到目標(biāo)模型中的匹配數(shù)據(jù)類型,同時(shí)以透明和容錯(cuò)的方式由用戶接口組件108保證正確的表示。圖9是用于為第二組屬性(可選屬性)確定輔助屬性得分Score_op (圖7的步驟716)的流程圖。在步驟900,在目標(biāo)類型的第二屬性組中針對每個(gè)屬性TA,處理開始。類似于圖8示出的方法,針對第二屬性組的當(dāng)前目標(biāo)屬性TA,選擇源類型SourceType或源對象sourceObject中的每個(gè)屬性SA,并且步驟902作為匹配得分的組合計(jì)算該對{SA,TA}的得分值,其包括作為該對{SA,TA}上的名稱匹配規(guī)則組的結(jié)果獲得的第一匹配得分nameMatch (SA,TA)和作為該對{SA,TA}上的類型匹配規(guī)則組的結(jié)果獲得的第二匹配得分typeMatch (SA,TA)。特別地,該對SA和TA的得分值被確定為得分=nameMatch(SA, TA) +typeMatch (SA, TA)。在步驟904,確定這樣獲得的對{SA,TA}的得分值是否高于預(yù)定義閾值。如果高,則步驟906將當(dāng)前可選屬性得分加入輔助屬性得分Sc0re_0p(最初設(shè)置為零)。在步驟908或如果步驟904的條件沒有得到滿足,則通過迭代步驟902至908處理下一個(gè)源屬性(步驟909),直到所有源屬性都被處理。當(dāng)所有源屬性都已被處理時(shí),處理第二屬性組(910)的下一個(gè)目標(biāo)屬性,直到所有目標(biāo)屬性都被處理。當(dāng)所有可選目標(biāo)屬性都已被處理時(shí),在步驟912返回輔助屬性得分Score_op。根據(jù)本發(fā)明特定實(shí)施例的模型匹配方案可以在各種情境中使用以允許生成用戶接口組件中的復(fù)雜源數(shù)據(jù)模型的表示。即使不限制這種應(yīng)用,本發(fā)明也對下列用戶接口組件而言具有優(yōu)點(diǎn)-甘特圖表/時(shí)間線,
-多數(shù)圖表類型,例如一維的圖表,包括各種類型的直方圖,2D繪圖,平行坐標(biāo)或平行直方圖可視化工具;針對這種圖表,通過點(diǎn)序列或諸如標(biāo)簽、劃分方法、顏色和尺寸的其它屬性表示目標(biāo)數(shù)據(jù)模型,-樹狀圖工具用于這種用戶接口組件的目標(biāo)模型通常涉及層次、尺寸屬性、顏色屬性和排序?qū)傩裕?網(wǎng)絡(luò)可視化工具,提供有涉及節(jié)點(diǎn)的目標(biāo)模型和通過各種類型圖形繪圖算法位于平面上的連接。圖10表示在甘特圖表類型的用戶接口組件中待顯示的OPL語言中的元數(shù)據(jù)模型的實(shí)例部分。該元數(shù)據(jù)模型通過最優(yōu)化應(yīng)用得以生成。如圖10所示,該源數(shù)據(jù)模型部分具有甘特圖表兼容的結(jié)構(gòu)。 “anlntervalArray” 兀素被定義為兩個(gè)值〈10,20,10,“Interval 1”,A,10> 和〈15,18,5,“Interval 2”,1,20>的陣列,每個(gè)值都是一個(gè)“Mylnterval”結(jié)構(gòu)的實(shí)例。根據(jù)本發(fā)明的實(shí)施例提供的該方案在圖11中示出。這將允許在目標(biāo)圖形工具(用戶接口組件)上顯不 “anlntervalArray,,兀素選擇“示出數(shù)據(jù)視圖……”連接為“anlntervalArray”元素打開一個(gè)數(shù)據(jù)視圖,具有兩部分I.標(biāo)準(zhǔn)的陣列網(wǎng)格視圖,對圖12中示出的所有陣列元素通用。也可能顯示陣列結(jié)構(gòu)兼容甘特圖表的信息。2.也顯示甘特圖表,因?yàn)槿鐖D13所示,該系統(tǒng)將“anlntervalArray”識(shí)別為兼容。在集成開發(fā)環(huán)境(IDE)中,例如Eclipse開發(fā)環(huán)境中,本發(fā)明可以允許IDE用戶從高級可視化組件中獲益以在設(shè)計(jì)和開發(fā)的原型階段期間瀏覽其數(shù)據(jù)結(jié)構(gòu)。開發(fā)者可以查看和管理其應(yīng)用數(shù)據(jù)之前,他們不需要完成其設(shè)計(jì)或創(chuàng)建特定的模型適配器。因此本發(fā)明允許用戶接口組件將可以發(fā)現(xiàn)的任意數(shù)據(jù)模型作為輸入(即構(gòu)成模型的對象可以通過自省被檢查并且其屬性和值可以被查詢)并自省源模型以允許顯示并僅與匹配所述接口的兼容目標(biāo)模型的項(xiàng)的子集進(jìn)行交互。本發(fā)明方案依賴使透明生成源數(shù)據(jù)模型的顯示成為可能的“部分”匹配方案,即使在源數(shù)據(jù)模型和目標(biāo)數(shù)據(jù)模型之間沒有找到完全匹配,而無需糾正階段或用戶輸入。通過本發(fā)明,不需要提供從一個(gè)數(shù)據(jù)模型到另一數(shù)據(jù)模型的完整匹配,或返回非常接近數(shù)據(jù)結(jié)構(gòu)之間完美匹配的匹配。此外,不需要用戶干預(yù)以解決錯(cuò)誤匹配并且當(dāng)在目標(biāo)模型和源模型之間具有較大差異時(shí)不返回錯(cuò)誤消息。反而,在多數(shù)情況下其為匹配提供用戶接口組件上的滿意顯示。根據(jù)本發(fā)明的實(shí)施例,即使一些對象不能匹配目標(biāo)模型,仍將顯示源模型。通過本發(fā)明,用戶接口組件可以提供復(fù)雜用戶互動(dòng)和可視化,并且可以連接到部分匹配組件需求的任意數(shù)據(jù)模型。本發(fā)明可以采取完全硬件環(huán)境,完全軟件環(huán)境或既包括硬件也包括軟件元素的實(shí)施例的形式。特別地,應(yīng)該注意的是,當(dāng)一些附圖以營建的形式示出時(shí),恰好等效的影響也可以通過軟件取得。在優(yōu)選實(shí)施例中,本發(fā)明被補(bǔ)充以軟件,其包括但不限于固件,常駐軟件,微代碼等。此外,本發(fā)明還可以采取可以從提供由計(jì)算機(jī)或任意指令執(zhí)行系統(tǒng)使用或與其相關(guān)聯(lián)的程序代碼的計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)存取的計(jì)算機(jī)程序產(chǎn)品的形式。用了進(jìn)行描述,計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)可以是可以包含,存儲(chǔ),通信,傳播或運(yùn)輸由指令執(zhí)行系統(tǒng),裝置或設(shè)備使用或與其相關(guān)聯(lián)的程序的任意裝置。該介質(zhì)可以使電子的,磁的,光學(xué)的,電磁的,紅外的或半導(dǎo)體系統(tǒng)(裝置或設(shè)備)或傳播介質(zhì)。計(jì)算機(jī)可讀介質(zhì)的實(shí)例包括半導(dǎo)體或固態(tài)存儲(chǔ)器,磁帶,可移動(dòng)計(jì)算機(jī)硬盤,隨機(jī)存取存儲(chǔ)器(RAM),制度存儲(chǔ)器(R0M),剛性磁盤和光盤。光盤的當(dāng)前實(shí)例包括光碟——只讀存儲(chǔ)器(CD-ROM),光碟——讀/寫(CD-R/W)和DVD。適于存儲(chǔ)和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)將包括通過系統(tǒng)總線直接或間接耦合存儲(chǔ)器元件的至少一個(gè)處理器。該存儲(chǔ)器元件可以包括在實(shí)際執(zhí)行所述程序代碼期間采用的本地存儲(chǔ)器,大容量存儲(chǔ)器和提供至少一些程序代碼的臨時(shí)存儲(chǔ)的高速緩沖存儲(chǔ)器,從而減少在執(zhí)行期間必須從大容量存儲(chǔ)器提取代碼的次數(shù)。輸入/輸出或I/O設(shè)備(包括但不限于鍵盤,顯示器,定點(diǎn)設(shè)備等)既可以直接也可 以通過干預(yù)I/o控制器耦合所述系統(tǒng)。也可以將網(wǎng)絡(luò)適配器耦合到系統(tǒng)以使得數(shù)據(jù)處理系統(tǒng)可以通過干預(yù)私人或公共網(wǎng)絡(luò)耦合其它數(shù)據(jù)處理系統(tǒng)或遠(yuǎn)程打印機(jī)或存儲(chǔ)器設(shè)備。調(diào)制解調(diào)器,電纜調(diào)制解調(diào)器和以太網(wǎng)卡只是網(wǎng)絡(luò)適配器當(dāng)前可用的幾種類型。展示E
權(quán)利要求
1.一種適配源數(shù)據(jù)模型以用于在用戶接口組件中顯示的方法,所述源數(shù)據(jù)模型包括源數(shù)據(jù)類型的集合,每個(gè)數(shù)據(jù)類型包括一組源屬性,所述用戶接口組件與包括目標(biāo)數(shù)據(jù)類型的集合的目標(biāo)數(shù)據(jù)模型相關(guān)聯(lián),每個(gè)目標(biāo)數(shù)據(jù)類型包括一組目標(biāo)屬性,其中該方法包括 a.為每個(gè)源數(shù)據(jù)類型,在所述目標(biāo)模型中的所述目標(biāo)數(shù)據(jù)類型中確定匹配目標(biāo)數(shù)據(jù)類型,并使用綁定數(shù)據(jù)結(jié)構(gòu)將所述源數(shù)據(jù)類型綁定至所述目標(biāo)數(shù)據(jù)類型, b.基于所述綁定數(shù)據(jù)結(jié)構(gòu)為所述用戶接口組件生成所述源數(shù)據(jù)模型的顯示, 其中所述步驟a包括 1.為該目標(biāo)數(shù)據(jù)模型中的每個(gè)目標(biāo)數(shù)據(jù)類型,在所述目標(biāo)類型的屬性中選擇第一組目標(biāo)屬性,并基于預(yù)定義的匹配規(guī)則組確定在所述第一組目標(biāo)屬性中的目標(biāo)屬性和所述源類型中的每個(gè)源屬性之間的每個(gè)對應(yīng)關(guān)系的得分值, .基于為所述第一組目標(biāo)屬性的屬性計(jì)算的得分值為所述目標(biāo)類型確定目標(biāo)類型得分,并且 iii.基于與所述目標(biāo)模型的目標(biāo)類型相關(guān)聯(lián)的目標(biāo)類型得分為所述源類型確定所述匹配目標(biāo)類型。
2.權(quán)利要求I的方法,其中為所述目標(biāo)類型確定目標(biāo)類型得分的所述步驟ii由測試組合來執(zhí)行,每個(gè)組合包括該第一組屬性中的每個(gè)目標(biāo)屬性和所述源數(shù)據(jù)類型的源屬性之間的對應(yīng)關(guān)系,并通過對形成每個(gè)組合的對應(yīng)關(guān)系的得分值求和來為該組合計(jì)算組合得分。
3.權(quán)利要求2的方法,其中計(jì)算組合得分的所述步驟還包括事先確定與所述目標(biāo)類型中的第二組目標(biāo)屬性相關(guān)聯(lián)的輔助屬性得分,并將所述輔助屬性得分加到所述得分值總和。
4.權(quán)利要求3的方法,其中為所述第二組目標(biāo)屬性確定所述輔助屬性得分的所述步驟包括 -基于預(yù)定義的匹配規(guī)則組確定在所述第二組目標(biāo)屬性中的目標(biāo)屬性和所述源數(shù)據(jù)模型中的每個(gè)源屬性之間的每個(gè)對應(yīng)關(guān)系的匹配得分值,和 -作為為大于預(yù)定義閾值的該第二組屬性確定的匹配得分值的總和計(jì)算該輔助屬性得分。
5.前述權(quán)利要求2-4中任一項(xiàng)的方法,其中步驟ii的所述目標(biāo)類型得分對應(yīng)于為所述組合獲得的最好組合得分。
6.前述權(quán)利要求2-5中任一項(xiàng)的方法,其中所述步驟i包括在矩陣數(shù)據(jù)結(jié)構(gòu)中存儲(chǔ)該得分值。
7.權(quán)利要求6的方法,其中步驟i還包括按照得分值拓?fù)浞诸悶樗瞿繕?biāo)類型獲得的該矩陣。
8.權(quán)利要求7的方法,其中每個(gè)組合按照得分順序?qū)?yīng)于所述矩陣的行排列。
9.前述權(quán)利要求2-8中任一項(xiàng)的方法,其中還包括向該用戶接口組件提交每個(gè)組合,并且如果對應(yīng)的目標(biāo)類型被該用戶接口組件拒絕則取消選定該對應(yīng)的目標(biāo)類型。
10.前述權(quán)利要求中任一項(xiàng)的方法,其中所述匹配規(guī)則組包括名稱匹配規(guī)則的子集和/或類型匹配規(guī)則的子集,以預(yù)定義的順序連續(xù)應(yīng)用每個(gè)子集中的匹配規(guī)則以提供正匹配得分值。
11.一種包括指令的計(jì)算機(jī)程序,當(dāng)該計(jì)算機(jī)程序在合適的計(jì)算機(jī)設(shè)備上執(zhí)行時(shí),該指令用于實(shí)施根據(jù)權(quán)利要求1-10中任一項(xiàng)的方法的步驟。
12.—種計(jì)算機(jī)可讀介質(zhì),在其上編碼有根據(jù)權(quán)利要求11的計(jì)算機(jī)程序。
13.—種系統(tǒng),其包括用于執(zhí)行根據(jù)權(quán)利要求1-10中任一項(xiàng)的方法的步驟的裝置。
全文摘要
本發(fā)明提供一種生成在與目標(biāo)數(shù)據(jù)模型相關(guān)聯(lián)的用戶接口組件上進(jìn)行源數(shù)據(jù)模型的顯示的方法。該源數(shù)據(jù)模型和該目標(biāo)數(shù)據(jù)模型包括數(shù)據(jù)類型(類/對象)的集合,每個(gè)數(shù)據(jù)類型包括一組命名和類型屬性。該方法包括a.為該源數(shù)據(jù)模型的每個(gè)源數(shù)據(jù)類型,在該目標(biāo)數(shù)據(jù)模型的所述目標(biāo)類型中確定匹配目標(biāo)類型,b.將所述源類型鏈接至所述匹配目標(biāo)類型,c.用源類型和目標(biāo)類型之間的所述鏈接生成所述源數(shù)據(jù)模型的顯示。步驟a包括為該目標(biāo)數(shù)據(jù)模型中的每個(gè)目標(biāo)類型,基于預(yù)定義的匹配規(guī)則組確定存儲(chǔ)用于所述目標(biāo)屬性的第一屬性集合中的每個(gè)目標(biāo)屬性和所述源數(shù)據(jù)模型的每個(gè)源屬性之間的每個(gè)對應(yīng)關(guān)系的得分值的屬性得分矩陣,基于該屬性得分矩陣確定該目標(biāo)類型的目標(biāo)類型得分,并且基于與該目標(biāo)模型的目標(biāo)類型相關(guān)聯(lián)的目標(biāo)類型得分為該源類型確定匹配目標(biāo)類型。
文檔編號(hào)G06F9/44GK102906697SQ201180025482
公開日2013年1月30日 申請日期2011年4月21日 優(yōu)先權(quán)日2010年6月3日
發(fā)明者F·德爾霍姆, T·鮑德爾 申請人:國際商業(yè)機(jī)器公司