基於WF設計業務流程平臺_特定群體與特定人
在上一篇文章中,我實現了一個請假流程的例子,該例子的語義是:
[任意人申請] -> [申請人所在部門主管理審批] -> [結果通知申請人]
為了能實現這個流程的許可權約束功能,我使用瞭如下圖所示的二維許可權結構
職能\部門 | 甲部門 | 乙部門 | ..部門 |
部門領導 | lzm | wdd | |
A職能 | wxd,lmm | wxwinter | |
B職能 | |||
..職能 |
使用這種二維許可權結構,通過[部門]與[職能]的交差,我們就可以實現[所有A職能的人],[所有甲部門的人],[所有甲部門中具有A職能的人]這樣的語義.
這樣做的好處是我們在設計好流程後,可以為流程附加動態許可權,而不必做成[甲部門請假流程],[乙部門請假流程]這樣的大量重複流程.當然使用這種方式實現流程的目的不只是為了流程在不同環境的重用.在統計彙總,監督管理,任務分配,流程路徑優化中都是非常有用的,這些我會在以後的文章中再講.
另外,上圖的許可權結構在實際使用中是不夠用的,實際的許可權模型中還要體現子部門,關係部門,員工的多部門.職能也要體現級別關係,還有為了某個事項而組建的跨部門專案組,這些內部我後面也會專門描述.
今天我要說的是流程許可權中的一個非常重要的問題[特定群體]與[特定人]
首先說一下什麼是[特定群體],像[所有A職能的人],[所有甲部門的人]這種語義就是[特定群體],只要符合這種描述的人屬於這個群體,這個概念與[組]很象,但組不適合描述[我的上級],這樣的語義
現說一下[特定人],就是指真正存在的某個具體使用者.
先回顧一下上篇文章的例子
圖1:
1.[X類請假流程],除了[部門領導]企業中的所有人都可以啟動
2.當[X類請假流程]的某個例項啟動後,只有該例項[啟動人(申請)]所在部門的領導才具有該例項的審批權
3.當[審批]完成後,只有該例項[啟動人(申請)]才能檢視結果
在這個例子中,
啟動申請的許可權約束是一個[特定群體],除[部門領導]外所有[員工]這個群體,只要是屬於這個群體的人,都可以做這件事
審批的許可權約束也是一個[特定群體],除[部門領導]外所有[員工]這個群體,只要是屬於這個群體的人,都可以做這件事
檢視的許可權約束是一個[特定人],啟動這個流程的那個使用者,只該使用者可以做這件事
在上篇文章中,我還畫了這樣一個圖
圖2:
注意,如果這樣畫,那業務的表述是:
檢視的許可權約束是一個[特定群體],除[部門領導]外所有[員工]這個群體的人都可以做這件事,
是否要這樣畫,取決於業務需求
不管理許可權如何設定,最終[辦理提交]都是由一個[特定人]做出的,但在分配任務時大多都是指向[特定群體]的,下面我們看一下許可權是如何由[特定群體]轉到[特定人]的
流程中的結點如果按執行狀態分,可分為[歷史結點],[當前結點],[將來結點],其中[當前結點(也叫活動結點)]的許可權相對複雜一些,先看一下我列出的一些常用許可權列表:
○ 自然得到
● 不能得到
□ 跟據設計,□沒的 , 得到
許可權\身份 | 辦理身份 | 接件身份 | 分配身份 | 管理身份 | 檢視身份 |
啟動許可權 | ● | ● | ● | ● | ● |
檢視許可權 | ○ | ○ | ○ | ○ | ○ |
辦理提交許可權 | ○ | ● | ● | ● | ● |
延期許可權 | □ | ● | □ | ○ | ● |
申請延期許可權 | □ | ● | □ | ● | ● |
結束流程許可權 | □ | ● | □ | ○ | ● |
凍結許可權 | □ | ● | □ | ○ | ● |
解凍許可權 | □ | ● | □ | ○ | ● |
接件許可權 | ● | ○ | ● | ● | ● |
退回到組許可權 | □ | ● | ● | ● | ● |
分配許可權 | ● | ● | ○ | ● | ● |
拒絕分配許可權 | □ | ● | ● | ● | ● |
授權他人許可權 | □ | ● | ● | ○ | ● |
取回授權許可權 | □ | ● | ● | ● | ● |
取消辦理人許可權 | ● | ● | ● | ○ | ● |
催辦許可權 | ● | ● | ● | ○ | □ |
指定下一辦理許可權 | □ | ● | ● | ● | ● |
在這裡我們看一下[辦理身份,接件身份,分配身份]與[接件許可權,分配許可權,辦理提交許可權]
先說一下[接件許可權],是指[特定群體]中的某個人可以主動取得某個例項結點[辦理提交許可權]的許可權.
行使該許可權的行為叫接件
[特定群體]中的某個人對例項結點接件後,將會得到該例項結點的[辦理提交許可權],而其它[特定群體]中的人將失去對該例項結點的[接件許可權],特點如下:
- [特定群體]中的所有人都具有[接件許可權].
- 每個人行使[接件許可權]的地位是平等的
- 當其中某個人行使該許可權後,其他人將失去該許可權
- 行使該許可權的人也失去該許可權,但他會得到[辦理提交許可權]
再說一下[分配許可權],是指[特定群體]中的某個人可以主動將某個例項結點[辦理提交許可權]分配給其他人的許可權.
行使該許可權的行為叫分配
[特定群體]中的某個人對例項結點分配後,被分配人將會得到該例項結點的[辦理提交許可權],而其它[特定群體]中的人將失去對該例項結點的[分配許可權],特點如下:
- [特定群體]中的所有人都具有[分配許可權].
- 每個人行使[分配許可權]的地位是平等的
- 當其中某個人行使該許可權後,其他人將失去該許可權
- 行使該許可權的人也失去該許可權,但被分配人會得到[辦理提交許可權]
最後說[辦理提交許可權],其實這是二個許可權,辦理與提交,不過很多時候都將其合為一個,我這裡先將它們認為是一個.
[辦理提交許可權]是控制流程的最基本許可權,它的做用是讓處於等待掛起的業務流程繼續向後執行.操作人得到某個結點的[辦理提交許可權]通常有三種方式:
- 流程中某個結點預設[辦理提交許可權]為具體的某個人,該人具有[辦理提交許可權]
- 某個人具有結點的[接件許可權],該人通過[接件]而得到[辦理提交許可權]
- 某個人具有結點的[分配許可權],該人通將該結點的[辦理提交許可權]分配給具體的一個人,被分配的人就具有該結點的[辦理提交許可權]
許可權約束的變化是在結點切換的過程中進行的,為了直觀的體現這種變化,我用不同的聯線箭頭表示到[特定人],還是到[特定群體],並體現許可權型別
到人(特定人)與
組接件 (特定群體,接件許可權)
組分配(特定群體,分配許可權)
現在,我們將上篇文章所舉的請假的那個例子的流程圖加上箭頭:
從這張使用了箭頭的圖中,我們可以看到流程,狀態,許可權,許可權的轉換這些基本的業務資訊了.
本文對[特定群體]與[特定人],進行了一個簡單的概述,並提到了一些流程許可權,同時使用自定義的圖例將這些關係畫出來.在後面的文章中,我將進一步闡述我的流程許可權架,以及如何將上面的流程圖對映成WF的流程圖
說明:本文的理論,概念,圖例都是根據一些工作經驗總結的,不具備權威性,只是我個人為描述業務自創的,如與其它的設計規範中的理論,概念,圖例,有定義上的衝突.請讀者在各自的文件環境中區別理解.