最近正在忙一個應用整合系統的設計,所以有好長時間沒有寫工作流程相關的文章了。不過這期間我們一直沒有放棄對WF的探索。功夫不負有心人,我們在工作流程的應用上取得了實質性的進展。因為商業目的,這裡不能公布原始碼。但為了大家的共同提高,我還是要把一些技術上的關鍵點給以說明。這期間我和同事做了大量研究,在此對他們表示感謝。
讓我們很快切入正題。引入工作流程的意義大家都很清楚:將不斷變化的處理流程獨立出來,以降低開發成本、維護成本,或是其它的東西。那麼能達到一種什麼樣的效果,對於我們這些初次使用的人們來講更多的是良好的期盼,因為對於WF的應用確實不是一件很容易做的事情。在此之間的一系列文章也只是對一些技術點的探索。現在終於可以整合一下了。
這裡拿我們的一個實際需要進行闡述。電台、電視台裡的稿件審核流程是一件非常嚴肅的事情,每個台都有自己一套自己的審核流程,即使一個分台可能視稿件的重要程度、緊急程度、稿件內容的不同有不同的審核流程。舉例如下:
l 常規審核流程:一級一級的自下往上審核。如編輯審à科組長審à分台審à總台審。
l 終審制:是常規審核流程的一種擴充。即每個環節都有最終審核權。只要該環節認為沒有必要讓上級(領導)進行審核,則可以進行此操作。
l 跨審:存在這樣的情況,流程中的某一環節因為某種原因(可能相關人員請假了)而導致流程無法運行下去。有兩種解決方案:一種是通過延時活動在等待一定時間後,自動將活動跳轉到下一個處理環節中去,這種方式的缺點是必需等待;另一種操作方式是,下一個要處理環節的相關人員可以直接審核上一個環節所涉及的稿件內容,這種審核方式即跨審是一種更為及時的操作方式。
每一個環節的審核又可能有下面的表決方式:
l 權重值性要求:環節中參與的每一個使用者都有一個權重值。當同意權重值之和達到一定期望值後,則該環節通過。或者反對權重值之和達到一定的期望值則認為是未通過審核。
l 角色性要求。如:某一環節要求五個編輯中的三個如果同意則進入下一個環節,如果有兩個表示反對則打回。另一個例子:只要有兩個副台或一個正台同意則通過,只要有一個副台或一個正台否決則打回。
l 人員性要求。這個相對簡單,只要指定可參與的人員列表,及通過人數和否決人數即可。
如何有效地讓客戶自已去靈活地、隨時隨地地設計使用這些流程,而不需要工程人員或售後人員的幹預是一個非常棘手的問題。客戶關心的是流程中有幾個環節。如果讓使用者自己去用IFELSE或WHILE去設計每一個環節的詳細內容,則客戶很快會否決這套系統,即使是技術熟練的工程人員也會皺眉的,維護成本會大幅的攀升的,而且開發人員還要為工作流程設計工具中的每一個條件做一些複雜和額外的工作。
理想的情況是這樣的。使用者所面對的工作流程設計工具非常簡單的:他們可以從工具箱中插入一個活動到到工作流程編輯介面中去,每一活動所代表的是一個完整的處理環節,而不是處理環節中的一部分;這就是簡化使用者設計的關鍵所在。使用者不需要為設計一個具體環節的邏輯而感動頭痛,他們所做的只是設定一下與業務相關的活動的屬性就可以了。這樣設計出來的工作流程看起來會非常的直觀、簡練。
要讓使用者有這樣的使用者體驗,我們得需要進行大量的工作。其主要內容簡列如下。
l 工作流程編輯器
l 自訂的審核活動
l 基於工作流程的工件維護架構
l 工作流程設計管理架構
l 分布式部署的要求
然而要將這些有機的組合在一起,使之在不同的應用系統中進行應用,這就是業務工作流程平台的概念了。待續。