您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件开发专栏 > 开发技术 > 正文

苏宁主数据智能维护系统是如何建立的?

发表于:2018-11-08 作者:张标 来源:51CTO

1.项目背景

1.1业务背景

苏宁从 2009 年就开始了互联网转型的探索,当时苏宁已经是国内最大的商业连锁企业,拥有近千家的线下门店,转型互联网就是将原有线下的资源和能力拓展到线上去,如此大的体量要转型互联网,必然要以优异多元的技术作为支持、以稳定的创新型的系统作为支撑,并且要开展数据化的运营。

多年转型数据量急剧增长尤其是近两年数据量急剧增长的现实问题导致原有的手工录入主数据配置出现瓶颈,急需新的方式加速效率、加快进度。一则原有人工录入模式录入速度存在上限,无法从人工录入的模式上有效的提升或加快效率;二则如果要满足现有数据录入进度增加人力还必须对新人进行业务培训,培训周期长、无法满足人员快速投入的问题,并且单纯增加人力并不能解决效率问题,仅仅只能以人海方案暂时满足需求、无法永久的满足日益增长的数据录入需求。经过多次讨论并进行技术探索验证后一致决定使用自动化的智能型的方案,实现解放人力、提升效率的终极目标。

1.2业务问题描述

公司主数据配置自动化改造前主要由维护部人员通过公司内部审批流程、豆芽消息整理数据手工在各系统配置。以新开公司配置为例,总计约涉及7个系统269步的系统配置,每一个步骤都需要整理数据归档然后通过操作相应系统软件手工录入或拷贝输入,操作步骤繁多、操作方式模式化,因此对于业务人员来说存在疲劳和重复性问题;通过这样的复杂流程配置一个标准公司通常需要最少3天时间,无法满足公司大开发战略的推进,无法适应公司接下来几年的公司配置数量的急剧增长,因此特别需要推进公司以及其他主数据配置的自动化、智能化,加快公司运作效率。

1.3解决方案

在中心领导以及业务主要负责人、技术部门主要负责人的牵头下,并经过业务部门对现有问题梳理、技术部门针对需求进行自动化探索和验证,确定自动化甚至最后智能化方案可行。

本自动化系统目前可以通过配置好的规则库,实现自动化核对审批,以及把核对好的主数据信息按照业务系统创建主数据的事务代码一步步自动执行,整个链路不需要人为参与,并且链路的每个节点都有监控,能够及时反馈链路处理状态。该系统可以部署多台机器,通过任务调度实现多个主数据创建的并行处理。理论上能够24小时不间断执行。

2.完整的技术方案

2.1数据接入

原业务系统创建主数据的数据来源复杂,主要有公司内部SOA流程、Email、豆芽等,这些数据由于缺乏统一的约束有很多不规范的数据,例如文本、自定义的Excel表格等;并且这些数据因为缺乏校验多数都需要人工审核。

针对上述情况,本系统进行了规范化约束。主要体现在1)之前没有模板化的文档模板化;2)之前模板化的数据如Excel等会加以直接使用;3)能够通过第三方系统获取到的直接和第三方系统交互获取以保证不出现手工导致的错误。

经过整理,目前数据主要来源于三处,一是根据业务特点定制的一系列数据模板,定制的模板可以实现数据规范化录入、校验以及存储和解析处理;二是数据来源于已有的系统如业务系统内部数据表、SOA流程表单/附件,这些数据都是经过校验后入库,数据质量规范有保证;三是通过第三方系统接入,这部分数据也经过了第三方系统校验,同样数据质量也规范有保证。数据接入这一步做规整之后才能保证后续的业务执行不会因数据的问题导致无法正确处理。

2.2脚本录制、包装转换和模型部署

由于这个类型的项目公司没有相应的经验参考,所以开始摸索阶段很自然的想到先由人工操作按照标准化的模式录制脚本,然后以业务顺序串联脚本;当然,在后续的研发中我们对此过程有了新的提炼和优化。下面主要介绍在此经验基础上提炼出的关键过程。

1.脚本录制

一套业务需根据事务代码从首屏开始通过业务系统软件的脚本录制功能按照规范的人工处理过程录制完整业务逻辑,录制后的VBS脚本即是一个业务模板,多个业务模板即可构成一套业务逻辑。

第一版本的思路是经过录制后得到的脚本经过开发人员剔除不必要的操作命令如非必要语句、光标定位后直接由调度器调度执行,但在开发过程中我们发现直接调度VBS在易用性上并不理想,因此部分成员有尝试使用更为灵活的Python语言实现,经过验证Python更加灵活、更加适合快速迭代。

但第一阶段当时开发已经接近尾声,并且经过第一轮测试验证虽然语言方案不够灵活确实能够提升效率;于是团队成员和领导小组商定第一版即以现有方案发布,后续采用更好的Python语言。后续版本以及第一版本的升级版采用Python语言后,由于Python有合表、大量数据处理等成熟组件库,使得开发效率进一步得到了提升。

2.包装转换

就是将上述录制的脚本各语句逐条转换为更具灵活性的Python语言,其底层是通过win23com组件实现对业务系统的调用。另需注意的是脚本中有些步骤可以优化合并或使用更底层的技术调用,实现为更优异的执行方法。

3.模型部署

转换后的Python文件按照业务组织打包。打包类型分为两种形式,一是普通cmd Python项目形式(如图一),此类型项目通常只提供一个入口方法、一个配置文件,通过手工或部署工具将项目打包拷贝到工作站,或手工或由部署工具启动脚本后守护执行业务逻辑;二是将项目二次封装成公司机器调度平台支持的机器人调度格式,此类型同样需要一个入口方法和一个配置文件,按调度平台规格封装后的文件上传到调度平台即可在云端机器执行。

苏宁主数据智能维护系统是如何建立的?

图一(案例项目结构图)

 

苏宁主数据智能维护系统是如何建立的?

图二(脚本录制和转换图)

2.3数据校验、调度执行

之前由人工的方式整理数据并且由人工审核数据,由于人工核验数据并不能百分百保证数据有效,只有当录入系统后才能发现数据问题,针对此问题我们设计了数据校验环节,可以对数据批量校验,在调度执行前发现问题并反馈解决。调度执行过程是一套按照业务模型处理的流程运行时,此过程会根据模型部署的业务模块选择调度执行。

1.数据校验

从业务系统内部数据表、SOA流程表单/附件或通过第三方系统接入获取到需要维护的主数据基本信息后,首先系统会将外部数据转换为内部通用的二维矩阵形式,然后通过校验器根据规则校验审核数据有效性。校验器根据规则或拒绝执行或返回警告抑或忽略无效数据行,待数据验证完毕后有效数据会进行下一步的调度处理。

2.调度执行

步骤一:审核通过的数据通过任务调度平台进行调度,抓取需要执行的脚本,分配到对应的工作站上。

步骤二:工作站收到执行脚本后自动打开业务系统软件,然后自动执行对应主数据创建的事务代码创建主数据。

步骤三:监控从获取主数据到执行完业务系统的事务代码的处理状态,对中间步骤异常的数据进行断点执行。

苏宁主数据智能维护系统是如何建立的?

图二(数据自动创建流程图)

2.4日志记录、错误反馈

本系统有较完备的日志记录、错误反馈能力。在任务执行前,系统会拆分任务列出明细清单并记录到数据库中,在执行阶段调度器根据任务清单逐条执行,执行中的数据和状态信息如公司代码、执行位置、执行结果或错误明细保存数据库并反馈给系统。业务人员通过系统可查看业务执行状况,如遇错误可通过详细的反馈信息判断是何种错误并在下次执行时更正。

3.本技术方案带来的有益效果

综上,上了本套技术方案后,我们的主数据处理时间基本和预估的时间一致,在时间上缩短了一个量级,由之前的按天算到目前的按小时算,甚至一些情况下实现分钟级。总结来看,目前我们主要实现了两方面优化,如下:

  1. 用机器校验代替人工校验,提高了数据的正确率,减少了因数据无效引起的工时浪费;当然由于减少了人工核验,我们的运维人员也解放了繁琐的审核,切实提升了幸福感。:-)
  2. 实现业务系统创建数据自动化,提高效率,解放人力。按照原有业务系统运维人员采用人工操作,一个业务系统事务代码通常需要1分钟至10多分钟不等,经过业务软件自动化机器人目前可以实现最快3秒,最慢1分钟左右(绝大部分主要受制于业务系统本身数据梳理速度导致,例如大表数据慢加载在数据量多于1万的情况下可能超过1分钟)即可处理完成一个事务代码。

例如现有业务系统数据运维人员在业务系统中维护一个完整的公司数据按照每天工作8小时算,通常一个完整公司约需要269步,即269个事务代码,按平均每个事务代码5分钟算,总计用时约 ,如再加入数据整理时间则最快要3天时间才能处理一个完整公司数据创建。

使用本专利由于绝大部分步骤都很快,我们按照每步骤中位数用时30秒算,计算总用时约 ,即在有半数长耗时操作情况下,也能保证2.24小时可以在业务系统里完成一个完整公司数据的创建,并且能够24小时不间断执行。

结束语

在集团公司造极精神的鼓舞下,团队成员的不懈努力下能够创新性完成并持续改进方案,这是对勇于创新精神的最好鼓舞。作为承担集团智慧零售大开发战略后端数据支持后盾的我们,全体人员统一思想,将集团目标拆解到部门和个人,每个需求、开发、测试、运维人员工作目标和具体工作事项十分清晰,围绕快速迭代、质量保证和稳定服务,把极客、极物、极速的造极精神当作我们的工作态度,这些更是我们工作的真实写照。

本文作者

张标,苏宁易购IT总部员工平台研发中心技术经理,负责智能应用项目架构和任务调度工作。有多年后端开发经验,对当前大热的AI智能应用极有兴趣,有幸参与公司智能项目建设,希望为公司的智能化发展添砖加瓦。