Siebel應用架構的一個成功的地方就是在應用里引入了BC,BO的概念,從而使得幾千張關系數據表能夠按照業務的含義組織成業務對象,對于業務人員而言具有了業務上的含義,而不僅僅是從技術人員的觀點來對待數據(就是關系表而已)。
Link:BC之間的關系
對于關系表之間的關系,如主外鍵關系,從業務的BO觀點來看則是BC之間的關系(請注意,不是嚴格的一對一,并非是一個關系表的外鍵一定會組成BC間的關系)。因為一個BO總是由一個主要的BC以及和它相關的一些BC組成,而主要的BC總是以一定的關系和附屬的BC關聯,這種關系就稱之為Link,如下圖:
我們已經交代過一個View展現的就是一個BO,而BO是由一個Master BC和相關的一些子BC組成,如果不存在Link,則子BC的所有數據都會展現出來,而建立了Link之后,就只有和Master BC選定的記錄相關聯的數據才會展現出來。這些關系可能是:
1:1關系:一對一的關系很多是用在Extension表上,Extension表的后綴名通常為_X(Extension表是Siebel里常見的一種表,一般Siebel業務的基礎數據存儲在Base表中,然后把一些擴展的數據和一些可以客戶化的字段(attribute字段)放在Extension表中,從而給不同行業,不同場景提供了一個擴充性很強的數據模型。)
1:M關系:一對多的BC關系一般用于Master-Detail的業務場景,比如一個Account以及該Account已經購買的產品就是一個Master-Detail關系。這種關系類似于關系表的主鍵外鍵關系,這種關系在Extension表上也存在,通常后綴名稱是_XM。
M:M關系:多對多的關系是通過一個叫做交集表(Intersection Table)體現出來的,兩個BC之間沒有主外鍵關系,但是每個BC和該交集表有主外鍵關系,如下圖:
多對多的關系通常表達的是值對(value pair)的關系,比如公司-行業的值對組合。
Party Business Component
Party BC大概是Siebel里最基礎的BC了,Party BC包含了個人相關實體,組織相關的實體,以及訪問控制組等為了一定的目的建立起來的一些組織。如下圖:
Party BC基表是S_Party,但是和一般的BC不一樣的是,作為基表的S_Party本身存儲很少的數據,主要是Party的名稱,Party的類型(是contact,employee還是account等),而更多Party相關的數據都存儲在Extension表里,如S_CONTACT,S_USER等(比較特殊的是這些Extension表的結尾并不是使用*_X來命名);此外,這些extension表的extension表(如S_CONTACT_X)本身也算是S_PARTY的Extension表,這個也是Party BC的一些特殊的地方。下圖是一個很好的表達了Party的訪問控制組的圖:
rowid為1的行的party類型是User List,所以這一行數據相關的信息應該存儲在S_USERLIST extension表里;而rowid為2的行的類型是Access Group,所以該行數據的額外信息應該是在表S_PARTY_GROUP extension表里等等。這個就是一個Siebel里的一個擴展性非常強的數據模型的一個例子。