基于模型驅(qū)動的利用反射機(jī)制進(jìn)行動態(tài)交互的系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機(jī)信息技術(shù)領(lǐng)域,尤其涉及一種基于模型驅(qū)動的利用反射機(jī)制進(jìn)行動態(tài)交互的系統(tǒng)及方法。
【背景技術(shù)】
[0002]組件是對數(shù)據(jù)和方法的簡單封裝。在計算機(jī)技術(shù)領(lǐng)域,組件之間的交互技術(shù)已經(jīng)發(fā)展了很多年。組件的交互技術(shù)已經(jīng)從靜態(tài)交互發(fā)展到動態(tài)交互,但是通常因為組件本身以及組件的實現(xiàn)方式和實現(xiàn)語言的不同而導(dǎo)致組件間的交互區(qū)別很大,而在現(xiàn)有客戶端界面中,組件的調(diào)用和交互方式通常被固化在程序邏輯中,這又造成編寫組件的代碼非常繁瑣,組件的重用性低且組件之間的依賴性高的問題。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的目的在于提供一種基于模型驅(qū)動的利用反射機(jī)制進(jìn)行動態(tài)交互的系統(tǒng)及方法,從而解決現(xiàn)有技術(shù)中存在的前述問題。
[0004]為了實現(xiàn)上述目的,本發(fā)明所述基于模型驅(qū)動的利用反射機(jī)制進(jìn)行動態(tài)交互的系統(tǒng),所述系統(tǒng)包括:
[0005]一個組件管理容器和與所述組件管理容器關(guān)聯(lián)的多個組件;
[0006]每個所述組件的元數(shù)據(jù)信息和與其他組件之間的調(diào)用邏輯關(guān)系存儲在所述組件管理容器中;
[0007]所述組件管理容器負(fù)責(zé)產(chǎn)生每個組件的組件實例,并根據(jù)每個組件的調(diào)用邏輯關(guān)系查找和創(chuàng)建組件實例;在組件間交互邏輯和組件元數(shù)據(jù)信息描述的基礎(chǔ)上,動態(tài)調(diào)用和組織與組件實例相關(guān)的組件中存儲的方法。
[0008]優(yōu)選地,所述組件管理容器包括:組件邏輯控制模塊、組件管理中心、事件管理器、組件生成器、組件包裝器;
[0009]組件邏輯控制模塊,根據(jù)組件間交互邏輯和驅(qū)動模型,獲取與發(fā)出事件觸發(fā)請求的組件A有邏輯關(guān)系的組件實例;
[0010]組件管理中心,用于讀取所述組件A的元數(shù)據(jù)信息和與所述組件A存在邏輯關(guān)系的組件信息;
[0011]事件管理器,用于接收所述組件A發(fā)出的事件觸發(fā)請求并獲取所述組件A中觸發(fā)相應(yīng)事件的參數(shù)信息;
[0012]所述參數(shù)信息包括:方法和參數(shù);
[0013]組件生成器,根據(jù)組件元數(shù)據(jù)信息生成每個組件的組件實例;
[0014]組件包裝器,用于包裝與所述組件A有邏輯關(guān)系且產(chǎn)生所述事件觸發(fā)請求所觸發(fā)的事件類型的組件所產(chǎn)生的組件實例。
[0015]更優(yōu)選地,所述驅(qū)動模型包括所有組件驅(qū)動唯一序列號表、組件元數(shù)據(jù)管理信息表和組件方法管理表,所述所有組件驅(qū)動唯一序列號表、所述組件元數(shù)據(jù)管理信息表和所述組件方法管理表通過組件的唯一序列號關(guān)聯(lián)。
[0016]本發(fā)明所述基于模型驅(qū)動的利用反射機(jī)制進(jìn)行動態(tài)的交互方法,該方法包括:
[0017]SI,事件管理器接收組件A發(fā)出的事件觸發(fā)請求;
[0018]S2,在所述驅(qū)動模型的基礎(chǔ)上,組件管理中心獲取與所述組件A有邏輯關(guān)系且與所述事件觸發(fā)請求觸發(fā)的事件類型相對應(yīng)的組件的信息;
[0019]S3,判斷所述組件管理容器內(nèi)部是否存儲與所述組件相對應(yīng)的組件實例,如果存在,則進(jìn)入S4 ;如果不存在,則進(jìn)入S5 ;
[0020]S4,組件生成器獲取所述組件實例,組件包裝器反射調(diào)用與所述組件實例相相關(guān)聯(lián)的組件中存儲的方法;
[0021]S5,組件生成器調(diào)用產(chǎn)生所述組件實例的方法,創(chuàng)建所述組件實例,組件包裝器依據(jù)所述組件實例反射調(diào)用與所述組件實例相關(guān)聯(lián)的組件中存儲的方法。
[0022]優(yōu)選地,在步驟SI之前還存在以下步驟:
[0023]組件管理容器中預(yù)先存儲與所述組件管理容器連接的各個組件的描述信息和各個組件的邏輯關(guān)系信息,同時,組件管理容器中的組件邏輯控制模塊依據(jù)組件邏輯關(guān)系信息和組件描述信息產(chǎn)生組件實例,并將所述組件實例存儲在組件容器的存儲單元中。
[0024]優(yōu)選地,步驟SI具體按照下述方法實現(xiàn):
[0025]Al,所述事件管理器捕獲組件A發(fā)出的事件觸發(fā)請求;
[0026]A2,從組件A中,獲取與觸發(fā)事件類型相關(guān)聯(lián)的方法及參數(shù);
[0027]A3,將所述事件觸發(fā)請求觸發(fā)的事件類型和獲取的與觸發(fā)事件類型相關(guān)聯(lián)的方法及參數(shù),發(fā)送給所述組件管理中心的事件管理器。
[0028]優(yōu)選地,步驟S2具體按照下述方法實現(xiàn):
[0029]BI,所述組件管理中心中的驅(qū)動模型依據(jù)組件A的元數(shù)據(jù)信息和組件A中與觸發(fā)事件類型相關(guān)聯(lián)的方法及參數(shù),在元模型中讀取與組件A有邏輯驅(qū)動關(guān)系的組件集合和/或組件方法集合;
[0030]B2,在所述組件集合和/或組件方法集合中,依據(jù)所述事件類型查找與產(chǎn)生所述事件類型相對應(yīng)的組件;
[0031]B3,從元模型中讀取所述組件的元數(shù)據(jù)信息;
[0032]優(yōu)選地,步驟S2中,與所述事件觸發(fā)請求觸發(fā)的事件類型相對應(yīng)的組件的數(shù)量為I個或多個。
[0033]本發(fā)明的有益效果是:
[0034]本發(fā)明提出了基于模型驅(qū)動的利用反射機(jī)制進(jìn)行動態(tài)交互方法,它不需要顯性硬編碼組件之間的調(diào)用和交互,而是通過組件管理容器按照組件元數(shù)據(jù)信息進(jìn)行查找和創(chuàng)建組件,把組件之間的直接交互通過組件管理容器調(diào)用來進(jìn)行,這種實現(xiàn)方法簡單,解決組件構(gòu)件之間的非侵入性和組件解耦等問題,大大降低了組件之間的依賴性和硬編碼,減少了代碼集成工作量,在項目的具體實施中可得到了非常好的效果。
【附圖說明】
[0035]圖1是組件管理容器生成組件實例的原理示意圖;
[0036]圖2是組件管理容器的結(jié)構(gòu)示意圖;
[0037]圖3是基于模型驅(qū)動的利用反射機(jī)制進(jìn)行動態(tài)交互方法流程示意圖;
[0038]圖4是所有組件驅(qū)動唯一序列號表不意圖;
[0039]圖5是組件元數(shù)據(jù)管理信息表示意圖;
[0040]圖6是組件方法管理表示意圖;
[0041]圖7是現(xiàn)有組件調(diào)用技術(shù)中組件靜態(tài)調(diào)用模型示意圖;
[0042]圖8是本發(fā)明組件調(diào)用模型示意圖。
【具體實施方式】
[0043]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的【具體實施方式】僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0044]實施例
[0045]參照圖1和圖2,本實施例中所述基于模型驅(qū)動的利用反射機(jī)制進(jìn)行動態(tài)交互的系統(tǒng),所述系統(tǒng)包括:一個組件管理容器和與所述組件管理容器關(guān)聯(lián)的多個組件;每個所述組件的元數(shù)據(jù)信息和與其他組件之間的調(diào)用邏輯關(guān)系存儲在所述組件管理容器中;所述組件管理容器負(fù)責(zé)產(chǎn)生每個組件的組件實例,并根據(jù)每個組件的調(diào)用邏輯關(guān)系查找和創(chuàng)建組件實例;在組件間交互邏輯和組件元數(shù)據(jù)信息描述的基礎(chǔ)上,動態(tài)調(diào)用和組織與組件實例相關(guān)的組件中存儲的方法。關(guān)于組件管理容器更詳細(xì)的說明如下:
[0046]所述組件管理容器包括:組件邏輯控制模塊、組件管理中心、事件管理器、組件生成器、組件包裝器;
[0047](I)、組件邏輯控制模塊,根據(jù)組件間交互邏輯和驅(qū)動模型,獲取與發(fā)出事件觸發(fā)請求的組件A有邏輯關(guān)系的組件實例;所述驅(qū)動模型包括所有組件驅(qū)動唯一序列號表、組件元數(shù)據(jù)管理信息表和組件方法管理表,所述所有組件驅(qū)動唯一序列號表、所述組件元數(shù)據(jù)管理信息表和所述組件方法管理表通過組件的唯一序列號關(guān)聯(lián);
[0048]其中,所述所有組件驅(qū)動唯一序列號表包括每個組件的唯一序列號、唯一驅(qū)動序列號、該組件可生成的組件實例ID、目標(biāo)組件實例的ID、該組件的驅(qū)動方式和驅(qū)動事件的類型,參照圖4。
[0049]所述組件元數(shù)據(jù)管理信息表包括:每個組件的唯一序列號、組件名稱、實現(xiàn)類型、運(yùn)行環(huán)境、分類、開放語言、組件版本、開發(fā)者、開發(fā)日期、是否可視、組件的長寬高和組件地址,參照圖5。
[0050]所述組件方法管理表包括:每個組件的唯一序列號、組件中存儲的方法ID,方法的名稱、對方法的描述、是否返回值及返回值的類型,參照圖6。
[0051](2)、組件管理中心,用于讀取所述組件A的元數(shù)據(jù)信息和與所述組件A存在邏輯關(guān)系的組件信息。
[0052](3)、事件管理器,用于接收所述組件A發(fā)出的事件觸發(fā)請求并獲取所述組件A中觸發(fā)相應(yīng)事件的參數(shù)信息;所述參數(shù)信息包括觸發(fā)相應(yīng)時間的方法和參數(shù)。
[0053](4)、組件生成器,根據(jù)組