当前位置: 首页 > 科技观察

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

时间:2023-03-19 23:45:53 科技观察

【.com原稿】一、项目背景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脚本就是一个业务模板,多个业务模板可以构成一套业务逻辑。第一个版本的思路是,录制后得到的脚本,在开发者去掉不必要的语句、光标定位等不必要的操作命令后,直接由调度器调度执行。不太理想,所以一些成员尝试使用更灵活的Python语言实现。实践证明Python更灵活,更适合快速迭代。不过当时第一阶段的开发已经接近尾声,经过第一轮的测试,验证了语言方案虽然不够灵活,但确实可以提高效率;所以团队成员和领导团队一致认为,第一个版本按照现有方案发布,后期采用更好的Python语言。后续版本和第一版升级版采用Python语言后,由于Python拥有表集成、海量数据处理等成熟的组件库,开发效率得到进一步提升。2.打包转换,就是将上面录制的脚本的每一条语句,都一一转换成更灵活的Python语言。底层是通过win23com组件实现对业务系统的调用。还需要注意的是,脚本中的一些步骤可以优化合并或使用更底层的技术调用来实现更好的执行方式。3.模型部署转换后的Python文件按照业务组织进行打包。包装类型分为两种形式。一种是常见的cmdPython工程形式(如图1所示)。这类项目通常只提供一种入口方法和一种配置文件。通过手动或部署工具将项目打包复制到工作站,或手动或部署工具启动脚本后,守护并执行业务逻辑;二是将项目重新打包成公司机器调度平台支持的机器人调度格式。该类型还需要入口方法和配置文件,根据调度平台规范上传打包文件。进入调度平台,在云机上执行。图1(案例项目结构图)图2(脚本录制与转换图)2.3数据校验调度前,人工整理数据,人工审核数据。由于人工验证数据不能100%保证数据的有效性,数据问题只能进入系统后才能发现。针对这个问题,我们设计了数据校验环节,可以批量校验数据,在调度执行前发现问题,反馈解决。调度执行流程是根据业务模型进行处理的一组流程。该流程在运行时会根据模型部署的业务模块选择调度执行。1.数据校验从业务系统内部数据表、SOA流程表单/附件,或通过第三方系统接入获取需要维护的主数据的基本信息后,系统首先将外部数据进行转换数据转化为通用的内部二维矩阵形式,然后根据规则通过验证器验证审计数据的有效性。验证器根据规则拒绝执行或返回警??告或忽略无效数据行。数据校验完成后,将对有效数据进行下一步调度。2.调度执行第一步:通过任务调度平台对审核通过的数据进行调度,抓取需要执行的脚本,分配给相应的工作站。第二步:工作站收到执行脚本后自动打开业务系统软件,然后自动执行创建主数据对应的事务代码,创建主数据。第三步:监控业务系统从获取主数据到执行事务代码的处理状态,对中间步骤的异常数据进行断点执行。图2(数据自动生成流程图)2.4日志记录和错误反馈本系统具有比较完善的日志记录和错误反馈能力。任务执行前,系统会将任务拆分并列出详细信息并记录到数据库中。在执行阶段,调度器将任务列表逐一执行,并将执行过程中的数据和状态信息,如公司代码、执行位置、执行结果或错误详情等保存到数据库中,反馈给系统。业务人员可通过系统查询业务执行情况。如果出现错误,他们可以通过详细的反馈信息判断是哪种错误,并在下次执行时纠正。三、本技术方案带来的有益效果综上所述,实施本套技术方案后,我们的主数据处理时间与预估时间基本一致,缩短了一个数量级,按天计算从以前到现在都是按小时计算,甚至在某些情况下达到了分钟级别。总结一下,我们目前主要实现了两个优化,如下:以机器验证代替人工验证,提高了数据的准确性,减少了无效数据造成的工时浪费;当然,由于减少了人工验证,我们的运维人员也解放了繁琐的审核,有效提升了幸福感。:-)实现业务系统创建数据的自动化,提高效率,解放人力。根据原业务系统运维人员的手工操作,一个业务系统事务代码通常需要1分钟到10多分钟。业务软件自动化机器人目前可以做到最快3秒后,最慢1分钟左右(最主要受限于业务系统本身的数据梳理速度。比如大表数据加载慢可能需要超过数据量大于10000时1分钟)完成一个交易码。例如现有的业务系统数据运维人员在业务系统中维护一个完整的公司数据,按每天工作8小时计算。通常,一个完整的公司大约需要269个步骤,即269个交易代码,平均每个交易代码需要5分钟,总时间大概3天左右,如果加上数据整理的时间,一个完整的公司数据的创建处理最多需要3天。使用这个专利,由于大部分步骤都非常快,所以我们按照每个步骤的中位时间30秒来计算总时间,即在一半耗时操作的情况下,也可以保证2.24小时可在业务系统中完成创建完整的公司数据,可24小时不间断执行。结语在集团公司精神的鼓舞下,团队成员在不懈努力下不断创新,不断完善方案,是对创新精神最好的鼓励。作为集团智慧零售发展战略的后台数据支持者,全体员工统一思想,将集团的目标分解为部门和个人。每个需求、开发、测试、运维人员的工作目标和具体工作项目都非常明确,专注于快速迭代、质量保证和稳定服务,我们将极客精神、极致事物、极致速度作为我们的工作态度,而这些正是我们工作的真实写照。本文作者张飚,苏宁易购IT总部员工平台研发中心技术经理,负责智能应用项目架构及任务调度。多年后端开发经验,对当下火爆的AI智能应用非常感兴趣。他有幸参与到公司的智能化项目建设中,希望为公司的智能化发展贡献一份力量。【原创稿件,合作网站转载请注明原作者和出处为.com】