posts - 193,  comments - 520,  trackbacks - 0

          也許是流程做多了的緣故,所以看起程序開(kāi)發(fā)來(lái)一切都是流程或者說(shuō)都包含流程。個(gè)人認(rèn)為大多數(shù)的企業(yè)應(yīng)用(不包括特殊應(yīng)用,例如文檔庫(kù)、信息資源庫(kù)、BBS等等)不過(guò)是對(duì)數(shù)據(jù)以一定的樣式展現(xiàn)(表單),以一定的邏輯對(duì)數(shù)據(jù)進(jìn)行操作(業(yè)務(wù)規(guī)則),以及把這些處理數(shù)據(jù)的過(guò)程以一定的流程進(jìn)行管理(流程)。上面三個(gè)方面分別對(duì)應(yīng)著表單、業(yè)務(wù)規(guī)則和流程。程序開(kāi)發(fā)中則對(duì)應(yīng)于表單引擎、規(guī)則引擎和工作流引擎。而這些方面又可以統(tǒng)一到一個(gè)更大范疇的流程上來(lái),所以這里有對(duì)流程驅(qū)動(dòng)開(kāi)發(fā)的設(shè)想。

          先來(lái)看看具體的應(yīng)用場(chǎng)景。

          單表增刪改查

          這是最簡(jiǎn)單的情形,也沒(méi)有流程,對(duì)這個(gè)情形不加討論。但是這里會(huì)提到表單引擎,VB里的數(shù)據(jù)控件非常的易用,沒(méi)有PO,沒(méi)有DAO,也沒(méi)有Service,直接與數(shù)據(jù)庫(kù)字段進(jìn)行綁定。我們的表單引擎也可以采用這種方式。

          支持表單控件(輸入框、文本框、下拉框等)的拖拽,將整個(gè)表單與數(shù)據(jù)庫(kù)表綁定。


          表單控件與數(shù)據(jù)庫(kù)字段的綁定。


          單表業(yè)務(wù)+流程

          比上面的情況稍微復(fù)雜一點(diǎn)點(diǎn),也就是要在業(yè)務(wù)里引入流程,其實(shí)這也是現(xiàn)在工作流引擎應(yīng)用最多的地方,比如說(shuō)政府OA里的收文、發(fā)文。

          這里只需要將表單與流程進(jìn)行綁定,表單引擎的處理方式不變,依然是直接與數(shù)據(jù)庫(kù)表進(jìn)行綁定。表單負(fù)責(zé)對(duì)數(shù)據(jù)庫(kù)里的業(yè)務(wù)數(shù)據(jù)進(jìn)行展現(xiàn),工作流則負(fù)責(zé)推動(dòng)這些數(shù)據(jù)在業(yè)務(wù)意義上狀態(tài)的轉(zhuǎn)換,互不影響,并在需要的時(shí)候在自動(dòng)節(jié)點(diǎn)上對(duì)這些數(shù)據(jù)進(jìn)行相應(yīng)的業(yè)務(wù)處理。


          關(guān)于表單權(quán)限。這個(gè)也是表單與工作流進(jìn)行綁定時(shí)所必須考慮到的問(wèn)題。其實(shí)只是需要在表單引擎里引入權(quán)限角色的概念,每個(gè)角色對(duì)應(yīng)于一種權(quán)限,這種權(quán)限具體說(shuō)來(lái)就是表單里每個(gè)字段的可見(jiàn)、可編輯等等。然后在人工節(jié)點(diǎn)定義時(shí)指定表單權(quán)限角色即可。這樣也實(shí)現(xiàn)了流程與表單權(quán)限一定程度上的解耦。


          其實(shí)還有一種更方便的方式,將表單直接與人工節(jié)點(diǎn)進(jìn)行綁定,每個(gè)人工節(jié)點(diǎn)對(duì)應(yīng)于不同的表單。

          復(fù)雜一點(diǎn),多表關(guān)聯(lián)的情況

          復(fù)雜一點(diǎn)的情況是業(yè)務(wù)往往是多表的關(guān)聯(lián)。這需要對(duì)表單引擎做出擴(kuò)展,讓它可以根據(jù)關(guān)聯(lián)字段對(duì)關(guān)聯(lián)表做出查詢,得到關(guān)聯(lián)表的設(shè)計(jì)結(jié)構(gòu),繼續(xù)映射。這讓我想起了ORM,這里很有FRM的意思在里面。其實(shí)對(duì)于常用的關(guān)聯(lián)查詢往往有通用的組件可用,例如根據(jù)userid渲染出用戶名,根據(jù)數(shù)據(jù)字典的id關(guān)聯(lián)渲染出相應(yīng)的值,oa里的正文、附件、印章等等。

          流程跨越多個(gè)業(yè)務(wù)

          流程需要跨越多個(gè)業(yè)務(wù),一個(gè)典型的流程如下:


          會(huì)議審批會(huì)涉及到兩張業(yè)務(wù)表:會(huì)議室使用表,會(huì)議記錄表。在會(huì)議申請(qǐng)和領(lǐng)導(dǎo)審批節(jié)點(diǎn),最終用戶打開(kāi)的都是會(huì)議申請(qǐng)的表單,對(duì)應(yīng)于會(huì)議記錄表,對(duì)該表進(jìn)行操作。但是流程運(yùn)行到會(huì)議室管理員安排會(huì)議室的節(jié)點(diǎn),該節(jié)點(diǎn)最終用戶不僅需要看到會(huì)議申請(qǐng)的表單同時(shí)還要看到會(huì)議室使用情況的表單,如果有空閑的會(huì)議室,用戶登記操作會(huì)議室使用表,然后通知申請(qǐng)者;如果沒(méi)有空閑的會(huì)議室,則不用登記直接通知申請(qǐng)者。這個(gè)過(guò)程中跨越了兩個(gè)業(yè)務(wù),分別是會(huì)議室管理和會(huì)議管理。表單在各個(gè)節(jié)點(diǎn)也是不同的。

          這其實(shí)對(duì)工作流引擎提出了比較高的要求。例如如果流程已經(jīng)結(jié)束,會(huì)議得到批準(zhǔn),但申請(qǐng)者突然有事要改變會(huì)議時(shí)間怎么辦?回退。這里的回退無(wú)疑就需要有業(yè)務(wù)的補(bǔ)償,例如要?jiǎng)h除會(huì)議室的相關(guān)記錄。

          應(yīng)用集成

          一個(gè)流程不僅會(huì)跨越多個(gè)業(yè)務(wù),也會(huì)跨越多個(gè)系統(tǒng)。這里的應(yīng)用場(chǎng)景很多,重要的是要去其他系統(tǒng)抓取數(shù)據(jù)和操作數(shù)據(jù),僅僅靠數(shù)據(jù)庫(kù)表對(duì)表單的映射滿足不了需求。


          對(duì)工作流引擎做出改進(jìn),與前面相比,需要由引擎來(lái)完成對(duì)其他系統(tǒng)服務(wù)的調(diào)用。這里一個(gè)很重要的載體就是XML。首先要定義交換數(shù)據(jù)所用的XML scheme,然后將這個(gè)XML scheme再與表單引擎做出映射。實(shí)際執(zhí)行時(shí),工作流的自動(dòng)節(jié)點(diǎn)會(huì)在人工節(jié)點(diǎn)前調(diào)用其他系統(tǒng)的服務(wù),按照XML scheme將數(shù)據(jù)轉(zhuǎn)換為符合定義的XML,在緊接著的人工節(jié)點(diǎn)送給表單引擎,表單引擎渲染。修改數(shù)據(jù)也是同樣的過(guò)程,表單引擎將處理后的數(shù)據(jù)以XML返回,工作流再次做出轉(zhuǎn)換,調(diào)用服務(wù)的修改功能。

          上面五種都是比較常見(jiàn)的應(yīng)用場(chǎng)景,理想的情況下,開(kāi)發(fā)方式應(yīng)該是這樣的:畫(huà)出應(yīng)用流程à定義流程表單à表單與數(shù)據(jù)庫(kù)進(jìn)行映射à對(duì)流程進(jìn)行業(yè)務(wù)仿真à完成開(kāi)發(fā)。問(wèn)題是這樣的:你的表單引擎是否足夠強(qiáng)大?表單與后臺(tái)是直接用SQL進(jìn)行交互的,也就是Transaction Script模式,沒(méi)有業(yè)務(wù)對(duì)象,對(duì)于復(fù)雜業(yè)務(wù)邏輯如何處理?如何使用規(guī)則引擎來(lái)解決業(yè)務(wù)邏輯的問(wèn)題?權(quán)限如何以一種AOP的方式對(duì)數(shù)據(jù)操作進(jìn)行橫切?

          呵呵,純屬個(gè)人YY

           



          http://www.aygfsteel.com/ronghao 榮浩原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處:)
          posted on 2007-11-02 10:07 ronghao 閱讀(1645) 評(píng)論(5)  編輯  收藏 所屬分類: SOA、BPM

          FeedBack:
          # re: 對(duì)流程驅(qū)動(dòng)開(kāi)發(fā)的YY
          2007-11-04 00:47 | weicl
          看了你的關(guān)于權(quán)限控制的文章
          不好意思在這請(qǐng)教你(怕你看不到,呵呵!)
          我現(xiàn)在做一個(gè)內(nèi)部管理系統(tǒng),有這樣的需求:
          1.財(cái)務(wù)部門(mén)經(jīng)理可以看到員工的報(bào)銷情況(例如有:交通費(fèi)用、食宿費(fèi)用、業(yè)務(wù)費(fèi)用等),其他部門(mén)(如技術(shù)部門(mén))看不到報(bào)銷信息
          2.財(cái)務(wù)部門(mén)經(jīng)理可以授權(quán)技術(shù)部門(mén)經(jīng)理可以看到某位員工的某一次報(bào)銷情況中的交通費(fèi)用,而食宿費(fèi)用和業(yè)務(wù)費(fèi)用看不到(當(dāng)然,也可只授權(quán)食宿費(fèi)用,而其他兩個(gè)看不到,授權(quán)靈活)

          我看了你的文章,有到行級(jí)的,也有說(shuō)字段級(jí)的,不知道我說(shuō)的這種情況算做哪一種?
          還有現(xiàn)在最讓我不清楚的是例如行級(jí)的權(quán)限是怎樣一個(gè)授權(quán)過(guò)程,數(shù)據(jù)庫(kù)應(yīng)該樣設(shè)計(jì),程序如何控制。
          不知道我的問(wèn)題有沒(méi)有表達(dá)清楚,希望能得到你的指點(diǎn),非常感謝!!!  回復(fù)  更多評(píng)論
            
          # re: 對(duì)流程驅(qū)動(dòng)開(kāi)發(fā)的YY[未登錄](méi)
          2007-11-06 09:37 | ronghao
          你的第一種情況可以直接設(shè)置只有財(cái)務(wù)部門(mén)經(jīng)理才能查看報(bào)銷記錄列表,其他員工只能看自己的報(bào)銷記錄。
          第二種情況比較復(fù)雜,因?yàn)榻煌ㄙM(fèi)用,食宿費(fèi)用和業(yè)務(wù)費(fèi)用只是一條報(bào)銷記錄的3個(gè)字段而已,而最終用戶還要可以自己授權(quán)。這樣就可能需要再單建一張權(quán)限表。首先讀取數(shù)據(jù)時(shí)對(duì)數(shù)據(jù)和字段進(jìn)行過(guò)濾(可以直接設(shè)置對(duì)象里相應(yīng)字段為NULL)然后頁(yè)面渲染時(shí)處理一下隱藏即可。
          處理起來(lái)并不困難,但是如果你所表達(dá)的權(quán)限規(guī)則頻繁變化就會(huì)比較頭疼了。  回復(fù)  更多評(píng)論
            
          # re: 對(duì)流程驅(qū)動(dòng)開(kāi)發(fā)的YY
          2007-11-06 12:26 | 趙斌
          YY得很不錯(cuò)呀,頗有MDA的思想。

          感覺(jué),隨著技術(shù)和思想的發(fā)展,尤其是思想的發(fā)展,今后的開(kāi)發(fā)模式會(huì)發(fā)生根本性的變化,或許MDA/MDD將是未來(lái)的方向。

          《MDA/MDD技術(shù)離您有多遠(yuǎn)?》思維導(dǎo)圖
          http://www.aygfsteel.com/zhaobin/archive/2007/03/01/101295.html  回復(fù)  更多評(píng)論
            
          # re: 對(duì)流程驅(qū)動(dòng)開(kāi)發(fā)的YY
          2007-11-06 18:08 | ronghao
          @趙斌
          謝謝:)我總覺(jué)得現(xiàn)在的開(kāi)發(fā)效率還不高,但是卻沒(méi)有好的方法。謝謝你的鏈接,我找相關(guān)的資料看看:)  回復(fù)  更多評(píng)論
            
          # re: 對(duì)流程驅(qū)動(dòng)開(kāi)發(fā)的YY
          2007-12-26 18:40 | guest
          寫(xiě)的挺好,支持!  回復(fù)  更多評(píng)論
            
          <2007年11月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          關(guān)注工作流和企業(yè)業(yè)務(wù)流程改進(jìn)。現(xiàn)就職于ThoughtWorks。新浪微博:http://weibo.com/ronghao100

          常用鏈接

          留言簿(38)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          常去的網(wǎng)站

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 韩城市| 南丹县| 互助| 施甸县| 固镇县| 和政县| 大田县| 横峰县| 湘潭市| 潜江市| 千阳县| 玉树县| 景洪市| 平塘县| 高唐县| 凤冈县| 博兴县| 昌江| 汉中市| 龙山县| 漳浦县| 东辽县| 重庆市| 安远县| 旬阳县| 曲阜市| 凯里市| 三河市| 安阳市| 台湾省| 东平县| 华容县| 墨竹工卡县| 阳曲县| 新沂市| 馆陶县| SHOW| 巴彦淖尔市| 宜丰县| 建始县| 昌宁县|