IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  Information Management  >

浅析 Master Data Management Server for Product Information Management 产品的数据建模能力

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

张庆锋 ( zhqf@cn.ibm.com), 软件工程师, IBM

2009 年 10 月 29 日

本文通过对一个电子产品分销商的用例做建模分析,展示了 MDM Server for PIM 产品在核心元数据、可变元数据、关系元数据层面的建模能力。读者可以从本文了解到 MDM Server for PIM 产品数据建模过程中所需考虑的种种要素,从概念级别上证明其数据建模架构层面的灵活性和完备性。

通过本系列第一篇文章的介绍,读者已经可以了解到 Master Data Management Server for Product Information Management (MDM Server for PIM) 非常灵活强大的产品主数据管理能力。

2009 年 7 月,最新发布的 Gartner 关于产品主数据管理的分析报告,已经明确了 IBM 在产品主数据管理领域的领导地位。除了巩固的客户群体支持,Gartner 承认,IBM 的产品主数据管理系统,也就是 MDM Server for PIM,其强大的产品管理功能,能满足产品主数据管理领域的各种复杂的业务需求。而这种能力的获得,依靠的是其架构中非常灵活的数据建模本领。这也是在产品主数据管理领域 IBM 区别于其他主数据管理方案厂商的主要因素之一。


图 1. Gartner 产品信息的主数据管理魔力象限图
图 1. Gartner 产品信息的主数据管理魔力象限图

与其兄弟产品 InfoSphere MDM Server(后文简称 MDM Server)不同,MDM Server for PIM 产品没有内建的开箱即用(Out of the box)的数据模型、服务模型以及业务实体定义,在 MDM Server for PIM 产品中,所有的业务实体的数据建模都必须从建立数据规范(Spec)开始,并将相应的规范应用到实体的容器(Catalog/Hierarhcy)定义中,这在本系列第一篇文章的介绍中已经有所阐述。

笔者认为,导致这两大产品模型设计不同的最根本原因是这两种产品的主要应用行业的不同造成的。MDM Server 来源于金融 / 银行业,其业务模型的重点多倾向于客户,账户,以及事务性的交易操作管理。而客户 / 账户 / 交易的模型基本是有规律可循的,所以在 MDM Server 中,这类信息都被作为实体定义出来,供用户直接使用。

而 MDM Server for PIM 产品主要来源于零售 / 制造业,零售 / 制造业的产品信息大多没有统一的定义,每个厂商对自己的产品定义的要求都会有所不同,所以在 MDM Server for PIM 中,没有像 MDM Server 中定义好的普遍适用的实体 / 服务。取而代之,MDM Server for PIM 产品中所有类型的实体(这里的实体都是指业务实体)的管理都遵循了两个原则:1)实体的定义只能从规范来,没有预定义的实体存在; 2)实体的语义由用户指定。

这种原则无疑为 MDM Server for PIM 产品带来了异常强大的建模语义,这是否将意味着所有类型的实体(注意,这里的实体不仅局限于产品,有可能扩展成客户 / 供应商等其他领域的实体类型)都可以在 MDM Server for PIM 产品中建模管理呢?理论上是可以的;但实际中,经验建议,易变的(每分每秒变化的)或者事务性要求较高的业务实体,不放在 MDM Server for PIM 产品的数据建模考虑范畴之内。

在企业级的主数据管理解决方案中,数据建模的质量对方案的成功、失败起着至关重要的决定作用。可以想象,如果架构师在设计初期将数据模型构建的过于复杂,那么方案后期的实施、维护成本必将随之升高—这一点不难理解,假设架构师将一种产品的 100 个描述属性都设置了唯一性约束,那么当实施人员对该产品容器进行数据的大批量导入时,导入文件不得不将这 100 种属性的值都给出来,这无疑是一个冗杂的过程。反之如果架构师在模型构建阶段将模型过度简化,那么随着方案在生产环境中的不断使用,模型的局限性、功能缺陷必将暴露出来,带给用户非常不友好的使用体验。

在对零售、制造、分销、通讯行业的企业级解决方案的数据建模过程中,MDM Server for PIM 产品的架构师以及实施人员总结出了一套完善的、普遍适用的建模经验理论。笔者将其设计要素以及主要构成部分总结为以下几点:

  1. 在模型的设计中要尽可能的利用 MDM Server for PIM 产品的内建功能,比如单 / 多产品条目的编辑页面,富搜索功能,工作流组件等等。
  2. 核心元数据建模,核心元数据描述产品的基本信息。包括产品的唯一标示,产品类别,通用描述属性,状态属性,图形描述等。
  3. 可变元数据建模,可变元数据描述产品的可变属性。包括产品对分类(Item-Category)特定的属性,产品对种类(Item-Type)特定的属性。
  4. 关系元数据建模,关系型元数据描述产品与其他实体的关系。包括产品对产品(Item-Item)以及产品对其他实体(Item-Entity)的特定的属性。

不妨以一个电子产品分销商的实际需求入手,本文的后续章节针对该业务需求就核心、可变、关系型元数据的建模理念做深入讨论。

用例需求描述:

一个大型电子产品分销厂商对其旗下的所有分销的电子产品做主数据管理。提出的业务需求如下:

  1. 所有电子产品有唯一标示号区分。产品基本属性包括:产品描述属性,产品类型属性(电视、数码相机、收音机,等等),产品状态信息(激活、归档、删除,等等),产品生产日期,保修信息,产品品牌信息,产品样品图形信息。
  2. 对于电视这类需交流电接入支持的产品,产品的描述属性需包含产品所支持的交流电最高电压、最高电功率信息。
  3. 对数码相机这类带储存卡的电子产品,构建一种捆绑销售的套件—相机本身和一种 2G 内存卡。以及基于这种捆绑销售,所特有的捆绑销售价格信息。
  4. 除了管理产品的主数据,在主数据管理系统中还需要对各种电子产品的生产厂商做统一管理。并且,电子产品需要持有该产品的生产厂商信息。

核心元数据

核心元数据是描述产品基本信息的元数据集合,一组不同类型的产品,因为拥有统一的核心元数据对其进行规范定义,才得以在同一产品目录里管理。不难理解,尽管电视、数码相机是不同类型的产品,但它们都会有唯一标示号,以及其他通用的产品描述信息,比如类型、状态、生产日期、保修信息等等。这类信息都属于产品的核心元数据范畴。

从前文的实际用例需求出发,读者可以很快的在 MDM Server for PIM 系统中建出该业务需求的数据模型。如下图所示:


图 2. 产品的主数据规范—包含产品的核心元数据定义
图 2. 产品的主数据规范—包含产品的核心元数据定义

注意:规范是元数据的容器。用户通过建立规范将核心元数据集合定义出来。如何创建规范,以及定义规范中的属性已在本系列第一篇文章中有所阐述。如有不祥请参阅系列之一的相关段落。

上文的核心元数据建模范例中,产品类型是字符串枚举类型。在该属性节点的定义阶段,其枚举的值集合已经被预定义好了。如下图所示:


图 3. 产品的类型属性—规范台中的定义展示
图 3. 产品的类型属性—规范台中的定义展示

产品的状态属性(激活、归档、删除)也是字符串枚举类型,每一个值指明了该产品处于产品生命周期中(Product Lifecycle Management)的某一阶段。通常其状态属性值的改变都是要经历一个业务流程的协作过程,通过在业务流程中多部门的交互、相关负责人的审批,最后其状态值得以更新。关于 MDM Server for PIM 系统中业务流程的管理,本系列后续文章工作流部分会有详细阐述。此处介绍只为读者明确一个观点,产品的状态属性也是产品的核心元数据中不可或缺的部分。

以上给出了在具体的业务需求下核心元数据的最终建模概况。实际中在核心元数据建模阶段,实施人员需要花大量时间与客户沟通,了解客户对核心元数据的具体需求,根据实施经验并结合客户需求对建模框架作相应调整。

例如,有些什么样的属性应该放在既有的 ERP 系统里,而不是主数据管理系统里管理。产品价格就是一个很好的例子,价格属性对于一种商品的描述来说不可缺少,但价格本身与业务紧密相关,从而导致的价格易变的本质使其不适合在主数据管理系统里维护。这种情况下,实施人员就会给出一些方案,比如 MDM Server for PIM 系统只从 ERP 系统里抓取价格信息,价格属性本身交给 ERP 系统维护,主数据管理系统只作为引用记录供其它上下游系统信息共享。另一种方案,主数据管理系统存放该产品的初始或一段时期的平均价格(这个价格是固定不变的),作为该产品的一种价格基准供其他业务系统参考。

又比如,产品的样品图形,很多情况下产品的样品图形是独立存放于企业内部的图形系统中的。如果实施人员试图将所有的图形批量导入到主数据系统中,这将是一个非常复杂的过程,试想系统中存有 100 万个产品,每个产品都要有一个几 M 的描述样品图形,如何保证导入的图形的正确性、完整性将成为一个棘手的问题。于是,建模专家建议,对于图形属性,可以利用 PIM 系统的图形 URL 属性,直接指向开放出来的企业图形系统库;或者,在 MDM Server for PIM 系统之外,将图形库迁移到主数据管理系统所在机器上,利用 MDM Server for PIM 系统的本地文件系统加载功能将图形直接读入到主数据系统中。





回页首


可变元数据

可变元数据是对核心元数据的补充。通常可变元数据包含的是产品特定于产品类型、分类的一些属性。比如本系列文章之一中所举的产品质检信息的用例,便是产品特定于其分类(Item-Category)所拥有的可变属性展示(质检员信息,质检日期只对属于北方产区的产品适用)。

回到本文的用例需求之二:“对于电视这类需交流电接入支持的产品,产品的描述属性需包含产品所支持的交流电最高电压、最高电功率信息。”这便是一个产品特定于其类型(Item-Type)不同其描述属性不同的一个典型展现。

在 MDM Server for PIM 系统中,也可以利用同本系列文章之一中产品质检相似的实现方法满足这种需求。即预先定义好一个产品类型层次树,不同的类型作为层次树的节点(Category)预先定义好,并将相关的辅助规范关联到特定的层次分类节点上。那么所有添加到该分类下的产品条目就会自动拥有这些产品对分类特定的属性了。

具体操作如下:

1. 建立一个产品类型的主规范,带有名称和描述信息即可,如图 4 所示。


图 4. 类型主规范定义
图 4. 类型主规范定义

2. 根据类型主规范建立产品类型层次树。电视、数码相机、收音机作为不同分类节点添加到该层次树中。


图 5. 产品类型层次树
图 5. 产品类型层次树

3. 建立一个电压电功率信息辅助规范,带有最高支持电压、最高额定电功率信息。


图 6. 电压电功率信息辅助规范
图 6. 电压电功率信息辅助规范

4. 在分类层次树中,将该辅助规范关联到电视分类节点上。


图 7. 电压电功率信息辅助规范应用于电视分类
图 7. 电压电功率信息辅助规范应用于电视分类

5. 建立一个主产品目录(利用图 2 所示的主规范),将该产品类型层次树关联到主产品目录。


图 8. 主产品目录定义
图 8. 主产品目录定义

6. 建立一个属性集合,包含图 2 所示的主规范和电压电功率辅助规范的属性。并将该属性集合关联到主产品目录中。


图 9. 电子产品属性集合定义
图 9. 电子产品属性集合定义

7. 主产品目录中,当在电视分类下添加一个产品条目时,可以看到除了核心元数据的内容,最高支持电压、最高额定电功率属性的信息也一并展现了出来,如图 10 所示。而添加在收音机或数码相机分类下的产品,是看不到电压电功率信息的,如图 11 所示。


图 10. 电视产品条目的属性集包含电压电功率信息
图 10. 电视产品条目的属性集包含电压电功率信息

图 11. 收音机条目的属性集不包含电压电功率信息
图 11. 收音机条目的属性集不包含电压电功率信息

这里需要指出的是,即使有了类型分类层次树中的分类节点,核心元数据中的产品类型信息也不是多余的。因为主数据管理系统中的产品数据大多数都是导入的,我们可以利用导入文件中的产品类型信息,编程决定将该产品建立在同类型的产品分类下。这种可控的建模灵活性也是 MDM Server for PIM 系统的看点之一。





回页首


关系元数据

在企业级业务系统中,产品之间通常是有关系的(Item-Item)。如前文用例中的需求三:“对数码相机这类带储存卡的电子产品,构建一种捆绑销售的套件—相机本身和一种 2G 内存卡。以及基于这种捆绑销售,所特有的捆绑销售价格信息。”就描述了产品数码相机与 2G 内存卡之间的捆绑销售关系,这种关联来自于商品之间的内在特定联系—也许这种类型的 2G 内存卡其性价比最适合搭配这一款的数码相机。如果客户购买这一套件,商家给的价格就会相应优惠。

在 MDM Server for PIM 系统中,这种产品之间的关系是如何在数据建模中体现的呢?本文给出一种解决方案,仅供读者参考。实际的 MDM Server for PIM 项目中会有多种途径可以实现以上的业务需求,本文的解决方案不代表最优的解决方案,只是向读者提供在概念层次上的可行性证明。

在 MDM Server for PIM 产品中,有一种属性类型是关系型。本解决方案的核心就是利用关系型属性建立产品与产品之间的关系。进一步考虑,这种产品的捆绑销售套件实际上可以认为是一种独立的产品实体,因为基于这种捆绑销售关系之上,可以有关于这种关系的描述,有这种捆绑销售实体的价格,有可能还有这种捆绑销售的生效日期。在本文给出的解决方案中,我们可以用一个组类型(Group)的属性将这些信息组织到一块,作为产品主规范的一部分进行产品信息管理。

针对这种需求,我们需要更新产品主规范的内容。为了将数码相机与内存卡关联起来,还需要为产品目录中添加一个内存卡产品条目。具体构建步骤如下。

1. 更改产品主规范,添加一个组类型的属性—绑定销售信息,组类型的属性包含 3 个子节点。更改后的主规范如图 12 所示(为了简化模型设计,这里没有采用辅助规范做产品对分类特定属性的建模。主要是基于这种考虑:绑定销售组属性类型的最小出现次数是 0,如果产品条目没有捆绑销售套件存在,用户可以不添加绑定销售信息):

  • 绑定销售关联,关系型属性节点。
  • 绑定销售价格,货币型属性节点。
  • 生效日期,日期型属性节点。

图 12. 添加了绑定销售信息的产品主规范
图 12. 添加了绑定销售信息的产品主规范

2. 在产品的类型分类层次树里添加一个新的类型:内存卡。如图 13 所示。


图 13. 产品主目录里添加内存卡新产品类型
图 13. 产品主目录里添加内存卡新产品类型

3. 在产品的主目录中添加一个新条目:内存卡 001,及其相关属性。映射到内存卡分类下。(为了保持数据的一致性,在执行本步骤操作以前,需要更改主规范的“产品类型”属性,加入新的“内存卡”产品类型)新添加的内存卡产品条目信息如下:


图 14. 新添加的内存卡产品条目信息
图 14. 新添加的内存卡产品条目信息

4. 在产品的主目录中添加一个新条目:数码相机 001(唯一标示号 5),添加绑定销售信息组中“绑定销售关联”,以及对应的其他属性的值。如图 15 所示。


图 15. 关联了内存卡的数码相机产品条目信息
图 15. 关联了内存卡的数码相机产品条目信息

以上介绍了 MDM Server for PIM 系统中产品与产品之间关系的建模。在真实生产环境下,除了产品与产品之间的关系,企业系统中还存在另一种关系,即产品与其他实体之间的关系。本用例需求 4 中的电子产品生产厂商就是不同于产品类型的一种组织型实体。

需求 4 ,“在主数据管理系统中还需要对各种电子产品的生产厂商做统一管理。并且,电子产品需要持有该产品的生产厂商信息”。该需求可以分解为两层含义:

  • 第一, 将电子产品的生产厂商在主数据系统里做统一管理。
  • 第二, 将产品目录中的产品与生产厂商这种实体作关联。

对于第二点,读者可能很容易联想到用关系型属性作这种“产品对生产厂商”的关联。注意到关系型属性的映射目标只能是目录里的条目,如果单独建立一个生产厂商目录,将厂商信息作为待管理的项目在生产厂商目录里管理,那么将电子产品条目关联到生产厂商条目这种解决方案是可行的。

本文此处将用另一方案作这种“产品对生产厂商”的关联。该方案采用查找表属性做不同实体的关系型数据建模。

假设主数据管理系统所需要管理的生产厂商不多,而且不常改变。生产厂商元数据模型简单,我们就用查找表作生产厂商信息的统一管理容器。可以通过如下简单的几个步骤实现产品对其生产厂商的关联性管理。

1 . 建立生产厂商的查找表规范,如图 16 所示。

  • 生产厂商名称,字符串属性节点。
  • 生产厂商描述,字符串属性节点。
  • 地址,字符串属性节点。
  • 联系方式,字符串属性节点。

图 16. 生产厂商的查找表规范
图 16. 生产厂商的查找表规范

2 . 根据查找表规范建立生产厂商查找表。添加两条生产厂商信息,如图 17 所示。其他生产厂商的信息可以据此类推。


图 17. 生产厂商查找表内容
图 17. 生产厂商查找表内容

3 . 更改产品主规范,添加一个查找表属性“生产厂商”。更改后的主规范如图 18 所示。


图 18. 添加了“生产厂商”关系属性的主规范
图 18. 添加了“生产厂商”关系属性的主规范

4 . 在产品的主目录中添加一个新条目:数码相机 002(唯一标示号 6.00),为“生产厂商”这种关系型属性选值“生产厂商 1”。如图 19 所示。


图 19. 产品数码相机与实体生产厂商的关联
图 19. 产品数码相机与实体生产厂商的关联

到此为止,一个满足用例需求的主数据模型框架便建立成功了。





回页首


结语

本文介绍了 MDM Server for PIM 系统中数据建模的三个主要方面:核心元数据建模;可变元数据建模;关系元数据建模。它们之间往往是相互关联的。

在核心元数据建模领域,重点讨论了一些通用元数据的建模,比如产品唯一标示,产品种类,产品状态等。除此之外,还给出了具体如产品价格,产品样品图形属性的建模考虑选项。

在可变元数据建模领域,主要介绍了通过关联辅助规范的层次树,实现产品的条目对分类(Item-Category),条目对种类(Item-Type)特定的属性的建模方案。

在关系元数据建模领域,主要介绍了通过组,关系型,查找表属性实现产品对产品(Item-Item)以及产品对其他实体(Item-Entity)特定的属性的建模方案。

MDM Server for PIM 产品的实施项目中,数据建模是项目运转的必经阶段,建模质量的好坏直接决定项目实施阶段的复杂度以及方案部署运行的结果。数据建模不但需要扎实深厚的产品使用基础,而且需要有从工业模型转化到产品的数据模型的架构师能力。可以说,这是一种基于产品功能但又高于产品基本操作能力之外的一种技巧。本文的主旨并非要为读者了解该产品的数据建模的全貌(实际项目中数据建模的复杂度要远高于本文的举例),而是想通过一个用例使读者真实地了解到概念级别上 MDM Server for PIM 产品数据建模的基本考察点,从而证明其在建模方面的灵活性(正如读者所看到的,MDM Server for PIM 的数据建模是可以不断修改,积累添加的。虽然这不是真正项目实施推荐的做法,但这一特点提供了用户以后在原有建模基础上做二次开发的可能),完备性(对于工业模型的抽象,覆盖)。





回页首


个人声明

本文不带有任何明示或暗含的保证。文章提供的建议只作为一般的经验分享,作者不保证这些建议在任何情况下都有效。本文中任何带有主观性的陈述都只代表本文作者个人的观点,不代表 IBM 公司的官方立场。相关细节,请直接咨询作者。



参考资料

学习

获得产品和技术

讨论


关于作者

张庆锋, 来自 IBM 中国软件开发中心,5 年 IBM 产品测试经验。目前从事 Master Data Management Server for Product Information Management 产品的测试工作。




对本文的评价








IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款