通用的人員和組織結構模型


感謝 Martin Fowler,很多想法來自他的《分析模式》(Analysis Patterns)

目的

企業架構的出發點是業務,業務實現的關鍵是人,業務關系的理順靠組織架構。

在企業IT整合的過程中,對於人員和組織機構信息的整合是一個重點。但是目前的解決方案中往往偏重於“系統用戶”的整合,而對組織架構沒有考慮或者考慮得很少,同時對於包含客戶、合作伙伴等在內的虛擬組織往往支持不夠。組織架構、崗位的設定等信息往往牽扯到權限,因此有必要探討一種統一的人員和組織機構模型,既可以作為此類數據的統一數據源,也可以為之后的統一權限管理打下基礎。

 

領域模型

  • 主體

企業的基本組成單位是人(Person),包括員工、合作伙伴、經紀人/代理人、外包人員、客戶等;為了人們之間更好的協作還會設立一些組織單元(Unit),如部門、分公司、子公司、營業部、委員會、工作組、項目組等;在部門之中還會設定一些崗位(Position)。

這些對象都是業務行為的主體(Subject)。所謂主體,可以被托付給相應的責任,而責任體現了他們之間一種具有共性的關系。

主體

 

  • 責任

這種共性的關系就是一種責任(Accountbility)關系:委托者將責任托付給受托者。具體表現為很多形式,比如部門之間的上下級關系,人員和部門的從屬關系,企業和客戶的業務關系,企業和合作伙伴的協作關系等等。這種責任關系通常會有一個期限(Period),記錄期限信息可以幫助我們記錄責任關系(如組織結構、人員歷任職務)的變化。

責任

 

  • 知識級:業務規則的體現

上述的責任關系太泛化了,而且缺少必要的約束。比如,組織的層級結構約束,所以需要引入知識級的模型對象。知識級體現定義和規則,操作級記錄實際發生的事情。

知識級的作用:

1. 管理復雜性,將復雜的業務規則放到知識級

2. 動靜分離:知識級處理相對固定的部分,操作級處理變化頻繁(相對知識級來說)的部分,即具體的配置。

3. 知識級約束操作級的行為。

 

在知識級引入主體類型SubjectType,就可以通過類型來約束主體(Subject)的行為。其中最重要的約束就是委托關系(Commission)的定義。委托關系約束了責任(Accountbility)的規則,比如,有一類責任來自產品的層級關系,而另一類責任來自銷售的層級關系,就可以定義“產品層級”和“銷售層級”這兩個Commission,來將Accountbility區分成不同的類型。

顯然,委托關系是主體類型之間的many-to-many關系,因為還需要在委托關系上進一步進行定義,所以定義一個關聯類:Commission,關聯到主體類型之間的many-to-many關系上。

每一個責任關系都應該由唯一的委托關系來定義,即委托關系是責任關系的類型。

 

引入知識級帶來的一個工作就是:在設計階段就要考慮知識級的初始化。因為知識級的實例中隱藏了設計(知識)。

知識級

 

  • 主體類型泛化

在初始化知識級對象的時候,我們很容易想到:組織單元(Unit)是一種主體類型,其委托關系包括:下級組織單元(默認)。

但是如果再細分下去,可能會定義總公司,分公司,營業部,而對這些組織單元還需要定義其下級組織單元(默認)的委托關系。、下級組織單元(產品層級)、下級組織單元(銷售層級)

這樣做很容易引起模型的膨脹,使得初始化知識級變得非常痛苦。所以,引入主體類型之間的泛化關系(Minxin)就顯得很有必要。允許主體類型之間的一種“多重繼承”,可以避免這樣的麻煩。

 

另外一種情況是兼職。隨着現代企業的發展,人員在企業中的定位可能是多面性的,兼職的情況越來越經常出現,但是大家都視為特殊情況而很少進行有效的處理。比如這樣一種情況:信息中心總經理兼任CIO兼任創新委員會成員。在不考慮兼職的時候,我們會創建信息中心總經理的崗位,CIO的崗位,創新委員會的組織單元。並使具體的人(Person)與這些主體之間具有任命或小組成員這樣的關聯。一旦出現了兼職,就需要創建一個復合的、繼承上述三者主體類型的一種“新”類型。這顯然很丑陋。

解決的辦法就是允許主體具有多種類型。考慮到大多數情況是沒有兼職的,所以在主體和主體類型之間建立兩個關聯:主要類型,所有類型。

 

主體類型泛化

 

  • 層級型委托關系

責任模式在靈活性的同時缺少了約束規則。比如,對一個嚴格的銷售關系層級序列:總公司-分公司-區域子公司-部門-銷售辦事處。這種層級序列實際上是對委托關系的約束。要表達這種約束,可能每個層級的組織機構都要定義兩種委托關系:上級-->自身,自身-->下級。這樣的實現比較笨拙。

為了簡化對層級關系的處理,可以定義一個層級的委托關系(LeveledCommission),該委托關系維護一個主體類型的列表,並規定級別列表中上級類別的主體只能向下級類別的主體負責。

思考:在實際設計時,可能會根據需要構建委托關系的多個子類,處理各種約束規則,以便於模型的使用。

層級型委托關系

 

  • 操作和崗位

責任和權利總是對應的。通常,責任對應一系列的操作(Operation)。對Operation的細化(如對應的系統、地點、動作、資源等)通常在權限管理的相關模型中進行。但是在通用組織機構模型中,需要專門提到的是崗位(Position)。

如前所述,崗位Position也是一種主體,人和崗位之間存在一種任命/聘用關系,崗位由組織單元(Unit)設定。但同時,崗位也體現了對操作的聚合。通過將責任關聯到崗位而不是具體的人,就可以間接地把操作聚合到崗位。

在RBAC(基於角色的訪問控制)模型中,角色的很重要的一個來源就是崗位。

職位和操作

 

 

小結

模型的全貌:

All

 

特別要注意的是,這里只是一個邏輯模型,要實現該模型還需要具體的設計。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM