一、 概述
在我们星空项目中,系统集成不是什么新鲜事了,对于数字经济高速发展的今天,系统集成更是常事,有些中型偏大型企业,由于业务复杂,随随便便都好几个系统集成,对于我们今天星空最大的客户,目前使用了30多个第三方系统,系统多了,如何集成,如何合理打通这些系统?这么多系统集成规划是否合理呢?
如何做好多系统集成,特别是行业性比较强的项目,往往是项目非常棘手的问题,同时也是项目成功的的关键,如果方案不合理可能会造成系统集成返工、甚至可能推到重来,甚至可能会做不下去造成项目失败,因为项目集成考虑因素太多,哪个环节考虑不周或者不合理,都会对整体业务流转造成很大的影响,集成方案的设计尤为重要,因为如果设计得很好,给客户感觉是一体的,如果设计得不好,则可能会影响数据的准确性、数据不一致及性能问题,会严重影响使用,甚至返工、投诉,更严重者甚至项目失败,所以项目集成需要大家高度关注,多学习和了解一下好的集成方案,以便用于自己的项目中,下面就结合实际项目集成来分享,希望能帮助到更多的项目。
二、 场景描述
(1) 客户为一家锻造行业客户,使用系统众多,包括OA(第三方)、CAPP(第三方)、MES(星空)、PLM(星空)、ERP(星空)、APS(第三方)、S-HR、炉温系统(第三方)
(2) 由于系统很多,但客户要求还是很高,要求所有系统必须“数出一源”,并且要求所有同步能集中在一个系统查看同步日志
(3) OA作为系统门户,要求所有系统就统用户及账号,账号来源于S-HR的员工同步到OA产生一套统一账号,并在OA根据用户的权限分配到S-HR、APS、CAPP、星空系统
(4) 所有系统的审批都需要统一推送到OA审批
三、 集成设计方案
1. 方案设计
(1) 方案设计时需考虑因素:
1) 集成对数据及时性要求,确定是同步还是异步
2) 需考虑集成对性能的影响
3) 需考虑“数出一源”,确定数据源头
客户的需求为:
a. OA为统一门户,
b. 所有系统一套用户
c. 用户的源头是在HR,由HR的员工生成到OA,并由OA根据权限分配到其他系统使用
4) 需考虑是数据使用方(集成方)是否需要存储数据源头的数据
5) 需要规范化、标准化的字段尽量设计为基础资料选择而不是文本输入
6) 需要考虑集成情况跟踪、异常跟踪
(2) 设计步骤:
1) 设计时由粗到细,从整体到局部的原则,需要梳理整体不同系统之间的业务关系,用图展示其关系图
2) 根据业务关系,并确定数据源头及数据流向,用图展示其流向图
3) 根据业务关系梳理,需要满足业务需求相关必须同步的基础资料
4) 业务单据集成时关系图和基础资料关系图,可以标记数据流向,便于清晰的体现集成关系
5) 根据集成关系,梳理需要集成的接口,并设计数据同步方式,是同步还是异步
哪种情况下选择同步?
• 及时性要求很高的,通过源头单据及时触发并调需同步的系统接口,同步写入,这种一般都是从源头数据所在系统主动调用目标数据存储系统的接口
• 调接口不会太频繁(不会频繁发请求),如果太频繁会对性能造成一定要,不建议使用同步
• 一般是数据更新频繁的单据或者是影响其他集成单据的某些状态或者参数,如果不及时会对其他系统使用造成重大影响的
哪种情况下选择异步?
• 一般对及时性要求不高,变化不频繁的静态数据比如基础资料等
• 数据量比较大,如果采用同步方式会消耗大量性能的,必要时还会利用中间表来归集数据,然后采用批量处理的方式写入到系统
6) 同步接口中需要定义输出方和接受方
7) 编写详细的接口文档
8) 设计集成部署方案
9) 需设计集成日志,再每次同步操作时记录其日志,记录关键信息,调用WEB API的报文信息,同步完成后的状态等的记录
四、 集成方案设计
1. 确定需要对接的基础资料、单据及数据流向,并画出集成方案图
(1) 画出所有系统需要对接的基础资料集成图(需特别标明数据源)
下面结合实际项目的集成情况展示基础资料集成的设计效果
如下图(黄色底色部分为数据源)
(2) 画出所有系统需要对接的单据集成图(需特别标明数据源)
下面结合实际项目的集成情况展示单据集成的设计效果
如下图(黄色底色部分为数据源),箭头指向数据流向,需要对所有系统的集成通过集成图能清晰的看到数据源、数据流向及整体的集成情况
1. 列出详细的接口清单(如下图格式)
接口清单设计时需要包括:
(1) 数据类型(指定是基础资料、单据、其他)
(2) 同步内容(指定具体的基础资料或者单据)
(3) 输出方(数据源系统)
(4) 接收方(需要同步的目标基础资料或者单据)
(5) 集成方式(同步、调用接口获取、调用接口生成)
1. 编写详细的接口文档
详细接口模板参照附件中的详细模板进行编写,需要
说明:接口包含以下主要内容:
(1) 接口提供方(需要指定谁是接口提供方)
(2) 调用方式(实时同步还是按需定时同步)
(3) 接口地址
(4) 接口描述(需要描述对应的接口用途)
(5) 接口参数(JSON格式)
(6) 返回结果(JSON格式)
(7) 调用参考
如下图:
4. 集成日志的设计
(1)为啥要做系统集成日志?
系统在运行过程中相当于黑盒,当某个时间两边数据不一致时需要查询原因,由于原因众多,很难判定问题出在哪?如果不做日志记录,运维人员会束手无策,既耗费大量时间排查,甚至有可能找不出问题的原因。
(2)集成日志的组成及特点
系统日志包括两部分:日志文件和界面显示的集成日志(数据库存储)
1) 日志文件使用范围:开发人员或者其他技术人员
特点:偏技术性,用户一般不容易看懂
比如关键功能点的实现,业务逻辑执行前的各参数值的情况,执行后的结果(包括是
否成功,如果有错误,具体错误信息,其中有些信息能识别出来,有些无法识别,服
务器或者数据库执行异常返回的错误信息)
2) 界面显示的集成日志使用范围:运维人员
特点:简单易懂、便于跟踪、集中查看、便于查询、异常信息能特殊标记和显示
(3)日志设计原则
1)日志文件设计原则:能细的尽量细,关键业务执行前后都需要写日志,日志需要有执行时间,
日志能体现执行的关键过程和执行结果,对于同步不成功的数据,需要做标记,如果是因通讯原因未成功的,需要尝试再调用接口写入或者重新执行接口的方法.
2) 界面显示的集成日志设计原则:能体现多个系统同步及接口调用情况、同步及调用异常况,
3) 多个系统集成,除了本身系统需要在自己系统记录日志外,需要设计统一的日志平台接口,供每个集成的系统调用,统一将日志写到一起,这样便于将所有系统的集成日志集中在一起显示,方便维护.
(4)调用接口注意事项
1)系统连接登录验证时需要写日志,连接成功,记录成功登录日志,如果不成功需连接报错的信息写入日志,方便排查问题
2)一个接口如果有多个执行方法,日志文件对于每个方法执行的情况需要日志记录,界面显示的日志记录则不需要记录到每个方法的执行情况
1) 星空的日志文件有统一的日志写入方法,不要自己去随便增加日志方法。
五、 如何做好系统集成总结:
1. 需深度了解需要集成的系统,深入了解其业务关系
2. 需要先对集成做整体、全面的宏观设计,不要先拘于细节,先对整体有个整体集成规划,并画出其关系图,需要考虑集成方案是否能满足其整体业务运作,并标注数据流向
3. 满足业务关系后,则考虑其对应有哪些基础资料需要同步,并画出集成资料同步关系图,并标注数据流向
4. 需考虑各系统之间的集成方式(同步还是异步),是批量同步还是单个触发同步
5. 设计时保证“数出一源”,再多的系统,也只能保证数据只有一个源头
6. 集成设计时一定要考虑最佳性能,集成的性能与设计时的方案有关,
7. 部署时也需要考虑其性能,集成时如果部署方案也必须合理,不合理的部署也会造成性能问题及事故,具体见下面帖:
https://vip.kingdee.com/article/527565503335017472?productLineId=1
推荐阅读