转载

元数据驱动的主数据管理平台

前面谈MDM主数据管理的文章也比较多,本篇文章主要还是想谈下元数据驱动下的MDM主数据管理平台的核心构建思路。因为对于一个MDM系统更多应该理解为结合了元数据驱动和建模,结合了流程引擎和ETL服务能力的一个快速开发和配置平台。

这个思路和原来我们谈到IBM-CQ变更和缺陷管理系统的构建思路完全是一致的。即在当前我们要想做一个覆盖所有业务场景的快速开发和配置平台是相当困难的,但是在某一个业务领域类似变更管理,类似表单化工作流,类似主数据管理等,这些业务场景本身已经对可能出现的需求和规则范围进行了限制,如果理解清楚实际的业务场景和底层核心模型是比较容易实现一个快速开发和配置平台的。

再次强调下主数据管理平台的核心是元数据建模,这和快速开发平台里面的对象建模是类似的。因此我们还是要首先谈下元数据和对象建模的核心内容。

在这里拿供应商主数据来举例,我们常规做法可能是在后台建立供应商数据库表和相关的关联子表,然后再根据需求进行供应商CRUD各自管理功能,流程处理功能的开发。那么在对象建模思想下,我们要考虑的是供应商是一个完整的主数据对象,应该通过什么方式把这个对象建模清楚。通过完整的对象建模一方面是可以直接生成后台数据库表,一方面是用于后续的界面建模和主数据质量管理。

1. 对象就有属性,即首先应该清楚的定义出对象的属性信息。对应到具体的字段。

2. 每个对象属性我们应该清楚的定义出属性的业务完整性和数据约束规则。

3. 对象本身可能有子对象,我们应该可以进一步对某一个对象的子对象进行详细定义。子对象将对应到后台数据库表中主表下的关联从表。

4. 对象和对象之间有关联和映射信息,我们应该可以对应对象间的关联和映射。

5. 对象属性和对象之间存在关联信息,应该可以定义属性和对象之间的关联和映射。

其中可以看到对象建模的核心还是在于对象和子对象,对象属性的业务规则定义,对象和对象之间的关联映射等内容。当然我们也可以通过数据库表逆向生成对象。在对象建模完成对象建模的相关信息都应该存储到元数据管理的相关数据表中,这是最核心的内容。完整的元数据可以做到基本基于对象的简单CRUD功能都可以完全自动生成。

在对象建模完成后接着要考虑的就是表单建模,通过表单建模来实现主数据对象的CRUD功能界面是可以灵活配置的。这个类似于快速开发平台中的自定义表单,即详细的定义CRUD各自表单的布局,表单中每一个属性元素具体呈现的UI组件。通过表单建模就可以实现一个具体的主数据录入表单中如何布局,然后实现各个属性的输入,具体是录入还是选择框,还是说需要从关联子表中进行选择等。表单建模后的元数据建议是要和对象建模数据进行分离,即在独立的元数据表中进行存放。

在一个完整的主数据管理平台中一定涉及到主数据的内容和流程管理,类似主数据的创建,变更或废弃都可能涉及到相应的流程审批操作,在审批完成后才最终生效。因此完整的表单功能实现后接着要考虑的就是通过工作流引擎进行流程建模,最终建立的工作流模板能够和表单挂接。而流程引擎本身又涉及到组织,人员,角色等4A相关的内容,对于这部分内容可以在MDM系统中维护,也应该可以从4A或门户系统进行同步。

谈到这个地方基本可以看到一个完整的供应商主数据管理功能,通过围绕供应商基础业务对象进行了对象建模,界面建模和流程建模后应该就可以完全自动生成相应的CRUD功能,包括审批流程的实现。但是任何快速开发平台都很难真正做到对特殊业务规则的进一步处理。

对于复杂业务规则的处理,类似一个供应商基础数据的废弃,在废弃前可能需要首先校验下该供应商在其它业务系统中的使用情况。遇到这种场景我们原来的做法是在原有模型的基础上可以自己定义相应的脚本语句进行二次处理,但是带来的最大问题即使后期的脚本相当难以维护。因此更加更新的方案即是我们可以在标准功能的基础上扩展相应的插件或业务规则逻辑实现的拦截器。这种拦截器在对象属性输入,对象保存前后,查询前后等都可以拦截相应的事件。而具体拦截器的业务规则和逻辑我们还是通过自定义的扩展类来实现。通过这种方式可以保证整个主数据管理平台足够的可扩展性。

在早期的MDM主数据管理平台中,并不建议马上引入复杂的规则引擎来实现规则建模和规则的可配置,这部分内容还是通过自己开发扩展代码来实现往往更加容易维护和扩展。

前面的基础能力实现后再接着谈两个重点,即主数据集成管理和主数据质量管理。

对于主数据集成管理其实包括两个部分的内容,一个是ETL,一个SOA服务接口,对于ETL主要是实现初始化数据的采集和清理入库。对于SOA服务接口即是能够将主数据服务能力通过接口服务暴露出去,或者说通过消息发布订阅机制能够实现MDM主数据管理平台中主数据的实时分发和事件通知。

对于ETL部分的功能不需要多谈,我们可以集成和内置一个轻量的ETL工具和功能。而对于SOA服务部分的功能则涉及到基于前面对象建模定义的元数据实现标准服务的发表。即我们在定义的完整的对象后,我们可以通过向导的方式将主数据发布为WebService服务接口,既可以是rest服务接口,也可以是soap webservice服务接口。而具体发布的接口需要哪些输入,哪些输出应该都可以进行灵活的配置来完成。当然我们也可以在MDM平台维护主数据的消息发布订阅机制,即将MDM主数据的变更内容通过消息订阅的模式实时分发给业务系统。

数据质量管理是主数据管理里面的一个难点,其中包括了两个方面的内容,一个是单数据对象的数据质量分析,这个通过在对象建模时候定义的业务规则和完整性规则就可以进行。当然我们也可以将数据质量单独拿出来进行定义,我们可以将一个规则绑定到具体的业务对象或者业务对象的属性上面。然后基于这些规则进行单对象的数据质量分析。其次是多表间的数据稽核,我们谈到过主数据管理平台最终是为了解决多业务系统主数据不一致的问题,但是即使上了主数据平台也还需要对多业务系统中的同一数据对象进行数据内容稽核,并实时发现数据不一致的情况并进行预警。对于数据稽核的核心思路,我前面有一篇文章专门谈到过可以参考。

如果以上的内容都已经实现,那么最终提供出来的主数据平台就是一个可以快速实施各类企业主数据的基础平台。该平台基本可以做到80%的主数据实施工作都可配置,同时我们也可以将更多的精力放在主数据业务流程和管控规范的梳理,主数据集成,主数据特殊业务规则的实现上。

原文  http://blog.sina.com.cn/s/blog_493a84550102w8um.html
正文到此结束
Loading...