領域 當Party就是PartyRole會這樣

2021-04-13 14:42:08 字數 1456 閱讀 7110

2023年05月24日 13:47:00

首先要說明的是partyrole和party到底都是什麼?partyrole,簡而言之,就是角色(可能是人的角色,也可能是物的角色。人的角色如:父親,兒子,丈夫,員工,物的角色如:抵押品,車輛,固定資產。。。)。 在早期的ooad中(特別是使用了傳統的名詞概念法),這些都是顯而易見的領域物件。而且,在大多數人的印象中,這些確實也被做為領域類(和實體類)存在的。

這樣做的隱含的問題就是:軟體描述的環境跟實際的業務環境不符,為什麼這麼說呢:舉一共簡單的例子:我是我老爹的兒子,我是我兒子的老爹,我是我老婆的老公,我是cheeloo soft公司的員工,在同一時段,我(這個人)居然擁有了4個角色,這也就意味著,我要在系統中填寫4遍個人資訊(或者,讓系統管理員替我填寫,累死他,哈哈。).

於是,精通oo的人們,進行了細粒度的劃分,抽取出來一共儲存特定人員資訊的人員實體,該實體與人員的職務或角色無關,比這個被抽出來的"人員 person",更抽象的就是party。party是(person 和organization的深層抽象).

資訊的冗餘帶來的壞處,我就不多說了,反正在過去,上的都是部門級的系統(如財務/銷售系統),而現在的趨勢是上企業級的系統(如協同),這就給我們的軟體提出要求:整合和整合冗餘資料。

我經歷過的幾個系統,都提出過類似的要求:比方說ycv3系統,提出:國家要求政企分開,專賣局和商業銷售公司是一套班子,兩套組織機構,有不同的權力範圍和匯報關係;比方說:順德某銀行,要求其系統:任意找出兩個節點,系統計算出它們之間的關係(如,張三是本銀行的雇員,並且在某年某月某日,替自己的親戚做了個房產抵押擔保).

當然,我們也必須看到,party和partyrole的分離,增加了模型應對變化的彈性,但會帶來一系列的實現問題:工作量增大,理解難度加深。

我們討論的是領域層面的概念,其實,在資料庫實現中,還是有多方法來體現這個領域模型的:

方法1: sap bizone系統中,party和role是一張表,增加乙個角色,就把原來的人員資訊copy乙份,只是在role那個欄位上,有不同的值,系統維護資料冗餘。

方法2: bsp,嚴格按照領域模型實現,後來加入快取和冗餘欄位來提供效能。

方法3:大多數系統 ,單獨的表,記錄和記錄之間有關聯,業務邏輯採用hard code。

作為乙個擴充套件,我想說:很多系統中,會把使用者和員工放到乙個表中,其實,這樣的系統應對變化的能力會非常差。比方說,現在,企業要上portal,員工、領導(有點特權的樣子,挺qp,呵呵)、**商、零售商需要用不同的門戶登入。那麼,使用者的密碼(或者是其他的登入憑據)會分散到幾個表中,這給統一登入帶來了不少的麻煩。更有甚者,乙個人,在不同的單位掛職,要求登入後,看到其能力範圍內的許可權選單。這時候,user就不是跟party相關,而是跟partyrelation相關了。

因此,party ,partyrole,partyrelation,user是不同的領域類。

領域 當Party就是PartyRole會這樣

2006年05月24日 13 47 00 首先要說明的是partyrole和party到底都是什麼?partyrole,簡而言之,就是角色 可能是人的角色,也可能是物的角色。人的角色如 父親,兒子,丈夫,員工,物的角色如 抵押品,車輛,固定資產。在早期的ooad中 特別是使用了傳統的名詞概念法 這些...

領域 當Party就是PartyRole會這樣

2006年05月24日 13 47 00 首先要說明的是partyrole和party到底都是什麼?partyrole,簡而言之,就是角色 可能是人的角色,也可能是物的角色。人的角色如 父親,兒子,丈夫,員工,物的角色如 抵押品,車輛,固定資產。在早期的ooad中 特別是使用了傳統的名詞概念法 這些...

領域 當Party就是PartyRole會這樣

2006年05月24日 13 47 00 首先要說明的是partyrole和party到底都是什麼?partyrole,簡而言之,就是角色 可能是人的角色,也可能是物的角色。人的角色如 父親,兒子,丈夫,員工,物的角色如 抵押品,車輛,固定資產。在早期的ooad中 特別是使用了傳統的名詞概念法 這些...