又大又粗又猛免费视频久久_国产理论在线播放_久久男人av资源网站免费软件_99国产精品无码

履約核心引擎低代碼化原理與實踐

作者:Y-供應(yīng)鏈研發(fā)部-履約研發(fā)部

1、導(dǎo)讀

業(yè)界,規(guī)則引擎是一個非常普遍的技術(shù)類工具,也有很多非常優(yōu)秀的開源工具,例如Drools,它是一種嵌入在應(yīng)用程序中的組件,主要解決易變邏輯和業(yè)務(wù)耦合的問題,把易變的規(guī)則從應(yīng)用程序代碼中分離出來,進(jìn)而提升交付效率,降低應(yīng)用程序維護(hù)和可擴展性成本。

然而,行業(yè)上開源的規(guī)則引擎,在互聯(lián)網(wǎng)場景使用卻存在諸多障礙。從技術(shù)上來看,面對特大流量的高并發(fā)略顯不足;從交付上看,操作語言是以研發(fā)視角,無法讓更多的非技術(shù)人員參與來實現(xiàn)交付鏈條的最大化降低;從實施上,也沒有配套的標(biāo)準(zhǔn)化架構(gòu)開放規(guī)范,無法規(guī)?;?/span>的讓規(guī)則從應(yīng)用程序代碼中實現(xiàn)分離。

基于此,京東供應(yīng)鏈研發(fā)部自研了一套,面向業(yè)務(wù)角色的海納低代碼規(guī)則引擎平臺,產(chǎn)品定位是面向業(yè)務(wù)、研發(fā)多角色一體化的零低代碼開發(fā)平臺,這其中規(guī)則引擎是其最核心的部分之一。

這個平臺,不僅可以高效的支持互聯(lián)網(wǎng)高并發(fā)業(yè)務(wù),它還具有一套標(biāo)準(zhǔn)化擴展開放的能力?;诖藰I(yè)務(wù)系統(tǒng)可以快速實現(xiàn)業(yè)務(wù)規(guī)則的規(guī)?;_放,短短4個月內(nèi),低成本開放了近100 個擴展點,抽取沉淀了近400 個業(yè)務(wù)規(guī)則,支持了14 個京東核心鏈路重大項目,產(chǎn)品經(jīng)理/ISV首次以無代碼的方式,在安全清晰的工作邊界內(nèi),自助式的完成京東核心鏈路的業(yè)務(wù)需求,平均的交付周期0.5天內(nèi)。

另外,從長遠(yuǎn)來看,它把研發(fā)職能進(jìn)行轉(zhuǎn)移及拓寬,以安全的模式讓更多的角色參與研發(fā),進(jìn)而優(yōu)化了需求的交付模式,為后續(xù)生態(tài)規(guī)?;慕桓兜於嘶A(chǔ)。

2、JD履約的應(yīng)用

現(xiàn)狀

海納低代碼規(guī)則引擎平臺在履約已大規(guī)模運用,初步達(dá)成了約20%的需求可由業(yè)務(wù)角色來直接交付,預(yù)估后續(xù)此比例可提升至40%。和其他平臺的發(fā)展情況一樣,海納的發(fā)展過程也相當(dāng)驚心動魄。下面就以一個獨特的視角、簡短的語言為大家展開。

一個陽光明媚的早上,初級工程師小徐背著軍綠色的雙肩包,前腳剛從滿滿當(dāng)當(dāng)?shù)碾娞堇锩娉鰜恚€沒來得及走到工位邊脫下厚重的羽絨服。“鈴鈴鈴”的電話聲音就響起了,是對應(yīng)業(yè)務(wù)條線的產(chǎn)品小李打過來的。該死,不會昨天晚上上線有什么問題吧。小徐揉了下微微發(fā)脹的太陽穴,不安的接起電話。很快就放下心來,昨天上線的業(yè)務(wù)已驗收沒問題了。是一個新的業(yè)務(wù)訴求要去滿足。

快速溝通了下,小徐就搞明白了大致想要做的事情了。商城上新引入了一批高端的時尚化妝品品牌,業(yè)務(wù)側(cè)將貨物入倉并在APP上開始售賣后,在客戶同時或者分開購買這批化妝品后,在這些貨物在出庫履約生產(chǎn)的時候,物流會建立單獨的生產(chǎn)業(yè)務(wù)線,為不同品牌的化妝品單獨包裝,并放置到品牌獨立的包裝禮盒中。期望在配送給客戶的時候,使用精美的禮盒也可以加強客戶的感知,提升用戶體驗。

小徐工作已三年了,聽完這個需求后,大腦中已構(gòu)思出了大致的實現(xiàn)方案了。這個需求簡單,不就是配置一批特殊的品牌增加特殊的業(yè)務(wù)處理規(guī)則么,幾行if代碼就可以搞定了,前2天剛實現(xiàn)了個類似的需求。剛想完,小徐就打開代碼編輯器,眼睛盯著那幾百行多個if else分支的代碼,想著加到哪個地方最合適。

想著正有點出神,電話再次響起,還是產(chǎn)品小李,這個需求的優(yōu)先級提高了,業(yè)務(wù)那邊希望今天就可以給出一個排期計劃,小徐預(yù)估了大致的工作,覺得應(yīng)該可以滿足預(yù)期。和小李確定了下午的需求評審會時間,并順手將這個任務(wù)加到了待辦列表中了,不經(jīng)意的掃了下工作安排,這周上線的需求就有4個了,突破了以前每周處理2個的平均值了??磥斫裉焱砩弦蛹影嗔?,不然干不完了。小徐戴上帽子,遮住了有點稀疏的腦門,抿了一口黑咖啡,全心開始工作了。

幾天后,另外一個角落里,核心架構(gòu)師小彭和其他幾個產(chǎn)品、業(yè)務(wù)聚在一起,對最近排期不滿足的情況進(jìn)行溝通。大家一番討論后,總算共識了一起評估是否有合適的方式可以提升交付的速度,降低排期不滿足的概率。甚至個別業(yè)務(wù)還提出來,有沒有什么工作是可以分出來交給他們來做的。嗯,這是一個有意思的方向。小彭記下了這個關(guān)鍵的內(nèi)容,開始認(rèn)真琢磨有無好的辦法。小彭從來就不是一個空想派,說干就干。從項目文檔中拿出了近3年的項目及需求列表,從頭梳理其實現(xiàn)方式,評估需求的共性及特點。

挑戰(zhàn)

小彭帶領(lǐng)團(tuán)隊,重新審視了最近收到的項目及需求,發(fā)現(xiàn)約有40%的需求相似性比較高,需求抽象后基本可以描述為“基于一定組合的業(yè)務(wù)條件下”,“執(zhí)行特定領(lǐng)域的業(yè)務(wù)動作”??雌饋砗鸵?guī)則引擎的匹配度相當(dāng)高。但是綜合分析后,發(fā)現(xiàn)實施難度存在2類挑戰(zhàn),均需要有對應(yīng)的解決方案。

性能挑戰(zhàn):小彭負(fù)責(zé)的業(yè)務(wù)領(lǐng)域有點特殊,所有商城的每一個訂單都會流向他負(fù)責(zé)的系統(tǒng),峰值時一天處理超億級訂單。傳統(tǒng)意義上的規(guī)則引擎,應(yīng)用的都是低流量的業(yè)務(wù)場景。在這種大數(shù)據(jù)量,高并發(fā)的場景下,怎么保障性能是個問題,需要有對應(yīng)的解決方案。

價值挑戰(zhàn):引入成熟的規(guī)則引擎,假定可以解決目前的應(yīng)用場景。但是一般規(guī)則引擎都會有其獨立的領(lǐng)域描述語言(DSL Domain Specific Language),這類語言的使用門檻一般都比較高,交給研發(fā)人員維護(hù)還處于勉強可以接收的程度,交給產(chǎn)品或者業(yè)務(wù)人員去維護(hù),初步看可能性較低。那么引入規(guī)則引擎后,如何實現(xiàn)一種方案,可以讓產(chǎn)品、業(yè)務(wù)、研發(fā)均可以快速參與進(jìn)來,均可以使用此產(chǎn)品功能進(jìn)行快速交付,就是此產(chǎn)品要解決的核心問題了。

方案

經(jīng)過幾天連夜的奮戰(zhàn),小彭總算把相關(guān)的解決方案敲定了具體的可行性方向,與上級主管沛公約好了匯報討論的時間。與前幾天心驚肉跳的討論不同,在大的討論開始之前,小彭的心反而沒有那么緊張了。小彭就是這樣,越是難的事情,越覺得有挑戰(zhàn)。即使再難的事情,在心里過一過,總可以想得明白。他是使萬物回歸其本源,而種子總能突破土地的束縛,慢慢長成誰也無法阻擋的參天大樹。

落地層面,小彭從來不擔(dān)心。雖然可以預(yù)判到實施的過程中會有這樣或者那樣的難題。但是小彭和其合作的團(tuán)隊的戰(zhàn)斗力,是小彭信心高昂的一切來源。這是一支不同的尋常的團(tuán)隊,支撐的也是不同尋常的業(yè)務(wù)。業(yè)務(wù)上,小彭負(fù)責(zé)了商城所有訂單的履約生產(chǎn)過程,為每一個訂單實時高效的制定好最優(yōu)的生產(chǎn)計劃,在過程中發(fā)出多個如拆單、轉(zhuǎn)倉、補貨等多個快速指令,為在商城中消費的每一個客戶提供最優(yōu)服務(wù),并最大可能性的降低履約生產(chǎn)過程中的生產(chǎn)成本。過去幾年多次一起并肩作戰(zhàn)的戰(zhàn)斗與沖鋒,早就鍛造了這只團(tuán)隊獨特的戰(zhàn)斗力。

和沛公的交談如預(yù)期中順利,但是沛公說他還是要再認(rèn)真考慮一下。是的,是要認(rèn)真考慮一下,成熟的人總是要三思而后行,而一但確定好后就毫不猶豫的堅決執(zhí)行。這個事情,風(fēng)險和收益同樣巨大。干好了后面研發(fā)交付的工作可以發(fā)生變革式的變化,產(chǎn)品、業(yè)務(wù)來完成需求交付不再是個可望不可即的事情了;但是如果干不好,比如過程中遇到了無法突破的難題,或者交付后出現(xiàn)業(yè)務(wù)使用不佳的情況,辛辛苦苦投入的精力可能就會存在白費的情況,特別是面對如此高的交付壓力,一旦失敗,對上對下,都不好交代。

變革的過程總是很痛苦,而有先見之明的人在經(jīng)歷痛苦后才能有機會涅槃重生。做,還是不做,這是一個擺在沛公面前的難題。在經(jīng)過一個晚上的深思熟慮后,沛公心中就有了預(yù)判和決斷。這個事情是一個長期的事、有價值的事情,現(xiàn)在不做,將來我們也會要做。等將來項目及需求的壓力變得不可阻擋,不得不做的時候,重重壓力下執(zhí)行的動作反而會變形。最好的時機就是當(dāng)下,沛公已暗暗下定了決心。至于困難,總會有的,但是只要信心在,辦法總比困難多。敢于沖鋒,直面失敗,這也是這個團(tuán)隊難以磨滅的特質(zhì)。

沛公找到了供應(yīng)鏈負(fù)責(zé)整體效能同時身為首架的林老師溝通。林老師最近也一直在思考,如何將供應(yīng)鏈高頻共性的研發(fā)動作進(jìn)一步抽象、打造出合適的Y工具產(chǎn)品,并將工具提供開放給業(yè)務(wù)角色,來降低研發(fā)的需求數(shù),提升交付效率,部門也一直在做這樣的探索,正好最近零(低)代碼解決方案也初步有了成果,與沛公提到的想法不謀而合。兩個部門立刻決定,共同推進(jìn)落地。

一個小的分隊很快就成立了,兩個團(tuán)隊都挑選了一些精兵強將,共同負(fù)責(zé)功能的設(shè)計、開發(fā)及運維,具體帶隊的分別是小麗,小徐,小彭,總體架構(gòu)師是林老師,部門中一些架構(gòu)師和研發(fā)也自愿的踴躍參加,例如 小孫,小馬,小丁,小夢,小張,小喜等等。大家除了日常需要支持的本質(zhì)工作外,其余的時間都一頭撲在了這個新產(chǎn)品能力的打造上了。和一般偉大的事業(yè)開啟必然附加有華美的篇章不同,研發(fā)的工作總是這樣,樸實而無華。沒有激情澎湃的贊歌,也沒有千里不留行的豪邁,只是一個接一個的不眠之夜??此瓶菰锏墓ぷ鳎屠浔拇a,但總難澆滅大家心中火熱的激情。每每深夜里有一些靈光乍現(xiàn)的新思路,每個人總會趕緊拿手機記下來,再倒頭躺下。想到新的一天可以和團(tuán)隊一起,討論新的思路和落地方式,大家按捺不住激動的內(nèi)心,久久不能入睡。

一個月后,產(chǎn)品雛形已初步完成,小彭拉上業(yè)務(wù)線對口的產(chǎn)品和業(yè)務(wù)來試用,算是毀譽參半,小彭沒有泄氣,收集了大家的問題和反饋,并開始快速迭代。又半個月過去,產(chǎn)品總算達(dá)到了可用、可交付的狀態(tài)。經(jīng)過一段時間的試點使用后,一些業(yè)務(wù)、產(chǎn)品開始主動來尋求合作和反饋??偹阈纬闪苏蚍答?。

3、核心原理介紹

看了這么多,那這個產(chǎn)品到底是如何完成的呢,其中的原理和亮點分別是什么,讓小分隊的成員帶領(lǐng)我們來一窺究竟。

提高交付效率、保證交付質(zhì)量,擴大交付角色,是業(yè)界追求的最高目標(biāo),也是是小彭及其小分隊追求的最終目標(biāo)。為保障產(chǎn)品功能可安全、可靠的交付給業(yè)務(wù)角色,小分隊探索出了一個帶可視化界面、研發(fā)和產(chǎn)品可共同參與開發(fā)的通用性規(guī)則平臺,并在平臺內(nèi)設(shè)定了一系列的規(guī)范化約定,計劃提供沙箱模式、錄制與回放驗證等機制來保證交付的質(zhì)量,并提升聯(lián)調(diào)與驗證的效率。

而其核心原理,簡而言之可以表述為:平臺提供可視化設(shè)計器,業(yè)務(wù)角色在可視化界面沉浸式式編排業(yè)務(wù)規(guī)則,即可完成所有業(yè)務(wù)功能的新增、變更、修改與發(fā)布。與之相對應(yīng)的,平臺在功能后臺自動生成規(guī)則引擎描述文件,待業(yè)務(wù)角色審核完成后自動化的同步給應(yīng)用系統(tǒng)。應(yīng)用系統(tǒng)通過SDK對擴展點進(jìn)行攔截,并在擴展點執(zhí)行生效的規(guī)則編排。

海納低代碼規(guī)則引擎工作示意圖如下所示:

履約核心引擎低代碼化原理與實踐

??
對于適用于業(yè)務(wù)規(guī)則類的業(yè)務(wù)場景,小分隊的成員很快就發(fā)現(xiàn)存在共性特點:“當(dāng)滿足部分特定業(yè)務(wù)條件時,執(zhí)行特定業(yè)務(wù)動作的一組規(guī)則集合”。

小分隊成員對此特點深入研究,發(fā)現(xiàn)市面上常見的規(guī)則引擎提供的技術(shù)規(guī)則內(nèi)容太深奧、太專業(yè),對于普通的業(yè)務(wù)人員理解難度太高,導(dǎo)致市面的規(guī)則引擎產(chǎn)品主要在研發(fā)內(nèi)部使用。為解決這一難題,小分隊在平臺中除了提供純技術(shù)規(guī)則注冊外,還提供了業(yè)務(wù)規(guī)則注冊與組合編排。使得平臺的用戶不光可以覆蓋至研發(fā)角色,還可以覆蓋至業(yè)務(wù)角色。業(yè)務(wù)交付需求時,只需關(guān)注其業(yè)務(wù)規(guī)則與業(yè)務(wù)編排,而其背后支撐的復(fù)雜技術(shù)規(guī)則則可完全對業(yè)務(wù)角色透明。最終業(yè)務(wù)像畫流程圖一樣在平臺進(jìn)行操作即可自助式完成需求交付。

伴隨著需求的交付個數(shù)的增長,系統(tǒng)中的業(yè)務(wù)規(guī)則和業(yè)務(wù)行為不斷地擴充,后續(xù)的需求交付可復(fù)用之前沉淀確定的業(yè)務(wù)規(guī)則,包括如“自營”、“廠直”、“醫(yī)藥”等統(tǒng)一的業(yè)務(wù)含義,均可統(tǒng)一在后續(xù)需求進(jìn)行復(fù)用??蛇M(jìn)一步提升交付速度。

下邊我們以一個實際的例子展示下海納規(guī)則引擎的主要特色功能。為了讓大家有直觀的感受可視化規(guī)則編排和執(zhí)行過程,先展示下規(guī)則編排結(jié)果:

履約核心引擎低代碼化原理與實踐

??

從規(guī)則流程圖可以看到主要的元素就是菱形和矩形。菱形表示條件,類似于我們代碼中的if;而矩形則是動作,就是我們具體做的一個動作,比如更新數(shù)據(jù)庫、遠(yuǎn)程接口調(diào)用等任何想做的事。

那么規(guī)則流程是如何被編排出來,編排出來后又是如何運行的呢?下圖描述了主要過程。

履約核心引擎低代碼化原理與實踐

???

注冊擴展點:

擴展點是規(guī)則要執(zhí)行的切入點,在平臺注冊擴展點后,可圍繞該擴展點進(jìn)行業(yè)務(wù)規(guī)則流程編排。

業(yè)務(wù)模型注冊:

業(yè)務(wù)模型是業(yè)務(wù)數(shù)據(jù)的載體,確保引擎正確識別并訪問模型以進(jìn)行邏輯運算;

技術(shù)規(guī)則注冊:

履約核心引擎低代碼化原理與實踐

??主要面向研發(fā)人員,主要包括方法的簽名信息,和系統(tǒng)中的代碼方法對應(yīng),提供最基礎(chǔ)的規(guī)則。

平臺還內(nèi)置了豐富的技術(shù)規(guī)則,如下圖所示,對于一般業(yè)務(wù)而言,預(yù)制的規(guī)則可以滿足80%及以上的場景。對于其余個性化場景,平臺也提供了可擴展的能力。

履約核心引擎低代碼化原理與實踐

??

業(yè)務(wù)規(guī)則注冊:

履約核心引擎低代碼化原理與實踐

??

業(yè)務(wù)規(guī)則是對技術(shù)規(guī)則或業(yè)務(wù)規(guī)則的組合,形成具有業(yè)務(wù)語義的規(guī)則,最終用于業(yè)務(wù)規(guī)則流程編排。為了實現(xiàn)復(fù)雜業(yè)務(wù)條件,我們提供and/or/not/group等多種組合形式,方便業(yè)務(wù)靈活配置。

履約核心引擎低代碼化原理與實踐

??

業(yè)務(wù)規(guī)則編排:

履約核心引擎低代碼化原理與實踐

對業(yè)務(wù)規(guī)則進(jìn)行組合,以流程圖的方式展現(xiàn)業(yè)務(wù)流程,最終形成規(guī)則流程描述文件。

規(guī)則引擎執(zhí)行:

SDK將規(guī)則流程描述文件解析成規(guī)則引擎能執(zhí)行的腳本,規(guī)則引擎通過執(zhí)行腳本完成業(yè)務(wù)規(guī)則的運行。

小結(jié):

對業(yè)務(wù)角色而言,海納平臺提供可視化規(guī)則編排能力,業(yè)務(wù)規(guī)則主要是由具有業(yè)務(wù)語義化的條件規(guī)則和動作規(guī)則組成,因此產(chǎn)品業(yè)務(wù)人員可以輕松地自助完成業(yè)務(wù)規(guī)則編排。隨著規(guī)則豐富度持續(xù)提升,業(yè)務(wù)人員也可以對已有規(guī)則進(jìn)行組合或通過自定義規(guī)則方式實現(xiàn)新業(yè)務(wù)規(guī)則創(chuàng)建,實現(xiàn)全面自助。

對于研發(fā)角色而言,應(yīng)用系統(tǒng)只需引入SDK并定義要執(zhí)行規(guī)則擴展點即可完成集成工作。后續(xù)需求業(yè)務(wù)實現(xiàn)自助化交付后,整個交付的過程從原來的10天,可縮短至最快0.5天,達(dá)成了提效的目的。

亮點

1、輕量化

海納規(guī)則引擎以對業(yè)務(wù)系統(tǒng)無侵入,只需引入規(guī)則引擎SDK,添加注解即可完成接入,對于存量系統(tǒng)具有友好的支持。一般而言,1天即可快速完成集成工作。

2、高性能

海納平臺是去中心化的設(shè)計,平臺只負(fù)責(zé)流程編排,編排后的結(jié)果以流程描述文件的方式同步給業(yè)務(wù)系統(tǒng),應(yīng)用系統(tǒng)通過SDK解析并執(zhí)行,采取本地化執(zhí)行方式,沒有性能瓶頸,并通過了京東訂單履約核心系統(tǒng)11.11大促驗證。平臺提供的能力支持峰值一天處理超億級訂單平穩(wěn)運行,單個規(guī)則運行的耗時在納秒級別內(nèi)完成。

3、研發(fā)和業(yè)務(wù)實現(xiàn)分離

海納規(guī)則引擎將研發(fā)角色和業(yè)務(wù)角色分離,在技術(shù)領(lǐng)域和業(yè)務(wù)領(lǐng)域間建立規(guī)則適配,屏蔽技術(shù)細(xì)節(jié),讓業(yè)務(wù)角色更關(guān)注業(yè)務(wù)規(guī)則,提高業(yè)務(wù)角色的使用體驗。

4、可視化

面向業(yè)務(wù)語義的流程編排,流程的編排可以向畫流程圖一樣方便,實現(xiàn)所見即所得的業(yè)務(wù)體驗。

5、技術(shù)資產(chǎn)沉淀

通過在平臺上注冊業(yè)務(wù)規(guī)則和業(yè)務(wù)行為,可實現(xiàn)技術(shù)資產(chǎn)沉淀,隨著業(yè)務(wù)規(guī)則的擴充,可支持更為豐富的業(yè)務(wù)流程。

4、總結(jié)

時間又回到了當(dāng)下,產(chǎn)品小李找到了小彭,同步了近期業(yè)務(wù)提過來的幾個需求,均已經(jīng)在海納規(guī)則引擎低代碼平臺自助化實現(xiàn)了,單個需求差不多5到10分鐘即可完成配置,全程在平臺上沉浸式操作即可。但最終上線需要小彭幫忙審批一下。仔細(xì)檢查了業(yè)務(wù)規(guī)則條件,確認(rèn)業(yè)務(wù)邏輯符合預(yù)期后,小彭快速移動鼠標(biāo),輕輕點擊了“發(fā)布生效”,新配置的規(guī)則就如同打一個響指一樣,秒級的速度就更新至線上生產(chǎn)環(huán)境,并全面運行了。送走小李后,小彭看著線上平穩(wěn)的監(jiān)控曲線出神,這個手段確實挺有效,省去了需求評審、業(yè)務(wù)功能開發(fā)、業(yè)務(wù)功能內(nèi)部測試的時間,業(yè)務(wù)角色可以快速自助化交付。那么其余60%的需求如何提效呢?是否有其他的解決方案呢?小彭又陷入了沉思。

看到了這里,您是不是對海納規(guī)則引擎低代碼平臺有了更多的了解了呢?您在日常的工作中,是否遇到了類似的場景,可以復(fù)用此解決的方案么?如果有,歡迎多多交流。

在項目需求日趨增加,而人力資源逐步成為瓶頸的時候,采用多種方式來達(dá)成提效的效果,是擺在所有人面前的一個難題。希望本文章可以以一個視角和解決方案,以拋磚引玉的方式,引起大家更多的共鳴和思考。

相關(guān)新聞

聯(lián)系我們
聯(lián)系我們
在線咨詢
分享本頁
返回頂部