迷途書童

          敏感、勤學(xué)、多思
          隨筆 - 77, 文章 - 4, 評論 - 86, 引用 - 0
          數(shù)據(jù)加載中……

          面向領(lǐng)域的業(yè)務(wù)平臺設(shè)計(二)

          如何解決上文提到的鑒定標(biāo)準(zhǔn)中的問題呢?我認(rèn)為答案就是MDD。

          用一個實際的例子來表述一下思路:

          在CRM系統(tǒng)有個訂單處理模塊,其提供了訂單管理、訂單流程執(zhí)行、工單管理等功能,營業(yè)員通過界面提交一個訂單請求,如果訂單請求通過業(yè)務(wù)規(guī)則的校驗,則會創(chuàng)建一個訂單對象,訂單對象的創(chuàng)建會觸發(fā)訂單流程的創(chuàng)建,訂單流程流轉(zhuǎn)的過程中,會在各個節(jié)點創(chuàng)建工單,也會調(diào)用其它子系統(tǒng)開通服務(wù),比如調(diào)用物流發(fā)貨。訂單流程完成后,訂單對象的狀態(tài)也完成。實際的系統(tǒng)比這個要復(fù)雜,這里僅僅為了闡述思路,做適當(dāng)?shù)暮喕?/p>

          從上面的例子,我們可以識別出幾個模型:訂單、工單、訂單流程,訂單、工單、訂單流程都是stateful的、其state的變更會導(dǎo)致其它對象的狀態(tài)變更或者服務(wù)的執(zhí)行。

          在展現(xiàn)層,展現(xiàn)各個模型是有章法的,比如創(chuàng)建訂單的界面總是一樣的,處理工單的界面也總是一樣的,展現(xiàn)訂單的界面也總是一樣的。因此,我們可針對指定的對象的某種需要展現(xiàn)的狀態(tài),提供合適的展示構(gòu)件(WEB TAG)來展示它。

          在持久層,因為對象總是持久化到一張表當(dāng)中的,因此,可用一些ORM的框架來持久化對象,而不是開發(fā)人員針對每個場景去寫SQL,復(fù)雜的關(guān)聯(lián)查詢可以使用類HQL。

          各對象之間的關(guān)聯(lián)操作通過事件驅(qū)動。

          舉一個訂單創(chuàng)建的例子:

          1、開發(fā)做的工作:

              1)使用元數(shù)據(jù)定義訂單的數(shù)據(jù)結(jié)構(gòu),包含持久化元數(shù)據(jù)、基本屬性元數(shù)據(jù)、字典元數(shù)據(jù);

              2)定義訂單狀態(tài)機,以及狀態(tài)變遷的規(guī)則;

              3)建模訂單處理流程;

              4)定義訂單請求處理規(guī)則流,并發(fā)布為一個受理訂單請求的服務(wù);

              5)開發(fā)訂單創(chuàng)建界面,使用訂單WEB構(gòu)件來展示訂單對象;

              6)定義事件,以及事件的監(jiān)聽服務(wù);

          2、系統(tǒng)執(zhí)行流程:

              1)營業(yè)員打開訂單創(chuàng)建界面,系統(tǒng)獲取訂單對象的元數(shù)據(jù),生成訂單創(chuàng)建頁面;

              2)營業(yè)員點擊訂單創(chuàng)建界面的提交按鈕,調(diào)用受理訂單請求的服務(wù);規(guī)則流執(zhí)行,如果規(guī)則校驗錯誤,則返回錯誤,如果成功,則創(chuàng)建訂單,返回成功;

              3)因創(chuàng)建訂單,導(dǎo)致訂單的狀態(tài)變?yōu)閯?chuàng)建狀態(tài),觸發(fā)訂單創(chuàng)建事件;

              4)訂單創(chuàng)建的監(jiān)聽服務(wù)流程服務(wù)接收到事件,觸發(fā)訂單處理流程的創(chuàng)建;

              5)流程執(zhí)行的過程中編排第三方系統(tǒng)服務(wù);流程執(zhí)行結(jié)束后,觸發(fā)訂單流程結(jié)束事件,流程結(jié)束事件的監(jiān)聽服務(wù)訂單管理接收到事件,觸發(fā)狀態(tài)機變遷,訂單狀態(tài)變?yōu)橥瓿伞?/p>

          上述開發(fā)做的工作全部可通過配置完成。后續(xù)如果增刪字段,修改元數(shù)據(jù)即可,要增刪改業(yè)務(wù)規(guī)則,調(diào)整業(yè)務(wù)規(guī)則即可,要調(diào)整實體狀態(tài),修改實體狀態(tài)機即可。

          業(yè)務(wù)平臺要致力于對狀態(tài)機、業(yè)務(wù)流程、SEP、元數(shù)據(jù)、領(lǐng)域化的WEB構(gòu)件的實現(xiàn),并將其有機整合。

           

          寫的比較亂,過幾天再整理一下。。。

          posted on 2012-02-26 17:12 迷途書童 閱讀(1487) 評論(2)  編輯  收藏 所屬分類: 隨感系統(tǒng)設(shè)計java應(yīng)用SOA

          評論

          # re: 面向領(lǐng)域的業(yè)務(wù)平臺設(shè)計(二)  回復(fù)  更多評論   

          Siebel Architecture (Basic Concepts)
          2012-02-27 16:11 | tt

          # re: 面向領(lǐng)域的業(yè)務(wù)平臺設(shè)計(二)  回復(fù)  更多評論   

          寫得不錯,實用!
          2012-03-04 15:17 | 發(fā)表論文
          主站蜘蛛池模板: 山阴县| 二连浩特市| 扎囊县| 沙湾县| 株洲市| 辽中县| 宿迁市| 德州市| 宾阳县| 棋牌| 兴隆县| 宝应县| 固始县| 章丘市| 平果县| 龙门县| 吉水县| 峨边| 宽甸| 自贡市| 连城县| 青浦区| 诸城市| 克什克腾旗| 陈巴尔虎旗| 平阴县| 怀来县| 韶关市| 扎赉特旗| 青神县| 启东市| 井研县| 双城市| 大冶市| 前郭尔| 同江市| 丹棱县| 吉木萨尔县| 五常市| 樟树市| 徐州市|