[發明專利]一種組件構建方法和裝置有效
| 申請號: | 200910091882.6 | 申請日: | 2009-09-01 |
| 公開(公告)號: | CN101639775A | 公開(公告)日: | 2010-02-03 |
| 發明(設計)人: | 何冠宇 | 申請(專利權)人: | 用友軟件股份有限公司 |
| 主分類號: | G06F9/44 | 分類號: | G06F9/44 |
| 代理公司: | 北京市隆安律師事務所 | 代理人: | 權鮮枝 |
| 地址: | 100094北京*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 組件 構建 方法 裝置 | ||
1.一種組件構建方法,其特征在于,該方法包括:
A、確定循環依賴環路中作為切割點的第一組件;
B、為作為切割點的第一組件創建對應的臨時組件;
C、利用第一組件對應的臨時組件,構建循環依賴環路中依賴于第一組件 的第二組件;
D、從第二組件開始,按照被依賴關系依次構建循環依賴環路中的其他組 件,直至第一組件構建完成;
E、利用第一組件更新第二組件的構建信息。
2.根據權利要求1所述的方法,其特征在于,所述步驟A包括:
在一個構建線程中,在每一個組件被請求構建時,判斷該組件是否是第一 次被請求構建,如果是第一次被請求構建,則繼續判斷該組件是否存在依賴的 組件,如果存在,則請求構建該依賴的組件,返回步驟A;如果不是第一次被 請求構建,則確定存在循環依賴環路,并將該組件確定為循環依賴環路中作為 切割點的第一組件。
3.根據權利要求1所述的方法,其特征在于,所述步驟A包括:將循環 依賴環路中的任意一個組件確定為所述第一組件。
4.根據權利要求1所述的方法,其特征在于,
當所述依賴為創建依賴時,所述步驟E包括:遍歷第二組件的所有字段, 使用第一組件替換遍歷到的每一個所述臨時組件;
當所述依賴為屬性依賴時,所述步驟E包括:以第一組件作為參數,調 用第二組件的屬性設置方法,把第二組件中的依賴屬性的值從所述臨時組件替 換為第一組件。
5.根據權利要求4所述的方法,其特征在于,該方法進一步包括:根據 依賴關系的特點所需要的補償邏輯,預先設置針對創建依賴的第一類型回調 函數和針對屬性依賴的第二類型回調函數;
在步驟B中,進一步包括:在第一組件對應的臨時組件中設置對應當前 依賴關系的回調函數注冊接口;
在步驟C中進一步包括:所述第二組件利用所述臨時組件中的回調函數 注冊接口,注冊第一類型回調函數或第二類型回調函數;
通過調用第二組件注冊的第一類型回調函數或第二類型回調函數執行所 述步驟E。
6.根據權利要求4所述的方法,其特征在于,該方法進一步包括:每一 個組件在構建時獲取了其依賴的組件,判斷獲取到的組件是否是臨時組件,如 果是臨時組件,則將所獲取的臨時組件的信息、該構建的組件的信息以及對應 的補償方式信息登記到預先設置的補償組件列表中;
第二組件利用補償組件列表中與其對應的臨時組件信息和補償方式信息, 執行所述步驟E。
7.根據權利要求4所述的方法,其特征在于,所述步驟B進一步包括: 在臨時組件中創建補償信息表;
所述步驟C進一步包括:將依賴于該臨時組件的第二組件以及其與臨時組 件的依賴關系登記在臨時組件的補償信息表中;
對登記在臨時組件的補償信息表中的第二組件,根據登記的依賴關系是創 建依賴還是屬性依賴執行所述步驟E。
8.根據權利要求1至7中任意一項所述的方法,其特征在于,
當所述第一組件以接口形式對外提供服務時,所述步驟B包括:按照動 態代理方法,產生繼承所述第一組件所有暴露的接口的類,該類不包括依賴 信息,將產生的該類作為所述第一組件對應的臨時組件;
當所述第一組件以類形式對外提供服務時,所述步驟B包括:按照二進 制代碼修改方法,產生繼承所述第一組件的類,該類不包括依賴信息,將產 生的該類作為所述第一組件對應的臨時組件。
9.根據權利要求1至7中任意一項所述的方法,其特征在于,在一個構 建線程中執行所述步驟A至步驟E;
該方法進一步包括:為當前的構建線程加一排他鎖,在當前構建線程結 束后,解除該排他鎖。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于用友軟件股份有限公司,未經用友軟件股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200910091882.6/1.html,轉載請聲明來源鉆瓜專利網。





