MDM 结合 ESB 数据集成说明
![MDM结合ESB数据集成说明](https://static001.geekbang.org/infoq/f7/f79019933fa877808a53856379a4410c.webp)
科技飞速发展的时代,企业信息化建设会越来越完善,越来越体系化,所使用的应用系统也就越来越多,业务发展中沉淀了大量的数据,但是这些数据没有为企业带来直观的价值,没有形成企业的数据资产,所以越来越多的企业进入到了数据治理阶段,对于主数据治理的需求越来越明确。
MDM 基础数据管理平台是进行清洗和治理企业的主数据,使企业的主数据具有唯一性、准确性、一致性、及时性,通过主数据数据清洗功能将错误数据和重复数据进行清洗,从而保证企业数据能够做到以上特点,然后再分发至下游系统,使企业信息化更加完善。
▎整体介绍
主数据治理方案可以将企业的组织、人员、客户、供应商等高度共享的数据进行统一管理,对需要的业务系统进行同步分发,使数据易采集、易理解、易分析,提高部门与部门之间的沟通效率。
1.产品介绍
1.AEAI MDM 基础数据管理平台
![](https://static001.geekbang.org/infoq/8a/8a548d2b148103fcc5f0268c067f90fe.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
MDM 基础数据管理系统是对主数据进行同步、清洗、治理、分发全生命周期的一次管理,帮助各个业务系统的主数据统一,保障它们的完整性、一致性,同步就是从主数据源头到主数据过程,治理是到主数据后进行一系列的管理和维护、分发是把治理后主数据分发给各个业务系统包括源头。
通过以上各个过程的相互配合去从根本上解决企业各个业务系统之间数据不能共享,数据重复、错误等问题。使企业在数据方面更完善,业务进行更顺畅。
2.AEAI ESB 企业服务总线
![](https://static001.geekbang.org/infoq/eb/eb3311617a8e6e0c272e4fc53efbd2fe.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
AEAI ESB(Enterprise Service BUS):其主要作用是作为企业信息系统的“龙骨”来集成各业务系统,实现异构系统的互联互通,用来拉取、调度各个业务系统的数据,一般被称为企业服务总线。ESB 主要包含三个模块:服务器 ESB Server、设计器 ESB Designer 以及管理控制中心。ESB Server 是运行环境,基于定制的 Tomcat 扩展开发;管理控制中心则是部署在 ESB Server 的 Java Web 应用,基于开发平台构建的;ESB Designer 是基于 Eclipse Plugin 开发的图形化、拖拽式的设计 Web 服务、消息流程的构建工具。
2.产品结合
MDM 基础数据管理平台可以进行数据的清洗,管理和丰富。对企业组织、人员、客户、供应商等高度共享的数据进行统一管理,对需要的业务系统进行同步分发,使数据易采集、易理解、易分析,提高部门与部门之间的沟通效率。
ESB 应用集成平台自带集成样例可以快速上手;丰富的数据适配、协议适配、协议接入、消息转换、消息路由等组件;基于设计器可以图形化、拖拽方式创建服务及消息流程;设计器直接连接服务器使用一键热部署、即时断点调试;控制台上实时监控服务/流程运行状态,便于调试期定位,运行期监控。
二者相结合形成主数据治理方案,可以满足企业各个应用系统间数据共享与功能集成的需求,帮助企业解决数据整合的问题,推进企业信息化建设。
![](https://static001.geekbang.org/infoq/c9/c9bc88b8a592433a038c9fd755a42289.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
3.数据治理
“数据”已成为企业的一项宝贵的战略资产。为了使庞大的数据发挥更大的价值,企业必须着眼于数据治理和综合利用。主数据驱动的数据治理是指从企业杂乱的数据中捕捉具有高业务价值、被企业内各业务部门重复使用的关键数据进行管理,构建单一、准确、权威的数据来源,从而提高企业的整体数据质量,提升数据资产价值,推动业务创新,全面增强企业竞争力。
MDM 基础数据管理平台中包含数据清洗的功能正是数据治理的核心,通过清洗功能对上游业务系统中“脏”的数据进行处理,使其变得正确完整,然后结合 ESB 将干净的数据下发至下游系统。
![](https://static001.geekbang.org/infoq/78/78347ae72721ff91117a844c5a2e7a68.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
▎数据清洗
数据清洗就是在同步和治理过程中把主数据一些欠缺的、重复的、不符合规则的数据进行清洗,保证上游业务系统的数据完整且正确。
1.功能介绍
通过数据清洗功能下载主数据导入模板,源头业务系统把数据填写模板中,通过数据清洗导入功能进行导入清洗,检测出数据中欠缺的、重复的、不符合规则数据,通过导出功能把失败的数据导出到 Excel 中进行数据处理后,在重新导入重新检测直到所有数据成功为止,然后把所有成功的数据导出 Excel 中,返回给业务源头系统进行源头系统的数据清洗(源头系统添加主数据编码映射),通过主数据任务分发把标准的数据分发给业务,这样就把源头、主数据、下发至业务系统数据保持一致。
2.清洗流程
![](https://static001.geekbang.org/infoq/2a/2a6e8bd51b976a1fc0a69d0be8cd9b47.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
1.清洗配置:创建主数据通常分为两个部分,一个是数据建模,一个是功能建模,这两部分中都有数据清洗相关的配置。首先从数据建模中说起,在编辑主数据信息的时候可以选择是否需要数据清洗功能,如下图所示:
![](https://static001.geekbang.org/infoq/62/62a377cd4dbd2466117d741c40bc1c6c.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
如果选择了数据清洗,当跳转到数据建模页面中时,就需要配置字段关联的校验规则了,之后的清洗过程就会按照配置的校验规则去执行。
![](https://static001.geekbang.org/infoq/6e/6e888c6ecccb417c12343143e5eb2aab.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
2.清洗导入:错误数据的导入需要在导入基本数据的过程中通过校验规则对每条数据的每个字段进行判断,不符合校验规则的标记为失败状态,最终对失败数据进行新增,错误字段为上面校验的字段,错误信息则是校验规则名称;重复数据的导入需要在错误信息全部导入完成之后,将没有错误的数据整理到一起,再对这些数据进行循环读取,通过巡检规则来判断配置的字段是否存在值相同的情况,如果存在,修改清洗状态为失败,获取到重复的字段,然后将数据导入到重复数据表中。
![](https://static001.geekbang.org/infoq/2b/2bb091331ce067ab5eb50d6de1bf4b09.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
3.可以对错误数据和重复数据进行查看:
![](https://static001.geekbang.org/infoq/52/52d2f7ee084fef2d7f1d3731324c10f3.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
![](https://static001.geekbang.org/infoq/5c/5cdd1e66882333b8f90d67151f2edb98.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
4.对于重复数据,清洗功能支持排除操作,排除掉的数据下次不会再清洗。
![](https://static001.geekbang.org/infoq/bd/bd9e11a09de363ca4f40d1a7aca5c8ad.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
5.然后就是数据的导出,数据导出分为两种情况,一种是单批次全量,另一种是全批次失败的数据。第一种情况,需要先获取当前清洗页面中的数据状态,如果不为失败,则提示用户需要先过滤出失败数据,再进行导出,如果是单批次全量,则获取当前批次号然后按照批次号进行数据的导出,具体的导出过程同选择导出。
![](https://static001.geekbang.org/infoq/95/95d1899333b31521b6dcbf2486621250.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
![](https://static001.geekbang.org/infoq/69/6940c1e2393a0d02faddfd365a272dab.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
3.最佳实践
ESB 可以结合 MDM 在数据清洗的过程中起到一定的作用,可以使整个流程更加方便快捷。首先是在清洗导入过程中可以将上游业务系统中的数据通过 ESB 导出到 Excel,在清洗页面下载模板,再将数据整合到模板 Excel 中,最后进行清洗。
其次,清洗过程中产生的错误数据也可以通过 ESB 进行 Excel 数据快速地修改,十分便捷。最后,再通过 ESB 将清洗后的数据下发至下游业务系统,这样就保证了数据的完整一致性。
▎数据同步
数据的同步是从数据源头系统获取组织、人员、岗位、客户、供应商等基础数据信息,通过 ESB 企业服务总线将数据同步至 MDM 主数据管理平台中,在主数据管理平台进行数据模型的创建、数据编码的定制以及数据质量的管理等等,最后将干净的数据分发至有需求的各业务系统中。
1.功能介绍
以人员主数据为例,在 MDM 主数据管理平台实现对人员主数据的管理首先需要清楚该类主数据的源头系统,之后根据源头系统的数据创建数据模型、功能模型,实现对人员主数据的管理、维护。
数据模型:
![](https://static001.geekbang.org/infoq/21/2155d425cfbf659202093c1aa2afaa7d.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
功能模型:
![](https://static001.geekbang.org/infoq/02/029748beb63c84d116532dde03f440f3.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
人员主数据列表页面:
![](https://static001.geekbang.org/infoq/50/50030ddfc16b5d048c3f83a6a9491437.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
2.同步流程
1.数据同步流程首先需要创建主数据,在上文已经提到过。
2.创建好主数据后,在 ESB 数据库的表中新建数据,数据结构要和目标数据库 MDM 中的数据结构保持一致。
3.在 ESB 设计器中创建 Rest 服务用来读取元数据库中的数据。
4.接下来创建两个服务,一个用于 ESB 发送参数,另一个用于调用 MDM 接口。
5.去 ESB 控制台中的场景配置中,配置流程的相关信息。
6.创建同步流程。
7.调用同步流程,响应输出为 ok,表示同步流程成功。
8.可以去到 MDM 同步日志进行查看。
3.最佳实践
上文的同步流程介绍的是大体上的流程,在实际过程中 ESB 设计器起到了很重要的作用。首先是在设计器中创建 rest 服务。
![](https://static001.geekbang.org/infoq/ff/ff79273da1bb30d83fd29c6193181d87.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
然后对数据源进行配置,包括源数据字段的配置。创建好后,初始化并部署服务,然后去 soapUI 中对刚刚创建的服务进行测试。
![](https://static001.geekbang.org/infoq/5f/5f6e01a3ebf89cc6bdb8e9d706a34c45.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
接下来需要回到 ESB 控制台去注册两个服务,一个用于发送参数,一个用于调用 MDM 接口,同时,入参和出参信息也是在 ESB 中完成相应的配置,这些都是依赖于 ESB 去完成的。
再然后就是流程相关信息的配置,主要是映射配置,即目标数据和源数据的字段,并设置源数据如何存入目标数据中。
![](https://static001.geekbang.org/infoq/5f/5f3f76e0adf5d82e2ffcd1c8e693b9c5.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
数据映射配置好后就可以去创建消息流程,创建好的消息流程可以参照下图。
![](https://static001.geekbang.org/infoq/5c/5cdeb7bdcd1c4f28bfcb0c0e453411d6.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
1.源数据调用:根据 state 值从源头系统获取组织数据;
2.源数据处理:将从源头系统获取到的数据进行映射处理,转换为主数据管理平台的批量导入临时表接口的入参格式;
3.获取 tokenId:获取主数据的 tokenId;
4.主数据接口调用:调用主数据管理平台批量导入临时表接口将组织数据同步至组织临时表中;
5.转换为 DataRow:获取主数据管理平台批量导入临时表接口返回信息并转换为 DataRow 格式;
6.导入实体表:根据从批量导入临时表接口的出参信息中获取的 batch 数据调用主数据管理平台的批量导入实体表接口将数据从临时表导入至实体表。
▎数据分发
数据在 MDM 中经过清洗,管理和丰富后通过 ESB 流程将完整且一致的数据分发至下游业务系统,供业务人员使用。
1.功能介绍
与同步不同的是,分发源数据的位置在 MDM 中,而目标数据是在 ESB 数据库建立的对应表中。因此操作步骤也和同步流程有很大的不同,首先要在 MDM 中生成相应的任务,方便获取其 taskId 来在流程建立完成后在 ESB 控制台中调用对应的 taskId 执行相应的流程。
分发任务的创建:首先选择数据并生成任务,关联好相应的应用系统后点击保存,这个时候任务就已经创建好,任务明细页面右上角的任务 ID 用于调用任务接口。
![](https://static001.geekbang.org/infoq/4c/4c439293f7a031481c1f718537610188.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
2.分发流程
1.选择要进行分发的数据,创建分发任务。
2.在设计器中创建 web 服务用于接收 MDM 分发出来的数据。
3.在控制台中添加相应的接口和服务。
4.在场景配置中完成流程相关信息的配置。
5.在设计器中创建消息流程并完成相关的配置。
6.回到 ESB 控制台中调用分发流程。
3.最佳实践
在项目管理中心创建 web 服务用于主数据分发出来的数据进行接收。初始化并部署 web 服务,然后去 SoapUI 中测试刚刚创建的服务。
![](https://static001.geekbang.org/infoq/3b/3b9d4ccba7113d234a15dc702a65ef08.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
服务测试没有问题后就可以去 ESB 控制台添加服务,与同步流程相同我们先处理源数据的部分,也就是 MDM 中的任务接口,首先依然是网址中输入 http://localhost:4040/mdm/openapi,找到自己创建的主数据接口,所对应的 WADL 地址,去控制台解析出相应的接口。
![](https://static001.geekbang.org/infoq/7a/7ae9cc5d8ea068c1bfdd3eefa705c295.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
获取源数据使用 records/task 接口。
![](https://static001.geekbang.org/infoq/f8/f8c644d61c8221f90f705224c5574d32.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
然后回到 ESB 控制台添加刚刚创建的 web 服务。
![](https://static001.geekbang.org/infoq/0a/0ac2f7d4cd030c4a6bfbc269d90431c0.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
和同步流程一样,接下来需要完成场景的配置,补全相应的信息。
![](https://static001.geekbang.org/infoq/f2/f280e09ce6bf9c787f2235151bc0a935.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
然后需要去到设计器中完成消息流程的创建。最终流程图可以参考下图:
![](https://static001.geekbang.org/infoq/58/5803330a1416a5daf7c04bb10754e63d.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
1.获取 mdmTokenId:获取主数据管理平台的 tokenId;
2.源数据调用:根据任务 ID 从主数据管理平台的 task 接口获取数据;
3.数据处理:将从 task 接口获取到的数据进行映射处理,转换为 ESB 数据接收接口的入参格式;
4.获取 esbTokenId:获取 ESB 系统的 tokenId;
5.目标接口调用:调用 ESB 提供的数据接收接口将数据分发至 ESB 系统表中;
6.构造日志参数:根据 ESB 数据接收接口返回的出参信息,生成对应的日志参数;
7.日志回写 MDM:调用 MDM 日志回写接口 distribute-log 回写日志信息;
8.最后写入应用集成日志信息。
▎心得总结
最后是总结部分,包括个人对产品和方案价值的理解,还有就是关于产品发展需要注意的地方。
1.产品价值
一款产品想要充分发挥其价值就需要结合其它产品使用,这样才能形成完整的产品体系,能解决不同的企业困境,上述在应用场景所说,我们公司的产品是可以灵活组合的,彼此之间组成不同的解决方案,能满足绝大多数应用场景,而我们的产品是通过对外接口与其他的产品进行结合使用,这些接口都是具有规范性的,而且调用方便,获取的数据也是很全面的。
另外,也需要在项目中不断迭代进行完善升级自己产品,这样把产品才能用到最好的地方,才能体现出产品的价值。良好的稳定的产品也可以帮助实施人员快速而方便的工作,大大减少了工作量,也会让客户满意,增加客户对公司的信任度。
2.方案价值
MDM 主数据管理平台的产生背景就是为了解决企业数据混乱不一致,各个业务系统之间无法互通共享等问题。所以 MDM 结合 ESB 数据治理方案所产生的价值也是为了实现了企业级各系统数据的一定程度的整合,使得各业务系统的数据能够真实地反映企业运营情况,减少数据不一引起的混乱和纠错成本;通过主数据数据清洗功能将错误数据和重复数据进行清洗,从而保证企业数据能够做到唯一性、准确性、一致性、及时性,然后再分发至下游系统,使企业信息化更加完善。
3.产品发展
产品的发展要不断地扩展迭代,并且要多在项目中实践,通过客户的需求筛选出我们产品需要的,进行产品功能的升级和完善,增强产品的功能性和完整性,另外,也需要了解产品在项目中实施的重点和难点,总结经验,扩展向导功能加强产品的易用性,在开发时也要考虑产品的性能和稳定性。
除此之外,产品本身被开发出来是用来服务客户的,所以产品想要发展得越来越好,开发人员必须要学会站在客户角度思考问题,从整体出发,不能拘泥于个人主观角度去开发产品,要把自己当成客户去做功能的开发,这样才有可能发现产品自身存在的不合理的地方;其次就是不能纸上谈兵,产品最终要投入实际场景中去使用,所以在进行开发之前要充分的了解产品本身应用的场景是怎样的,在客户日常使用中起到什么样的作用,这样才会尽可能的满足客户的实际应用需求。最后,除了满足当下的需求外,也需要将目光放得长远一些,转变思想去挖掘潜在的市场需求。
版权声明: 本文为 InfoQ 作者【agileai】的原创文章。
原文链接:【http://xie.infoq.cn/article/fd3ee6a007ac443bf41459b99】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论