小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

工作流模式詳解之基本流程控制模式的應(yīng)用與設(shè)計(jì)(1、2、3、4、5)

 漂在北方的狼 2008-02-14
我們前面已經(jīng)詳細(xì)敘述了5種基本的工作流控制模式,包括:Sequence、AND-split(Parallel Split)、AND-join(Synchronization)、XOR-Split(Exclusive Choice)、XOR-join(Simple Merge)。

1. 感嘆國(guó)情

  一個(gè)顯而易見的事情浮出了水面。我們剛開始學(xué)習(xí)寫程序的時(shí)候,那種流程圖,實(shí)際上就是 Sequence、XOR-Split、XOR-join 這三種模式的組合。可見工作流的內(nèi)涵并不只是業(yè)務(wù)流程而已。為什么要講流程圖呢?因?yàn)樵谖宜佑|的業(yè)務(wù)流程相關(guān)的開發(fā)中,一些沒(méi)經(jīng)過(guò)工作流訓(xùn)練,或者新手,通常就是直接的把業(yè)務(wù)流程和做算法設(shè)計(jì)的流程圖對(duì)等起來(lái)。至今仍然有一些小公司自開發(fā)的工作流引擎,就是這種流程圖模型。

我們可以做一個(gè)簡(jiǎn)單的對(duì)等,流程圖中普通的矩形框就是 Sequence 模式,菱形框(條件判斷)就是 XOR-Split,而一個(gè)矩形框接受多個(gè)分支作為前軀的情況就是 XOR-join。首先我們?cè)诶碚撋献⒁獾?XOR-join 有一個(gè)限制條件,就是有且只有一個(gè)前軀執(zhí)行,很明顯只用 XOR-Split 就能很輕易的達(dá)到這個(gè)要求(這個(gè)結(jié)論有數(shù)學(xué)上的證明)。

這個(gè)事實(shí)有點(diǎn)令人沮喪,可以從一個(gè)側(cè)面反映我們?nèi)瞬诺臄鄬?,似乎做?yīng)用系統(tǒng)的只有程序員一種人。不過(guò)實(shí)際情況還沒(méi)有超出控制,因?yàn)槲覀冏龅膽?yīng)用主要集中于 政府采購(gòu),而對(duì)于現(xiàn)階段的電子政務(wù)來(lái)說(shuō),這種流程圖的方式應(yīng)該是足以應(yīng)付了。下面我們來(lái)看看為什么這三種模式形成的流程設(shè)計(jì)能適應(yīng)我國(guó)電子政務(wù)的現(xiàn)狀:

●政府部門各自為政,也就常說(shuō)的"信息孤島"。業(yè)務(wù)流程的主體基本上是同一個(gè)單位,無(wú)須考慮協(xié)作、溝通或并發(fā)的問(wèn)題。

●政府部門不太關(guān)心業(yè)務(wù)流程的效率和質(zhì)量,我們的公務(wù)員大爺也懶惰異常,他們寧愿漫長(zhǎng)的等待,減少溝通和協(xié)作(退化成順序模式),也不愿為了加快工作效率而增加工作量(并發(fā)執(zhí)行,相互協(xié)作)。

●開發(fā)者兼任咨詢顧問(wèn)的這種普遍形式,鑒于并發(fā)所帶來(lái)的問(wèn)題,有意的將流程的設(shè)計(jì)退化,使之成為順序+條件選擇的方式。尤其是讓一個(gè)政府機(jī)構(gòu)內(nèi)部的各個(gè)部門配合起來(lái),要牽涉的多次會(huì)議、決策與紅頭文件,實(shí)在是對(duì)開發(fā)計(jì)劃、周期和成本的一個(gè)重大打擊。

●還有就是依賴于商務(wù)操作的一些小開發(fā)商,鑒于技術(shù)問(wèn)題,也盡量引導(dǎo)業(yè)主回避并發(fā)的流程設(shè)計(jì)。

● 最后這一點(diǎn)似乎也是最為普遍的,就是做分析設(shè)計(jì)的就是程序員(歸根結(jié)底是人才斷層),或多或少的把業(yè)務(wù)流程和自己學(xué)習(xí)程序設(shè)計(jì)時(shí)候的流程圖等同起來(lái)。更有 時(shí)候,恰巧業(yè)主方面的項(xiàng)目負(fù)責(zé)人有少許寫程序的基礎(chǔ)(這個(gè)是托計(jì)算機(jī)等級(jí)考試的福),也以為信息化的流程設(shè)計(jì),與程序設(shè)計(jì)的流程圖是一樣的。

  所以,總的來(lái)說(shuō),使我們工作流的水平還不到家,無(wú)論是分析設(shè)計(jì)水平還是開發(fā)水平。在電子政務(wù)能用到"并聯(lián)審批"(AND-Split)這一概念的,已經(jīng)能算是較為前衛(wèi)。所以我們現(xiàn)在業(yè)務(wù)流程的設(shè)計(jì),也多停留在這五種基本模式的應(yīng)用上。

2. 應(yīng)用

這5個(gè)模式較為明確,一般在流程設(shè)計(jì)中考慮,如沒(méi)有可并發(fā)性工作的考慮,都能用 Sequence、XOR-Split、XOR-join 這三種模式來(lái)解決。稍微高級(jí)點(diǎn)的就是"并聯(lián)審批"這種業(yè)務(wù),一般是采用 AND-Split 考慮。所謂"天下大勢(shì),分久必合,合久必分",Split 以后,一定要配合相應(yīng)的 join 處理。尤其是考慮到并發(fā)以后可能出現(xiàn)的分支情況。

  若不想出現(xiàn)難以預(yù)料的流程,則我建議是將其設(shè)計(jì)控 制在特定的閉包范圍內(nèi)。譬如說(shuō) Sequence、AND-Split、AND-Join 一個(gè)閉包,Sequence、XOR-Split、XOR-Join 一個(gè)閉包。在 AND-Split 與 And-Join 中,最好不要穿插 XOR 關(guān)系,或者保證其嵌套層次不能交叉。

3. 應(yīng)用實(shí)例

  A. 匯簽

  需求:組織結(jié)構(gòu),三個(gè)部 門,每個(gè)部門一個(gè)負(fù)責(zé)人,所有部門都向總經(jīng)理負(fù)責(zé)。如果一個(gè)方案是涉及層面較廣的(譬如工資改革方案等等),則由主管部門發(fā)起,首先普通員工草擬方案,給 部門經(jīng)理審批,再給其他部門的經(jīng)理審批,再給總經(jīng)理審批。這樣,再主管部門經(jīng)理給其他部門經(jīng)理審批這一步,就產(chǎn)生了一個(gè)匯簽的過(guò)程。

  設(shè)計(jì)方案:

  

  在沒(méi)有更高級(jí)模式的支持下,這種設(shè)計(jì)方案似乎是較好的選擇(以后的模式里面會(huì)有更好的解決方案)。這里有比較典型的 AND 合 XOR 應(yīng)用,其中 XOR 判斷的條件是執(zhí)行者是否主管部門,如果是主管部門,那就已經(jīng)審批過(guò)了,不參與匯簽。

   PS:這里沒(méi)有給出審批不通過(guò)的情況,但是這種設(shè)計(jì)加上審批否決的部分較為簡(jiǎn)單,這里就不再敘述。

  現(xiàn)在考慮更為普遍的情況,泛化為N個(gè)經(jīng)理的情況“并聯(lián)會(huì)簽”,怎么辦呢?可以考慮這樣設(shè)計(jì):

  

   上面這一設(shè)計(jì)牽涉并發(fā),可以看到引入了一個(gè)AND就使情況復(fù)雜了。為了表示方便,我把XOR-Join 和 XOR-Split 分開兩個(gè)結(jié)點(diǎn)表示,一些工作流設(shè)計(jì)系統(tǒng)中可能只需要用一個(gè)結(jié)點(diǎn)就能表示了。

我們來(lái)看看具體流程:假設(shè)公司一共有4個(gè)經(jīng)理,A、B、C、D。假設(shè)主管經(jīng)理是A,然后審批方案后要交給B、C、D來(lái)匯簽。其中 AND 結(jié)點(diǎn)引入,保證了在參與匯簽者的列表中取出參與匯簽者以后實(shí)現(xiàn)“并聯(lián)審批”,取 B 以后,就馬上啟動(dòng)并發(fā)流程:尋找下一個(gè)審批參與者和 B 執(zhí)行審批動(dòng)作,然后一直取 C、D,同理。注意流程的兩個(gè) XOR-Split,一個(gè)是判斷審批完畢,一個(gè)是判斷是否開始了審批,其中不盡相同。

  思考:審 批不通過(guò)的情況,該怎么辦?國(guó)人的流程較為復(fù)雜,審批不通過(guò)的有可能是 B、C、D 其中 B 沒(méi)有通過(guò),但是 C、D 不需要再次審批(這種情況通常是方案中有屬于不同部門的描述,所謂的匯簽,大家都只關(guān)心方案中與自己部門相關(guān)的部分就可以了)。也有的情況是任何一個(gè)人不 通過(guò),所有經(jīng)理都要重新審批。更有可能是“民主制”,B、C、D之中只要2個(gè)通過(guò)就能遞交到下一步審批。不過(guò)就目前來(lái)說(shuō),只有基本的5種模式還不足以表達(dá) 這些多變的流程,因此技術(shù)平臺(tái)無(wú)法支持更高級(jí)的工作流模式的情況下,我們作為應(yīng)用開發(fā)人員只能編寫代碼來(lái)解決。 更深層次的自省是:當(dāng)我自己設(shè)計(jì)一個(gè)流程的時(shí)候,較多的用編寫代碼的方式來(lái)表達(dá)實(shí)際業(yè)務(wù),還是較多的上升到工作流模型設(shè)計(jì)的層次來(lái)解決問(wèn)題呢?我覺得如果 是前者,那么就要小心謹(jǐn)慎了,多半是自己工作流設(shè)計(jì)的水平不足,或者選擇的工作流引擎/平臺(tái)的能力較低(前者自我水平不足,后者產(chǎn)品選型的決策偏差,若是 自開發(fā)的工作流引擎則表明還有的缺陷,不能較好的支撐多變的業(yè)務(wù),都不見得是好事情)。

  這里給出的辦法,只是用現(xiàn)有的工作流模式的實(shí)現(xiàn),以后講述的模式中有更為直接的組合來(lái)實(shí)現(xiàn)這個(gè)匯簽?zāi)P汀5沁@些方案也可以給無(wú)法使用高級(jí)工作流模式的朋友們參考使用。
   
  B. 代理審批

  需求:領(lǐng)導(dǎo)外出,要找人來(lái)代替審批。我接觸過(guò)許多流程的設(shè)計(jì)者都卡在了這個(gè)地方,思維都集中在了怎么去設(shè)計(jì)者個(gè)臨時(shí)加一個(gè)權(quán)限進(jìn)取,然后所帶來(lái)的"動(dòng)態(tài)權(quán)限"系統(tǒng)的復(fù)雜性。這種可能是程序員的慣性思維,需求結(jié)構(gòu)直接影射到代碼結(jié)構(gòu)的一個(gè)典型吧。其實(shí)大可不必這樣做。

  設(shè)計(jì)方案:

  

 

  這樣就能很簡(jiǎn)單的解決代理審批的問(wèn)題。

4. 總結(jié)

有心的讀者都可以看出來(lái),在設(shè)計(jì)這幾個(gè)流程之中,我們?cè)噲D把條件判斷而產(chǎn)生的路徑選擇,獨(dú)立出一個(gè)結(jié)點(diǎn)(或者幾個(gè)結(jié)點(diǎn)),而每個(gè)有實(shí)際工作結(jié)點(diǎn)的本身都 只負(fù)責(zé)條件判斷和路徑選擇以外的實(shí)質(zhì)性業(yè)務(wù)。這里涉及到流程設(shè)計(jì)的一個(gè)理念(我喜歡稱之為個(gè)人哲學(xué)),以后另外有文章敘述流程設(shè)計(jì)的體會(huì)。

  我這是我在實(shí)際流程設(shè)計(jì)中的一些經(jīng)驗(yàn),希望各位來(lái)指正批評(píng)。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多