换一个角度再谈一下WF
?
換一個(gè)角度再談一下WF
?
使用WF可以開發(fā)兩類流程
- 業(yè)務(wù)狀態(tài)流程
- 功能控制流程
?
業(yè)務(wù)狀態(tài)類流程
是傳統(tǒng)意義的工作流平臺(tái)所提供的流程,特點(diǎn)是用流程進(jìn)行業(yè)務(wù)的狀態(tài)處理
關(guān)于這方面的例子我已經(jīng)寫過很多文章了,本文就不再談這方面的內(nèi)容了
?
功能控制類流程
在這里先對(duì)功能控制類流程做個(gè)說明
?
舉個(gè)例子:
?
我們先對(duì)A表進(jìn)行數(shù)據(jù)操作,再對(duì)B表進(jìn)行數(shù)據(jù)操作.如果操作B表失敗,則回滾對(duì)A表的操作.
?
當(dāng)然,看到這里你會(huì)說這不就是數(shù)據(jù)庫(kù)的事務(wù)處理嗎.是的沒錯(cuò),那我們將上面操作的復(fù)雜度提升一下
?
?
如上的流程就是,功能控制類流程
他的做用不是置狀態(tài),而是完成一組后臺(tái)的操做.
當(dāng)然,你也可以用存儲(chǔ)過程完成這個(gè)操做,但如果流程中還有對(duì)磁盤的操做,對(duì)網(wǎng)絡(luò)的訪問,對(duì)外部設(shè)備的控制,用存儲(chǔ)過程做就力不從心了
?
在WF中,內(nèi)置了很多對(duì)為實(shí)現(xiàn)功能控制類流程而提供的功能,有網(wǎng)絡(luò)通信類的Activity,有對(duì)事務(wù),補(bǔ)償?shù)闹С?
?
在WF出現(xiàn)前,要實(shí)現(xiàn)上述業(yè)務(wù),我會(huì)使用COM+
?
COM+是一個(gè)組件服務(wù)的容器,雖然NET可以開發(fā)COM+應(yīng)用,但從本質(zhì)上說是NET使用舊的技術(shù),
NET推出后,
ActiviteX,COM向NET的組件過渡
DCOM向Remoting過渡
而COM+ 一直沒的NET的方案,雖然Remoting提供了COM+的一些功能,如組件服務(wù),遠(yuǎn)程事件,單例組件等,但對(duì)放入Remoting中的多個(gè)組件的上下文管理,事物,補(bǔ)償?shù)裙δ?Remoting卻不直接提供.
而WCF + WF 的組合,可以說是COM+ 向 NET 過渡的一種方案.
?
注:以上說明并非MS的官方說明,只是我個(gè)人的感覺,全當(dāng)給大家一個(gè)參考
?
COM+ 的問題先不談了,我以后發(fā)幾個(gè)同一業(yè)務(wù)分別用COM+ 與 WCF + WF 的對(duì)比方案.
?
我們回到WF的應(yīng)用上,
在設(shè)計(jì)WF流程時(shí),我不建議如下方式設(shè)計(jì)流程
?
上面這個(gè)流程將[業(yè)務(wù)狀態(tài)流程]與[功能控制流程]混到一起了
?
其實(shí)[功能控制流程]應(yīng)該是[業(yè)務(wù)狀態(tài)流程]的底層
?
?
所以我修改設(shè)計(jì)如下
?
?
?
在實(shí)際的設(shè)計(jì)方案中,我一般是這樣做的
?
?
?
?
最后再補(bǔ)充一點(diǎn)題外話
?
最近有不少人對(duì)我說,聽說NET 4.0中WF的變化很大,…………
?
NET 4.0中WF我沒見過(以前裝了個(gè)CTP,別人告述我其中的WF是舊的)
?
不過我猜想新的WF一定會(huì)在[狀態(tài)控制]與[應(yīng)用功能]兩個(gè)方面增加功能.
?
在[狀態(tài)控制]上,可能會(huì)添加對(duì)[流程圖],[狀態(tài)圖],[時(shí)序圖],[Petri網(wǎng)]等流程設(shè)計(jì)上的支持,就算4.0不提供,5.0,6.0,7.0總會(huì)提供的
?
在[應(yīng)用功能]上,可能會(huì)添加大量的功能Activity,具體有什么就不好猜了,磁盤IO類,Windows服務(wù)管理類,SQlServer操作類,SharePoint操作類,籃牙通信類,都有可能
為什么會(huì)這么零散,因?yàn)閃F的全稱是Windows Workflow Foundation
?
另外,我對(duì)WF還有一個(gè)假設(shè)
WF會(huì)退出[業(yè)務(wù)流程平臺(tái)]的舞臺(tái),這里我指的退出是指不直接用WF開發(fā)[業(yè)務(wù)流程平臺(tái)],而是
[WF] -> [業(yè)務(wù)流程SDK / 產(chǎn)品] -> [業(yè)務(wù)流程平臺(tái)]
?
其實(shí)在WF推出后,我就猜想MS會(huì)將WF與其某款Server產(chǎn)品結(jié)合實(shí)現(xiàn)[業(yè)務(wù)流程SDK / 產(chǎn)品],
我當(dāng)時(shí)猜想會(huì)是Exchange Server,沒想到看走眼了,竟然是SharePoint .(這里我們先不提CRM與BizTalk)
?
SharePoint與WF結(jié)合的市場(chǎng)反映怎樣我不加評(píng)論.反正我是不用!
?
我猜想在WF 4.0 后,MS會(huì)出一款直正的[業(yè)務(wù)流程SDK / 產(chǎn)品],可能是一個(gè)脫胎換骨的SharePoint,可能是Exchange,可能是一個(gè)全新的XXX
會(huì)不會(huì)是BizTalk呢,我覺得可能性不大,因?yàn)橐粋€(gè)是后臺(tái)算法Server,一個(gè)是前臺(tái)業(yè)務(wù)Server,這樣不是更好
?
以上的分析,不管對(duì)錯(cuò),全當(dāng)是一種參考吧
轉(zhuǎn)載于:https://www.cnblogs.com/foundation/archive/2009/02/12/1388929.html
總結(jié)
以上是生活随笔為你收集整理的换一个角度再谈一下WF的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 经济危机过后,中国会变成什么样
- 下一篇: 使用驱动调试助手应该注意的问题