【电商】OMS--零售电商系统的核心

news2024/9/20 20:41:25

本文讲述了OMS概念以及相关服务和功能(包括:信息下发、信息上传、 订单分发协同单号生成与拉、拆单发票服务、状态更新与模板、流水、库存)

在这里插入图片描述
OMS即:订单管理中心,是零售电商系统的核心。

随着中台概念的火热,很多电商公司都开始投入资源开始搭建各种中台系统。

一、OMS与中台

1. OMS

在这里插入图片描述
OMS主要是承接各种业务单据「入库与出库」快速的与上下游系统进行信息的传递与处理,订单是其最核心的数据,也是数量最大、效率要求最高的部分。

在上图中,第一层属于内部相关系统,如商品系统、采购管理、前端购物流程产生的销售订单、售后发起的退货订单、以及领用等业务单据——这个我们可以称之为「上游系统」或ERP;当然OMS也应属于ERP系统的一部分。

OMS主要是针对订单的处理,履单包括上游系统的快速流转;但真正的生产应该是仓储内作业。所以OMS是与WMS系统交互最为紧密,与WMS系统的信息传递是通过仓储系统的API接口完成的,API接口与WMS可以称之为「下游系统」。

OMS就是一个中间系统服务的组成,在横向上,它又会与财务进销存系统进行数据的传递,所以它是被很多系统包围中中间的,称其为订单中心确实不为过。
在这里插入图片描述

2. 中台

上图是我在网上看到的一家做OMS产品的系统架构介绍,这里的订单中心属于业务中台。
在这里插入图片描述
上图是根据一位朋友发给我的中台规划,做了些简化;订单管理也是业务中台的一部分。

二、相关服务与功能

1. 信息下发

商品信息

OMS不仅负责销售订单的下发与上传,也包括采购订单及返厂单数据的传输,同时包括基础的商品信息。

商品收货是WMS的初始工作,收货入库后才能产生商品库存。

WMS在使用前首先要进行数据初始化,即:商品信息、品类和供应商等基础信息,同时要进行库存初始化,此外需要在WMS系统中进行库区、货位等信息创建与维护。

如果库内需要根据原材料进行加工生产,则需要在商品系统中进行配置,如父子商品配置、加工品原料配置,这些都会以BOM单方式提前下发到WMS系统中。

供应商信息

供应商信息是在供应商管理模块进行创建,它包括供应商ID、编号、名称及状态,WMS收货时是要获取此部分信息,进行数据校验。

此外,在上下游系统中都有供应商库存,且要进行供应商商品成本的计算与统计。

在WMS系统中有商品批次数据,批次编码可以根据相关规则进行创建,以保证一品多商时可以进行商品的区分。

单据

这里的单据是指业务创建采购单、返厂单,也包括用户的销售订单、退换货订单。

采购单、返厂单在SCM系统中创建完成后需要通过OMS同步到仓库,以便供应商到货后WMS系统中可以根据已经采集的采购单进行数据验证与统计;同时在此前供应商预约送货申请时也能够进行收货安排。

销售订单经过支付、拆单后要下发到WMS,仓库接收后可以开始处理,拣货、打包、发货单。

单据的下发一般分为头和行数据,商品数据则根据下发的单据信息,在WMS系统中根据BOM进行验证处理。

这些都是通过API接口完成的,我们原来的系统每次的数据下发与上传都会保存报文信息,以便出现问题进行查看、分析并解决。

所以在OMS系统与WMS等系统进行数据同步时,接口下发或回传的XML信息一定要保存完整。

2. 信息上传

来而不往非礼也,数据有去就应该有回。

这里的OMS系统中信息上传是指接收WMS系统回传的数据和相关状态,同时在接收完数据和状态后OMS还会进行一些业务处理。

以采购单为例,当仓库完成入库后,会将实际的入库数量回传;此时OMS系统需要根据回传数据进行入库单的生成,并更新上游系统的库存;同时还要进行成本的计算及入库流水的生成,由于数据流转到一个节点需要计算,系统一般都是通过MQ来实现异步处理的。

同信息下发一样,回传的信息明细需要保留,有些还需要进行解析并保存在关系数据库中,便于统计查询、展示。

3. 订单分发协同

在信息下发与上传时都会应用到规则与策略。

随着业务的爆发,单量增长也非常快,所以OMS系统中还应该进行一些规则配置,以便数据快速流转,加快系统的响应速度,给用户更好的体现。

同时有很多状态有些是仓储内部的,有些是业务系统的,在订单处理时要进行一些设置,需要有选择的屏蔽和转换。

4. 单号生成与拉、拆单

这几个服务大家都比较熟悉,单号生成品就是依赖于定义好的规则生成不能重复的单号,提供给前端购物流程或后台业务系统调用。

同时,单号的规则也会与分库分表服务相关联,所以单号的规则非常重要,它必须满足单量的爆发增长,不能重复,可以通过单号进行不同维度的订单数据保存与查询。

拉单就将前端用户产生的单据拉取到后端生产库,这是销售订单数据的来源,拆单可以查看以前总结的《OMS|订单拆单》,这里不重复描述了。

5. 发票服务

现在纸质发票越来越少了,电子发票的开票信息不需要同步到WMS系统了,但是开票金额的计算必不可少,且需要同步到电子发票税务平台。

对于售后的一些补开、退换货涉及的重开等也需要经过发票服务进行计算——这些虽然与财务关联很大,但是与OMS系统密不可分,所以应该是OMS的一部分。

6. 状态更新与模板

订单状态是根据履单的流程不断变化的,有在上游系统的变化,有在WMS系统内的更新。订单的全程跟踪便是根据状态的流转进行的统计与分析,业务部分会根据订单的生命周期来进行改进。状态变更时不仅涉及其他业务流程的逻辑处理,同时也需要进行消息通知,如短信、邮件或微信。

在零售电商系统的基础服务层中会有对应的网关与SP进行对接,但是与用户的交互要注意文案与格式,所以模板配置需要提前设置好,以便OMS进行调用。

只要与用户有关,那么就要注重用户体验,不能漏发或多发,也不能乱发,要设置好相关的规则。

7. 流水

我在这里将出入库流水划分在OMS系统中,因为接收所有的仓储作业数据,只要有出入库那么就涉及到库存的增或减;但是在WMS提供的API接口或返回的数据中可能不会区分单据类型,需要上游系统进行重新处理。这个几年前在与LSCM「仓储对接平台」进行库存核对时就需要到这样的问题。

WMS虽然有单据类型,但是经过LSCM后就只有出与入两种大类型,具体的信息都需要根据XML报文解析后,由上游系统进行重新处理。

流水也是SCM与财务系统交互的基础,财务根据出入库流程、库存进行财务成本的计算、相关报表生成等。

所以如果你在负责OMS,需要注意这一块,WMS有些是以调整单方式进行的,单据需要上游进行生成。

8. 库存

在零售电商系统中库存一般分为三部分,内部ERP、WMS和财务。其间关系以前曾说过,先有WMS,ERP根据出入库单据由OMS进行增或减,财务则根据OMS的出入库流水进行再次计算生成。

所以对账是必须的,WMS和ERP是实时作业的,库存是实时变化的,会有时间性的差异,财务是根据流水生成的可以有准确的期末库存。

接触过几个WMS系统都是通过快照方式备份期末库存的,这个如果WMS系统中没有,需要进行开发,只要有一笔笔的数据就能够推算出期末库存。

但是当SKU数量和单据量非常非常大时,计算就需要时间,在系统设计上就要进行分仓、分品类等进行分布式计算,当然我这里只是提出;在实际生产系统中最多遇到过一天几十万单,几十万个SKU的场景,与京东等平台这种设计肯定满足不了,有兴趣的同学可以去考虑,可以私信交流。

三、总结

OMS名词我们都知道,但是在不同的公司OMS的功能不同,涵盖的业务也不同;只要根据业务较为合理的进行规划,满足业务的变化就行了,至于它是不是订单中台不必过多计较了。

业务驱动技术发展,在设计时要应用领域模型,这是最近看书了解到的,业务、技术、数据、领域,究竟该如何去做,需要不断的去参照成功企业的应用案例结合实际场景去实践。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/358131.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

graphsage解读

传统的图方法都是直推式(transductive)的,学习到的是结构固定的图模型,一旦有新的节点加入,便需要重新训练整个图网络,泛化性不强。GraphSAGE是归纳式(inductive)的,它学习一种映射:通过采样和聚合邻居节点…

ModStartBlog v6.7.0 后台管理优化,页面宽度调整

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议。 功能特性 丰富的模块市场,后台一键快速安装会…

二叉树OJ(二)二叉树中和为某一值的路径 I、II、III

二叉树中和为某一值的路径(一) 描述 给定一个二叉树root和一个值 sum ,判断是否有从根节点到叶子节点的节点值之和等于 sum 的路径。 1.该题路径定义为从树的根结点开始往下一直到叶子结点所经过的结点 2.叶子节点是指没有子节点的节点 3.路径只能从父节点到子节点&…

对JS文件中每个函数单独混淆加密

自动化脚本:单独对JS代码中的每个函数进行混淆加密 用自动化脚本工具,对JS代码中的每个函数分别进行单独混淆加密。这样加密得到的JS代码,比直接对整个JS代码进行混淆加密,效果要好很多。所谓“好”体现在:加密结果安…

Interspeech2022 | 一种基于元辅助学习的低资源口语语义理解方法

中国移动研究院首席科学家冯俊兰博士带领人工智能与智慧运营中心语音团队共同撰写的文章《Meta Auxiliary Learning for Low-resource Spoken Language Understanding》被语音国际顶会Interspeech2022接收。 关于Interspeech Interspeech 是国际最大且最全面关于言语科学与技…

QT for Android BLE Bluetooch QT BLE

小白式的介绍,很详细了,很多主要内容写在程序的注释里,慢慢看 下面是我的源码 https://download.csdn.net/download/qq_27620407/87464307 源码打不开的话可以试试下图的操作,之后电机确定,可能是加图标搞的&#xff0…

自监督表征预训练之掩码图像建模

自监督表征预训练之掩码图像建模 前言 目前,在计算机视觉领域,自监督表征预训练有两个主流方向,分别是对比学习(contrastive learning)和掩码图像建模(masked image modeling)。两个方向在近几…

CLEVE:事件抽取的对比预训练

CLEVE: Contrastive Pre-training for Event Extraction 论文:CLEVE: Contrastive Pre-training for Event Extraction (arxiv.org) 代码:THU-KEG/CLEVE: Source code for ACL 2021 paper “CLEVE: Contrastive Pre-training for Event Extraction” (g…

初探Upgrade内存马(内存马系列篇六)

写在前面 前面讲解了一个特殊的Tomcat内存马-Executor内存马,这篇同样是一个特殊,可以不被检测到的内存马-Upgrade内存马。 这篇就是内存马系列文章的第六篇了。 前置 在阅读这篇文章之前,同样需要对Tomcat的架构,和初始化流程…

秒懂算法 | 莫队算法

01、基础莫队算法 莫队算法 = 离线 + 暴力 + 分块。 “离线”和“在线”的概念。在线是交互式的,一问一答;如果前面的答案用于后面的提问,称为“强制在线”。离线是非交互的,一次性读取所有问题,然后一起回答,"记录所有步,回头再做”。 基础的莫队算法是一种离线…

[Java安全]—Shiro回显内存马注入

文章目录前言流程分析寻找response流程分析获取Http11Processor获取AbstractProtocol获取Connector获取WebappClassLoaderHeader 长度限制绕过1、反射修改maxHeaderSize2、自定义ClassLoader加载Body数据后记参考前言 接上篇[Java安全]—Tomcat反序列化注入回显内存马_&#x…

【基于混合激活残差块:超分】

SRNHARB: A deep light-weight image super resolution network using hybrid activation residual blocks (SRNHARB:一种基于混合激活残差块的深度轻量图像超分辨率网络) 在所有基于图像的应用中,特别是在计算机视觉应用中&…

软件测试期末

考原题就是爽 软件测试技术 知识点整理 https://wenku.baidu.com/view/524c900f4b2fb4daa58da0116c175f0e7cd11913.html 关键知识点 https://www.cnblogs.com/whylaughing/category/813559.html?page1 边界值法不选择无效数据 边界值分析法的基本思想 选取正好等于&am…

PageObject设计模式,在selenium自动化测试中的运用

PageObject设计模式 Web自动化测试框架(WebTestFramework)是基于Selenium框架且采用PageObject设计模式进行二次开发形成的框架。web测试时,建议强烈推荐使用_谷歌或_火狐浏览器。PageObject设计模式:是将某个页面的所有"元素&#xff…

【网络原理3】TCP连接管理

TCP这种传输层协议必须是有连接的。连接管理,就是TCP当中管理如何建立连接、如何断开连接的方式。 目录 TCP建立连接的方式(三次握手) 合并两次连接之后变成"三次握手" 站在具体发送什么报文的视角,理解三次握手 发送报文之前 第一步:客…

Git - 在主分支上创建分支并提交代码

拉取最新代码 因为当前在 master 分支下,你必须拉取最新代码,保证当前代码与线上同步(最新),执行以下命令: git pull origin master创建分支 目前我们在 master 主分支上,需要执行以下命令&…

【Unity】[入门tips与通用性原则] 一些经验技巧和更好地写出简洁易懂的程序的原则方法

本文将持续间断更新 本文主要面向初级程序员,为了方便Unity开发,有些快捷键的方式和一些通用性的技巧tips等会在这篇博客内持续更新,欢迎点赞收藏 快捷键 Ctrl S ; 快捷保存!闲着没事就来两下!CtrlShif…

CMake基础使用和实战详解

CMake基础使用和实战详解一、CMake简介1.1、cmake 的特点1.2、注意1.3、使用建议二、安装 cmake三、CMake的简单使用3.1、准备工作3.2、开始构建3.3、解释CMakeLists.txt的内容3.4、基本语法规则四、更像样的CMake工程4.1、准备工作4.2、构建4.3、语法解释4.4、修改保存目标二进…

水文监测场景的数据通信规约解析和落地实践

[小 迪 导 读]:江苏云上需要通过云平台接入水文设备来实现水文数据的采集、存储、显示、控制、报警及传输等综合功能。企业介绍江苏云上智联物联科技有限公司是专业从事物联网相关产品与解决方案服务的高科技公司,总部位于美丽的江苏无锡。公司遵循“智联…

linux高级命令之死锁

死锁学习目标能够知道产生死锁的原因1. 死锁的概念死锁: 一直等待对方释放锁的情景就是死锁为了更好的理解死锁,来看一个现实生活的效果图:说明:现实社会中,男女双方一直等待对方先道歉的这种行为就好比是死锁。死锁的结果会造成应用程序的停止响应&…