3d全彩无码啪啪本子全彩,丰满人妻在公车被猛烈进入电影 ,欧美成aⅴ人高清怡红院,亚洲欧美日韩国产成人一区

行業(yè)動(dòng)態(tài)

.Net Core 環(huán)境下構(gòu)建強(qiáng)大且易用的規(guī)則引擎

2018-06-11 08:43:00 小沐管家 0

1. 引言

1.1 為什么需要規(guī)則引擎

在業(yè)務(wù)的早期時(shí)代,也許使用硬編碼或者邏輯判斷就可以滿足要求。但隨著業(yè)務(wù)的發(fā)展,越來越多的問題會(huì)暴露出來:

  • 邏輯復(fù)雜度帶來的編碼挑戰(zhàn),需求變更時(shí)改變邏輯可能會(huì)引起災(zāi)難

  • 重復(fù)性的需求必須可重用,否則必須重復(fù)性編碼

  • 運(yùn)行期間無法即時(shí)修改規(guī)則,但重新部署可能會(huì)帶來其他問題

  • 上線前的測(cè)試變得繁瑣且不可控,必須花大量的人力和時(shí)間去測(cè)試

這些困境在『 小明歷險(xiǎn)記:規(guī)則引擎 drools 教程一』 一文中可以體會(huì)一番,一開始只是簡(jiǎn)單的根據(jù)購物金額來發(fā)放積分,運(yùn)行期間又要更改為更多的規(guī)則層次,如果不及時(shí)引入對(duì)應(yīng)的規(guī)范化處理機(jī)制,開發(fā)人員將慢慢墜入無止盡的業(yè)務(wù)深淵。對(duì)此,聰明的做法是在系統(tǒng)中引入規(guī)則引擎,對(duì)業(yè)務(wù)操作員要提供盡量簡(jiǎn)單的操作頁面來配置規(guī)則,規(guī)則引擎和配置盡量不要耦合到一塊。

1.2 .Net Core 環(huán)境下的選擇 -- Nrules

目前最流行的規(guī)則引擎應(yīng)該是Drools, 用 Java 語言編寫的開放源碼規(guī)則引擎,使用 Rete 算法對(duì)所編寫的規(guī)則求值,其操作流程如下:

沐歌環(huán)保

對(duì)于 .Net 應(yīng)用來說,可以通過 Kie 組件提供的 Rest 接口調(diào)用規(guī)則引擎運(yùn)算。然而其過于龐大,僅僅只是需要規(guī)則引擎計(jì)算核心的部分。對(duì)此,查找了 .Net 中開源的規(guī)則引擎,發(fā)現(xiàn)只有同樣實(shí)現(xiàn) Rete 算法的 Nrules 滿足要求(支持 .Net Core,運(yùn)行時(shí)加載規(guī)則引擎)。

注:本文參考借鑒了美團(tuán)技術(shù)團(tuán)隊(duì) 從 0 到 1:構(gòu)建強(qiáng)大且易用的規(guī)則引擎 一文的設(shè)計(jì)思路,對(duì) Drools 從入門到放棄。

2. Nrules 實(shí)戰(zhàn) -- 電商促銷活動(dòng)規(guī)則引擎設(shè)計(jì)

2.1 了解 Nrules

NRules 是基于 Rete 匹配算法的.NET 生產(chǎn)規(guī)則引擎,基于.NET Standard ,支持 4.5+ 的應(yīng)用,提供 流式聲明規(guī)則、運(yùn)行時(shí)構(gòu)建規(guī)則、專門的規(guī)則語言(開發(fā)中,不推薦使用到生產(chǎn),基于.Net 4.5 而不是 .NETStandard )。
其計(jì)算機(jī)制也與其他規(guī)則引擎大同小異:
沐歌環(huán)保

2.2 設(shè)計(jì)規(guī)則配置

前文提到 對(duì)業(yè)務(wù)操作員要提供盡量簡(jiǎn)單的操作頁面來配置規(guī)則 ,所以我們定義促銷活動(dòng)的規(guī)則配置就要盡量簡(jiǎn)單。

沐歌環(huán)保

在設(shè)計(jì)模型時(shí),我們必須先參考現(xiàn)實(shí)生活中遇到的電商促銷活動(dòng),大致可以想到有這么幾種活動(dòng)類型:滿減促銷、單品促銷、套裝促銷、贈(zèng)品促銷、滿贈(zèng)促銷、多買優(yōu)惠促銷、定金促銷等。
在這里,我選擇對(duì)多買優(yōu)惠促銷做分析,多買促銷優(yōu)惠即所謂的階梯打折,如買一件9折,買兩件8折,其模型大致如下:

沐歌環(huán)保

這里為了簡(jiǎn)化設(shè)計(jì),設(shè)計(jì)的模型并不會(huì)去約束平臺(tái)、活動(dòng)范圍、會(huì)員等級(jí)等,僅僅約束了使用的產(chǎn)品 id 范圍。為了匹配現(xiàn)實(shí)中可能出現(xiàn)的組合優(yōu)惠(類似滿減活動(dòng)后還可以使用優(yōu)惠券等)現(xiàn)象和相反的獨(dú)斥現(xiàn)象(如該商品參與xx活動(dòng)后不支持X券),設(shè)置了一個(gè)字段來判斷是否可以組合優(yōu)惠,也可以理解為所有活動(dòng)都為組合優(yōu)惠,只是有些組合優(yōu)惠只有一個(gè)促銷活動(dòng)。

注:想了解更多關(guān)于電商促銷系統(tǒng)設(shè)計(jì)可參考腦圖

2.3 規(guī)則配置轉(zhuǎn)換

為了實(shí)現(xiàn) 規(guī)則引擎和配置盡量不要耦合到一塊,必須有中間層對(duì)規(guī)則配置進(jìn)行轉(zhuǎn)換為 Nrules 能夠接受的規(guī)則描述。聯(lián)系前文的計(jì)算機(jī)制,我們可以得到這樣一個(gè)描述模型:

沐歌環(huán)保

由于 Nrules 支持流式聲明,所以約束條件和產(chǎn)生的結(jié)果都可以用 LambdaExpression 表達(dá)式實(shí)現(xiàn)?,F(xiàn)在我們需要把階梯打折的配置轉(zhuǎn)換成規(guī)則描述,那我們需要先分析一下。假設(shè)滿一件9折,滿兩件8折,滿三件7折,那我們可以將其分解為:

  • 大于等于三件打 7 折

  • 大于等于兩件且小于三件打 8 折

  • 大于等于一件且小于兩件 9 折

基于此分析,我們可以看出,只有第一個(gè)最多的數(shù)量規(guī)則是不一樣的,其他規(guī)則都是比前一個(gè)規(guī)則的數(shù)量小且大于等于當(dāng)前規(guī)則的數(shù)量,那么我們可以這樣轉(zhuǎn)換我們的規(guī)則配置:

沐歌環(huán)保

2.4 生成規(guī)則集合

在 Nrules 的 wiki 中,為了實(shí)現(xiàn)運(yùn)行時(shí)加載規(guī)則引擎,我們需要引入實(shí)現(xiàn) IRuleRepository ,所以我們需要將描述模型轉(zhuǎn)換成 Nrules 中的 RuleSet:

沐歌環(huán)保

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

做了轉(zhuǎn)換處理僅僅是第一步,我們還必須創(chuàng)建一個(gè)規(guī)則引擎的處理會(huì)話,并把相關(guān)的事實(shí)對(duì)象(fact)傳遞到會(huì)話,執(zhí)行觸發(fā)的代碼,相關(guān)對(duì)象發(fā)生了變化,其簡(jiǎn)單代碼如下:

沐歌環(huán)保

2.6 應(yīng)用場(chǎng)景示例

我們假設(shè)有這么一個(gè)應(yīng)用入口:傳入一個(gè)購物車(這里等價(jià)于訂單)id,獲取其可以參加的促銷活動(dòng),返回對(duì)應(yīng)活動(dòng)優(yōu)惠后的結(jié)果,并按總價(jià)的最低依次升序,那么可以這么寫:

沐歌環(huán)保

假設(shè)這么一個(gè)購物車id,買一件時(shí)最優(yōu)惠是參加 A 活動(dòng),買兩件時(shí)最優(yōu)惠是參加 B 和 C 活動(dòng),那么其效果圖可能如下:

沐歌環(huán)保

3. 結(jié)語

本文只是對(duì)規(guī)則引擎及 Nrules 的簡(jiǎn)單介紹及應(yīng)用,過程中隱藏了很多細(xì)節(jié)。在體會(huì)到規(guī)則引擎的強(qiáng)大的同時(shí),還必須指出其局限性,規(guī)則引擎同樣不是銀彈,必須結(jié)合實(shí)際出發(fā)。

擴(kuò)展閱讀:Martin Fowler:應(yīng)該使用規(guī)則引擎嗎?

原文地址: https://www.cnblogs.com/chenug/p/9160397.html


? 亚洲av成人片无码网站网| 久久久久人妻精品一区蜜桃网站| 久久久精品人妻一区二区三区蜜桃| 亚洲欧洲日产韩国在线看片| 久久伊人少妇熟女大香线蕉| 色欲色香天天天综合网www| 久久精品国产亚洲大片| 国产午夜无码视频在线观看| 免费看美女被靠到爽的视频 | 亚洲精品无码久久不卡| 日本人妻人人人澡人人爽| 国产精品久久无码一区| 精品久久久久久亚洲中文字幕| 性xxxx搡xxxxx搡欧美| 亚洲欧洲日产国码无码| 人妻少妇精品中文字幕av| 久爱无码免费视频在线| 3d动漫精品啪啪一区二区免费| 婷婷色婷婷深深爱播五月| 99久热国产精品视频尤物| 男ji大巴进入女人的视频| 日本中文字幕有码在线视频| 亚洲 欧美 综合 在线 精品| 国产成人麻豆精品午夜福利在线 | 欧美激情一区二区三区| 亚洲一区天堂九一| 日本免费人成视频在线观看| 欧美放荡的少妇| www.-级毛片线天内射视视| 在线看免费无码av天堂的| 国产乱子夫妻xx黑人xyx真爽| 看曰本女人大战黑人视频| 五月丁香啪啪| 亚洲国产另类精品| 中文字幕精品无码一区二区| 黄网站色成年片在线观看| 丰满少妇女裸体bbw| 天天躁日日躁狠狠躁婷婷高清 | 亚洲自偷自偷图片| 人妻激情偷乱一区二区三区| 精品无码av无码免费专区|