知识卡片
参与人与角色分离让同一个客户在不同业务领域承担的多重身份不必互相打架
内容
在存款和贷款两个业务领域做跨领域标准化时,出现了一个典型的 建模难题:贷款业务里的”担保合约”包含担保人信息,这份信息和 普通”客户信息”高度相似、维护需求也很像,理论上应该复用同一套 客户信息机制;但如果直接把担保人信息塞进”客户信息”实体里去 处理,概念上又说不通——担保人和普通客户不是一回事。作者的 解法是拆出一个新的中间层实体”角色信息”,专门记录客户在银行 不同业务领域里可能承担的不同角色,同时把原来的”客户信息”实体 在抽象层次上再往上提一格,改名叫”参与人信息”——这个”参与人” 在系统里对每个真实的自然人/机构有且只有一个,与具体业务无关, 而这个参与人在各种业务中扮演的角色(存款客户、贷款客户、 担保人……)则由独立的”角色信息”实体来记录。作者用一个直观的 比喻说明这个抽象的价值:一家初创企业的董事长兼CEO其实是同一 个人,拥有两种不同的身份、担着不同的职责——把”他本人”定义为 “参与人”,把他担任的”董事长”“CEO”两个职务定义为”角色”, 就可以很方便地从这个人本人出发,看他到底记录了哪些角色,而 不需要把董事长、CEO各自的个人信息拿出来一一比对判断是不是 同一个人。这个”参与人-角色”分离的抽象,本质上解决的是同一个 现实实体在不同业务场景下呈现出多重身份时,如何既保证这个实体 本身的唯一性,又能灵活承载各个身份各自的业务信息,而不会互相 纠缠打架——这不是这个具体银行案例特有的技巧,而是一种在几乎 任何”同一主体参与多种业务角色”的场景里都能复用的通用建模 模式,且这种抽象程度并非一成不变,要依据实际需要和系统建设 目标灵活拿捏。
参考来源
- 位置:《企业级业务架构设计:方法论与实践》第7章"虚拟案例:
商业银行业务架构设计"7.4节"跨领域的标准化"之"(1)担保合约
带来的差异"(源文件:_epub-src对应text00022.html一带)
- 结论依据:原文明确"这里需要增加一个'角色信息'实体,专门用于
记录客户在银行中不同业务领域可能承担的不同角色……原来的
'客户信息'实体再称为客户信息就有些不太合适了,所以我们可以
在抽象程度上上升一格,将其改为'参与人信息'……一个初创企业的
领袖——董事长兼CEO,其实是同一个人,但是拥有两种不同的身份
……将他本人定义为'参与人',而将他所担任的两个不同职务定义为
'角色'",直接支撑参与人与角色分离这一建模抽象及其价值。
- 原始内容:这里需要增加一个"角色信息"实体,专门用于记录客户
在银行中不同业务领域可能承担的不同角色……将他本人定义为
"参与人",而将他所担任的两个不同职务定义为"角色"。