
本篇文章是對(duì)前兩篇設(shè)想文章商戶中臺(tái)解決方案以及解決方案編排架構(gòu) 的落地,標(biāo)題暫時(shí)還叫中臺(tái)吧,隨著對(duì)業(yè)務(wù)更深入的理解以及在和集團(tuán)中臺(tái)的合作上對(duì)這個(gè)名詞又有了新的認(rèn)知,有些排斥這個(gè)概念。
背景
B端業(yè)務(wù)和C端業(yè)務(wù)有很大的不同,C端重點(diǎn)關(guān)注用戶體驗(yàn)、用戶規(guī)模、轉(zhuǎn)化以及創(chuàng)新功能,B端更關(guān)注在工作流程、業(yè)務(wù)支撐。從技術(shù)上來(lái)看給我們研發(fā)同學(xué)帶來(lái)的挑戰(zhàn)也有相當(dāng)大的差異,C端更偏高并發(fā)等流量場(chǎng)景以及頁(yè)面會(huì)場(chǎng)的快速搭建能力,用來(lái)支撐快速多變的創(chuàng)新玩法。B端則是需要解決復(fù)雜業(yè)務(wù)場(chǎng)景以及冗長(zhǎng)的業(yè)務(wù)流程對(duì)研發(fā)帶來(lái)的沖擊。
下圖是個(gè)大商家概念模型,從線下的POI興趣點(diǎn)到不同渠道的線上門店,在整個(gè)業(yè)務(wù)場(chǎng)景中貫穿了這么多概念。

主流程擴(kuò)展
上面的模型里面隱藏了整個(gè)供給流程,在這個(gè)流程里面我們需要支撐不同業(yè)務(wù)方的各種定制需求,比如:新零售的資質(zhì)審核和餐飲的審核就有很大差異。我們除了承接新零售的需求,還有很多業(yè)務(wù)方。每個(gè)業(yè)務(wù)方在不同環(huán)節(jié)都會(huì)有不同的定制。

如果是一塊代碼塊的話,大家很容易想到使用策略模式,把易變的邏輯通過(guò)接口提煉出來(lái),各自實(shí)現(xiàn)自己的業(yè)務(wù)邏輯。我們的現(xiàn)狀首先是供給流程跨了多個(gè)應(yīng)用,定制的邏輯散落在各個(gè)應(yīng)用里面,由我們餐飲業(yè)務(wù)的研發(fā)負(fù)責(zé)開發(fā)其他業(yè)務(wù)的定制邏輯。這就帶來(lái)了兩個(gè)問(wèn)題,一是業(yè)務(wù)邏輯雖然通過(guò)策略模式能夠在應(yīng)用級(jí)別上做隔離,但沒(méi)有做到應(yīng)用級(jí)別隔離;二是其他業(yè)務(wù)的邏輯由同批研發(fā)開發(fā),其他業(yè)務(wù)研發(fā)只能干等,成為瓶頸。
后來(lái)驗(yàn)證了內(nèi)部soa服務(wù)路由重新配置能力,在拉取路由配置的階段可以重新定制,這就有了我們下面的想法,基于soa接口的多態(tài)調(diào)用。

基于這個(gè)設(shè)想,我們搭建了SPI路由配置臺(tái),不同的業(yè)務(wù)可在這個(gè)配置臺(tái)上申請(qǐng)場(chǎng)景code以及需要擴(kuò)展接口,并且把場(chǎng)景code和由各業(yè)務(wù)研發(fā)自行實(shí)現(xiàn)的soa服務(wù)做綁定。具體運(yùn)行時(shí)架構(gòu)可以參考下圖。

此外我們還給增強(qiáng)了這個(gè)配置臺(tái)的能力,包括整體業(yè)務(wù)邏輯的表達(dá),能夠擴(kuò)展的擴(kuò)展點(diǎn)介紹。我們給這個(gè)平臺(tái)起了個(gè)名字:fishbone,fishbone一般用來(lái)分析問(wèn)題的因果關(guān)系,對(duì)技術(shù)平臺(tái)來(lái)說(shuō)整個(gè)骨架代表著我們的平臺(tái)業(yè)務(wù),分叉的魚刺則表示每個(gè)業(yè)務(wù)的擴(kuò)展。
多流程擴(kuò)展
除了一個(gè)供給主流程外,在業(yè)務(wù)的日常工作中以及B端的業(yè)務(wù)流程中,還有很多其他流程在復(fù)用不同的服務(wù)能力。這很難不讓人想起使用工作流引擎來(lái)解決該類問(wèn)題,這里我們對(duì)比了一些工作流引擎,挑了個(gè)很輕量的開源的工作流引擎,支持bpmn2.0,在此基礎(chǔ)上擴(kuò)展了擴(kuò)應(yīng)用調(diào)用的能力,每個(gè)task節(jié)點(diǎn)都可以是一個(gè)soa服務(wù)。

總結(jié)
所以基于上述的兩類場(chǎng)景,整體架構(gòu)如下圖,fishbone解決主流程多擴(kuò)展問(wèn)題,流程中心解決多流程問(wèn)題。
