申請免費試用、咨詢電話:400-8352-114
導語:我們需要一個什么樣的工作流?什么樣的工作流引擎是最合適的?耦合OR分離,我們該如何選擇?本文轉載自yongtree博客,寫的是作者對OA工作流的一些看法。僅供對工作流技術、工作流引擎感興趣的人們參考。
今天在javaeye里收到網友的消息,想交流一下工作流。雖然自己去年在開發(fā)
OA系統時曾設計并實現了工作流系統,但是對于工作流的認識還是處在一個比較膚淺的認識。本著交流與學習的心態(tài),在此簡單說一下自己對于OA工作流的一些小小的認識,拋磚引玉,希望各位朋友們能分享自己的經驗。
工作流具體的概念和功能我就不多說了,還是說一下在設計和開發(fā)OA工作流過程中的一些體會吧。
首先,我們需要一個什么樣的工作流?為什么這么問呢,這就是因為我們做任何系統都不能脫離實際的業(yè)務需求,除非是平臺提供商,功能要包羅萬象,否則就仔細考慮一下我們的系統應該滿足怎樣的業(yè)務需求,根據需求做出最合適的設計。加入我們去年做的,就是為公司做一個小型的OA系統,加入工作流的目的就是為了在OA系統中實現審批的功能,其實功能不需要太復雜,如果我們也像西安協同和北京易維那樣做一個大型的工作流系統,我們人力財力都無法支撐,即使開發(fā)出來,也不見得都有所用。所以開發(fā)前想一想我們需要多少的功能。在我開發(fā)的OA工作流中,我在設計的時候考慮過自動路由的功能,也將其設計進去,但是在開發(fā)的過程中,發(fā)現這是一個很難的環(huán)節(jié),如果把時間都耗費在這上面,必將造成項目進度的拖延,所以也就沒有開發(fā)。后來系統運行的事實證明,用戶根本不在意這樣的工作流程,人們還是相關手工選擇路由。所以說,并不見得功能全面的系統就是好系統,這可能還會到來更多的操作復雜性,用戶都是很懶的,做他們最需要的系統這是我們在開發(fā)前設計時要考慮的。
其次,我們采用什么樣的工作流引擎?工作流系統是一個系統工程,內涵大量的通用的業(yè)務、理論知識,選擇一個合適的工作流引擎既可以提高我們的開發(fā)效率,又能降低開發(fā)成本?,F在業(yè)內有很多免費開源的工作流引擎供我們選擇,老牌的shark,輕量級的OSWorkflow,還有發(fā)展?jié)摿Ω蟮腏BOSS的jbpm。根據自己的采用的開發(fā)技術,綜合這些工作流引擎的功能,選擇一個合適的工作流引擎,將您的系統在它的基礎上擴展,不失一種好的方案。由于我做的OA工作流比較小,只要能滿足集團的需要就可以了,所以在選擇工作流引擎的時候由于考慮到學習的時間成本,我選擇自己開發(fā)工作流引擎,采用和工作流標準的xml描述流程的方式不一樣的方式,采用數據庫為主的流程描述,以XML的描述作為輔助,開發(fā)一個及其輕量級的流程運行環(huán)境。
最后,耦合還是分離?什么是耦合,也就是說工作流和它所處的系統關聯太深,離開了外圍的大系統工作流就變的一無是處了。流程和表單是否緊密相連,表單里有流程的信息,流程中有對表單有過多的控制。這些就要看需求和對工作流的理解了,我當初想把工作流做成一個通用的中間件,可以在其他系統上也能比較好的集成,所以設計的時候工作流和OA之間幾乎沒有數據結構和類結構的關聯,之間的通訊是通過兩者之間構造的接口進行通信,雖然沒有耦合,便于工作流系統的移植,但是也造成了開發(fā)的復雜性,消耗了大量的時間成本,也引起了一點點的性能缺失。在表單的處理上,我和項目經理在初期存在著分歧,我認為工作流系統中必須集成非常靈活的電子表單,讓用戶自定義表單,但是經理認為這樣非常復雜,有難度,要求采用預設好的web表單。但是最后在領導的要求下,我們還是引入了簡單的電子表單。我們的電子表單在表現上采用了對在線編輯器進行改造構建電子表單,效果還是不錯的。同時,我的思路是表單不要和流程耦合太深,糾纏不清。流程就是流程,表單就是業(yè)務數據,各施其責,二者通過相關的接口進行相互合作,這在我們項目組也有一些異議,最后我還是采用了我的思路,不知道大家對于這有沒有其他意見。
OA工作流是我畢業(yè)后第一年就設計和開發(fā)的,過程充滿了痛苦和心酸,但是一路走來我發(fā)現自己成長了不少。我的那個工作流系統依然在不斷的完善中,也希望對工作流感興趣的朋友們能分享你們的認識和心得,讓更多的人參與進來。