拆解權限系統和工作流 工作的時候突然很想要怎么辦( 二 )


比如權限的沖突,小路有兩個角色,一個角色是管理員,一個角色是組長,組長有開除員工的權限,管理員沒有開除員工的權限,那么小路最后應不應該有開除員工的權限?
這里可以考慮給角色加上優先級,出現沖突了以優先級高的角色所對應的權限為主 。
再比如,角色組的問題 。一個角色可以對應分配權限,而由角色構成的集合應該也可以被分配權限 。如下圖:

拆解權限系統和工作流 工作的時候突然很想要怎么辦


(用戶-角色-權限,用戶-角色組-權限)
舉個例子:
用戶:小路、小山、索大角色:項目經理、前端工程師、產品經理角色組:釘釘項目組權限:項目進度管理、項目組聊天窗、產品原型設計、產品開發釘釘項目組作為角色組,可以由項目經理、前端工程師、產品經理這幾個角色組成,角色組有自己的權限,角色也有自己的權限,用戶還是和角色綁定,用在角色組里會有角色組的對應的權限,也會有角色對應的權限 。
這里基于用戶-角色-權限這個父類可以派生出很多子類 。這部分角色沒有處理好的話,很可能會影響到第二部分說的工作流,釘釘在這里設計的相對完善 。
02 工作流,BPM(Business Process Management)
工作流也可以劃分為五個階段,分別是:
業務流程發掘(Business Process Discovery)業務流程設計(Business Process Design)業務流程執行(Business Process Execution)業務流程管理維護(Business Process Administration)業務流程最優化(Business Process Optimization)我們產品里常用到的是申請和審批,屬于業務流程的設計 。
工作流里所涉及到的角色有:申請發起人、審批人、抄送人、執行人 。
根據業務情況還會涉及到條件分支,比如報銷金額超過100W,需要總經理批,低于1000元,上級領導批就可以;請假時間超過30天需要人力主管批,低于3天直線主管批就可以等等 。
我們看一下釘釘的工作流 。釘釘的工作流是通過可視化編程做的,其實和之前說的低代碼屬于同一類產品,釘釘的工作流設計和低代碼平臺氚云、明道云等等非常像 。對于釘釘布局低代碼也可以從這看到必然 。
拆解權限系統和工作流 工作的時候突然很想要怎么辦


(釘釘工作流頁面)
拆解權限系統和工作流 工作的時候突然很想要怎么辦


(釘釘工作流添加節點頁面)
我們以釘釘的請假審批為例,可以看到釘釘的請假工作流是包含分支節點的,能夠進行申請條件的判斷 。這個流程應該是基于activity的框架進行完善的 。這里面會有一張請假表單按照設定好的工作流進行流轉,涉及到表單引擎部分的內容我們這邊不拓展 。我們重點關注流程設計 。
釘釘的設計,是可以動態添加審批、抄送、執行、分支節點的 。這個按字面意思大家應該能理解 。其實我想說的是,在設計流程的時候有一個非常重要的原則 。就是流程的復用性 。
來看一個問題 。
比如,小路是研發部一部的員工,小山是研發部二部的員工,索大是研發部三部的員工,三個部門是平行部門,他們各自領導不一樣 。那么小路,小山,索大三個人的請假流程應該怎么設計?
這里會用到我們說的流程復用性的原則,三個人部門平行,即使三個人領導不同,審批他們的人不同,但是三個人應該是共享一套流程的 ??赡苁牵喊l起人—>直線領導—>HR—>結束 。所以在流程設計的時候要想實現流程的復用,其實并不是一件簡單的事情 。
釘釘給出的設計思路其實是比較接地氣也能解決問題的,大家也可以對比看看企業微信,兩家產品在審批人選擇這部分交互是比較類似 。我們具體來看一下 。

推薦閱讀