Activiti工作流引擎開發系列-01
作者:Jesai
沒有傘的孩子,只能光腳奔跑!
前言:
初次接觸工作流這個概念是自從2014年11月份開始,當時是由於我的畢業設計需要,還記得當時我畢業設計的題目是《基於BS結構模式的工程管理系統設計與實現——工程計划管理》,里面涉及到一個工程管理的審批。正好我當時12月份出來實習,實習所在的公司所做的OA系統普遍也需要工作流,但是公司項目所用的工作流是CCFLOW,這是一個基於C#的國產開源工作流引擎,但是我畢業設計做的是java,所以從2014年的11月開始,我就開始學習Activity。一直到今年的三月份,我終於形成一整個工作流的理論框架。其中有許多啟發源自於目前所在公司的項目開發經驗。算了一下,就整整學了2年兩三個月吧。
工作流有多重要?也不是很重要。看你所在的公司用不用而已。這么說吧,目前我公司的工作流框架,核心部分只有一個人懂得。其他人都不會。試想,如果有一天,這個管理工作流的人要跳槽,那么老板會給他加個4K以上的工資挽留,我估計還是有可能發生的。學習工作流,不僅僅要學習別人的開源框架,還得慢慢的上升到工作流的思想,有那么一天,也許能開發出來自己的工作流引擎。
什么是工作流?
什么是工作流?對於沒接觸過工作流的人或許覺得很陌生。打個比例吧,假如你要請假,那么請假的時候需要向上級申請。有管理系統的公司請假流程一般使用公司的內部管理系統申請,然后逐級上報審批。這一整個審批過程的控制,就需要工作流來控制了。
如果要使用專業的術語來說,工作流(Workflow),指“業務過程的部分或整體在計算機應用環境下的自動化”。是對工作流程及其各操作步驟之間業務規則的抽象、概括描述。在計算機中,工作流屬於計算機支持的協同工作(CSCW)的一部分。后者是普遍地研究一個群體如何在計算機的幫助下實現協同工作的。
工作流主要解決的主要問題是:為了實現某個業務目標,利用計算機在多個參與者之間按某種預定規則自動傳遞文檔、信息或者任務。
工作流概念起源於生產組織和辦公自動化領域,是針對日常工作中具有固定程序活動而提出的一個概念,目的是通過將工作分解成定義良好的任務或角色,按照一定的規則和過程來執行這些任務並對其進行監控,達到提高工作效率、更好的控制過程、增強對客戶的服務、有效管理業務流程等目的。盡管工作流已經取得了相當的成就,但對工作流的定義還沒有能夠統一和明確。
Georgakopoulos給出的工作流定義是:工作流是將一組任務組織起來以完成某個經營過程:定義了任務的觸發順序和觸發條件,每個任務可以由一個或多個軟件系統完成,也可以由一個或一組人完成,還可以由一個或多個人與軟件系統協作完成。
1993年工作流管理聯盟(Workflow Management Coalition,WfMC)作為工作流管理的標准化組織而成立,標志着工作流技術逐步走向成熟。WfMC對工作流給出定義為:工作流是指一類能夠完全自動執行的經營過程,根據一系列過程規則,將文檔、信息或任務在不同的執行者之間進行傳遞與執行。
工作流的主要功能
工作流管理系統(WorkflowManagementSystem,WFMS)是定義、創建、執行工作流的系統。在最高層上,WFMS應能提供以下三個方面的功能支持:
建造功能:對工作流過程及其組成活動定義和建模;
運行控制功能:在運行環境中管理工作流過程,對工作流過程中的活動進行調度;
運行交互功能:指在工作流運行中,WFMS與用戶(業務工作的參與者或控制者)及外部應用程序工具交互的功能。
由於信息技術的發展和日趨激烈的商業競爭,人們不再滿足於獨立、零散的辦公自動化和計算機應用,而是需要綜合的、集成化的解決方案。作為一種對常規性事務進行管理、集成的技術,WFMS的出現是必然的。它可以帶來以下收益:
1.改進和優化業務流程,提高業務工作效率;
2.實現更好的業務過程控制,提高顧客服務質量;
3.提高業務流程的柔性等。
工作流的應用領域
在后面,我將會把握整合Activiti開發的一個過程寫一些列的文章。當然時間緊急,寫出來的技術文可能比較粗糙,但是主要的是干貨,后續我將會慢慢的完善整個系列的修飾。希望對此可以給廣大開發者一個寶貴的開發經驗。如果條件允許,我將會購買雲主機和域名把項目上線給大家參考。
我目前整合的基本框架已經完成,后續還有很多的優化和完善工作要做,但是目前已經能夠運行起來。
主要模塊:
流程模型
整合Activity流程設計器
部署流程
查看部署流程圖
部署操作
待辦任務
待辦操作
待辦流程進度
已辦任務
數據庫:
待做:掛起,解掛,流程轉發,流程查詢,流程表單自動化、流程指派、流程追回······
關於源碼問題:因為我基於我公司的權限系統項目上面開發的,不方便開源。但是以后如果時間充足我會考慮開源的。為了方便大家學習交流,我建立一個Activiti開發群,希望可以共同進步。文章可能有很多不嚴謹的地方。歡迎批評斧正。
QQ群:634320089