业务规则的生命周期管理
?
?
? ? ? ?業(yè)務(wù)規(guī)則將公司從傳統(tǒng)的軟件開發(fā)生命周期(SDLC)中解放了出來,但這并不意味著業(yè)務(wù)規(guī)則的開發(fā)和部署不需要任何的監(jiān)督管理。反而以我的經(jīng)驗(yàn)來看,業(yè)務(wù)規(guī)則通常是以更為精細(xì)的方式進(jìn)行跟蹤管理的。其中,決策邏輯變化的可追溯性在長期看將發(fā)揮巨大的作用。下面我將舉例說明決策邏輯的生命周期管理在現(xiàn)實(shí)場景中的應(yīng)用。
基本的版本控制
? ? ? ?首先,我們簡單闡明一下什么是最基本的“可追溯性”。對于業(yè)務(wù)規(guī)則來說,版本控制的必要性是顯而易見的:萬一有人不慎刪掉了你所有的業(yè)務(wù)規(guī)則,你會(huì)有何感想?這就是為什么我們會(huì)在源代碼管理系統(tǒng)中進(jìn)行版本控制,甚至在文檔管理系統(tǒng)中也進(jìn)行同樣的應(yīng)用。我們想確保如業(yè)務(wù)規(guī)則一般的資產(chǎn)是被妥善保護(hù)的,一旦發(fā)生任何修改,我們都能夠發(fā)現(xiàn)是誰做出了這些修改,并且當(dāng)遇到不當(dāng)修改時(shí),我們能夠恢復(fù)至初始版本。
? ? ? ?我會(huì)在下一篇文章中對版本控制進(jìn)行更為詳盡的分析。但本篇文章中,我將關(guān)注生命周期管理中更有趣的一面:即如何安全地把決策邏輯從開發(fā)環(huán)境發(fā)布到生產(chǎn)環(huán)境中。
將業(yè)務(wù)規(guī)則推送到預(yù)發(fā)布環(huán)境
? ? ? ?雖然我偶爾見到業(yè)務(wù)規(guī)則在生產(chǎn)環(huán)境中被修改的情況,但讓我們現(xiàn)實(shí)一點(diǎn),我們?nèi)匀恍枰辽儆袔讉€(gè)不同的環(huán)境來將承載開發(fā)與生產(chǎn)部署等功能。在將業(yè)務(wù)規(guī)則推進(jìn)到生產(chǎn)環(huán)境進(jìn)行發(fā)布之前,所做出的修改必須進(jìn)行測試。無論如何,IT人員是不會(huì)允許你直接在生產(chǎn)環(huán)境中進(jìn)行修改的。
? ? ? ?一般而言,公司有著兩種發(fā)布業(yè)務(wù)規(guī)則的方法:
- 增量法
- 封裝法
? ? ? ?當(dāng)使用增量法時(shí),我們可以將需要添加或修改的規(guī)則獨(dú)立出來,單獨(dú)的對這些規(guī)則進(jìn)行開發(fā)測試以及部署上線。例如,你可以用相關(guān)標(biāo)簽標(biāo)記這些業(yè)務(wù)規(guī)則,然后通過規(guī)則過濾器進(jìn)行篩選 ,并只將帶有標(biāo)記的規(guī)則發(fā)布到目標(biāo)環(huán)境中。使用這種方法的好處顯而易見,我們可以先行對已修改好的那部分規(guī)則進(jìn)行發(fā)布——比如說當(dāng)有20條規(guī)則需要增添或修改時(shí)——只選擇已通過測試和批準(zhǔn)后的6,7條規(guī)則進(jìn)行發(fā)布。規(guī)則制定者并不需要按順序依次來完成對應(yīng)修改。
? ? ? ?而封裝法中,整個(gè)項(xiàng)目則作為一個(gè)整體進(jìn)行測試,并作為一個(gè)新的“部署包”來進(jìn)行移植。我此處用部署包(Deployment Package)并不特指什么內(nèi)容,因?yàn)椴煌軜?gòu)之間會(huì)有細(xì)微的差異。但總的來說,封裝法就是在生產(chǎn)環(huán)境中最終部署了一個(gè)嶄新的項(xiàng)目,其中同時(shí)包含了新、舊規(guī)則。這樣做的好處是它允許你,或IT人員,對將要部署的規(guī)則進(jìn)行全面的QA測試。
? ? ? ?無論你更傾向于哪種部署方案,規(guī)則發(fā)布都可以進(jìn)行自動(dòng)化的測試與模擬。甚至在必要的情況下,與人工審批相結(jié)合。因此,你能夠隨時(shí)查看是誰做出了相關(guān)修改,并瀏覽相應(yīng)的修改日志。
回退到最新的可用版本
? ? ? ?盡管規(guī)則的修改在發(fā)布前已經(jīng)進(jìn)行了測試和評(píng)估。但有時(shí)候,哪怕已經(jīng)進(jìn)入到生產(chǎn)環(huán)境中了,我們?nèi)匀幌敕祷剡M(jìn)行修改。為什么呢?比方說,在此之前,你只是在現(xiàn)有的數(shù)據(jù)上測試了規(guī)則并得到了期望中的反饋,但并沒有機(jī)會(huì)結(jié)合相關(guān)業(yè)務(wù)指標(biāo)來進(jìn)行模擬測試。這樣很可能帶來一種結(jié)果,那就是規(guī)則的業(yè)務(wù)表現(xiàn)和業(yè)務(wù)目標(biāo)并不匹配。比方說,導(dǎo)致過多的申請需要人工復(fù)審。當(dāng)然也有一種情況是外部條件發(fā)生了變化,讓你不得不回退到之前的版本。例如新的數(shù)據(jù)格式就可能會(huì)導(dǎo)致與現(xiàn)有的業(yè)務(wù)規(guī)則不兼容。總之,這樣的原因有很多。
? ? ? ?現(xiàn)有的回退方式有兩種,其中一種方式是回到開發(fā)環(huán)境,利用版本控制的機(jī)制,重新啟用出現(xiàn)問題的規(guī)則的上一個(gè)版本,然后重新發(fā)布它們。盡管我們使用這種方式進(jìn)行回退很久了,但每次回退時(shí),你仍需要確保你只更新了所有出現(xiàn)問題的業(yè)務(wù)規(guī)則。
? ? ? ?另外一種方式是利用現(xiàn)有的發(fā)布機(jī)制。當(dāng)然如果之前使用增量法進(jìn)行規(guī)則發(fā)布的話,利用這種方式進(jìn)行回退會(huì)有點(diǎn)困難。但如果使用的是封裝法,你就可以直接選取最新的一個(gè)“好”包,并且重新部署它。這種方法在過去被更為頻繁的使用,因?yàn)樗芨斓奶峁┙o你一個(gè)經(jīng)過完整測試的業(yè)務(wù)規(guī)則包。
? ? ? ?當(dāng)然還有一種能更好的處理這種回退需求的辦法,那就是使用發(fā)布版本(Release)的概念。針對每一個(gè)項(xiàng)目,都創(chuàng)建一個(gè)項(xiàng)目視圖,并及時(shí)凍結(jié),然后只在執(zhí)行的時(shí)候進(jìn)行調(diào)用。這樣做的好處是它允許你在生產(chǎn)環(huán)境中中同時(shí)部署多個(gè)發(fā)布版本。這樣處理有什么優(yōu)勢呢?請?jiān)试S我列舉兩個(gè)基本的場景應(yīng)用進(jìn)行說明。
? ? ? ?比方說,你可能想對新規(guī)則進(jìn)行灰度發(fā)布,只針對生產(chǎn)環(huán)境中的部分業(yè)務(wù)試驗(yàn)新規(guī)則。通過使用發(fā)布版本,你可以用版本8去執(zhí)行大部分業(yè)務(wù),同時(shí)用版本9執(zhí)行選定的小部分樣本。不管你是出于安全考慮,還是想要進(jìn)行冠軍/挑戰(zhàn)者實(shí)驗(yàn),通過使用發(fā)布版本的方法,都可以讓業(yè)務(wù)操作變得更加靈活高效。
? ? ? ?然而第二種場景就涉及到了級(jí)聯(lián)的概念。假設(shè)你的業(yè)務(wù)規(guī)則覆蓋到了內(nèi)外部兩個(gè)不同群體的客戶,并且當(dāng)內(nèi)部用戶已經(jīng)完成版本更新時(shí),外部用戶仍然需要一定時(shí)間去升級(jí)到新的發(fā)布版本。在這一段時(shí)間內(nèi),你不僅需要為滯后的外部客戶提供版本8的支持,同時(shí)也需要為領(lǐng)先的內(nèi)部客戶提供版本9的支持。總的來說,發(fā)布版本管理讓你能同時(shí)運(yùn)行同一項(xiàng)目的不同發(fā)布版本。但是需要提醒的是,不要試圖通過復(fù)制業(yè)務(wù)規(guī)則來達(dá)到此目的。這又涉及到另外一個(gè)話題了。
? ? ? ?生命周期管理方法和我以上所敘述的很多技術(shù),優(yōu)勢都在于它們強(qiáng)大的兼容性。你并不必依賴于單一的機(jī)制,就可以根據(jù)你的需要進(jìn)行分層(類)處理并進(jìn)行優(yōu)勢整合。
原文作者:Carole-Ann Berlioz
原文地址:http://www.xinshu.ai/blog.html/25
-----------------------------------------------------上海信數(shù)金融信息服務(wù)有限公司成立于2015年5月,是中國領(lǐng)先的金融科技公司。公司的產(chǎn)品包括新一代智能決策管理平臺(tái)、企業(yè)級(jí)數(shù)據(jù)管理平臺(tái)以及大數(shù)據(jù)征信服務(wù)等。
明策智能決策平臺(tái),是信數(shù)公司和美國硅谷公司Sparkling Logic合作研發(fā)的一款引領(lǐng)未來的智能決策管理平臺(tái),已經(jīng)被包括PayPal、摩根大通、LTCG保險(xiǎn)、京東金融、掌眾金服、中望金服等超過100家國內(nèi)外知名企業(yè)所采用。
Sparkling Logic是一家專業(yè)的智能決策引擎研發(fā)公司,由FICO Blaze Advisor創(chuàng)始團(tuán)隊(duì)建立于2009年,通過對規(guī)則引擎、智能決策的不斷研究,致力于幫助商業(yè)、教育、非盈利和政府組織利用他們的數(shù)據(jù)和專業(yè)知識(shí)來更好地自動(dòng)化決策,推動(dòng)發(fā)展。
轉(zhuǎn)載于:https://www.cnblogs.com/xscredit/p/8535407.html
總結(jié)
以上是生活随笔為你收集整理的业务规则的生命周期管理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在 .NET Framework 4.0
- 下一篇: Python 增删改查