您好!
欢迎来到京东云开发者社区
登录
首页
博文
课程
大赛
工具
用户中心
开源
首页
博文
课程
大赛
工具
开源
更多
用户中心
开发者社区
>
博文
>
短链业务全流程笔记
分享
打开微信扫码分享
点击前往QQ分享
点击前往微博分享
点击复制链接
短链业务全流程笔记
自猿其说Tech
2021-12-09
IP归属:未知
23480浏览
产品负责人
### 1 前言 随着京喜达短链业务的发展,发现团队中包括自己在内,存在有对短链业务了解不清晰的情况,在日常的会议中,也会听到新同事对短链业务学习苦于没有文档可学习参考,无法建立起宏观的认识,介于此情况,编写此文档,供同事参考 ### 2 短链整体业务流程 首先我们先来了解下短链业务从下单到最终妥投货物是如何流转送达到客户手中的,下面是一张最基本的粗粒度的整体的业务流程图 ![](//img1.jcloudcs.com/developer.jdcloud.com/da538433-78e4-4df2-9b55-ca76544c49b520211209113921.png) 从上图可知,一个最基本的短链业务流程,供应将货发送至分拣仓,在分拣仓生产完成后,采用B2B的运力将货物运输到团长手中,或者将货物运输到网格站再由网格站运输到团长手中,那么下面就要给大家讲解,要想实现这整个履约流程,系统是怎么交互的。 ### 3 系统交互流程图 了解了整体业务流程图后,相信大家对业务流程有了一个整体认识,下面我们在建立了系统流程认知的基础上,看看系统是如何支撑了上述的业务流程的,下图为系统交互的黄金流程图,我们重点对该黄金流程做详细讲解 ![](//img1.jcloudcs.com/developer.jdcloud.com/ce8f4c98-e225-4975-8763-a8cb95a3ec1820211209113946.png) #### 3.1 名词解释 在讲解流程之前,首先要先了解一些名词概念,对系统和业务名字有基本概念认识 ##### 3.1.1 系统名词 ![](//img1.jcloudcs.com/developer.jdcloud.com/6795f447-66cc-4b9e-9383-917dbe72651e20211209114020.png) ##### 3.1.2 业务名词 ![](//img1.jcloudcs.com/developer.jdcloud.com/f14e404f-88de-4c7b-a772-d5341cb4cdc520211209114040.png) #### 3.2 流程详解 上面知道了名字解释,以及对各个系统有个感性认识,下面将对从客户下单到网格站配送全流程做一个详细的解释,在解释之前,对这个图有一个框架型的认识,就是可将该图分为两大块来梳理,一类是运输流程,一类是仓生产流程,运输部分是基于网格站配送到团的场景进行梳理,而仓部分则是已仓生产到网格站的场景,该流程为京喜拼拼黄金流程,后期增加的共享仓和迷你仓不在此流程中,如果有机会后续会梳理 ##### 3.2.1 运输流程理解 ###### 1.接单 第一步先来看接单流程,任何流程的开始都有一个入口,那么短链业务的开始也是由一个入口开始,这个入口就是OFC系统,OFC系统接收到了C单信息,也就是客户通过小程序提交的购买商品的订单信息,里面主要包含了团长ID,商品SKU,多少件,谁下的单等信息。 此时OFC接收到该信息立即通过分单系统获取团长与网格站的关系,由于网格站入住是需要审批流程的,所以如果审批通过后,这个关系会保存在基础资料系统中,但如果团长还未审批通过此时通过基础资料拿不到该关系,那么就会去Gis系统计算团队周边将匹配到的网格站返回,此时我们就知道了团长与网格站的关系,也就进一步初步掌握了,这些接收的订单在哪个网格站的配送范围内,接单是随时的,没有整点下发的概念,此时的数据应该是这样的,如下数据结构 ``` {订单1,SKU列表:{{苹果,5件},{橘子,6件},{香蕉,5件}},网格站A} {订单2,SKU列表:{{苹果,5件},{鸡蛋,6件}},网格站A} {订单3,SKU列表:{{苹果,3件},{橘子,6件}},网格站B} ``` 通过模拟数据可以看出,一个团可以对应一个网格站,一个网格站可以对应多个团,此时我们需要告诉网格站,你要送什么货,送几件,你会怎么做呢,是一次一次的通知网格站,这次你告诉网格站帮我送5个苹果,网格站说好嘞,刚准备送,你又说,这还有5个苹果要送,网格站又回答好的,刚准备送,你又说,这还有3件,相信上帝都会烦的,显然一需要一次性告诉网格站,这里有13个苹果要送,所以此时OFC系统干了一件暖心的事情,就要有合并C单生成团单,即将同一个网格站的订单合并成一个团单,那么合并团单后的数据如下 ``` {团单1,SKU列表:{{苹果,10件},{橘子,6件},{香蕉,5件},{鸡蛋,6件}},网格站A} {团单2,SKU列表:{{苹果,3件},{橘子,6件}},网格站B}} ``` 需要特殊说明的是,这个合并团单的过程并不是实时的,而是12点后,每一个整点会去合并一次,并且将合并的单子下发至运输-预排线,直至22点会把当天一整天的所有C单从新合并后统一下发至运输-预排线系统 ###### 2.预排线 运输-预排线(Club),为了和输运平台系统区分开,后统称为Club ,区别是Club是由京喜达技术部维护,运输平台是由中台技术维护,Club在接收到团单信息后,会生成预排线消息,即提前通知网格站这里有团要配送,配送多少商品,数据格式如下 ``` 每一个整点短链运输预排线接收到团单消息 {团单1,网格站A,线路:null} {团单2,网格站B,线路:null} {团单3,网格站A,线路:null} ``` 此时Club仅仅只有团单消息,但并未对团做排线,此时网格站的调度人员会对团做排线的操作,排线操作分手动和自动,手动是调度人员在地图上框住若干团点后生成一条线,自动排线是系统基于昨天的团与线的关系来自动生成排线,如果昨天没有对应的线,则说明是新增的团,那么就需要去大数据计算该新团属于哪条线,排线排好后网格站的调度人员也可自行删除或修改线路,等排线完成后,在Club测会生成,团单,网格站,线路,车型等的对应关系 ``` {团单1,网格站A,线路:1线} {团单2,网格站A,线路:1线} {团单3,网格站A,线路:1线} {团单4,网格站A,线路:2线} {团单5,网格站A,线路:2线} ``` ![](//img1.jcloudcs.com/developer.jdcloud.com/a78f5324-a7c5-4146-96ef-b1a9a91c043120211209114250.png) 上面地图中可以看到某网格站,有一条线路编号为CJ21111202094005上面共链接了7个团点,那么就说明这七个团单绑定了同一个线路,在此特殊说明一个概念,为后面更好的理解运输计划和运输任务的关系,此处可以分两块看,一个是短链运输,一个是运输平台,短链运输中的团单翻译到运输平台中就是运输计划,短链运输中的线路翻译到运输平台中就是运输任务,那么关系也是对应的,即一个团单对应一个线路,一条线路对应多个团单,那么一个运输计划对应一个运输任务,一个运输任务对应多个运输计划 ###### 3.下发运输 上面的预排线是OFC系统整点下发团单信息到Club生成的,那么在22点时商流会截单,OFC会整体将这一天当中所有的团单下发给到Club的同时,也会给到预分拣接单系统,再通过配运外单系统调用运单中心生成运单,预分拣还会去调用运输生成运输需求,运输中台此时会把运输需求异步回传给Club进行团单与运输需求的绑定,到这一步就要从团单视角去分析了,那么一个团单就摆在那里了,也告诉运输你要来运这个团单,那团单怎么知道运输收到了这个请求呢?也就是只有运输在接到运输需求后通知团单一声,告诉团单一个运输需求号,那团单拿到了需求号,并且牢牢记住这个号,知道这个运输大哥会来送我,别人来了不好使 。 此时网格站看到所有的团都已经排线完成了,可以确认这些排线了,于是做了提交排线的动作,将已经预排线的团和生成的线,一并告诉运输,那么运输接收到对应的团生成运输计划,对应的线生成运输任务,关系同样是一个运输任务对应多个运输计划 ![](//img1.jcloudcs.com/developer.jdcloud.com/f3701d40-bdd0-4b3f-9ae8-50e3c7ae0e9120211209114326.png) ###### 4.网格站 终于到了说网格站的环节了,网格站看图的话可能比较简单,但是要讲清楚网格站与仓运是怎么配合的还是有一定难度的,不过没关系,我试着把它讲清楚,让大家更快速清晰的认识。 对于网格站来说他会接收到三个信息 - 运输任务 - 团单+C单 - 仓分播信息 下面我们针对这三种信息来一一说明,在说明之前要先认识到两个视角,一个是网格站的司机视角,一个是网格站的分播人员的视角,对于司机视角一定是想知道我开啥车,都去哪啊?给谁送啊,送啥啊这些信息,对于网格站分播人员的视角他一定会关心,今天有几个格口(一个格口对应一个团)每个格口都放啥货进去啊,每种货物放几件啊等等这些信息,那么此时运输任务消息,和仓分播消息就派上用场了。 **运输任务:**网格站接收到运输任务并不是给司机使用的,而是给网格站做发货使用的,那么司机是如何知道今天我有多少个运输任务要串多少个团点呢?其实使用的是经管家APP,而经管家APP是运输提供的数据,那网格站接收到了运输任务后,运输任务会有团的绑定关系,所以就会去占领格口,一个团会对应一个格口,占领完格口之后会通知经管家APP,这个运输任务对应了哪些格口,这样司机到了网格站后就知道去哪几个格口取货并装到车上了。 **仓分播信息:**仓也会接收到OFC下发的团单+生产单的消息,仓会基于生产单所对应的网格站进行分播,分播完成后会把实际分播的件数下发至网格站,网格站在接受到仓的分播消息后,会针对团(格口)进行分播任务,此时网格站在收到货物之后,操作人员会基于已经生成好的分播任务,进行分播实操 那么司机只需要关心我取哪个格口取货物,网格站的操作人员关心往哪个格口分播货物,这样配合把配送到了团长手中。 **团单+C单:**对于团单+C单对于网格站的作用主要是体现在了三种单据 - 司机取货单:用于网格站在发货时司机与网格站间货物交接的依据 - 团长交接单:用于网格站与团长间交接货物时核对的依据 - 客户交接单:用于团长越客户之间货物交接核对的依据 ### 4 总结 以上是短链业务的标准全流程,其实短链的产品还不只这些,还有共享仓,mini仓等业务场景,后面还会一一将这些场景进行梳理与文章的沉淀,为后续刚接触该业务的小伙伴提供快速入门的文档。 ------------ ###### 自猿其说Tech-京东物流技术发展部 ###### 作者:邱健(攀登者小组)
原创文章,需联系作者,授权转载
上一篇:javascript错误处理浅析
下一篇:奇点敏捷团队的第五项修炼
相关文章
产品经理需要了解的那些事儿
产品经理的禅-产品经理的定位、日常工作和修炼
工作台待办——小功能也有大门道
自猿其说Tech
文章数
426
阅读量
2149964
作者其他文章
01
深入JDK中的Optional
本文将从Optional所解决的问题开始,逐层解剖,由浅入深,文中会出现Optioanl方法之间的对比,实践,误用情况分析,优缺点等。与大家一起,对这项Java8中的新特性,进行理解和深入。
01
Taro小程序跨端开发入门实战
为了让小程序开发更简单,更高效,我们采用 Taro 作为首选框架,我们将使用 Taro 的实践经验整理了出来,主要内容围绕着什么是 Taro,为什么用 Taro,以及 Taro 如何使用(正确使用的姿势),还有 Taro 背后的一些设计思想来进行展开,让大家能够对 Taro 有个完整的认识。
01
Flutter For Web实践
Flutter For Web 已经发布一年多时间,它的发布意味着我们可以真正地使用一套代码、一套资源部署整个大前端系统(包括:iOS、Android、Web)。渠道研发组经过一段时间的探索,使用Flutter For Web技术开发了移动端可视化编程平台—Flutter乐高,在这里希望和大家分享下使用Flutter For Web实践过程和踩坑实践
01
配运基础数据缓存瘦身实践
在基础数据的常规能力当中,数据的存取是最基础也是最重要的能力,为了整体提高数据的读取能力,缓存技术在基础数据的场景中得到了广泛的使用,下面会重点展示一下配运组近期针对数据缓存做的瘦身实践。
自猿其说Tech
文章数
426
阅读量
2149964
作者其他文章
01
深入JDK中的Optional
01
Taro小程序跨端开发入门实战
01
Flutter For Web实践
01
配运基础数据缓存瘦身实践
添加企业微信
获取1V1专业服务
扫码关注
京东云开发者公众号