一種基于元數(shù)據(jù)描述的業(yè)務(wù)實體操作管理與自動執(zhí)行方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種MDD (模型驅(qū)動開發(fā))開發(fā)后臺應(yīng)用服務(wù)技術(shù)領(lǐng)域,具體地說是一種基于元數(shù)據(jù)描述的業(yè)務(wù)實體操作管理與自動執(zhí)行方法。
【背景技術(shù)】
[0002]在MDD (模型驅(qū)動開發(fā))模式下,領(lǐng)域業(yè)務(wù)實體被描述成一個元數(shù)據(jù)的形式,可以通過XML格式來表達。其中包含了數(shù)據(jù)屬性成員的定義和業(yè)務(wù)操作的定義,類似面向?qū)ο蟮脑O(shè)計過程中類的定義中包含屬性和函數(shù)。
[0003]例如一個業(yè)務(wù)實體具有多個數(shù)據(jù)成員,和業(yè)務(wù)操作,那么其描述結(jié)構(gòu)如下所示: <?xml vers1n=〃l.0〃 encoding=〃utf_16〃?>
<B0...>
〈Content ID="SalesOrder"…〉
〈Node id=〃Header〃>
〈Field ID=〃id〃 type=,,String,,.../>
〈Field ID=〃docNo〃 type=,,String"…/>
〈Operat1ns〉
〈Item id=〃Approve〃…〉
〈/Operat1ns〉
〈/Node〉
</UI>o
[0004]然后在運行時,通過持久化機制解析此元數(shù)據(jù),實現(xiàn)數(shù)據(jù)的CRUD動作,并顯式調(diào)用元數(shù)據(jù)中定義的操作。
[0005]隨著業(yè)務(wù)系統(tǒng)不斷變得復(fù)雜,業(yè)務(wù)場景也變得更加多變,通過傳統(tǒng)的方式來描述與實體數(shù)據(jù)關(guān)系非常緊密的一些操作,比如實體數(shù)據(jù)聯(lián)動,數(shù)據(jù)合法性檢查等,會變得非常繁瑣,而且這些動作分散在各種業(yè)務(wù)邏輯內(nèi)部,如果管理不善,系統(tǒng)會變得不穩(wěn)定,同時業(yè)務(wù)系統(tǒng)的維護成本也會隨之不斷提高。
[0006]本發(fā)明提供提供一種基于元數(shù)據(jù)描述的業(yè)務(wù)實體操作管理與自動執(zhí)行方法,該方法通過配置的方式定義自動執(zhí)行的業(yè)務(wù)操作的執(zhí)行對象和觸發(fā)時機,在運行時應(yīng)用反射技術(shù),動態(tài)執(zhí)行相應(yīng)的操作。
【發(fā)明內(nèi)容】
[0007]本發(fā)明的技術(shù)任務(wù)是針對以上不足之處,提供一種基于元數(shù)據(jù)描述的業(yè)務(wù)實體操作管理與自動執(zhí)行方法,來提高系統(tǒng)的可擴展性和靈活性。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:
一種基于元數(shù)據(jù)描述的業(yè)務(wù)實體操作管理與自動執(zhí)行方法,包括如下步驟: 一、在業(yè)務(wù)實體的元數(shù)據(jù)中定義自動執(zhí)行的業(yè)務(wù)操作;
二、在元數(shù)據(jù)中定義自動執(zhí)行操作的時機;
三、當同一個觸發(fā)時機包含多個自動執(zhí)行的業(yè)務(wù)操作時,在元數(shù)據(jù)中指定動作執(zhí)行的先后順序;
四、程序運行到觸發(fā)時機時,根據(jù)元數(shù)據(jù)的定義執(zhí)行特定的業(yè)務(wù)操作。
[0008]所述業(yè)務(wù)操作的屬性定義包含以下內(nèi)容:業(yè)務(wù)操作所在的程序集及版本信息,命名空間,類名稱,方法名稱。
[0009]所述實體自動執(zhí)行的操作抽象成數(shù)據(jù)聯(lián)動、數(shù)據(jù)合法性檢查、實體數(shù)據(jù)變更訂閱三大類,其中:
數(shù)據(jù)聯(lián)動用于定義根據(jù)實體中特定字段數(shù)據(jù)的變化引起另一部分屬性值的變動的規(guī)則;
數(shù)據(jù)合法性檢查用于確保實體數(shù)據(jù)的屬性符合業(yè)務(wù)規(guī)則約束的定義,避免后續(xù)的業(yè)務(wù)邏輯執(zhí)行過程中出現(xiàn)錯誤;當出現(xiàn)數(shù)據(jù)不滿足業(yè)務(wù)規(guī)則的場景時,通過異常消息的方式,將指導(dǎo)用戶操作的信息組織出來,并返回給用戶;
實體數(shù)據(jù)變更訂閱操作描述不同實體間的數(shù)據(jù)自動同步操作。
[0010]所述自動執(zhí)行操作的觸發(fā)時機包括選擇實體加載前后、實體修改前后、實體保存前后、實體編碼生成前后、實體保存前后、保存失敗后。
[0011]所述指定動作執(zhí)行的先后順序是指,定義業(yè)務(wù)操作執(zhí)行的前驅(qū)和后繼操作,來確定操作的執(zhí)行順序。
[0012]所述步驟四的具體過程為:系統(tǒng)在運行時,通過用戶的操作,會對實體進行增刪查改的操作,執(zhí)行到觸發(fā)時機中所述的場景時,通過解析業(yè)務(wù)操作描述信息,反射執(zhí)行相應(yīng)的業(yè)務(wù)操作。
[0013]本發(fā)明的一種基于元數(shù)據(jù)描述的業(yè)務(wù)實體操作管理與自動執(zhí)行方法和現(xiàn)有技術(shù)相比,具有以下有益效果:
本發(fā)明的一種基于元數(shù)據(jù)描述的業(yè)務(wù)實體操作管理與自動執(zhí)行方法,可以將與業(yè)務(wù)實體緊密相關(guān)的動作通過配置綁定到實體類型上,提高了系統(tǒng)的可擴展性,同時將一些業(yè)務(wù)邏輯從頁面邏輯中剝離出來沉淀到業(yè)務(wù)邏輯層,使業(yè)務(wù)系統(tǒng)更容易支持多種不同的UI展現(xiàn)形式;
通過應(yīng)用此方法,業(yè)務(wù)開發(fā)可以將業(yè)務(wù)實體上的公共操作如實體屬性間的數(shù)據(jù)聯(lián)動、合法性檢查、實體數(shù)據(jù)變更后的事件訂閱等操作從業(yè)務(wù)邏輯中提煉出來通過元數(shù)據(jù)描述的方式定義到業(yè)務(wù)實體上,并通過定義觸發(fā)時機和執(zhí)行順序交給框架來執(zhí)行,這些業(yè)務(wù)操作的觸發(fā)只與業(yè)務(wù)實體的狀態(tài)變化相關(guān),就可以保證它們在不同的用戶操作之間可以被重用;
該方法的步驟中,許多定義都是通過元數(shù)據(jù)配置來完成的,這樣就可以保證系統(tǒng)中的部分業(yè)務(wù)邏輯可以由實施人員來根據(jù)項目的要求來配置,提高了系統(tǒng)的可擴展性和靈活性,實用性強,易于推廣。
【附圖說明】
[0014]下面結(jié)合附圖對本發(fā)明進一步說明。
[0015]附圖1為本發(fā)明實施例中描述的銷售訂單示意圖。
【具體實施方式】
[0016]下面結(jié)合附圖和具體實施例對本發(fā)明作進一步說明。
[0017]本發(fā)明的一種基于元數(shù)據(jù)描述的業(yè)務(wù)實體操作管理與自動執(zhí)行方法,通過配置的方式定義自動執(zhí)行的業(yè)務(wù)操作的執(zhí)行對象和觸發(fā)時機,在運行時應(yīng)用反射技術(shù),動態(tài)執(zhí)行相應(yīng)的操作,該方法包括如下步驟:
一、在業(yè)務(wù)實體的元數(shù)據(jù)中定義自動執(zhí)行的業(yè)務(wù)操作;
二、在元數(shù)據(jù)中定義自動執(zhí)行操作的時機;
三、當同一個觸發(fā)時機包含多個自動執(zhí)行的業(yè)務(wù)操作時,在元數(shù)據(jù)中指定動作執(zhí)行的先后順序;
四、程序運行到觸發(fā)時機時,根據(jù)元數(shù)據(jù)的定義執(zhí)行特定的業(yè)務(wù)操作。