工作流引擎產品無論國內或國外都有不少成熟之作,開源的工作流產品也有諸如shark之類的精品。但工作流產品做為一個獨立的中間件,無論是其本身或通過它進行流程設計及與你自己的系統整合,對很多使用過工作流產品的開發人員來說都是一件不容易的事。特別是在一些其實只是一些很簡單的流程控制應用需要時,我們是否需要一個獨立的工作流產品來運作呢?
也許你可以嘗試自己做一個工作流組件?聽起來好象有點兒難,但其實并不是一件很恐怖的工作。讓我們先從通常會使用到工作流引擎的情景分析下我們需要什么?
情景:某公司需要對員工請假進行管理,員工請假需進行系統填寫申請,如果請假天數<=1天,可以部門主管批準。如果請假天數>1天,需由部門主管->副總經理進行再行批復。批準后的請假自動記入考勤系統。
從這個簡單的業務需求,我們進行分析它的需求:
1、工作流程的選擇是由業務信息(請假單)相關聯的,工作流獨立存在是無意義的。
2、業務信息中的內容會決定流程的選擇與流向。如:請假天數,或是主管的批復意見
3、工作流程的流轉與組織結構、角色、員工相關。
4、工作流程通常會調用相關業務應用(記入考勤)來完成多應用系統之間的協作。
結合以上需求,我們定義出工作流系統所需功能與數據:
1、流程定義工具(負責生成工作流引擎能明白的流程控制信息),對應于XPDL
2、工作流控制變量定義(即用于控制流程流轉的控制量,如請假天數與各級審批意見,可由系統根據流程實體信息自動注入至工作流引擎)
3、工作流相關數據,即與業務過程相關的數據,如:業務表單、組織結構、角色、員工等
4、工作流引擎,負責解釋流程定義,創建過程實例并控制其執行,并可能提供相關的監控界面以保障工作流的正確運轉。
5、外部應用,可由工作流引擎進行調用完成多個業務系統的流程銜接。這通常是工作流引擎的最大亮點。
未完待續>>
本人原創文章,歡迎轉載,轉載請注明出處!