国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種應(yīng)用插件擴(kuò)充模型驅(qū)動開發(fā)能力的系統(tǒng)及其方法

      文檔序號:6332230閱讀:245來源:國知局
      專利名稱:一種應(yīng)用插件擴(kuò)充模型驅(qū)動開發(fā)能力的系統(tǒng)及其方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及一種軟件開發(fā)系統(tǒng)及其方法,尤其涉及一種模型驅(qū)動開發(fā)的軟件開發(fā) 系統(tǒng)及其方法,屬于計(jì)算機(jī)軟件領(lǐng)域。
      背景技術(shù)
      近20年來,軟件開發(fā)技術(shù)和開發(fā)方法有了長足的進(jìn)步。面向?qū)ο蠹夹g(shù)的應(yīng)用使 系統(tǒng)分析更加貼進(jìn)現(xiàn)實(shí),使用UML建模技術(shù)使得大系統(tǒng)、復(fù)雜系統(tǒng)的開發(fā)更容易控制,各種 靈活高效的開發(fā)語言及開發(fā)環(huán)境的出現(xiàn)使得開發(fā)速度進(jìn)一步加快,但開發(fā)技術(shù)的前進(jìn)速度 還是跟不上客戶越來越高、越來越復(fù)雜的需求。系統(tǒng)變更頻繁、軟件文檔管理跟不上軟件變 更、軟件維護(hù)異常困難,使軟件項(xiàng)目和產(chǎn)品的開發(fā)變得越來越難以控制,軟件危機(jī)依就沒有 得到有效地解決。各行業(yè)都因使用軟件產(chǎn)品而受益巨大,但軟件企業(yè)一直為如何縮短項(xiàng)目 交付期和滿足客戶需求而煩惱,同時(shí)也在尋找更加快捷的開發(fā)方法和開發(fā)工具,并向著軟 件生產(chǎn)工廠化的目標(biāo)努力,但目前沒有一種工具從本質(zhì)上改變這一現(xiàn)狀。
      國際對象管理組織(OMG) 2001年提出了模型驅(qū)動架構(gòu)(MDA)的概念,這種概念 提出的開發(fā)方法是一種基于代碼生成的開發(fā)方式,先用平臺及語言無關(guān)的通用建模語言 (UML)描述模型,然后再生成對應(yīng)平臺的代碼框架,接著維護(hù)此框架來適應(yīng)客戶具體需求, 再編譯為可執(zhí)行的軟件產(chǎn)品,最后發(fā)布產(chǎn)品供最終用戶使用。后期對軟件維護(hù)時(shí)再重復(fù)這 個(gè)過程。這種方式自從OMG 2001年提出到現(xiàn)在已有不少建模工具中加入了代碼生成的功 能,但由于UML建模語言在描述能力上不能像開發(fā)語言那樣靈活而強(qiáng)大,在實(shí)現(xiàn)上非常復(fù) 雜,文檔和代碼同步困難,代碼轉(zhuǎn)換不徹底??蚣芎痛a的自動生成是減輕了部分的代碼編 寫工作,現(xiàn)在還沒有哪個(gè)產(chǎn)品能實(shí)現(xiàn)全部的自動生成,UML生成的代碼還不能夠足以描述復(fù) 雜系統(tǒng)。因此目前沒有一個(gè)工具能實(shí)現(xiàn)OMG提出目標(biāo)。
      模型驅(qū)動開發(fā)(MDD,Model driven development)是基于MDA理論的開發(fā)方法的 統(tǒng)稱,凡是以業(yè)務(wù)建模為前提的開發(fā)方法都可以稱之為MDD。
      由于OMG提出的模型驅(qū)動開發(fā)方法太過理論化和理想化,使得在系統(tǒng)實(shí)現(xiàn)上極為 困難,針對此種狀況,還有部分企業(yè)及開發(fā)人員提出了另一種實(shí)現(xiàn)MDA架構(gòu)的MDD方法,此 方法的系統(tǒng)一般包括模型數(shù)據(jù)存儲單元,模型設(shè)計(jì)工具,模型運(yùn)行引擎,業(yè)務(wù)數(shù)據(jù)存儲單 元幾部分,此方法的開發(fā)過程是使用模型設(shè)計(jì)工具設(shè)計(jì)業(yè)務(wù)的模型定義信息并存儲到模型 數(shù)據(jù)存儲單元,使用模型運(yùn)行引擎讀取模型數(shù)據(jù)存儲單元的模型定義信息并生成模型內(nèi) 存對象和軟件界面,用戶通過軟件界面操作業(yè)務(wù)數(shù)據(jù)存儲單元中的業(yè)務(wù)數(shù)據(jù),完成軟件功 能,這種方法開發(fā)的軟件系統(tǒng)擁有模型驅(qū)動開發(fā)的所有特性靈活、高效、維護(hù)容易,解決了 MDA代碼生成方法的復(fù)雜性。但是,此種方法也存在一個(gè)主要問題,因?yàn)檐浖亩鄻有院蛷?fù) 雜性,一套固定的模型無法完全描述復(fù)雜的業(yè)務(wù)系統(tǒng)。傳統(tǒng)模型驅(qū)動開發(fā)要么就是解決問 題能力有限,要么是半模型半代碼的方法去構(gòu)建系統(tǒng),所以沒能力完全在運(yùn)行態(tài)對系統(tǒng)進(jìn) 行維護(hù)。發(fā)明內(nèi)容
      為了解決現(xiàn)有的模型驅(qū)動開發(fā)方法采用一套固定模型對復(fù)雜業(yè)務(wù)系統(tǒng)描述能力 不足,以及現(xiàn)有的模型驅(qū)動開發(fā)方法無法在運(yùn)行態(tài)可視的、動態(tài)的用模型驅(qū)動開發(fā)方法構(gòu) 建、擴(kuò)充和維護(hù)業(yè)務(wù)系統(tǒng)的技術(shù)問題,本發(fā)明提供了一種應(yīng)用插件擴(kuò)充模型驅(qū)動開發(fā)能力 的系統(tǒng)及其方法,該系統(tǒng)和方法提出了 “模型+插件”的組合方式來描述構(gòu)建軟件系統(tǒng),先 用模型設(shè)計(jì)工具建立軟件系統(tǒng)的基本模型描述,再建立若干可復(fù)用的插件模型進(jìn)一步描述 基本模型對象,從而實(shí)現(xiàn)了對模型驅(qū)動開發(fā)能力的擴(kuò)充。
      本發(fā)明所采取的技術(shù)解決方案是一種應(yīng)用插件擴(kuò)充模型驅(qū)動開發(fā)能力的系統(tǒng), 包括模型數(shù)據(jù)存儲單元、模型設(shè)計(jì)工具、業(yè)務(wù)數(shù)據(jù)存儲單元、模型運(yùn)行引擎,所述模型數(shù)據(jù) 存儲單元包括基本模型數(shù)據(jù)存儲單元;所述模型數(shù)據(jù)存儲單元是用于存儲模型數(shù)據(jù)的數(shù)據(jù) 庫或文件;所述模型設(shè)計(jì)工具用于設(shè)計(jì)業(yè)務(wù)數(shù)據(jù)存儲單元中的業(yè)務(wù)數(shù)據(jù)結(jié)構(gòu)以及基本模型 數(shù)據(jù)存儲單元中的實(shí)體定義信息和界面定義信息;所述模型運(yùn)行引擎用于定義業(yè)務(wù)元素 類、字段類、業(yè)務(wù)表類、實(shí)體類和界面類,所述業(yè)務(wù)元素類、字段類、業(yè)務(wù)表類、實(shí)體類和界面 類構(gòu)成基本模型類,所述基本模型類用于在內(nèi)存中構(gòu)造對應(yīng)的基本模型對象;其特殊之處 是所述模型運(yùn)行引擎還包括插件支持程序集,所述插件支持程序集用于定義插件適配器 類;所述模型數(shù)據(jù)存儲單元還包括插件模型數(shù)據(jù)存儲單元和插件應(yīng)用數(shù)據(jù)存儲單元;所述 插件模型數(shù)據(jù)存儲單元用于存儲插件模型的數(shù)據(jù),所述插件模型的數(shù)據(jù)包括程序集定義信 息、程序類定義信息和插件定義信息,所述插件應(yīng)用數(shù)據(jù)存儲單元用于存儲插件應(yīng)用定義 信息;所述基本模型類具有一個(gè)插件適配器類對象;所述插件適配器類對象可管理多個(gè)插 件,所述插件是插件實(shí)現(xiàn)類運(yùn)行后的內(nèi)存表現(xiàn)形式;也叫插件實(shí)現(xiàn)類對象;所述系統(tǒng)還包 括插件運(yùn)行庫;所述插件運(yùn)行庫包括插件實(shí)現(xiàn)類程序集;所述插件實(shí)現(xiàn)類程序集包括至少 一個(gè)插件實(shí)現(xiàn)類,每個(gè)插件實(shí)現(xiàn)類用于實(shí)現(xiàn)相應(yīng)插件的接口規(guī)范和插件功能;所述基本模 型類通過插件適配器類對象管理多個(gè)插件;所述模型設(shè)計(jì)工具還用于設(shè)計(jì)插件運(yùn)行庫及插 件模型數(shù)據(jù)存儲單元中的程序集定義信息、程序類定義信息、插件定義信息和插件應(yīng)用數(shù) 據(jù)存儲單元中的插件應(yīng)用定義信息。
      上述基本模型數(shù)據(jù)存儲單元用于存儲基本模型的數(shù)據(jù),所述基本模型的數(shù)據(jù)包括 界面定義信息和實(shí)體定義信息,所述界面定義信息包括控件定義信息和菜單定義信息,所 述實(shí)體定義信息包括業(yè)務(wù)表定義信息和業(yè)務(wù)功能定義信息,所述業(yè)務(wù)表定義信息包括字段 定義信息,所述字段定義信息包括業(yè)務(wù)元素定義信息;所述業(yè)務(wù)數(shù)據(jù)存儲單元是存儲業(yè)務(wù) 數(shù)據(jù)的數(shù)據(jù)庫或文件;所述模型運(yùn)行引擎可實(shí)現(xiàn)以下功能
      1]從基本模型數(shù)據(jù)存儲單元中讀取實(shí)體定義信息和界面定義信息;根據(jù)實(shí)體類 生成實(shí)體類對象,根據(jù)界面類生成與實(shí)體類對象相應(yīng)的界面類對象;所述界面類對象的屏 幕表現(xiàn)就是操作界面;所述界面類對象表現(xiàn)的數(shù)據(jù)就是實(shí)體類對象的數(shù)據(jù);
      2]根據(jù)用戶操作將業(yè)務(wù)數(shù)據(jù)存儲單元中的業(yè)務(wù)數(shù)據(jù)讀取至實(shí)體類對象中供用戶 通過操作界面查看;
      3]根據(jù)用戶操作將實(shí)體類對象的數(shù)據(jù)保存到業(yè)務(wù)數(shù)據(jù)存儲單元中;
      4]根據(jù)已生成的實(shí)體類對象和界面類對象讀取插件應(yīng)用定義信息中所對應(yīng)的插 件定義信息,并根據(jù)該插件定義信息調(diào)用所對應(yīng)的插件實(shí)現(xiàn)類生成插件實(shí)現(xiàn)類對象,并使 插件實(shí)現(xiàn)類對象和實(shí)體類對象及操作界面關(guān)聯(lián)以控制實(shí)體類對象和界面類對象。
      第二種應(yīng)用插件擴(kuò)充模型驅(qū)動開發(fā)能力的系統(tǒng)包括模型數(shù)據(jù)存儲單元、模型設(shè)計(jì) 工具、業(yè)務(wù)數(shù)據(jù)存儲單元、模型運(yùn)行引擎,所述模型數(shù)據(jù)存儲單元包括基本模型數(shù)據(jù)存儲單 元;所述模型設(shè)計(jì)工具用于設(shè)計(jì)業(yè)務(wù)數(shù)據(jù)存儲單元中的業(yè)務(wù)數(shù)據(jù)結(jié)構(gòu)以及基本模型數(shù)據(jù)存 儲單元中的實(shí)體定義信息和界面定義信息;所述模型運(yùn)行引擎用于定義業(yè)務(wù)元素類、字段 類、業(yè)務(wù)表類、實(shí)體類和界面類,所述業(yè)務(wù)元素類、字段類、業(yè)務(wù)表類、實(shí)體類和界面類構(gòu)成 基本模型類,所述基本模型類用于在內(nèi)存中構(gòu)造對應(yīng)的基本模型對象;其特殊之處是所 述模型運(yùn)行引擎還包括插件支持程序集,所述插件支持程序集用于定義插件接口、插件支 持接口和插件適配器類;所述模型數(shù)據(jù)存儲單元還包括插件模型數(shù)據(jù)存儲單元和插件應(yīng)用 數(shù)據(jù)存儲單元;所述插件模型數(shù)據(jù)存儲單元用于存儲插件模型的數(shù)據(jù),所述插件模型的數(shù) 據(jù)包括程序集定義信息、程序類定義信息和插件定義信息,所述插件應(yīng)用數(shù)據(jù)存儲單元用 于存儲插件應(yīng)用定義信息;所述插件接口中定義有一個(gè)基本模型類對象;實(shí)現(xiàn)插件接口的 插件實(shí)現(xiàn)類必須實(shí)現(xiàn)此基本模型類對象;此基本模型類對象記錄了實(shí)現(xiàn)此接口的插件實(shí)現(xiàn) 類所服務(wù)的基本模型類對象;所述基本模型類可實(shí)現(xiàn)插件支持接口 ;插件支持接口中具有 一個(gè)插件適配器類對象;所述插件適配器類具有一個(gè)基本模型類對象,此基本模型類對象 記錄了此適配器類所屬的基本模型對象;所述插件適配器類具有一個(gè)可管理多個(gè)插件的插 件接口列表,所述插件是插件實(shí)現(xiàn)類運(yùn)行后的內(nèi)存表現(xiàn)形式;所述插件接口列表中可以記 錄對應(yīng)的插件;所述系統(tǒng)還包括插件運(yùn)行庫;所述插件運(yùn)行庫包括插件實(shí)現(xiàn)類程序集;所 述插件實(shí)現(xiàn)類程序集包括至少一個(gè)插件實(shí)現(xiàn)類;
      所述系統(tǒng)還包括插件運(yùn)行庫;所述插件運(yùn)行庫包括插件實(shí)現(xiàn)類程序集和插件裝載 類程序集;所述插件實(shí)現(xiàn)類程序集包括至少一個(gè)插件實(shí)現(xiàn)類,每個(gè)插件實(shí)現(xiàn)類用于實(shí)現(xiàn)相 應(yīng)插件的接口規(guī)范和插件功能,所述插件裝載類程序集包括至少一個(gè)插件裝載類,插件裝 載類繼承于插件適配器類,每個(gè)插件裝載類可根據(jù)插件應(yīng)用定義信息創(chuàng)建插件,并將創(chuàng)建 的插件登記在插件接口列表中;所述基本模型類通過插件接口列表管理多個(gè)插件;所述模 型設(shè)計(jì)工具還用于設(shè)計(jì)插件運(yùn)行庫及插件模型數(shù)據(jù)存儲單元中的程序集定義信息、程序類 定義信息、插件定義信息和插件應(yīng)用數(shù)據(jù)存儲單元中的插件應(yīng)用定義信息。
      上述基本模型數(shù)據(jù)存儲單元用于存儲基本模型的數(shù)據(jù),所述基本模型的數(shù)據(jù)包括 界面定義信息和實(shí)體定義信息,所述界面定義信息包括控件定義信息和菜單定義信息,所 述實(shí)體定義信息包括業(yè)務(wù)表定義信息和業(yè)務(wù)功能定義信息,所述業(yè)務(wù)表定義信息包括字段 定義信息,所述字段定義信息包括業(yè)務(wù)元素定義信息;所述業(yè)務(wù)數(shù)據(jù)存儲單元是存儲業(yè)務(wù) 數(shù)據(jù)的數(shù)據(jù)庫或文件;所述模型運(yùn)行引擎可實(shí)現(xiàn)以下功能
      1]從基本模型數(shù)據(jù)存儲單元中讀取實(shí)體定義信息和界面定義信息;根據(jù)實(shí)體類 生成實(shí)體類對象,根據(jù)界面類生成界面類對象;所述界面類對象的屏幕表現(xiàn)就是操作界面; 所述界面類對象表現(xiàn)的數(shù)據(jù)就是實(shí)體類對象的數(shù)據(jù);
      2]根據(jù)用戶操作將業(yè)務(wù)數(shù)據(jù)存儲單元中的業(yè)務(wù)數(shù)據(jù)讀取至實(shí)體類對象中供用戶 通過操作界面查看;
      3]根據(jù)用戶操作將實(shí)體類對象的數(shù)據(jù)保存到業(yè)務(wù)數(shù)據(jù)存儲單元中;
      4]根據(jù)已生成的實(shí)體類對象和界面類對象讀取插件應(yīng)用定義信息中所對應(yīng)的插 件定義信息,并根據(jù)該插件定義信息調(diào)用所對應(yīng)的插件實(shí)現(xiàn)類生成插件實(shí)現(xiàn)類對象,并使 插件實(shí)現(xiàn)類對象和實(shí)體對象及界面類對象關(guān)聯(lián)以控制實(shí)體對象和界面對象。
      一種應(yīng)用插件擴(kuò)充模型驅(qū)動開發(fā)能力的方法,包括以下步驟
      (1)根據(jù)需求分析,模型設(shè)計(jì)工具建立模型運(yùn)行引擎據(jù)以運(yùn)行的實(shí)體定義信息和 界面定義信息并存儲在基本模型數(shù)據(jù)存儲單元中;
      (2)模型設(shè)計(jì)工具根據(jù)所建立的相關(guān)信息定義相應(yīng)的業(yè)務(wù)數(shù)據(jù)結(jié)構(gòu),并存儲到業(yè) 務(wù)數(shù)據(jù)存儲單元中;
      (3)根據(jù)需求分析,模型設(shè)計(jì)工具建立插件模型的數(shù)據(jù),并存儲在插件模型數(shù)據(jù)存 儲單元中;
      (4)根據(jù)上述插件定義信息,模型設(shè)計(jì)工具編寫相應(yīng)的插件實(shí)現(xiàn)類代碼,并編譯生 成插件實(shí)現(xiàn)類程序集;
      (5)使用模型設(shè)計(jì)工具定義與基本模型對應(yīng)的插件應(yīng)用定義信息,并存儲到插件 應(yīng)用數(shù)據(jù)存儲單元中;
      (6)使用模型運(yùn)行引擎運(yùn)行基本模型和插件模型。
      上述步驟1的具體步驟如下
      1. 1模型設(shè)計(jì)工具建立業(yè)務(wù)元素定義信息;
      1. 2模型設(shè)計(jì)工具引用業(yè)務(wù)元素定義信息建立業(yè)務(wù)表定義信息;
      1. 3模型設(shè)計(jì)工具引用業(yè)務(wù)表定義信息建立實(shí)體定義信息;
      1. 4模型設(shè)計(jì)工具引用實(shí)體定義信息建立界面定義信息;
      1. 5將上述信息存儲到基本模型數(shù)據(jù)存儲單元中;
      所述步驟2的具體步驟如下模型設(shè)計(jì)工具根據(jù)業(yè)務(wù)表定義信息定義業(yè)務(wù)數(shù)據(jù)結(jié) 構(gòu),并生成業(yè)務(wù)數(shù)據(jù)存儲單元中的業(yè)務(wù)數(shù)據(jù)結(jié)構(gòu);
      步驟3的具體步驟如下
      3. 1模型設(shè)計(jì)工具建立程序集定義信息;
      3. 2模型設(shè)計(jì)工具建立程序類定義信息,并指定其中的程序類所屬的程序集;
      3. 3模型設(shè)計(jì)工具建立插件定義信息,并指定其中實(shí)現(xiàn)插件功能的程序類;
      3. 4將上述信息存儲到插件模型數(shù)據(jù)存儲單元中;
      所述步驟4的具體步驟如下
      4. 1根據(jù)插件定義信息,模型設(shè)計(jì)工具生成一個(gè)插件實(shí)現(xiàn)類代碼框架;
      4. 2模型設(shè)計(jì)工具根據(jù)插件實(shí)現(xiàn)類代碼框架編寫插件實(shí)現(xiàn)類代碼;
      4. 3模型設(shè)計(jì)工具根據(jù)插件實(shí)現(xiàn)類代碼編譯并生成插件實(shí)現(xiàn)類程序集;
      步驟5的具體步驟如下模型設(shè)計(jì)工具引用基本模型定義信息和插件模型定義信 息,定義與基本模型對應(yīng)的插件應(yīng)用定義信息,并存儲到插件應(yīng)用數(shù)據(jù)存儲單元中;
      步驟6的具體步驟如下
      6. 1創(chuàng)建基本模型對象及其子對象,模型運(yùn)行引擎從基本模型數(shù)據(jù)存儲單元中讀 取實(shí)體定義信息和界面定義信息,根據(jù)實(shí)體類生成實(shí)體類對象,根據(jù)界面類生成界面類對 象;
      6. 2創(chuàng)建基本模型類對象的插件,根據(jù)已生成的基本模型類對象,讀取插件應(yīng)用數(shù) 據(jù)存儲單元中相應(yīng)的插件應(yīng)用定義信息,根據(jù)插件應(yīng)用定義信息讀取插件模型數(shù)據(jù)存儲單 元中的程序集定義信息和程序類定義信息,根據(jù)程序集定義信息中的程序集名稱調(diào)用對應(yīng) 程序集中的程序類創(chuàng)建插件實(shí)現(xiàn)類對象;并將所創(chuàng)建的插件實(shí)現(xiàn)類對象記錄在基本模型類11對象的插件適配器類對象中;
      6. 3建立基本模型類對象和插件實(shí)現(xiàn)類對象的關(guān)聯(lián),將插件實(shí)現(xiàn)類對象記錄在插 件適配器類對象后,調(diào)用基本模型對象及其子對象的插件啟用方法建立插件實(shí)現(xiàn)類相應(yīng)方 法與基本模型類對象及其子對象事件的關(guān)聯(lián),此插件啟用方法中設(shè)置插件適配器類對象中 的各插件實(shí)現(xiàn)類對象的激活屬性,此激活屬性會在激活時(shí)建立基本模型類對象及其子對象 的事件與插件實(shí)現(xiàn)類對象中相應(yīng)方法的關(guān)聯(lián),此激活屬性會在禁用時(shí)斷開基本模型類對象 及其子對象的事件與插件實(shí)現(xiàn)類對象中相應(yīng)方法的關(guān)聯(lián);
      6. 4運(yùn)行過程中,插件實(shí)現(xiàn)類對象響應(yīng)基本模型類對象及其子對象的事件并執(zhí)行 相應(yīng)方法完成插件功能;
      6. 5基本模型類對象及其子對象在銷毀前先斷開其事件與插件實(shí)現(xiàn)類對象相應(yīng)方 法的聯(lián)系,并銷毀插件實(shí)現(xiàn)類對象;
      6. 6銷毀基本模型類對象及其子對象;
      第二種應(yīng)用插件擴(kuò)充模型驅(qū)動開發(fā)能力的方法,包括以下步驟
      (1)根據(jù)需求分析,模型設(shè)計(jì)工具建立模型運(yùn)行引擎據(jù)以運(yùn)行的實(shí)體定義信息和 界面定義信息并存儲在基本模型數(shù)據(jù)存儲單元中;
      (2)模型設(shè)計(jì)工具根據(jù)所建立的相關(guān)信息定義相應(yīng)的業(yè)務(wù)數(shù)據(jù)結(jié)構(gòu),并存儲到業(yè) 務(wù)數(shù)據(jù)存儲單元中;
      (3)根據(jù)需求分析,模型設(shè)計(jì)工具建立插件模型的數(shù)據(jù),并存儲在插件模型數(shù)據(jù)存 儲單元中;
      (4)根據(jù)上述插件定義信息,模型設(shè)計(jì)工具編寫相應(yīng)的插件實(shí)現(xiàn)類代碼,并編譯生 成插件實(shí)現(xiàn)類程序集;
      (5)使用模型設(shè)計(jì)工具定義與基本模型對應(yīng)的插件應(yīng)用定義信息,并存儲到插件 應(yīng)用數(shù)據(jù)存儲單元中,同時(shí)生成相應(yīng)的插件裝載類代碼,并將其存儲到程序類定義信息的 程序類代碼項(xiàng)中,并且把生成的插件裝載類代碼編譯并合并到插件裝載類程序集中;
      (6)使用模型運(yùn)行引擎運(yùn)行基本模型和插件模型。
      上述步驟1的具體步驟如下
      1. 1模型設(shè)計(jì)工具建立業(yè)務(wù)元素定義信息;
      1. 2模型設(shè)計(jì)工具引用業(yè)務(wù)元素定義信息建立業(yè)務(wù)表定義信息;
      1. 3模型設(shè)計(jì)工具引用業(yè)務(wù)表定義信息建立實(shí)體定義信息;
      1. 4模型設(shè)計(jì)工具引用實(shí)體定義信息建立界面定義信息;
      1. 5將上述信息存儲到基本模型數(shù)據(jù)存儲單元中;
      所述步驟2的具體步驟如下模型設(shè)計(jì)工具根據(jù)業(yè)務(wù)表定義信息定義業(yè)務(wù)數(shù)據(jù)結(jié) 構(gòu),并生成業(yè)務(wù)數(shù)據(jù)存儲單元中的業(yè)務(wù)數(shù)據(jù)結(jié)構(gòu);
      所述步驟3的具體步驟如下
      3. 1模型設(shè)計(jì)工具建立程序集定義信息;
      3. 2模型設(shè)計(jì)工具建立程序類定義信息,并指定其中的程序類所屬的程序集;
      3. 3模型設(shè)計(jì)工具建立插件定義信息,并指定其中實(shí)現(xiàn)插件功能的程序類;
      3. 4將上述信息存儲到插件模型數(shù)據(jù)存儲單元中;
      所述步驟4的具體步驟如下
      4. 1根據(jù)插件定義信息,模型設(shè)計(jì)工具生成一個(gè)插件實(shí)現(xiàn)類代碼框架;
      4. 2模型設(shè)計(jì)工具根據(jù)插件實(shí)現(xiàn)類代碼框架編寫插件實(shí)現(xiàn)類代碼;
      4. 3模型設(shè)計(jì)工具根據(jù)插件實(shí)現(xiàn)類代碼編譯并生成插件實(shí)現(xiàn)類程序集;
      所述步驟5的具體步驟如下模型設(shè)計(jì)工具引用基本模型定義信息和插件模型定 義信息,定義與基本模型對應(yīng)的插件應(yīng)用定義信息,并存儲到插件應(yīng)用數(shù)據(jù)存儲單元中,同 時(shí)生成相應(yīng)的插件裝載類代碼,并將其存儲到程序類定義信息的程序類代碼項(xiàng)中,且把生 成的插件裝載類代碼編譯并合并到插件裝載類程序集中;
      所述步驟6的具體步驟如下
      6. 1創(chuàng)建基本模型類對象及其子對象,模型運(yùn)行引擎從基本模型數(shù)據(jù)存儲單元中 讀取實(shí)體定義信息和界面定義信息,根據(jù)實(shí)體類生成實(shí)體類對象,根據(jù)界面類生成界面類 對象;
      6. 2創(chuàng)建基本模型類對象的插件,根據(jù)已生成的基本模型類對象,讀取插件應(yīng)用數(shù) 據(jù)存儲單元中相應(yīng)的插件應(yīng)用定義信息,根據(jù)插件應(yīng)用定義信息讀取插件模型數(shù)據(jù)存儲單 元中的程序集定義信息和程序類定義信息,根據(jù)程序集定義信息中的程序集名稱調(diào)用插件 裝載類程序集中的插件裝載類相應(yīng)裝載方法創(chuàng)建插件實(shí)現(xiàn)類對象;并將插件實(shí)現(xiàn)類對象記 錄到基本模型類對象的插件適配器類對象中的插件接口列表中;
      6. 3建立基本模型類對象和插件的關(guān)聯(lián),將插件登記在插件適配器類對象的插件 接口列表后,調(diào)用基本模型類對象及其子對象的插件啟用方法建立插件實(shí)現(xiàn)類對象相應(yīng)方 法與基本模型類對象及其子對象事件的關(guān)聯(lián),此插件啟用方法中設(shè)置插件適配器類對象的 插件接口列表中所記錄的各插件實(shí)現(xiàn)類對象的激活屬性,此激活屬性會在激活時(shí)建立基本 模型類對象及其子對象的事件與插件實(shí)現(xiàn)類對象中相應(yīng)方法的關(guān)聯(lián),此激活屬性會在禁用 時(shí)斷開基本模型類對象及其子對象的事件與插件實(shí)現(xiàn)類對象中相應(yīng)方法的關(guān)聯(lián);
      6. 4運(yùn)行中,插件實(shí)現(xiàn)類對象響應(yīng)基本模型類對象及其子對象的事件并執(zhí)行相應(yīng) 方法完成插件功能;
      6. 5基本模型類對象銷毀前先斷開其事件與插件實(shí)現(xiàn)類對象相應(yīng)方法的聯(lián)系,并 銷毀插件實(shí)現(xiàn)類對象;
      6. 6銷毀基本模型類對象及其子對象。
      本發(fā)明的優(yōu)點(diǎn)
      1、系統(tǒng)擴(kuò)展靈活。本發(fā)明采用了“模型+插件”的組合方式來描述構(gòu)建軟件系統(tǒng), 可實(shí)現(xiàn)實(shí)時(shí)跟蹤和動態(tài)調(diào)整,無論是操作界面還是核心的業(yè)務(wù)功能,均可通過插件模型方 便實(shí)現(xiàn)擴(kuò)展并確保擴(kuò)展能持續(xù)復(fù)用,并隨著業(yè)務(wù)需求的改變而動態(tài)擴(kuò)展系統(tǒng)。本發(fā)明使用 插件模型擴(kuò)展基本模型定義,解決了基本模型對軟件系統(tǒng)描述能力不足的問題,使模型驅(qū) 動開發(fā)方法也能設(shè)計(jì)出編碼方法下的復(fù)雜業(yè)務(wù)功能。
      2、系統(tǒng)維護(hù)方便。本發(fā)明獨(dú)特的插件模型使每個(gè)插件都獨(dú)立存在,更新軟件系統(tǒng) 就是替換插件,所以更新工作不會影響當(dāng)前系統(tǒng)的使用。本發(fā)明所構(gòu)建的軟件是基于基本 模型和插件模型,模型透明、可讀,對軟件的維護(hù)就是對模型的維護(hù),便于軟件的維護(hù)和更新。
      3、非編程開發(fā),降低開發(fā)和調(diào)試中的技術(shù)要求。本發(fā)明采用“模型+插件”的組合 方式,以完全圖形化的方式實(shí)現(xiàn)軟件開發(fā)、測試、跟蹤、維護(hù)活動,開發(fā)人員無需掌握復(fù)雜的13編程語言和框架,只需簡單培訓(xùn)即可進(jìn)行企業(yè)級專業(yè)軟件開發(fā)。本發(fā)明提供大量的經(jīng)過反 復(fù)驗(yàn)證的插件模型,可大幅減少開發(fā)調(diào)試工作量,業(yè)務(wù)邏輯調(diào)試工作量遠(yuǎn)遠(yuǎn)低于傳統(tǒng)開發(fā) 模式調(diào)試工作量。本發(fā)明使用插件模型擴(kuò)展業(yè)務(wù)模型定義,增加了模型功能的復(fù)用,減少代碼編寫量。
      4、高可靠性。基于本發(fā)明開發(fā)的應(yīng)用軟件,構(gòu)建于基本模型和經(jīng)過反復(fù)驗(yàn)證的插 件模型之上,很少甚至沒有定制的編碼,從而降低開發(fā)復(fù)雜度、減少出錯(cuò)可能性,能有效提 高軟件質(zhì)量和可靠性。
      5,減低復(fù)雜度。本發(fā)明依據(jù)對業(yè)務(wù)數(shù)據(jù)的高度概括和抽象,提供基本的業(yè)務(wù)模型 和粒度大小適中的插件模型,具有細(xì)小粒度靈活方便的特征,可降低開發(fā)過程的復(fù)雜度。
      6、可實(shí)現(xiàn)快速開發(fā)。本發(fā)明以模型為中心式的開發(fā)模式幾乎屏蔽了所有的軟件開 發(fā)技術(shù),可大幅度降低軟件開發(fā)的技術(shù)要求,從而解決軟件開發(fā)瓶頸;本發(fā)明特有的以模型 構(gòu)建的方式具有天生的工廠化生產(chǎn)特征,使得軟件開發(fā)更便捷、有序,即使投入新人也可以 立即帶來開發(fā)效率的提升。本發(fā)明無需美工就能夠自動生成風(fēng)格統(tǒng)一的交互界面,且用戶 可以自定義應(yīng)用界面布局。
      7、降低成本,減少人力依賴。本發(fā)明特有的非編程開發(fā)模式,可有效降低對軟件開 發(fā)人員的技術(shù)要求,從而大量節(jié)省人力成本。本發(fā)明基于“模型+插件”的構(gòu)建式開發(fā),可 實(shí)現(xiàn)快速開發(fā),從而縮短開發(fā)周期。本發(fā)明“模型+插件”的構(gòu)建式開發(fā)完全通過模型構(gòu)建 實(shí)現(xiàn),所有業(yè)務(wù)處理、數(shù)據(jù)操作和邏輯過程都是透明可見且邏輯清晰的,不存在軟件開發(fā)依 賴于一兩個(gè)核心技術(shù)人員的風(fēng)險(xiǎn)。本發(fā)明的低技術(shù)要求,可規(guī)避軟件開發(fā)中的技術(shù)風(fēng)險(xiǎn)和 人力風(fēng)險(xiǎn),增加軟件開發(fā)的可計(jì)劃性,有效規(guī)避時(shí)間風(fēng)險(xiǎn)。
      8、本發(fā)明可實(shí)現(xiàn)技術(shù)復(fù)用。本發(fā)明提出的模型繼承方法解決了模型本身的復(fù)用能 力,插件可復(fù)用,使業(yè)務(wù)模型和插件模型最大化利用率。本發(fā)明提出的模型包含關(guān)系使得在 插件編寫中更容易的訪問和控制系統(tǒng)運(yùn)行。


      圖1為本發(fā)明系統(tǒng)的組成框架圖2為本發(fā)明系統(tǒng)中模型數(shù)據(jù)存儲單元的結(jié)構(gòu)示意圖3為本發(fā)明系統(tǒng)中插件運(yùn)行庫的第一種結(jié)構(gòu)示意圖4為本發(fā)明系統(tǒng)的模型運(yùn)行引擎和第一種結(jié)構(gòu)的插件運(yùn)行庫中實(shí)現(xiàn)插件功能 的核心類構(gòu)成及關(guān)系圖5為基本模型對象和插件模型對象的第一種內(nèi)存狀態(tài)圖6為本發(fā)明系統(tǒng)中插件運(yùn)行庫的第二種結(jié)構(gòu)示意圖7為本發(fā)明系統(tǒng)的模型運(yùn)行引擎和第二種結(jié)構(gòu)的插件運(yùn)行庫中實(shí)現(xiàn)插件功能 的核心類構(gòu)成及關(guān)系圖8為基本模型對象和插件模型對象的第二種內(nèi)存狀態(tài)圖9為本發(fā)明方法的模型運(yùn)行流程示意圖10為基本模型和插件模型的內(nèi)存對象的創(chuàng)建和銷毀流程意示圖11為基本模型和插件模型定義及應(yīng)用流程意示圖12為插件實(shí)現(xiàn)類型程序集和插件裝載類型程序集生成流程圖13為基本模型和插件模型的關(guān)系示意圖
      圖14為基本模型之間的繼承關(guān)系圖15為實(shí)體與界面關(guān)系圖16為模型設(shè)計(jì)工具截圖17為業(yè)務(wù)元素定義截圖18為業(yè)務(wù)表定義截圖19為實(shí)體定義截圖20為界面定義截圖21為界面菜單定義截圖22為繼承了 i^orm Base界面的運(yùn)行圖23為程序集定義截圖24為程序類定義截圖25為插件定義截圖26為插件參數(shù)定義截圖27為插件應(yīng)用定義截圖28為插件應(yīng)用定義中插件選擇截圖。
      具體實(shí)施方式
      如圖1所示,第一種應(yīng)用插件擴(kuò)充模型驅(qū)動開發(fā)能力的系統(tǒng),包括模型數(shù)據(jù)存儲 單元、模型設(shè)計(jì)工具、業(yè)務(wù)數(shù)據(jù)存儲單元、模型運(yùn)行引擎以及插件運(yùn)行庫,模型數(shù)據(jù)存儲單 元包括基本模型數(shù)據(jù)存儲單元;模型數(shù)據(jù)存儲單元是用于存儲模型數(shù)據(jù)的數(shù)據(jù)庫或文件。
      模型設(shè)計(jì)工具用于設(shè)計(jì)業(yè)務(wù)數(shù)據(jù)存儲單元中的業(yè)務(wù)數(shù)據(jù)結(jié)構(gòu)以及基本模型數(shù)據(jù) 存儲單元中的實(shí)體定義信息和界面定義信息,還用于設(shè)計(jì)插件運(yùn)行庫及插件模型數(shù)據(jù)存儲 單元中的程序集定義信息、程序類定義信息、插件定義信息和插件應(yīng)用數(shù)據(jù)存儲單元中的 插件應(yīng)用定義信息。
      模型運(yùn)行引擎用于定義業(yè)務(wù)元素類、字段類、業(yè)務(wù)表類、實(shí)體類和界面類,所業(yè)務(wù) 元素類、字段類、業(yè)務(wù)表類、實(shí)體類和界面類構(gòu)成基本模型類,所述基本模型類用于在內(nèi)存 中構(gòu)造對應(yīng)的基本模型對象;還包括插件支持程序集,插件支持程序集用于定義插件適配 器類;基本模型類具有一個(gè)插件適配器類對象;插件適配器類對象可管理多個(gè)插件,插件 是插件實(shí)現(xiàn)類運(yùn)行后的內(nèi)存表現(xiàn)形式;也叫插件實(shí)現(xiàn)類對象;模型運(yùn)行引擎用于讀取設(shè)計(jì) 好的模型數(shù)據(jù)存儲單元中的模型數(shù)據(jù),根據(jù)讀取的數(shù)據(jù),調(diào)用基本模型類和插件實(shí)現(xiàn)類生 成軟件,根據(jù)用戶操作并存取業(yè)務(wù)數(shù)據(jù)存儲單元中的業(yè)務(wù)數(shù)據(jù)完成軟件功能。
      插件運(yùn)行庫包括插件實(shí)現(xiàn)類程序集;插件實(shí)現(xiàn)類程序集包括至少一個(gè)插件實(shí)現(xiàn) 類,每個(gè)插件實(shí)現(xiàn)類用于實(shí)現(xiàn)相應(yīng)插件的接口規(guī)范和插件功能;基本模型類通過插件適配 器類對象管理多個(gè)插件。
      如圖2所示,模型數(shù)據(jù)存儲單元還包括插件模型數(shù)據(jù)存儲單元和插件應(yīng)用數(shù)據(jù)存 儲單元;插件模型數(shù)據(jù)存儲單元用于存儲插件模型的數(shù)據(jù),插件模型的數(shù)據(jù)包括程序集定 義信息、程序類定義信息和插件定義信息,插件應(yīng)用數(shù)據(jù)存儲單元用于存儲插件應(yīng)用定義 fn息ο
      基本模型的數(shù)據(jù)包括界面定義信息和實(shí)體定義信息,界面定義信息包括控件定義 信息和菜單定義信息,實(shí)體定義信息包括業(yè)務(wù)表定義信息和業(yè)務(wù)功能定義信息,業(yè)務(wù)表定 義信息包括字段定義信息,字段定義信息包括業(yè)務(wù)元素定義信息;業(yè)務(wù)數(shù)據(jù)存儲單元是存 儲業(yè)務(wù)數(shù)據(jù)的數(shù)據(jù)庫或文件;
      實(shí)體定義信息中包括業(yè)務(wù)表定義信息和功能定義信息。實(shí)體定義信息包括實(shí)體 ID,實(shí)體名稱等,實(shí)體ID是唯一標(biāo)識一個(gè)實(shí)體的編號,實(shí)體名稱是實(shí)體的命名,如圖17所 示。業(yè)務(wù)表定義信息中包括實(shí)體ID,業(yè)務(wù)表ID,主表ID,主子關(guān)系,增加,刪除,修改,復(fù)制; 其中實(shí)體ID標(biāo)識了該業(yè)務(wù)表所屬的實(shí)體,業(yè)務(wù)表ID唯一標(biāo)識了一個(gè)業(yè)務(wù)表,主子關(guān)系確定 了業(yè)務(wù)表之間的引用關(guān)系,增加,刪除,修改,復(fù)制標(biāo)識了此業(yè)務(wù)表是否可以增加,刪除,修 改,復(fù)制表中的記錄,如圖18所示。業(yè)務(wù)表ID指定的業(yè)務(wù)表是在表定義信息中,表定義信 息包括業(yè)務(wù)表ID,業(yè)務(wù)表名稱,原數(shù)據(jù)庫名稱,原表名,所屬分類,其中業(yè)務(wù)表ID唯一標(biāo)識 了一個(gè)業(yè)務(wù)表定義信息,業(yè)務(wù)表名稱是業(yè)務(wù)表在模型中的命名,原數(shù)據(jù)庫名是此表在業(yè)務(wù) 數(shù)據(jù)存儲單元中的數(shù)據(jù)庫名稱,原表名指定了此業(yè)務(wù)表對應(yīng)的數(shù)據(jù)庫中的存儲表名,所屬 分類指定了此表所屬的子系統(tǒng),如表5所示。業(yè)務(wù)表定義還包括業(yè)務(wù)表的字段定義,字段定 義信息包括業(yè)務(wù)表ID,字段ID,字段名稱,業(yè)務(wù)元素,其中業(yè)務(wù)表ID指定該字段所屬的業(yè)務(wù) 表,字段ID唯一標(biāo)識了一個(gè)字段的定義信息,字段名稱對應(yīng)于存儲數(shù)據(jù)庫中對應(yīng)業(yè)務(wù)表中 的字段,業(yè)務(wù)元素指定了該字段的數(shù)據(jù)類型,如表6所示。功能定義信息包括實(shí)體ID,功能 ID,功能名稱,實(shí)體ID標(biāo)識此功能所屬的實(shí)體,功能ID唯一標(biāo)識一個(gè)功能定義,功能名稱是 功能命名,如表9所示。實(shí)體定義信息定義了業(yè)務(wù)表的結(jié)構(gòu)和業(yè)務(wù)表的關(guān)系以及實(shí)體功能。
      界面定義信息包括控件定義信息,菜單定義信息。界面定義信息定義了軟件運(yùn)行 界面的樣式,界面定義信息中包括界面ID,界面名稱,界面所表現(xiàn)的實(shí)體,界面ID是唯一標(biāo) 識一個(gè)界面編號,實(shí)體是界面表現(xiàn)的數(shù)據(jù)來源,如表10所示??丶筒藛问菢?gòu)成界面的主 要元素,控件定義信息中定義了控件的類型,表現(xiàn)的實(shí)體中的業(yè)務(wù)表和字段,如表11所示。 菜單定義信息中定義了操作界面的菜單和工具條項(xiàng)目,如表12所示。
      模型運(yùn)行引擎可實(shí)現(xiàn)以下功能
      1]從基本模型數(shù)據(jù)存儲單元中讀取實(shí)體定義信息和界面定義信息;根據(jù)實(shí)體類 生成實(shí)體類對象,根據(jù)界面類生成與實(shí)體類對象相應(yīng)的界面類對象;所述界面類對象的屏 幕表現(xiàn)就是操作界面;所述界面類對象表現(xiàn)的數(shù)據(jù)就是實(shí)體類對象的數(shù)據(jù);
      2]根據(jù)用戶操作將業(yè)務(wù)數(shù)據(jù)存儲單元中的業(yè)務(wù)數(shù)據(jù)讀取至實(shí)體類對象中供用戶 通過操作界面查看;
      3]根據(jù)用戶操作將實(shí)體類對象的數(shù)據(jù)保存到業(yè)務(wù)數(shù)據(jù)存儲單元中;
      4]根據(jù)已生成的實(shí)體類對象和界面類對象讀取插件應(yīng)用定義信息中所對應(yīng)的插 件定義信息,并根據(jù)該插件定義信息調(diào)用所對應(yīng)的插件實(shí)現(xiàn)類生成插件實(shí)現(xiàn)類對象,并使 插件實(shí)現(xiàn)類對象和實(shí)體類對象及操作界面關(guān)聯(lián)以控制實(shí)體類對象和界面類對象。
      本發(fā)明的第二種結(jié)構(gòu)的系統(tǒng),包括模型數(shù)據(jù)存儲單元、模型設(shè)計(jì)工具、業(yè)務(wù)數(shù)據(jù)存 儲單元、模型運(yùn)行引擎,插件運(yùn)行庫,模型數(shù)據(jù)存儲單元包括基本模型數(shù)據(jù)存儲單元;模型 設(shè)計(jì)工具用于設(shè)計(jì)業(yè)務(wù)數(shù)據(jù)存儲單元中的業(yè)務(wù)數(shù)據(jù)結(jié)構(gòu)以及基本模型數(shù)據(jù)存儲單元中的 實(shí)體定義信息和界面定義信息;模型運(yùn)行引擎用于定義業(yè)務(wù)元素類、字段類、業(yè)務(wù)表類、實(shí) 體類和界面類,所述業(yè)務(wù)元素類、字段類、業(yè)務(wù)表類、實(shí)體類和界面類構(gòu)成基本模型類,所述基本模型類用于在內(nèi)存中構(gòu)造對應(yīng)的基本模型對象;
      模型運(yùn)行引擎還包括插件支持程序集,插件支持程序集用于定義插件接口、插件 支持接口和插件適配器類;模型數(shù)據(jù)存儲單元還包括插件模型數(shù)據(jù)存儲單元和插件應(yīng)用數(shù) 據(jù)存儲單元;插件模型數(shù)據(jù)存儲單元用于存儲插件模型的數(shù)據(jù),插件模型的數(shù)據(jù)包括程序 集定義信息、程序類定義信息和插件定義信息,所述插件應(yīng)用數(shù)據(jù)存儲單元用于存儲插件 應(yīng)用定義信息;
      插件接口中定義有一個(gè)基本模型類對象;實(shí)現(xiàn)插件接口的插件實(shí)現(xiàn)類必須實(shí)現(xiàn)此 基本模型類對象;此基本模型類對象記錄了實(shí)現(xiàn)此接口的插件實(shí)現(xiàn)類所服務(wù)的基本模型類 對象;
      基本模型類可實(shí)現(xiàn)插件支持接口 ;插件支持接口中具有一個(gè)插件適配器類對象; 插件適配器類具有一個(gè)基本模型類對象,此基本模型類對象記錄了此適配器類所屬的基本 模型對象;插件適配器類具有一個(gè)可管理多個(gè)插件的插件接口列表,插件是插件實(shí)現(xiàn)類運(yùn) 行后的內(nèi)存表現(xiàn)形式;插件接口列表中可以記錄對應(yīng)的插件;
      系統(tǒng)還包括插件運(yùn)行庫;插件運(yùn)行庫包括插件實(shí)現(xiàn)類程序集和插件裝載類程序 集;插件實(shí)現(xiàn)類程序集包括至少一個(gè)插件實(shí)現(xiàn)類,每個(gè)插件實(shí)現(xiàn)類用于實(shí)現(xiàn)相應(yīng)插件的接 口規(guī)范和插件功能,插件裝載類程序集包括至少一個(gè)插件裝載類,插件裝載類繼承于插件 適配器類,每個(gè)插件裝載類可根據(jù)插件應(yīng)用定義信息創(chuàng)建插件,并將創(chuàng)建的插件登記在插 件接口列表中;基本模型類通過插件接口列表管理多個(gè)插件;模型設(shè)計(jì)工具還用于設(shè)計(jì)插 件運(yùn)行庫及插件模型數(shù)據(jù)存儲單元中的程序集定義信息、程序類定義信息、插件定義信息 和插件應(yīng)用數(shù)據(jù)存儲單元中的插件應(yīng)用定義信息?;灸P蛿?shù)據(jù)存儲單元用于存儲基本模 型的數(shù)據(jù),基本模型的數(shù)據(jù)包括界面定義信息和實(shí)體定義信息,界面定義信息包括控件定 義信息和菜單定義信息,實(shí)體定義信息包括業(yè)務(wù)表定義信息和業(yè)務(wù)功能定義信息,業(yè)務(wù)表 定義信息包括字段定義信息,字段定義信息包括業(yè)務(wù)元素定義信息;業(yè)務(wù)數(shù)據(jù)存儲單元是 存儲業(yè)務(wù)數(shù)據(jù)的數(shù)據(jù)庫或文件;
      本系統(tǒng)的模型運(yùn)行引擎可實(shí)現(xiàn)的功能與第一種系統(tǒng)模型運(yùn)行引擎相同。
      插件模型數(shù)據(jù)存儲單元插件模型數(shù)據(jù)存儲單元用于存儲程序集定義信息,程序 類定義信息,插件定義信息。(插件模型是用于擴(kuò)展基本模型描述能力的插件定義信息。 插件是一種可以帶參數(shù)的進(jìn)一步描述基本模型對象的可復(fù)用的軟件組件,基本模型對象就 是一個(gè)具體的基本模型;所述插件模型由程序集信息定義、程序類信息定義和插件信息定 義組成;)其中程序集定義信息包括程序集ID,程序集名稱,程序集類型,是否為動態(tài),程序 集ID唯一標(biāo)識一個(gè)程序集定義信息,程序集名稱標(biāo)識程序集文件名稱,程序集類型標(biāo)識程 序集運(yùn)行的地點(diǎn)。是否為動態(tài)標(biāo)識程序集是否可以被模型設(shè)計(jì)工具動態(tài)生成,程序集類型 分為公用插件,客戶端插件,服務(wù)端插件,公用插件是服務(wù)端和客戶端都可以運(yùn)行的插件, 服務(wù)端插件只能運(yùn)行在服務(wù)端,客戶端插件只能運(yùn)行在客戶端,程序集定義信息如表13所 示。其中程序類定義信息包括程序類ID,程序類名稱,程序類類型,程序集ID,程序類代碼, 程序類ID唯一標(biāo)識一個(gè)程序類定義信息,程序類名稱標(biāo)識程序類在程序集文件中定義的 名稱,程序集ID標(biāo)識了此程序類所屬程序集,程序類類型定義了程序類是用于哪種插件類 型,程序類代碼用于存儲此程序類的實(shí)現(xiàn)代碼,程序類定義信息如表14所示。其中插件定 義信息包括插件ID,插件名稱,插件主體對象類型,客戶端實(shí)現(xiàn)類ID,服務(wù)端實(shí)現(xiàn)類ID,插件ID唯一標(biāo)識一個(gè)插件定義信息,插件名稱是一個(gè)有意義的插件命名,插件主體對象類型 標(biāo)識了此插件可以應(yīng)用的基本模型對象類型,客戶端實(shí)現(xiàn)類ID標(biāo)識此插件的客戶端實(shí)現(xiàn) 類,服務(wù)端實(shí)現(xiàn)類ID標(biāo)識該插件的服務(wù)端實(shí)現(xiàn)類,插件定義信息如表15所示。插件定義信 息中還包括插件參數(shù)定義信息,插件參數(shù)定義信息包括插件ID,參數(shù)名稱,參數(shù)類型,參數(shù) 默認(rèn)值,參數(shù)說明,插件ID標(biāo)識了該參數(shù)所屬的插件,參數(shù)名稱標(biāo)識了插件ID對應(yīng)插件的 參數(shù)名稱,參數(shù)類型是參數(shù)的數(shù)據(jù)類型,參數(shù)說明是對該插件參數(shù)的使用說明,如表16所示。
      插件應(yīng)用數(shù)據(jù)存儲單元插件應(yīng)用數(shù)據(jù)存儲單元用于存儲插件的應(yīng)用定義信息。 插件應(yīng)用定義信息包括插件應(yīng)用ID,模型對象ID,模型對象類型,插件ID,是否啟用,插件 應(yīng)用ID唯一標(biāo)識了一個(gè)插件在一個(gè)基本模型對象上的擴(kuò)展定義信息,模型對象ID標(biāo)識了 該應(yīng)用的基本模型對象,模型對象類型標(biāo)識該模型對象的類型,插件ID標(biāo)識了應(yīng)用在該模 型對象上的插件。是否啟用標(biāo)識了此插件應(yīng)用是否生效,生效時(shí)則模型引擎在執(zhí)行模型時(shí) 會自動裝載該插件,不啟用時(shí)則不裝載該插件。
      模型設(shè)計(jì)工具模型設(shè)計(jì)工具用于設(shè)計(jì)基本模型數(shù)據(jù)存儲單元的基本模型定義信 息,設(shè)計(jì)插件模型數(shù)據(jù)存儲單元中的插件模型定義信息、設(shè)計(jì)插件應(yīng)用數(shù)據(jù)存儲單元中的 插件應(yīng)用定義信息,設(shè)計(jì)插件運(yùn)行庫,設(shè)計(jì)業(yè)務(wù)數(shù)據(jù)存儲單元中的業(yè)務(wù)數(shù)據(jù)結(jié)構(gòu),主界面如 圖16所示,模型設(shè)計(jì)工具包括業(yè)務(wù)元素定義信息設(shè)計(jì)工具(圖17),業(yè)務(wù)表定義信息設(shè)計(jì)工 具(圖18),實(shí)體定義信息設(shè)計(jì)工具(圖19),界面定義信息設(shè)計(jì)工具(圖20、21),程序集定 義信息設(shè)計(jì)工具(圖23),程序類定義信息設(shè)計(jì)工具(圖,插件定義信息設(shè)計(jì)工具(圖 25、26),插件應(yīng)用定義信息設(shè)計(jì)工具(圖27、28)。
      業(yè)務(wù)數(shù)據(jù)存儲單元業(yè)務(wù)數(shù)據(jù)存儲單元是用于存儲業(yè)務(wù)數(shù)據(jù)的文件或數(shù)據(jù)庫,業(yè) 務(wù)數(shù)據(jù)的存儲結(jié)構(gòu)與基本模型數(shù)據(jù)存儲單元中的業(yè)務(wù)表定義信息一致。
      模型運(yùn)行引擎模型運(yùn)行引擎包括基本模型類程序集和插件支持程序集,所述基 本模型類程序集中定義了業(yè)務(wù)元素類、業(yè)務(wù)表類、實(shí)體類和界面類;插件支持程序集中定義 了插件接口、插件支持接口、插件適配器類。如圖4所示。模型運(yùn)行引擎是用于讀取模型數(shù) 據(jù)存儲單元中的模型信息并調(diào)用相關(guān)的基本模型類和插件實(shí)現(xiàn)類從而動態(tài)生成模型內(nèi)存 對象和操作界面,同時(shí)根據(jù)用戶操作存取業(yè)務(wù)數(shù)據(jù)存儲單元中的業(yè)務(wù)數(shù)據(jù)。
      插件接口 IPlugin提供一個(gè)規(guī)范來約束插件實(shí)現(xiàn)類必須實(shí)現(xiàn)的屬性和方法,接口 成員有(1)基本模型類對象owner屬性記錄了一個(gè)插件依附的主體對象(基本模型對象), (2)布爾類型對象Active屬性用于標(biāo)記插件啟用狀態(tài),狀態(tài)為false時(shí)斷開主體對象事件 和插件實(shí)現(xiàn)類中處理方法的關(guān)聯(lián)。狀態(tài)為true時(shí)建立主體對象事件和插件實(shí)現(xiàn)類中處理 方法的關(guān)聯(lián)。插件實(shí)現(xiàn)類必須繼承此接口,實(shí)現(xiàn)此接口的屬性和方法來完成插件功能。
      插件適配器類PluginSocket維護(hù)了一個(gè)插件接口列表屬性list和插件裝載方法 load, (1) list屬性是一個(gè)IPlugin結(jié)構(gòu)的列表對象,此列表用來管理一系列附加在基本模 型對象上的插件信息,Load方法是一個(gè)虛方法,繼承與此插件適配器類的插件裝載類在此 方法中將定義在此基本模型對象上的插件依次登記在插件接口列表中。插件裝載類是由模 型設(shè)計(jì)工具根據(jù)插件定義信息和應(yīng)用定義信息自動生成的。模型運(yùn)行引擎加載完基本模型 對象后調(diào)用該對象的插件裝載類的load方法把定義在此基本模型對象的插件實(shí)現(xiàn)類創(chuàng)建 起來并登記在插件適配器的插件接口列表中。
      插件支持接口 ISupportPlugin維護(hù)了支持基本模型對象管理其插件的一系列屬 性和方法,(I)Plugins屬性,此屬性是插件適配器類PluginSocke類型,此結(jié)構(gòu)用于管理所 有附著在此基本模型對象上的插件實(shí)現(xiàn)類對象信息,^CreatePlugins方法,在基本模型 對象創(chuàng)建后調(diào)用該方法將定義在此基本模型對象上的插件創(chuàng)建起來。(3)ACtivatePlugins 方法按順序啟用該基本模型對象上附加的所有插件,插件建立基本模型類對象事件與插件 處理方法的關(guān)聯(lián)。G^eactivatePlugins方法,此方法按與啟用插件相反的順序斷開基本 模型對象所附著插件的處理方法與基本模型類對象事件的關(guān)聯(lián)。為了使基本模型類對象能 動態(tài)的應(yīng)用插件擴(kuò)展功能,基本模型類必須實(shí)現(xiàn)此接口。
      基本模型類包括業(yè)務(wù)元素類,字段類,業(yè)務(wù)表類,實(shí)體類,界面類,各種控件類,菜 單類。所有基本模型類定義中都實(shí)現(xiàn)了插件支持接口 ISupportPlugin,使基本模型可以 用插件擴(kuò)展其功能。如下代碼所示其中的TModel可以是業(yè)務(wù)表類型TTable,實(shí)體類型 TEntity 等基本模型類。public class TModel :ISupportPlugin<TModel>
      { //插件適配器
      PluginSocket<TModel>Plugins
      {
      get {return Plugins ;}
      }
      void CreatePlugins ()
      {
      //此方法將模型定義中已定義的插件創(chuàng)建起來。
      //可以調(diào)用插件的裝載類型的load方法來實(shí)現(xiàn)此功能
      }
      void ActivatePluginsO
      {
      //此方法按順序啟用本主體掛接的所有插件,插件自動建立模
      型主體事件與插件處理方法的關(guān)聯(lián)。
      //可以將各插件實(shí)現(xiàn)類型的active值設(shè)置為true來實(shí)現(xiàn)。
      }
      void DeactivatePlugins ()
      {
      //此方法按相反順序斷開本主體所掛插件的處理方法與主體事件
      的關(guān)聯(lián)。
      //可以將各插件實(shí)現(xiàn)類型的active值設(shè)置為false來實(shí)現(xiàn)。
      }
      }
      插件運(yùn)行庫插件運(yùn)行庫包括插件實(shí)現(xiàn)類程序集和插件裝載類程序集,如圖6所示,插件實(shí)現(xiàn)類程序集包含了用于實(shí)現(xiàn)插件功能的插件實(shí)現(xiàn)類,插件裝載類程序集包含了 用于裝載插件的插件裝載類,插件裝載類用于將插件實(shí)現(xiàn)類對象裝載到插件適配器的插件 接口列表中。
      插件實(shí)現(xiàn)類是由用戶編寫的實(shí)現(xiàn)插件功能的代碼。此類必須實(shí)現(xiàn)IPlugin接口, 接口中的屬性owner為此插件實(shí)現(xiàn)的主體對象,屬性Active的set方法中,如果active為 true則設(shè)置主體對象事件與實(shí)現(xiàn)類處理方法的關(guān)聯(lián),如為false則設(shè)置主體對象事件與實(shí) 現(xiàn)類處理方法的斷開。插件實(shí)現(xiàn)類的代碼編譯后生成的程序集會合并到插件運(yùn)行庫中的插 件實(shí)現(xiàn)類程序集中。插件實(shí)現(xiàn)類代碼框架如下所示0172]0173]0174]0175]0176]0177]0178]0179]0180] 0181] 0182]插件0183]0184]0185]0186]0187]0188]0189]0190]0191]0192]0193]0194]0195]0196]0197]0198]0199]0200] 0201] 0202]0203]0204]public class Model_Plugin :IPlugin<TModel>主體對象(也是基本模型對象)private TModel_0wner -J, TModel Owner{get {return—Owner ;}private bool—Active ;//激活狀態(tài)標(biāo)記,在用模型設(shè)計(jì)工具設(shè)置參數(shù)時(shí)將此狀態(tài)置為false斷開主體對象事件與插件相應(yīng)方法的關(guān)聯(lián)。 Il當(dāng)參數(shù)設(shè)置完畢后模型設(shè)計(jì)工具會將此狀態(tài)置為true,掛接主體對象事件與//相應(yīng)方法的關(guān)聯(lián)。 public bool Activeget{return—Active ;set{if (value)Il掛接模型主體對象事件與插件對應(yīng)方法的關(guān)聯(lián) this.Owner. Event+ = Event ;else {斷開模型主體對象事件與插件對應(yīng)方法的關(guān)聯(lián)tthis. Owner. Event- = Eventthis.Active = value
      [PluginParam]//標(biāo)記此參數(shù)為可被模型工具調(diào)整的參數(shù)
      public string Paraml;//開發(fā)人員可調(diào)插件的參數(shù)。
      private string—Paraml;//插件內(nèi)部屬性。
      //插件構(gòu)造方法,插件裝載類在創(chuàng)建此插件實(shí)現(xiàn)類的對象時(shí)會自動調(diào)用此構(gòu)造方法。
      //此構(gòu)造方法傳遞主體對象給插件實(shí)現(xiàn)類。
      ]{
      thiS. Owner—owner
      //構(gòu)造方法處理必要屬性的初始化
      }
      publ ic void Event(object sender,EventArgs e)
      {
      //主體對象事件響應(yīng)處理代碼
      //在此處實(shí)現(xiàn)插件功能代碼
      }
      public void Dispose 0//處理資源的釋放
      {
      thiS.Active—false
      //處理其他資源釋放
      }
      }
      插件裝載類PluginLoader是模型設(shè)計(jì)工具根據(jù)插件應(yīng)用設(shè)置信息自動生成的一個(gè)類,此類繼承與插件適配器類,實(shí)現(xiàn)了插件適配器類中的虛方法load方法,在此方法中將所屬該主體對象的所有插件都創(chuàng)建起來并裝載到其插件接口列表list中。此類代碼在內(nèi)存中生成并編譯后合并到插件運(yùn)行庫中的插件裝載類程序集中。生成的代碼框架如下所刀虧
      //插件裝載類代碼示例(此部分代碼由模型設(shè)計(jì)工具自動生成)
      publ ic class PluginL。aderPluginS。Cket<TM。del>
      {
      publ ic override void Load(/Model sender)
      {
      //將掛在此基本模型對象上的插件也依次加入列表。
      Model—Pluginl Pl—new Model—Pluginl(sender);
      P.Paraml一’’ParamValue”
      thiS.List.Add(P1);
      Model—Pluginl p2一new Model—Plugin2(sender);
      p2.Paraml一’’ParamValue”
      thiS.List.Add(p2);
      }
      }
      本發(fā)明原理本發(fā)明的插件不同于一般意義上的插件,是一種可以帶參數(shù)的進(jìn)一 步描述基本模型對象的可復(fù)用的軟件組件,插件必須附著在基本模型對象上,也稱為插件 的主體對象,讓主體對象滿足一定的業(yè)務(wù)規(guī)則或者讓主體對象實(shí)現(xiàn)一定的功能。插件可以 自動響應(yīng)主體對象的消息并自動完成相關(guān)操作。插件模型就是一種可以解決業(yè)務(wù)領(lǐng)域問題 的插件定義。同一個(gè)基本模型對象可以使用多個(gè)插件模型擴(kuò)充其描述能力,并用插件完成 其功能。同一個(gè)插件也可以通過調(diào)整參數(shù)對不同基本模型對象擴(kuò)充功能。
      在本發(fā)明如上所述生成應(yīng)用軟件原理和方法下,結(jié)合附圖進(jìn)一步說明本發(fā)明的系 統(tǒng)構(gòu)成和實(shí)施方式。使用本發(fā)明的方法進(jìn)行軟件開發(fā)的步驟如下
      步驟1 根據(jù)需求分析,模型設(shè)計(jì)工具建立模型運(yùn)行引擎據(jù)以運(yùn)行的實(shí)體定義信 息和界面定義信息并存儲在基本模型數(shù)據(jù)存儲單元中;
      步驟1的具體步驟如下
      1. 1模型設(shè)計(jì)工具建立業(yè)務(wù)元素定義信息;
      1. 2模型設(shè)計(jì)工具引用業(yè)務(wù)元素定義信息建立業(yè)務(wù)表定義信息;
      1. 3模型設(shè)計(jì)工具引用業(yè)務(wù)表定義信息建立實(shí)體定義信息;
      1. 4模型設(shè)計(jì)工具引用實(shí)體定義信息建立界面定義信息;
      1. 5將上述信息存儲到基本模型數(shù)據(jù)存儲單元中;
      業(yè)務(wù)元素定義業(yè)務(wù)元素是對字段的數(shù)據(jù)類型進(jìn)行業(yè)務(wù)領(lǐng)域概念的定義,如銷售 系統(tǒng)中的數(shù)量,金額,折扣等概念,只有在銷售系統(tǒng)中才有特殊的意義,財(cái)務(wù)系統(tǒng)中的“借 方”,“貸方”等在財(cái)務(wù)系統(tǒng)中才有意義,而本發(fā)明設(shè)計(jì)一套軟件都是針對某業(yè)務(wù)領(lǐng)域的軟件 系統(tǒng),在系統(tǒng)中的各個(gè)模塊中會大量出現(xiàn)概念相同的字段類型定義。如在銷售系統(tǒng)中的銷 售出庫制單業(yè)務(wù)中和銷售訂貨制單業(yè)務(wù)中都會用到價(jià)格字段,雖然在二個(gè)業(yè)務(wù)中一個(gè)是銷 售價(jià)格,一個(gè)是訂貨價(jià)格,但價(jià)格在計(jì)算中都會使用相同的數(shù)據(jù)類型進(jìn)行,如指定為計(jì)算機(jī) 可識別的money或decimal等數(shù)據(jù)類型,但此種類型是面向計(jì)算機(jī)的,一般只有編程人員 才能理解他的實(shí)際意思,而模型驅(qū)動開發(fā)是面向業(yè)務(wù)的開發(fā)方法,不懂編程的設(shè)計(jì)人員或 業(yè)務(wù)人員也可以設(shè)計(jì)系統(tǒng),讓他們能正確設(shè)計(jì)系統(tǒng),必須使用一種方法指定計(jì)算機(jī)數(shù)據(jù)類 型和業(yè)務(wù)概念相對應(yīng)的影射關(guān)系,業(yè)務(wù)元素就是為了完成此種功能的,方法為使用模型設(shè) 計(jì)工具建立業(yè)務(wù)元素定義信息,如將業(yè)務(wù)領(lǐng)域內(nèi)的概念“數(shù)量”定義為業(yè)務(wù)元素名稱為“數(shù) 量”,實(shí)際類型為int或float的計(jì)算機(jī)系統(tǒng)可識別的類型,價(jià)格定義為業(yè)務(wù)元素名稱為“價(jià) 格”,實(shí)際類型為“money”或“decimal”的計(jì)算機(jī)系統(tǒng)可識別的類型,這樣在設(shè)計(jì)業(yè)務(wù)表中構(gòu) 成的字段時(shí)就可以直接使用業(yè)務(wù)元素來定義字段的類型了,業(yè)務(wù)元素定義步驟為(1)找 到模型設(shè)計(jì)工具中的業(yè)務(wù)元素維護(hù)工具(見圖16中的“業(yè)務(wù)元素定義”),并點(diǎn)擊打開業(yè)務(wù) 元素維護(hù)界面,(2)在業(yè)務(wù)元素維護(hù)界面中點(diǎn)擊“新增”打開新建業(yè)務(wù)元素界面(見圖17), (3)輸入業(yè)務(wù)元素名稱,類型等信息,(4)保存并完成業(yè)務(wù)元素定義。如表4是已完成的部 分業(yè)務(wù)元素定義信息。
      業(yè)務(wù)表定義業(yè)務(wù)表是構(gòu)成業(yè)務(wù)系統(tǒng)存儲信息的最基本的數(shù)據(jù)結(jié)構(gòu),是一個(gè)二維 的關(guān)系表。每一列用于表示一個(gè)業(yè)務(wù)對象的構(gòu)成屬性,在計(jì)算機(jī)系統(tǒng)中也叫字段或域,每一 行用于表示一個(gè)對象數(shù)據(jù),如表1、2、3所示就是構(gòu)成一個(gè)簡單銷售訂單系統(tǒng)的三個(gè)表(銷售訂單主表,銷售訂單明細(xì)表,和一個(gè)客戶信息表),業(yè)務(wù)表定義就是定義業(yè)務(wù)表的屬性和 組成這個(gè)表的字段屬性。字段屬性中的業(yè)務(wù)元素項(xiàng)可以指定為已定義的業(yè)務(wù)元素。指定后 此字段就使用業(yè)務(wù)元素的類型來使用和存儲此字段數(shù)據(jù),也會自動處理在業(yè)務(wù)元素上定義 的所有業(yè)務(wù)規(guī)則。業(yè)務(wù)表定義步驟為(1)找到模型設(shè)計(jì)工具中業(yè)務(wù)表維護(hù)項(xiàng)(參見圖16 中的“表定義”),點(diǎn)擊并打開業(yè)務(wù)表維護(hù)界面(2)在業(yè)務(wù)表維護(hù)界面中點(diǎn)擊“新增”打開新 建業(yè)務(wù)表界面(參見圖18),(3)輸入業(yè)務(wù)表名稱,所屬分類,原數(shù)據(jù)庫名,原表名等信息, (5)添加此表的字段信息(字段名稱,業(yè)務(wù)元素,長度等信息),(6)保存并完成業(yè)務(wù)表定義。 如表5是對業(yè)務(wù)表1、2、3進(jìn)行定義的信息,表6是對業(yè)務(wù)表1、2、3中的字段定義信息。
      表1、業(yè)務(wù)表-客戶信息表
      權(quán)利要求
      1.一種應(yīng)用插件擴(kuò)充模型驅(qū)動開發(fā)能力的系統(tǒng),包括模型數(shù)據(jù)存儲單元、模型設(shè)計(jì)工 具、業(yè)務(wù)數(shù)據(jù)存儲單元、模型運(yùn)行引擎,所述模型數(shù)據(jù)存儲單元包括基本模型數(shù)據(jù)存儲單元;所述模型數(shù)據(jù)存儲單元是用于存 儲模型數(shù)據(jù)的數(shù)據(jù)庫或文件;所述模型設(shè)計(jì)工具用于設(shè)計(jì)業(yè)務(wù)數(shù)據(jù)存儲單元中的業(yè)務(wù)數(shù)據(jù)結(jié)構(gòu)以及基本模型數(shù)據(jù) 存儲單元中的實(shí)體定義信息和界面定義信息;所述模型運(yùn)行引擎用于定義業(yè)務(wù)元素類、字段類、業(yè)務(wù)表類、實(shí)體類和界面類,所述業(yè) 務(wù)元素類、字段類、業(yè)務(wù)表類、實(shí)體類和界面類構(gòu)成基本模型類,所述基本模型類用于在內(nèi) 存中構(gòu)造對應(yīng)的基本模型對象;其特征在于所述模型運(yùn)行引擎還包括插件支持程序集,所述插件支持程序集用于定義插件適配器類;所述模型數(shù)據(jù)存儲單元還包括插件模型數(shù)據(jù)存儲單元和插件應(yīng)用數(shù)據(jù)存儲單元;所述 插件模型數(shù)據(jù)存儲單元用于存儲插件模型的數(shù)據(jù),所述插件模型的數(shù)據(jù)包括程序集定義信 息、程序類定義信息和插件定義信息,所述插件應(yīng)用數(shù)據(jù)存儲單元用于存儲插件應(yīng)用定義 fn息;所述基本模型類具有一個(gè)插件適配器類對象;所述插件適配器類對象可管理多個(gè)插 件,所述插件是插件實(shí)現(xiàn)類運(yùn)行后的內(nèi)存表現(xiàn)形式;也叫插件實(shí)現(xiàn)類對象;所述系統(tǒng)還包括插件運(yùn)行庫;所述插件運(yùn)行庫包括插件實(shí)現(xiàn)類程序集;所述插件實(shí)現(xiàn) 類程序集包括至少一個(gè)插件實(shí)現(xiàn)類,每個(gè)插件實(shí)現(xiàn)類用于實(shí)現(xiàn)相應(yīng)插件的接口規(guī)范和插件 功能;所述基本模型類通過插件適配器類對象管理多個(gè)插件;所述模型設(shè)計(jì)工具還用于設(shè)計(jì)插件運(yùn)行庫及插件模型數(shù)據(jù)存儲單元中的程序集定義 信息、程序類定義信息、插件定義信息和插件應(yīng)用數(shù)據(jù)存儲單元中的插件應(yīng)用定義信息。
      2.根據(jù)權(quán)利要求1所述的應(yīng)用插件擴(kuò)充模型驅(qū)動開發(fā)能力的系統(tǒng),其特征在于所述基本模型數(shù)據(jù)存儲單元用于存儲基本模型的數(shù)據(jù),所述基本模型的數(shù)據(jù)包括界面 定義信息和實(shí)體定義信息,所述界面定義信息包括控件定義信息和菜單定義信息,所述實(shí) 體定義信息包括業(yè)務(wù)表定義信息和業(yè)務(wù)功能定義信息,所述業(yè)務(wù)表定義信息包括字段定義 信息,所述字段定義信息包括業(yè)務(wù)元素定義信息;所述業(yè)務(wù)數(shù)據(jù)存儲單元是存儲業(yè)務(wù)數(shù)據(jù)的數(shù)據(jù)庫或文件;所述模型運(yùn)行引擎可實(shí)現(xiàn)以下功能1]從基本模型數(shù)據(jù)存儲單元中讀取實(shí)體定義信息和界面定義信息;根據(jù)實(shí)體類生成 實(shí)體類對象,根據(jù)界面類生成與實(shí)體類對象相應(yīng)的界面類對象;所述界面類對象的屏幕表 現(xiàn)就是操作界面;所述界面類對象表現(xiàn)的數(shù)據(jù)就是實(shí)體類對象的數(shù)據(jù);2]根據(jù)用戶操作將業(yè)務(wù)數(shù)據(jù)存儲單元中的業(yè)務(wù)數(shù)據(jù)讀取至實(shí)體類對象中供用戶通過 操作界面查看;3]根據(jù)用戶操作將實(shí)體類對象的數(shù)據(jù)保存到業(yè)務(wù)數(shù)據(jù)存儲單元中;4]根據(jù)已生成的實(shí)體類對象和界面類對象讀取插件應(yīng)用定義信息中所對應(yīng)的插件定 義信息,并根據(jù)該插件定義信息調(diào)用所對應(yīng)的插件實(shí)現(xiàn)類生成插件實(shí)現(xiàn)類對象,并使插件實(shí)現(xiàn)類對象和實(shí)體類對象及操作界面關(guān)聯(lián)以控制實(shí)體類對象和界面類對象。
      3.一種應(yīng)用插件擴(kuò)充模型驅(qū)動開發(fā)能力的系統(tǒng),包括模型數(shù)據(jù)存儲單元、模型設(shè)計(jì)工 具、業(yè)務(wù)數(shù)據(jù)存儲單元、模型運(yùn)行引擎,所述模型數(shù)據(jù)存儲單元包括基本模型數(shù)據(jù)存儲單元;所述模型設(shè)計(jì)工具用于設(shè)計(jì)業(yè)務(wù)數(shù)據(jù)存儲單元中的業(yè)務(wù)數(shù)據(jù)結(jié)構(gòu)以及基本模型數(shù)據(jù) 存儲單元中的實(shí)體定義信息和界面定義信息;所述模型運(yùn)行引擎用于定義業(yè)務(wù)元素類、字段類、業(yè)務(wù)表類、實(shí)體類和界面類,所述業(yè) 務(wù)元素類、字段類、業(yè)務(wù)表類、實(shí)體類和界面類構(gòu)成基本模型類,所述基本模型類用于在內(nèi) 存中構(gòu)造對應(yīng)的基本模型對象; 其特征在于所述模型運(yùn)行引擎還包括插件支持程序集,所述插件支持程序集用于定義插件接口、 插件支持接口和插件適配器類;所述模型數(shù)據(jù)存儲單元還包括插件模型數(shù)據(jù)存儲單元和插件應(yīng)用數(shù)據(jù)存儲單元;所述 插件模型數(shù)據(jù)存儲單元用于存儲插件模型的數(shù)據(jù),所述插件模型的數(shù)據(jù)包括程序集定義信 息、程序類定義信息和插件定義信息,所述插件應(yīng)用數(shù)據(jù)存儲單元用于存儲插件應(yīng)用定義 fn息;所述插件接口中定義有一個(gè)基本模型類對象;實(shí)現(xiàn)插件接口的插件實(shí)現(xiàn)類必須實(shí)現(xiàn)此 基本模型類對象;此基本模型類對象記錄了實(shí)現(xiàn)此接口的插件實(shí)現(xiàn)類所服務(wù)的基本模型類 對象;所述基本模型類可實(shí)現(xiàn)插件支持接口 ;插件支持接口中具有一個(gè)插件適配器類對象; 所述插件適配器類具有一個(gè)基本模型類對象,此基本模型類對象記錄了此適配器類所屬的 基本模型對象;所述插件適配器類具有一個(gè)可管理多個(gè)插件的插件接口列表,所述插件是 插件實(shí)現(xiàn)類運(yùn)行后的內(nèi)存表現(xiàn)形式;所述插件接口列表中可以記錄對應(yīng)的插件;所述系統(tǒng)還包括插件運(yùn)行庫;所述插件運(yùn)行庫包括插件實(shí)現(xiàn)類程序集;所述插件實(shí)現(xiàn) 類程序集包括至少一個(gè)插件實(shí)現(xiàn)類;所述系統(tǒng)還包括插件運(yùn)行庫;所述插件運(yùn)行庫包括插件實(shí)現(xiàn)類程序集和插件裝載類程 序集;所述插件實(shí)現(xiàn)類程序集包括至少一個(gè)插件實(shí)現(xiàn)類,每個(gè)插件實(shí)現(xiàn)類用于實(shí)現(xiàn)相應(yīng)插 件的接口規(guī)范和插件功能,所述插件裝載類程序集包括至少一個(gè)插件裝載類,插件裝載類 繼承于插件適配器類,每個(gè)插件裝載類可根據(jù)插件應(yīng)用定義信息創(chuàng)建插件,并將創(chuàng)建的插 件登記在插件接口列表中;所述基本模型類通過插件接口列表管理多個(gè)插件;所述模型設(shè)計(jì)工具還用于設(shè)計(jì)插件運(yùn)行庫及插件模型數(shù)據(jù)存儲單元中的程序集定義 信息、程序類定義信息、插件定義信息和插件應(yīng)用數(shù)據(jù)存儲單元中的插件應(yīng)用定義信息。
      4.根據(jù)權(quán)利要求3所述的應(yīng)用插件擴(kuò)充模型驅(qū)動開發(fā)能力的系統(tǒng),其特征在于所述基本模型數(shù)據(jù)存儲單元用于存儲基本模型的數(shù)據(jù),所述基本模型的數(shù)據(jù)包括界面 定義信息和實(shí)體定義信息,所述界面定義信息包括控件定義信息和菜單定義信息,所述實(shí) 體定義信息包括業(yè)務(wù)表定義信息和業(yè)務(wù)功能定義信息,所述業(yè)務(wù)表定義信息包括字段定義 信息,所述字段定義信息包括業(yè)務(wù)元素定義信息;所述業(yè)務(wù)數(shù)據(jù)存儲單元是存儲業(yè)務(wù)數(shù)據(jù)的數(shù)據(jù)庫或文件;所述模型運(yùn)行引擎可實(shí)現(xiàn)以下功能1]從基本模型數(shù)據(jù)存儲單元中讀取實(shí)體定義信息和界面定義信息;根據(jù)實(shí)體類生成 實(shí)體類對象,根據(jù)界面類生成界面類對象;所述界面類對象的屏幕表現(xiàn)就是操作界面;所 述界面類對象表現(xiàn)的數(shù)據(jù)就是實(shí)體類對象的數(shù)據(jù);2]根據(jù)用戶操作將業(yè)務(wù)數(shù)據(jù)存儲單元中的業(yè)務(wù)數(shù)據(jù)讀取至實(shí)體類對象中供用戶通過 操作界面查看;3]根據(jù)用戶操作將實(shí)體類對象的數(shù)據(jù)保存到業(yè)務(wù)數(shù)據(jù)存儲單元中;4]根據(jù)已生成的實(shí)體類對象和界面類對象讀取插件應(yīng)用定義信息中所對應(yīng)的插件定 義信息,并根據(jù)該插件定義信息調(diào)用所對應(yīng)的插件實(shí)現(xiàn)類生成插件實(shí)現(xiàn)類對象,并使插件 實(shí)現(xiàn)類對象和實(shí)體對象及界面類對象關(guān)聯(lián)以控制實(shí)體對象和界面對象。
      5.一種應(yīng)用插件擴(kuò)充模型驅(qū)動開發(fā)能力的方法,其特征在于包括以下步驟(1)根據(jù)需求分析,模型設(shè)計(jì)工具建立模型運(yùn)行引擎據(jù)以運(yùn)行的實(shí)體定義信息和界面 定義信息并存儲在基本模型數(shù)據(jù)存儲單元中;(2)模型設(shè)計(jì)工具根據(jù)所建立的相關(guān)信息定義相應(yīng)的業(yè)務(wù)數(shù)據(jù)結(jié)構(gòu),并存儲到業(yè)務(wù)數(shù) 據(jù)存儲單元中;(3)根據(jù)需求分析,模型設(shè)計(jì)工具建立插件模型的數(shù)據(jù),并存儲在插件模型數(shù)據(jù)存儲單 元中;(4)根據(jù)上述插件定義信息,模型設(shè)計(jì)工具編寫相應(yīng)的插件實(shí)現(xiàn)類代碼,并編譯生成插 件實(shí)現(xiàn)類程序集;(5)使用模型設(shè)計(jì)工具定義與基本模型對應(yīng)的插件應(yīng)用定義信息,并存儲到插件應(yīng)用 數(shù)據(jù)存儲單元中;(6)使用模型運(yùn)行引擎運(yùn)行基本模型和插件模型。
      6.根據(jù)權(quán)利要求5所述應(yīng)用插件擴(kuò)充模型驅(qū)動開發(fā)能力的方法,其特征在于 所述步驟1的具體步驟如下·1.1模型設(shè)計(jì)工具建立業(yè)務(wù)元素定義信息; 1. 2模型設(shè)計(jì)工具引用業(yè)務(wù)元素定義信息建立業(yè)務(wù)表定義信息; 1. 3模型設(shè)計(jì)工具引用業(yè)務(wù)表定義信息建立實(shí)體定義信息; 1. 4模型設(shè)計(jì)工具引用實(shí)體定義信息建立界面定義信息; 1. 5將上述信息存儲到基本模型數(shù)據(jù)存儲單元中; 所述步驟2的具體步驟如下模型設(shè)計(jì)工具根據(jù)業(yè)務(wù)表定義信息定義業(yè)務(wù)數(shù)據(jù)結(jié)構(gòu),并生成業(yè)務(wù)數(shù)據(jù)存儲單元中的 業(yè)務(wù)數(shù)據(jù)結(jié)構(gòu);步驟3的具體步驟如下·3. 1模型設(shè)計(jì)工具建立程序集定義信息;·3. 2模型設(shè)計(jì)工具建立程序類定義信息,并指定其中的程序類所屬的程序集; 3. 3模型設(shè)計(jì)工具建立插件定義信息,并指定其中實(shí)現(xiàn)插件功能的程序類;·3.4將上述信息存儲到插件模型數(shù)據(jù)存儲單元中; 所述步驟4的具體步驟如下·4.1根據(jù)插件定義信息,模型設(shè)計(jì)工具生成一個(gè)插件實(shí)現(xiàn)類代碼框架;.4. 2模型設(shè)計(jì)工具根據(jù)插件實(shí)現(xiàn)類代碼框架編寫插件實(shí)現(xiàn)類代碼; 4. 3模型設(shè)計(jì)工具根據(jù)插件實(shí)現(xiàn)類代碼編譯并生成插件實(shí)現(xiàn)類程序集; 步驟5的具體步驟如下模型設(shè)計(jì)工具引用基本模型定義信息和插件模型定義信息,定義與基本模型對應(yīng)的插 件應(yīng)用定義信息,并存儲到插件應(yīng)用數(shù)據(jù)存儲單元中; 步驟6的具體步驟如下.6. 1創(chuàng)建基本模型對象及其子對象,模型運(yùn)行引擎從基本模型數(shù)據(jù)存儲單元中讀取實(shí) 體定義信息和界面定義信息,根據(jù)實(shí)體類生成實(shí)體類對象,根據(jù)界面類生成界面類對象;.6. 2創(chuàng)建基本模型類對象的插件,根據(jù)已生成的基本模型類對象,讀取插件應(yīng)用數(shù)據(jù)存 儲單元中相應(yīng)的插件應(yīng)用定義信息,根據(jù)插件應(yīng)用定義信息讀取插件模型數(shù)據(jù)存儲單元中 的程序集定義信息和程序類定義信息,根據(jù)程序集定義信息中的程序集名稱調(diào)用對應(yīng)程序 集中的程序類創(chuàng)建插件實(shí)現(xiàn)類對象;并將所創(chuàng)建的插件實(shí)現(xiàn)類對象記錄在基本模型類對象 的插件適配器類對象中;.6. 3建立基本模型類對象和插件實(shí)現(xiàn)類對象的關(guān)聯(lián),將插件實(shí)現(xiàn)類對象記錄在插件適 配器類對象后,調(diào)用基本模型對象及其子對象的插件啟用方法建立插件實(shí)現(xiàn)類相應(yīng)方法與 基本模型類對象及其子對象事件的關(guān)聯(lián),此插件啟用方法中設(shè)置插件適配器類對象中的各 插件實(shí)現(xiàn)類對象的激活屬性,此激活屬性會在激活時(shí)建立基本模型類對象及其子對象的事 件與插件實(shí)現(xiàn)類對象中相應(yīng)方法的關(guān)聯(lián),此激活屬性會在禁用時(shí)斷開基本模型類對象及其 子對象的事件與插件實(shí)現(xiàn)類對象中相應(yīng)方法的關(guān)聯(lián);.6. 4運(yùn)行過程中,插件實(shí)現(xiàn)類對象響應(yīng)基本模型類對象及其子對象的事件并執(zhí)行相應(yīng) 方法完成插件功能;.6. 5基本模型類對象及其子對象在銷毀前先斷開其事件與插件實(shí)現(xiàn)類對象相應(yīng)方法的 聯(lián)系,并銷毀插件實(shí)現(xiàn)類對象;.6.6銷毀基本模型類對象及其子對象;
      7.一種應(yīng)用插件擴(kuò)充模型驅(qū)動開發(fā)能力的方法,其特征在于包括以下步驟(1)根據(jù)需求分析,模型設(shè)計(jì)工具建立模型運(yùn)行引擎據(jù)以運(yùn)行的實(shí)體定義信息和界面 定義信息并存儲在基本模型數(shù)據(jù)存儲單元中;(2)模型設(shè)計(jì)工具根據(jù)所建立的相關(guān)信息定義相應(yīng)的業(yè)務(wù)數(shù)據(jù)結(jié)構(gòu),并存儲到業(yè)務(wù)數(shù) 據(jù)存儲單元中;(3)根據(jù)需求分析,模型設(shè)計(jì)工具建立插件模型的數(shù)據(jù),并存儲在插件模型數(shù)據(jù)存儲單 元中;(4)根據(jù)上述插件定義信息,模型設(shè)計(jì)工具編寫相應(yīng)的插件實(shí)現(xiàn)類代碼,并編譯生成插 件實(shí)現(xiàn)類程序集;(5)使用模型設(shè)計(jì)工具定義與基本模型對應(yīng)的插件應(yīng)用定義信息,并存儲到插件應(yīng)用 數(shù)據(jù)存儲單元中,同時(shí)生成相應(yīng)的插件裝載類代碼,并將其存儲到程序類定義信息的程序 類代碼項(xiàng)中,并且把生成的插件裝載類代碼編譯并合并到插件裝載類程序集中;(6)使用模型運(yùn)行引擎運(yùn)行基本模型和插件模型。
      8.根據(jù)權(quán)利要求7所述應(yīng)用插件擴(kuò)充模型驅(qū)動開發(fā)能力的方法,其特征在于 所述步驟1的具體步驟如下·1. 1模型設(shè)計(jì)工具建立業(yè)務(wù)元素定義信息; 1. 2模型設(shè)計(jì)工具引用業(yè)務(wù)元素定義信息建立業(yè)務(wù)表定義信息; 1. 3模型設(shè)計(jì)工具引用業(yè)務(wù)表定義信息建立實(shí)體定義信息; 1. 4模型設(shè)計(jì)工具引用實(shí)體定義信息建立界面定義信息; 1. 5將上述信息存儲到基本模型數(shù)據(jù)存儲單元中; 所述步驟2的具體步驟如下模型設(shè)計(jì)工具根據(jù)業(yè)務(wù)表定義信息定義業(yè)務(wù)數(shù)據(jù)結(jié)構(gòu),并生成業(yè)務(wù)數(shù)據(jù)存儲單元中的 業(yè)務(wù)數(shù)據(jù)結(jié)構(gòu);所述步驟3的具體步驟如下·3. 1模型設(shè)計(jì)工具建立程序集定義信息;·3. 2模型設(shè)計(jì)工具建立程序類定義信息,并指定其中的程序類所屬的程序集; 3. 3模型設(shè)計(jì)工具建立插件定義信息,并指定其中實(shí)現(xiàn)插件功能的程序類;·3.4將上述信息存儲到插件模型數(shù)據(jù)存儲單元中; 所述步驟4的具體步驟如下·4.1根據(jù)插件定義信息,模型設(shè)計(jì)工具生成一個(gè)插件實(shí)現(xiàn)類代碼框架; 4. 2模型設(shè)計(jì)工具根據(jù)插件實(shí)現(xiàn)類代碼框架編寫插件實(shí)現(xiàn)類代碼;·4. 3模型設(shè)計(jì)工具根據(jù)插件實(shí)現(xiàn)類代碼編譯并生成插件實(shí)現(xiàn)類程序集; 所述步驟5的具體步驟如下模型設(shè)計(jì)工具引用基本模型定義信息和插件模型定義信息,定義與基本模型對應(yīng)的插 件應(yīng)用定義信息,并存儲到插件應(yīng)用數(shù)據(jù)存儲單元中,同時(shí)生成相應(yīng)的插件裝載類代碼,并 將其存儲到程序類定義信息的程序類代碼項(xiàng)中,且把生成的插件裝載類代碼編譯并合并到 插件裝載類程序集中;所述步驟6的具體步驟如下·6. 1創(chuàng)建基本模型類對象及其子對象,模型運(yùn)行引擎從基本模型數(shù)據(jù)存儲單元中讀 取實(shí)體定義信息和界面定義信息,根據(jù)實(shí)體類生成實(shí)體類對象,根據(jù)界面類生成界面類對 象;·6. 2創(chuàng)建基本模型類對象的插件,根據(jù)已生成的基本模型類對象,讀取插件應(yīng)用數(shù)據(jù)存 儲單元中相應(yīng)的插件應(yīng)用定義信息,根據(jù)插件應(yīng)用定義信息讀取插件模型數(shù)據(jù)存儲單元中 的程序集定義信息和程序類定義信息,根據(jù)程序集定義信息中的程序集名稱調(diào)用插件裝載 類程序集中的插件裝載類相應(yīng)裝載方法創(chuàng)建插件實(shí)現(xiàn)類對象;并將插件實(shí)現(xiàn)類對象記錄到 基本模型類對象的插件適配器類對象中的插件接口列表中;·6. 3建立基本模型類對象和插件的關(guān)聯(lián),將插件登記在插件適配器類對象的插件接口 列表后,調(diào)用基本模型類對象及其子對象的插件啟用方法建立插件實(shí)現(xiàn)類對象相應(yīng)方法與 基本模型類對象及其子對象事件的關(guān)聯(lián),此插件啟用方法中設(shè)置插件適配器類對象的插件 接口列表中所記錄的各插件實(shí)現(xiàn)類對象的激活屬性,此激活屬性會在激活時(shí)建立基本模型 類對象及其子對象的事件與插件實(shí)現(xiàn)類對象中相應(yīng)方法的關(guān)聯(lián),此激活屬性會在禁用時(shí)斷 開基本模型類對象及其子對象的事件與插件實(shí)現(xiàn)類對象中相應(yīng)方法的關(guān)聯(lián);·6. 4運(yùn)行中,插件實(shí)現(xiàn)類對象響應(yīng)基本模型類對象及其子對象的事件并執(zhí)行相應(yīng)方法 完成插件功能;--6. 5基本模型類對象銷毀前先斷開其事件與插件實(shí)現(xiàn)類對象相應(yīng)方法的聯(lián)系,并銷毀 插件實(shí)現(xiàn)類對象;-6. 6銷毀基本模型類對象及其子對象。
      全文摘要
      一種應(yīng)用插件擴(kuò)充模型驅(qū)動開發(fā)能力的系統(tǒng)及其方法,該系統(tǒng)和方法提出了“模型+插件”的組合方式來描述構(gòu)建軟件系統(tǒng),先用模型設(shè)計(jì)工具建立軟件系統(tǒng)的基本模型描述,再建立若干可復(fù)用的插件模型進(jìn)一步描述基本模型對象,插件模型可以在各種基本模型對象上進(jìn)行任意擴(kuò)展,插件可以完成任意復(fù)雜度的軟件功能,從而實(shí)現(xiàn)了對模型驅(qū)動開發(fā)能力的擴(kuò)充。本發(fā)明解決了現(xiàn)有的模型驅(qū)動開發(fā)方法采用一套固定模型對復(fù)雜業(yè)務(wù)系統(tǒng)描述能力不足以及無法在運(yùn)行態(tài)可視的、動態(tài)的用模型驅(qū)動開發(fā)方法構(gòu)建、擴(kuò)充和維護(hù)軟件系統(tǒng)等技術(shù)問題,使用本發(fā)明方法開發(fā)系統(tǒng),具有開發(fā)復(fù)雜度低、開發(fā)速度快,技術(shù)復(fù)用程度高,開發(fā)的系統(tǒng)具有擴(kuò)展靈活、維護(hù)方便、可靠性高的優(yōu)點(diǎn)。
      文檔編號G06F9/44GK102033743SQ20101028510
      公開日2011年4月27日 申請日期2010年9月17日 優(yōu)先權(quán)日2010年9月2日
      發(fā)明者張鐵牛, 李長鋒, 王四美 申請人:西安賽斐軟件科技有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1