初涉基于工作流平台的通路控制
沙晉 深圳易思博
通路控制技術的運用已經滲透到當代社會中的各行各業,不少的國際高科技公司已經在自己的産品中将通路控制技術實作得相關完善,如企業級關系資料庫供應商Oracle和IBM公司所開發的資料庫産品中,都有自己的通路控制技術的實作。
以IBM的DB2産品為例,其中有權限和特權兩個概念:權限是由特權組和較進階别的資料庫管理器(執行個體級别)維護和實用操作組成;而特權則是針對資料庫以及其中的對象操作實施控制的。同時,DB2還定義了五種權限,其中SYSADM、SYSCTRL 和 SYSMAINT 是系統執行個體級權限,而DBADM 和 LOAD 權限是為了某個特定的資料庫而指定給某個使用者或組的。對于資料庫級特權和對象級特權,前者的作用範圍覆寫資料庫内的所有對象,而後者僅與特定對象有關。這種權限與特權的配置設定,使資料庫的管理者和使用者都能根據DB2中所設定及配置的通路控制政策進行許可的資源操作,可以作為通路控制技術實作中的基本标準。
以這些基本标準為基礎,我們不難為自己開發的應用系統提供一個通路控制子產品,下面我們就以一個工作流系統為例,為其提供通路控制技術的相關實作。在實際的應用中,工作流系統通常都是以一種需要進行二次開發的通用平台提供給商業使用者的,這也就決定了工作流系統中所需要的權限控制與普通資料庫的權限控制實作略有不同。除了工作流系統級别的權限與操作外,還需要可容納二次開發使用者的業務級權限與操作。
根據以上的要求,我們可以給出以下的組成元素:人員,組織,角色,系統級操作及業務級操作,關系類圖如下,為了保持簡潔,本類圖結構并未進行優化。
![](/image//Develop/ArticleImages/21/21082/CSDN_Dev_Image_2003-9-17057510.png)
對于系統級操作而言,主要針對整個工作流系統的運作進行管理,初期我們可以假定在系統初始階段指定一個管理者,擁有所有的系統級操作,這些操作都被賦予給一個稱為ADMIN的角色,操作清單如下:
操作代碼 | 操作名稱 | 操作描述 |
0001 | CREATE_WF_MODEL | 建立工作流程模闆 |
0002 | UPDATE_WF_MODEL | 更新工作流程模闆 |
0003 | DELETE_WF_MODEL | 删除工作流程模闆 |
0004 | LOAD_WF_MODEL | 裝載工作流程模闆 |
0005 | UNLOAD_WF_MODEL | 解除安裝工作流程模闆 |
0006 | START_WF | 啟動工作流程 |
0007 | STOP_WF | 終止工作流程(無條件完全終止) |
0008 | SUSPEND_WF | 挂起工作流程 |
0009 | RESUME_WF | 恢複工作流程 |
0010 | GRANT_SYS_OPER | 賦予角色系統級操作能力 |
0011 | REVOKE_SYS_OPER | 去除角色系統級操作能力 |
0012 | GRANT_BUSS_OPER | 賦予角色業務級操作能力 |
0013 | REVOKE_BUSS_OPER | 去除角色業務級操作能力 |
上表中所列出的隻是一個系統級操作中所必須的子集,新增,删除,修改使用者,工作組以及角色的操作定義并未被列入,且不同的工作流系統開發者可以定義其他不同的系統級操作。我們規定以0開頭的操作代碼代表了系統級操作,這些資訊可以存在于系統資料庫表中或其他持久性存儲媒體上。
在這裡,我們設定一個簡單的二次開發業務環境:處理客戶投拆流程。以下是一個簡化的處理流程:
根據上圖所給出的業務流程,我們可以制定兩個或三個角色,以兩個角色為例:雇員和經理。但在這個業務應用中存在三個業務級操作,分别配置設定給對應的角色,再指定給系統中所定義的使用者,具體定義如下表:
操作代碼 | 操作名稱 | 操作描述 | 所屬角色 |
1001 | COMPLAIN_HANDLE | 對客戶投拆進行處理 | 雇員,經理 |
1002 | COMPLAIN_CONFIRM | 對客戶投拆處理進行确認 | 經理 |
1003 | COMPLAIN_FILE | 将客戶投拆及處理資訊歸檔 | 雇員,經理 |
在指定了這些操作以後,工作流系統将儲存這部分資訊到系統資料庫表中,系統管理者将在對工作流程進行模組化時為流程中的每一個任務指定一個執行者角色,登入者所被配置設定的角色将被工作流引擎用來決定該使用者是否能夠對該任務進行處理。
至此,我們基本上完成了一個關于通用工作流系統的通路控制設計,并假設了一個平台上二次開發的業務用例。實作該初步設計的具體方案可以有很多,并能進行相應的優化。畢竟在這個簡潔的示例中,還有太多細節沒有描述,歡迎大家多提意見進行讨論,如果需要轉載,請注明出處,謝謝!