掀起工作流的蓋頭來

2021-04-27 09:42:50 字數 1763 閱讀 2634

工作流這玩意兒大家都聽過,有人也用過。就我來說,在做***的時候就知道了工作流,後來還聽說公司的erp也是用oracle的工作流實現的。必須承認自己對於工作流也是只聞其名,未見廬山真面目。後來我進了工作流開發組,在張x,謝x的指引下對她有了稍微深刻的認識,我想寫一些東西,既可以鞏固自己的認識,也可以和願意了解工作流的同事們分享。當然這種認識不是一蹴而就的,我也想把它寫成乙個系列的文章。今天就上一道開胃菜.

工作流到底是啥東東,能幫助我們做些什麼?她產生的背景和應用的場景又是什麼?帶著這樣的疑問,我們可能翻書,可能google,但這裡的乙個例子也許就能說明問題:  我們拿陶瓷的製作工藝來舉例,陶瓷的製作工藝大概需要以下幾步:

和料:該工序主要用來改進陶土的成型效能

成型: 該工序使用捏塑法或模制法來製成陶坯

修飾: 該工序主要填補毛坯空隙, 填平補齊,和彩繪裝飾

焙燒: 最終燒成成品 

在手工作坊時代, 乙個工匠完成了所有的工作來燒製乙個陶瓷製品。為了提高工作的產出,也可以把這些特定的工作分工給適合的人去完成。但不管是哪一種方式,都需要乙個"粘合劑"將這些步驟串起來,在手工作坊時代,這個"粘合劑"就是工匠的大腦,在工業化生產時代,這個"粘合劑"就是生產計畫科,或者是類似的職能單位。當然後一種"粘合劑"節約了浪費在任務轉換上的時間。

在程式建模時,這個"粘合劑"就是乙個函式,該函式依次呼叫了這些製作工序:

陶瓷的製作工藝相對來說是比較固定的,但現實中很多流程卻不是這樣,就像我們研發部的請假流程還改過好幾次。我們假設陶瓷流程的製作工藝也發生了改動,在製作成成品後還需要qa來進行質量檢驗。 乙個最原始的想法就是修改makeartifact函式,但是這樣的方法卻不太好,因為修改過的**需要重新編譯鏈結,無法在執行時修改流程的步驟。聰明的程式設計師想到了下面的方法:

用結構化的資料來描述流程,用乙個通用的程式來解析執行; 在工作流系統中,這組結構化的資料我們稱為流程定義,那個通用的程式稱之為工作流引擎。流程定義可以儲存在關係型的資料庫中,也可以用xml來描述,譬如上面的流程可以表示成 

工作流系統除了能夠快速的適應流程的變化外, 她還能幫助我們節省大量的工作,下面就舉幾個例子:

問題又來了,這個系統可能是基於c/s的,可能是b/s的,也可能是基於控制台的,那麼『獲取使用者輸入()』也需要分別給出實現。而工作流引擎就可以為你效勞,你無需實現這麼多**,只要告訴引擎你需要什麼而已:

工作的分工就要求我們要選擇適合的人做適合的事,陶瓷製作的工序也需要分配給不同的人;在這個例子中我們假定只有張三才能正確的估算焙燒時間。 硬編碼的話,我們需要這樣實現:

如果不久的未來,李四在陶瓷製作的技能上面也到達了[專家級別],也能正確的估算焙燒時間,我們是不是要這樣改**: 

這樣顯然不是很好的實踐,顯然它違背了ocp的原則, 需求上乙個小小的變化就犧牲了我的**。如果用工作流引擎,將流程定義和流程的執行分離開的話,效果就會好很多:

流程的進展情況、執行時間統計都是使用者關心的。象我在oa上報銷費用,就很關心到底報銷流程走到哪一步了。我們的陶瓷製作流程的進展情況, 平均製作時間肯定是陶瓷製造公司的領導所關心的。我們有好多方法來實現該功能,您覺得應該選哪一種:

1. 硬編碼實現

2. observer模式

原理就是為每道工序寫乙個**,在**裡面進行相關的處理。這裡我就不寫偽**了.

3. 不用實現

如果你使用了工作流來完成該功能,一般的工作流產品都會有該功能, 拿來直接用就可以了。 高低優劣,不判自明。

最後自己做個總結(一家之言,也許不對,等待被拍):

掀起WPS 2009的蓋頭來

今天幫女友檢視 中錯別字的時候,順便更新了一下wps,發現wps中新增了諸多新功能,而且均十分實用。且看 list size large b pdf閱讀 b size 每次刷系統 由於裝系統跟刷怪頻率相當,故得此稱 之後,驅動之後便是wps,adobe reader或者foxit reader,有很...

VMware混合雲 掀起你的蓋頭來

vmware混合雲服務 vchs 預計在2013年8月23日正式面向使用者推出。目前開放服務的四個資料中心都在美國。我受邀和全球其他15位vcdx vexpert加入vmware混合雲的earlyaccess program。從而讓我有機會能在這位大家閨秀正式亮相之前一睹芳容。首先 什麼是混合雲。本...

VMware混合雲 掀起你的蓋頭來

vmware混合雲服務 vchs 預計在2013年8月23日正式面向使用者推出。目前開放服務的四個資料中心都在美國。我受邀和全球其他15位vcdx vexpert加入vmware混合雲的earlyaccess program。從而讓我有機會能在這位大家閨秀正式亮相之前一睹芳容。首先 什麼是混合雲。本...