《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 基于XML和工作流的構件化軟件框架研究
基于XML和工作流的構件化軟件框架研究
來源:電子技術應用2011年第4期
房 莉,陳湘平,程 敏,涂文婕
空軍雷達學院 預警監視情報系,湖北 武漢430019
摘要: 基于XML技術,采用構件化設計方式,搭建了構件組裝和運行框架,并研究了基于工作流控制方式的構件動態調度策略。用戶可以在構件組裝框架下集成應用系統,并實現相應的業務功能。
中圖分類號: TP311.5
文獻標識碼: A
文章編號: 0258-7998(2011)04-0040-05
Research on frame of component-based software based on workflow and XML
Fang Li,Chen Xiangping,Cheng Min,Tu Wenjie
Department of Early Warning Surveillance Intelligence, Air Force Radar Academy, Wuhan 430019,China
Abstract: This paper built an assembling frame and a running frame for components based on XML, and studied components dynamic scheduling method. Application system can be assembled under the component assembling frame and then run under the running frame. The frame implemented components assembling like receptacle, and components can be assembled to sub modules, and then to function modules, and then to application system.
Key words : XML;workflow;component;interface testing


    現有的軟件系統多采用傳統開發方法且只針對某個具體應用開發,軟件與設備及軟件內部各模塊間耦合緊密,軟件可復用性低、可擴展性差。
    基于構件的軟件開發方法[1],其思想是使軟件能夠像硬件那樣,通過各部分的動態組裝完成整個應用系統的功能。基于構件的軟件工程CBSE(Component Based Software Engineering)逐漸成為軟件開發的主流模式[2],已成為近幾年學術界和產業界共同關注和研究的熱點。
1 構件模型
    相對于傳統對象而言,構件將抽象程度提到一個更高的層次,整個構件隱藏了具體的實現,只用接口提供服務。這樣,構件可以將底層的多個邏輯組合成高層次上的粒度更大的新構件,甚至直接封裝到一個系統中,使模塊的重用從代碼級、對象級、架構級到系統級都可能實現[3-5]。
1.1 構件模型
    為了在后期使用構件時能夠快速檢索到需要的構件,必須對構件進行分類。構件可以使用多種分類方法。本系統先將構件分為原子構件Ca和復合構件Cc兩大類,原子構件是不能再分的構件,復合構件是由原子構件或復合構件組成的構件。
    原子構件可表示為Ca=(IDa,Na,Ta,Ia,Oa,Ma,Da),其中,IDa為原子構件唯一標識;Na為原子構件名稱;Ta為原子構件類型集合(包括子類型集合),父類型和子類型用樹形結構表示;Ia為原子構件輸入接口集合(包括各接口的名稱、參數、參數類型);Oa為原子構件輸出接口集合(包括各接口的名稱、參數、參數類型);Ma為原子構件消息集合;Da為原子構件描述信息(包括構件存儲路徑、索引關鍵字、功能描述、編寫語言、作者、制作日期、版本)。
    復合構件可表示為Cc=(IDc,Nc,Tc,Ic,Oc,Mc,Dc,IDas,Ras),其中,IDc為復合構件唯一標識;Nc為復合構件名稱;Tc為復合構件類型集合(包括子類型集合),父類型和子類用樹形結構表示;Ic為復合構件輸入接口指針集合,該指針指向組成復合構件的原子構件對應輸入接口;Oc為復合構件輸出接口指針集合,該指針指向組成復合構件的原子構件對應輸出接口;Mc為復合構件消息集合;Dc為復合構件描述信息(包括構件存儲路徑、索引關鍵字、功能描述、編寫語言、作者、制作日期、版本);IDas為組成復合構件的原子構件IDa集合;Ras為組成復合構件的原子構件的連接關系。
    原子構件和復合構件又可以根據功能劃分為界面構件、通信構件、數據庫構件、業務構件等。其中,每一類構件又可細分為很多子類。構件粒度越小,復用度越高,構件耦合度越低,但構件庫中構件的數量也會隨著粒度的變小而劇增,這會給構件的檢索帶來不便。因此,應根據具體需求,把握好構件的粒度。可參考式(1)[6]:
 
1.2 基于構件的軟件開發過程
    面向構件的軟件開發過程如圖1所示。具體描述如下:

    (1)總體設計者對業務系統進行需求分析后得到功能需求和框架需求。
    (2)構件分析者根據功能需求進行構件需求分析后得到構件需求;同時框架實現者根據框架需求對系統框架進行實現。
    (3)構件實現者根據構件需求對構件進行實現,并經過嚴格測試和修改后得到合格的構件。
    (4)構件庫管理者可以將新制作的構件注冊入庫,為了能快速檢索到構件,構件入庫時必須對其信息進行精確全面的描述。本文使用XML描述構件信息,并使用XML Schema對構件描述文檔進行合法性檢驗,只有描述合法的構件才可以入庫,從而確保構件描述信息的一致性和完整性。構件庫管理者可以對構件庫中的構件進行刪除、注銷、檢索等操作。
    (5)構件組裝者根據具體需要從構件庫中檢索需要的構件,并在系統框架下進行組裝后形成應用系統,構件組裝者還負責對應用系統的測試與維護。
    (6)應用系統交付用戶使用并提出修改意見與建議,構件組裝者再根據用戶需求進行修改。
2 基于構件的軟件框架
    面向構件的軟件開發過程中,構件組裝和運行需要特殊的環境,這種特殊的運行環境稱為框架。一個框架由一些規則、建議和習慣組成,它們從構件的角度定義了一個系統結構,并定義了系統的各組成部分之間是如何通信和實現互操作的。因此,設計框架時,必須自己定義構件及框架的規范,使用者只有遵循這些規范,才能將構件集成到框架中。本系統框架包括構件組裝框架和構件運行框架兩部分,這兩個框架由系統框架管理器管理,以確保系統在某一時刻,只能處于其中一個框架下。系統處于構件組裝框架時,可實現構件組裝、功能模塊組裝、應用系統集成、應用系統修改、應用系統功能擴展等功能。系統處于運行框架時,能夠完成相應的業務處理功能,但不能對其進行配置。基于構件的軟件框架結構如圖2所示。
2.1 構件組裝框架
     傳統的構件組裝大多使用代碼方式調用構件接口,此方式比較復雜。本框架提供一種圖形化的構件組裝界面,開發者可以輕松高效地集成新的應用系統或對已有系統進行擴展。
    如圖2所示,構件組裝框架主要包括構件制作工具、構件測試工具、構件庫管理工具、構件組裝工具、模塊管理工具、模塊組裝工具。其中,制作工具、構件測試工具只提供簡單的構件制作和測試功能,構件實現者可以選擇市場上其他工具進行構件制作及測試;構件庫管理工具具有構件注冊、注銷、刪除、檢索等功能,模塊管理工具具有模塊注冊、修改、刪除、檢索等功能,這兩個工具實現起來相對簡單;構件組裝和模塊組裝時生成對應的XML配置文檔,通過這些XML配置文檔將構件粘合成應用系統。本文使用的XML配置文檔主要包括:(1)構件描述文檔:對構件信息進行描述,以便使用構件時能方便獲取構件信息;(2)構件適配文檔:對構件接口連接關系進行描述;(3)模塊適配文檔:對模塊之間以及構件和模塊之間連接關系的描述;(4)菜單適配文檔:將菜單與對應業務模塊綁定,以便用戶點擊對應的菜單時,觸發該功能模塊運行。組裝時,通過這些XML配置文檔,將構件組裝成子模塊、功能模塊直至整個綜合測試系統,需要時查找模型中相應的標簽位置并靈活插入,這樣在對系統修改時,只需要修改相應的構件,其他部分不受影響。此方法支持系統的快速開發和修改,具有較高的靈活性和較好的可擴展性,達到了令人滿意的伸縮性。


    在組裝時,構件組裝者根據應用系統的需求檢索相關構件,如果構件庫中無此構件,則必須制作相關構件并放入構件庫中,再將檢索到的構件通過構件組裝工具進行組裝。為了不使應用系統在組裝過程中太復雜,先將構件組裝成業務構件,再將業務構件組裝成功能模塊,最后將功能模塊組裝成應用系統。
2.1.1 構件組裝
    構件組裝工具的核心是解決構件適配問題。大多數情況下,使用不同語言制作的構件都需要做某種方式的修改以便與其他構件相匹配,這個過程稱為構件適配,適配方法有白盒法、黑盒法和灰盒法。文獻[7]對三種方法的技術、特點和實現的難易程度進行了分析,結論是采用灰盒法既可以實現構件組裝的靈活性,又不至于使適配技術過于復雜。本文在對各種灰盒法的適配技術進行比較后,采用基于連接器的適配技術。此方法將構件功能的實現與其交互作用的實現相分離,從而增加構件組裝的可配置性,在現有技術條件下,它是實現構件動態組裝的有效途徑之一。
    構件連接器可以表示為CL=(IDcl,Ncl,Rcls),其中,IDcl為連接器唯一標識;Ncl為連接器名稱;Rcls為連接關系集合,包含有多個接口連接關系,每個連接關系Rcl可表示為Rcl=(IDsc,IDdc,DTc,Dc,MSc),其中,IDsc表示源構件唯一標識,IDdc表示目標構件唯一標識,DTc表示數據類型,Dc為數據的值,MSc表示消息。
2.1.2 模塊組裝
    通過模塊組裝工具可以將業務模塊組裝成功能模塊。本文使用類似連接器的方法設計模塊連接器。
    模塊連接器可以表示為:ML=(IDml,Nml,Rmls),其中,IDml為模塊連接器唯一標識;Nml為模塊連接器名稱;Rmls為連接關系集合,包含有多個模塊接口連接關系,每個連接關系Rml可表示為Rml=(IDsm,IDdm,DTm,Dm,MSm),其中,IDsm表示源模塊唯一標識,IDdm表示目標模塊唯一標識,DTm表示數據類型,Dm為數據的值,MSm表示消息。
    模塊連接器信息用XML適配文檔進行描述,其XML schema源碼如下:
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XML
Schema">
<xsd:element name=" IDml " type="xsd:string"/>
<xsd:element name=" Nml ">
<xsd:complexType>
<xsd:sequence maxOccurs="unbounded">
   <xsd:element name="Rml"type="xsd:string" maxOccurs=
"unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
2.1.3 菜單配置
    菜單描述工具的主要功能是將菜單與對應功能的模塊進行綁定,生成菜單適配文檔。本系統菜單嵌套最多為三級,菜單適配文檔可表示為FL=(IDm,IDf1,IDf2,IDf3),其中IDm表示功能模塊ID,IDfi為第i級菜單ID,i=1,2,3。其源碼可參考前文給出的模塊適配文檔XML schema源碼。
2.2 構件運行框架
    構件運行框架主要包括:構件調度器、構件實例化工具以及各種XML配置文檔解析器。其中,配置文檔解析器的功能是解析對應的XML配置文檔,其實現相對簡單,在此不作介紹。下面重點介紹構件調度器和構件實例化工具。
2.2.1 基于工作流控制的構件調度模型
    構件調度是一個動態過程,調度之前難以知道構件運行所需要的全部信息,因此很難一次性建立構件調度模型。即使建立了模型,隨著構件調度的執行,各種因素發生變化,也會使模型不能反應信息的動態變化而導致構件調度失敗。
    工作流技術[7,8]最初被廣泛應用于解決企業的項目調度問題,現已逐漸擴展到許多領域。工作流技術可以全面描述過程的信息,在運行時能夠動態監視業務過程的執行情況,因此可得到過程執行的實時信息,如:過程執行、資源利用、時間計劃情況等,并能根據這些信息生成新的調度方案。因此,工作流技術可以應用于解決構件調度問題。
    本文提出一種基于工作流技術的構件調度模型,模塊包括:過程控制模型、公共資源服務模型、消息處理模型、工作流數據模型。各模型之間的調用關系如圖3所示。

    過程控制模型是構件調度模型的核心和骨架,定義應用系統所有構件的處理流程,描述構件調度問題的約束,包括模塊之間以及組成模塊的構件之間的邏輯關系、詳細描述(執行所需的信息、資源)等。這些信息可以在構件調度過程中通過各種XML配置文檔解析器解析對應的XML配置文檔獲取。利用這些信息可以預測并找出工作流所管理的全部過程實例之間存在的資源沖突情況。通過把產生資源沖突的過程實例按照一定的規則抽取出來就可以得到項目調度的動態模型。由于過程實例的執行情況不斷變化,如某些過程實例執行結束、某些實例被終止、某些活動被掛起、某些異常出現等,因此按照一定的周期動態地從這些過程實例中所得到的過程模型也會隨之不斷更新,得到&ldquo;最新&rdquo;的調度模型,這解決了調度模型不能反映信息動態變化的問題。
    公共資源服務模型定義構件調度過程中需要的公共服務資源,如數據庫服務、打印服務等。
    消息處理模型定義構件調度過程中的事件屬性,它是一個構件向另一個構件發出的某種通知。
    工作流數據模型定義了與構件調度模型執行密切相關的數據。從某種意義上講,它確定構件執行過程狀態轉換的條件。
2.2.2 構件實例化
    構件是動態調用的,即應用系統運行前構件都沒有實例化,只有在執行過程中調用時才實例化。可以借助反射機制實現構件動態實例化。本文的構件實例化工具是在.NET平臺下用C#語言實現,其關鍵代碼如下:
private void CreateInstanceAndInvoke()
{
    ParseXML();//解析相關XML文檔
    SourceComXMLPath=COMSchedule();//構件調度器
    Assembly curAssm=Assembly.LoadFile(SourceComXMLPath);
    Type[] types=curAssm.GetTypes();
    if (isInterface)
    {
        foreach (Type type in types)
        {
            MethodInfo[] methodInfos=type.GetMethods();
            foreach (MethodInfo methodInfo in methodInfos)
            {
                ParameterInfo[] paras=
methodInfo.GetParameters();
                object[] objSourceParas=
new object[paras.Length];
                object[] objTargetParas;
                if (methodInfo.Name==strSourceComInter-
faceName)
                {
objTargetParas=methodInfo.Invoke(curAssm.CreateInstance
(type.FullName),
out objSourceParas);
                    InvokeTarget();//調用目標構件的接口
                }
            }
        }
    }
    else
    {
        &hellip;&hellip;
    }
    &hellip;
}
3 應用實例
    本文設計的基于工作流控制的構件化軟件框架已經在某型設備接口測試系統中得到應用。某型設備有多種待測接口,下面以其A/D接口測試為例說明本系統的有效性。
    圖4為對某型設備A/D、D/A接口構件劃分結果圖。構件通過構件連接器組裝成業務模塊,業務模塊通過模塊連接器組裝成功能模塊。組裝后的某型設備接口測試系統對A/D接口測試結果如圖5所示。測試中,A/D接口的通道13測試誤差大于設定誤差的最大值,未通過測試;其他接口各通道的測試誤差均小于其最大誤差要求,通過測試。

    實踐應用證明,該軟件框架可以實現基于構件的應用系統的插座式組裝,使其能從原子構件集成子模塊、功能模塊直至整個應用系統。此方法支持系統的快速開發和修改,具有較高的靈活性和較好的可擴展性,達到了令人滿意的伸縮性。
    針對目前大多數軟件模塊間耦合緊密、軟件可復用性低、可擴展性差等問題。將XML、工作流和構件技術相結合,設計了圖形化方式構件組裝框架和構件運行框架。用戶可以在構件組裝框架下集成應用系統,在構件運行框架下運行組裝的系統可以實現相應的業務功能。實踐證明,該軟件框架可以實現基于構件的應用系統的插座式組裝,使其能從原子構件集成子模塊、功能模塊直至整個應用系統。此方法支持系統的快速開發和修改,具有較高的靈活性和較好的可擴展性,避免了軟件的重復開發,節省了大量費用,達到了令人滿意的伸縮性效果。
參考文獻
[1] 楊芙清,王千祥,梅宏,等.基于復用的軟件生產技術[J].中國科學,2001,31(4):363-371.
[2] 任洪敏,錢樂秋.構件組裝及其形式化推導研究[JJ.軟件學報,2003,l4(6):1066-1074.
[3] 王強,何克清,李兵,等.基于MMF的互操作性軟構件庫管理模型的研究[J].計算機工程,2005,31(16):57-58.
[4] 吳信永,宋東,劉飛.基于構件技術的通用ATS框架設計[J].計算機測量與控制,2008,16(2):141-143.
[5] 王忠杰,徐曉飛,戰德臣.基于特征的構件模型及其規范化設計過程[J].軟件學報,2006,17(1):39-47.
[6] 徐瑋,保林,李昭原.企業信息系統業務構件研究[J]. 軟件學報,2003,14(7):1213-1220.
[7] 王志堅,費玉奎,婁淵清.軟件構件技術及其應用[M]. 北京:科學出版社,2005.
[8] 李偉平,范玉順.基于工作流的資源受限項目調度研 究[J].清華大學學報(自然科學版),2004,44(10):
1384-138.

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
国产精品嫩草99av在线| 亚洲国产欧美一区| 欧美国产日韩精品免费观看| 久久av一区| 亚洲欧美一区二区三区在线| 亚洲美女色禁图| 亚洲第一久久影院| 久久国产天堂福利天堂| 午夜精品久久久久影视| 亚洲一区免费视频| 一区二区三区四区五区视频 | 亚洲国产综合视频在线观看| 久久99在线观看| 性欧美在线看片a免费观看| 亚洲免费网址| 亚洲欧美一区在线| 欧美一区二区精品久久911| 亚洲欧美激情视频在线观看一区二区三区 | 91久久精品国产91久久性色| 亚洲国产日韩在线| 最新国产拍偷乱拍精品 | 欧美在线3区| 亚洲二区在线观看| 亚洲国产经典视频| 91久久国产自产拍夜夜嗨| 亚洲高清不卡在线| 亚洲日本视频| 这里只有精品视频| 亚洲欧美国产精品桃花| 欧美在线观看网址综合| 久久久精品日韩| 看欧美日韩国产| 欧美精品成人在线| 国产精品盗摄一区二区三区| 国产精自产拍久久久久久蜜| 国产性猛交xxxx免费看久久| 海角社区69精品视频| 在线观看日韩专区| 亚洲精品影院| 亚洲一线二线三线久久久| 欧美一级电影久久| 亚洲国产成人精品女人久久久| 亚洲全部视频| 亚洲午夜精品| 欧美在线日韩精品| 你懂的视频一区二区| 欧美日韩高清一区| 国产精品网站在线| 极品日韩久久| 亚洲人成人一区二区在线观看| 在线综合亚洲| 午夜视频在线观看一区| 亚洲激情在线观看视频免费| 亚洲午夜电影网| 久久成人这里只有精品| 欧美xart系列在线观看| 国产精品久久久久久妇女6080| 国产一区二区电影在线观看 | 激情亚洲成人| 日韩视频在线免费观看| 亚洲综合三区| 亚洲人线精品午夜| 亚洲一区二区三区乱码aⅴ| 久久久精品性| 欧美日本一区二区三区| 国产欧美一区二区在线观看| 亚洲电影下载| 亚洲宅男天堂在线观看无病毒| 亚洲第一精品福利| 亚洲天堂免费观看| 久久九九精品| 欧美三级日韩三级国产三级| 国产一区二区三区观看| 亚洲精品免费电影| 久久大香伊蕉在人线观看热2| 中文在线资源观看网站视频免费不卡 | 亚洲大黄网站| 亚洲欧美精品中文字幕在线| 欧美成人视屏| 国产嫩草一区二区三区在线观看| 91久久精品一区二区三区| 性欧美超级视频| 亚洲视频在线一区| 美国三级日本三级久久99| 国产精品久久7| 亚洲国产你懂的| 欧美在线一二三四区| 亚洲免费视频一区二区| 欧美经典一区二区| 狠狠色综合日日| 亚洲综合久久久久| 亚洲深夜av| 欧美激情一区二区三区| 国产一区激情| 亚洲欧美激情一区| 亚洲无线一线二线三线区别av| 欧美成人精品在线| 韩国美女久久| 亚洲欧美国内爽妇网| 亚洲性感激情| 欧美人成在线| 亚洲国产合集| 亚洲成人自拍视频| 久久国产主播| 国产日韩欧美高清| 亚洲一区网站| 午夜精品久久久久久久久久久久久| 欧美日本二区| 91久久精品美女| 亚洲欧洲综合| 免费观看成人| 影音先锋久久精品| 亚洲高清网站| 狂野欧美激情性xxxx欧美| 国产一区二区日韩| 午夜精品在线看| 久久精品导航| 狠狠网亚洲精品| 久久精品av麻豆的观看方式| 久久久不卡网国产精品一区| 国产精品午夜在线观看| 亚洲制服av| 欧美一区视频| 国产一区二区久久| 欧美中文字幕在线播放| 久久九九免费视频| 国产在线一区二区三区四区| 久久国产黑丝| 噜噜噜躁狠狠躁狠狠精品视频| 激情综合色丁香一区二区| 久久都是精品| 欧美aa在线视频| 亚洲黄色片网站| 一区二区三区视频在线观看| 欧美四级剧情无删版影片| 国产精品99久久久久久久女警| 亚洲一二三区在线| 国产精品永久免费观看| 欧美亚洲在线| 久久综合网hezyo| 91久久嫩草影院一区二区| 夜夜嗨av一区二区三区网页| 欧美三区不卡| 午夜久久tv| 狼人社综合社区| 亚洲老板91色精品久久| 亚洲欧美日韩专区| 国产亚洲人成a一在线v站| 亚洲国产成人久久综合| 欧美片第一页| 亚洲一区二区三区四区视频| 久久久99国产精品免费| 亚洲电影免费在线观看| 在线中文字幕不卡| 国产精品成人免费视频 | 国产乱码精品一区二区三| 久久国产精品99国产| 欧美成人久久| 亚洲少妇自拍| 久久一日本道色综合久久| 亚洲日本激情| 羞羞色国产精品| 黄色成人av在线| 一本色道久久加勒比精品| 国产精品日韩二区| 久久精品91| 欧美日韩一区二区三区| 香蕉成人久久| 欧美激情片在线观看| 亚洲一区美女视频在线观看免费| 久久夜色精品亚洲噜噜国产mv| 亚洲日韩视频| 久久不射电影网| 亚洲人成在线影院| 小黄鸭视频精品导航| 在线观看欧美日本| 亚洲一区综合| …久久精品99久久香蕉国产 | 激情亚洲网站| 亚洲一区免费看| 悠悠资源网久久精品| 亚洲综合色丁香婷婷六月图片| 樱桃国产成人精品视频| 亚洲欧美中文另类| 亚洲国产精品成人| 欧美在线免费一级片| 亚洲精品国产系列| 久久九九有精品国产23| 一本色道久久综合亚洲精品不 | 国产在线播精品第三| 亚洲视频1区| 一区免费在线| 午夜精品久久99蜜桃的功能介绍| 又紧又大又爽精品一区二区| 亚洲伊人色欲综合网| 亚洲高清色综合| 久久99在线观看| 一区二区三区日韩在线观看| 欧美福利视频在线观看| 亚洲欧美日韩在线观看a三区|