中国女人真人一级毛片-色天堂影院-蜜桃视频一区二区三区-精品视频99-天堂网在线播放-一区二区三区色-富婆如狼似虎找黑人老外-又大又粗又爽18禁免费看-制服丝袜中文-天天草av-另类激情视频-成人福利小视频-一个色的综合-色婷婷激情五月-激情五月五月婷婷

行業動態

.Net Core 環境下構建強大且易用的規則引擎

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

1. 引言

1.1 為什么需要規則引擎

在業務的早期時代,也許使用硬編碼或者邏輯判斷就可以滿足要求。但隨著業務的發展,越來越多的問題會暴露出來:

  • 邏輯復雜度帶來的編碼挑戰,需求變更時改變邏輯可能會引起災難

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

  • 運行期間無法即時修改規則,但重新部署可能會帶來其他問題

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

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

1.2 .Net Core 環境下的選擇 -- Nrules

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

沐歌環保

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

注:本文參考借鑒了美團技術團隊 從 0 到 1:構建強大且易用的規則引擎 一文的設計思路,對 Drools 從入門到放棄。

2. Nrules 實戰 -- 電商促銷活動規則引擎設計

2.1 了解 Nrules

NRules 是基于 Rete 匹配算法的.NET 生產規則引擎,基于.NET Standard ,支持 4.5+ 的應用,提供 流式聲明規則、運行時構建規則、專門的規則語言(開發中,不推薦使用到生產,基于.Net 4.5 而不是 .NETStandard )。
其計算機制也與其他規則引擎大同小異:
沐歌環保

2.2 設計規則配置

前文提到 對業務操作員要提供盡量簡單的操作頁面來配置規則 ,所以我們定義促銷活動的規則配置就要盡量簡單。

沐歌環保

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

沐歌環保

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

注:想了解更多關于電商促銷系統設計可參考腦圖

2.3 規則配置轉換

為了實現 規則引擎和配置盡量不要耦合到一塊,必須有中間層對規則配置進行轉換為 Nrules 能夠接受的規則描述。聯系前文的計算機制,我們可以得到這樣一個描述模型:

沐歌環保

由于 Nrules 支持流式聲明,所以約束條件和產生的結果都可以用 LambdaExpression 表達式實現。現在我們需要把階梯打折的配置轉換成規則描述,那我們需要先分析一下。假設滿一件9折,滿兩件8折,滿三件7折,那我們可以將其分解為:

  • 大于等于三件打 7 折

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

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

基于此分析,我們可以看出,只有第一個最多的數量規則是不一樣的,其他規則都是比前一個規則的數量小且大于等于當前規則的數量,那么我們可以這樣轉換我們的規則配置:

沐歌環保

2.4 生成規則集合

在 Nrules 的 wiki 中,為了實現運行時加載規則引擎,我們需要引入實現 IRuleRepository ,所以我們需要將描述模型轉換成 Nrules 中的 RuleSet:

沐歌環保

2.5 執行規則引擎

做了轉換處理僅僅是第一步,我們還必須創建一個規則引擎的處理會話,并把相關的事實對象(fact)傳遞到會話,執行觸發的代碼,相關對象發生了變化,其簡單代碼如下:

沐歌環保

2.6 應用場景示例

我們假設有這么一個應用入口:傳入一個購物車(這里等價于訂單)id,獲取其可以參加的促銷活動,返回對應活動優惠后的結果,并按總價的最低依次升序,那么可以這么寫:

沐歌環保

假設這么一個購物車id,買一件時最優惠是參加 A 活動,買兩件時最優惠是參加 B 和 C 活動,那么其效果圖可能如下:

沐歌環保

3. 結語

本文只是對規則引擎及 Nrules 的簡單介紹及應用,過程中隱藏了很多細節。在體會到規則引擎的強大的同時,還必須指出其局限性,規則引擎同樣不是銀彈,必須結合實際出發。

擴展閱讀:Martin Fowler:應該使用規則引擎嗎?

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


? 91欧美激情一区二区三区成人 | aaaaa毛片 | 亚洲色图小说 | 欧美日韩精品一区 | 性色视频| 999在线视频 | 大陆一级片| 国产精品久久久久久久久久久免费看 | 精品少妇一区二区三区 | 欧美成人精品激情在线观看 | 亚洲综合成人网 | 欧美日韩在线观看视频 | 国产精品日韩无码 | 免费在线观看黄色 | 91看片网站| 法国空姐电影在线观看 | 九九在线观看免费高清版 | 天堂中文在线视频 | 人妻无码中文字幕 | 久久精品影视 | 亚洲久久久 | 国内自拍偷拍视频 | 福利在线 | 国产午夜麻豆影院在线观看 | 一区免费视频 | 国产精品一区二区在线播放 | 国产理论片 | 国产一区视频在线 | 久久99精品久久久久久水蜜桃 | 成年人在线观看视频 | 中文字幕一区二区三区5566 | 成人免费视频国产在线观看 | 日本丰满肉感bbwbbwbbw | 丁香花在线高清完整版视频 | 一本色道久久综合亚洲精品小说 | 91小视频在线观看 | 尤物视频网 | 欧美日韩精品一区 | 免费日韩| 天天插天天射 | 91在线视频| 91超碰在线 | 欧美大片高清免费观看 | 国产一区免费 | 亚洲视频一区二区三区 | 日本黄色电影网址 | 国产最新视频 | 性生交大片免费看 | 国产综合av | 亚洲激情综合网 | 日本久久久久久 | 精品日韩一区 | 日韩高清在线 | 国产第1页 | 插插网站 | 午夜精品久久久久久久99黑人 | 中文字幕亚洲天堂 | 在线观看av免费 | 国产一级片在线播放 | 美女一级视频 | 久久久久麻豆v国产精华液好用吗 | 亚洲最大成人网站 | 国产色哟哟 | 无码人妻精品一区二区中文 | 九九精品国产 | 亚洲国产精品suv | 国产不卡在线 | 黄瓜视频在线播放 | 国产91在线播放 | 少妇做爰www | 邻居校草天天肉我h1v1 | 51精产品一区一区三区 | 一二三四在线视频 | 波多野结衣影院 | 色av导航| 乱码一区二区三区 | 麻豆传媒在线视频 | 成人a级片 | 一级黄色电影片 | 欧美精产国品一二三区 | 无码人妻精品一区二区中文 | 国产三级精品三级在线观看 | 糖心vlog精品一区二区 | 精品国产91乱码一区二区三区 | 欧美日韩综合 | 成人免费在线视频 | av网址在线| 欧美日韩性 | 91美女精品网站 | 天天做天天干 | 涩涩五月天| 三级少妇| 久久免费观看视频 | 性史性dvd影片农村毛片 | 色站综合 | 手机av在线播放 | 午夜一级片 | 久久久婷婷 | 波多野结衣二区 | 免费精品 | 国产破处视频 | 超碰人人爽 | 国产精品嫩草影院桃色 | 日剧网| 亚洲AV第二区国产精品 | 久久99精品国产.久久久久久 | 少妇精品无码一区二区免费视频 | 看片地址 | 水蜜桃一区二区 | 日韩欧美国产一区二区 | 人妻少妇一区二区三区 | 国产一级免费视频 | 国产九色91回来了 | 神马久久久久久 | 超碰香蕉 | 深夜视频在线观看 | 男男h黄动漫啪啪无遮挡软件 | 欧美在线 | 欧美日韩一区二区三区四区 | 日本a视频 | www.久久久 | 黄色免费视频网站 | 男生操女生网站 | 亚洲91视频 | 日本不卡视频 | 国产精品1区2区 | 国产精品无码永久免费不卡 | 国产精品视频免费看 | 丰满少妇xoxoxo视频 | 在线欧美日韩 | 成人黄色大片 | 国产精品久久久久久69 | 久久精品小视频 | 韩国黄色网址 | www国产| 久久综合亚洲色hezyo国产 | 亚洲综合国产 | 色人人| 99成人 | 日本毛片在线观看 | www.日本色 | 中文字幕在线免费观看视频 | 成人在线一区二区 | 欧美激情久久久 | 91欧美激情一区二区三区成人 | 九一九色国产 | 午夜性福利 | 午夜性视频| av在线一区二区三区 | 中文字幕伊人 | 国产精品久久久久久久午夜 | 激情六月天| 久久999| 制服丝袜在线播放 | 综合五月天 | 欧美日韩综合 | 亚洲黄页 | 国产无码精品视频 | 日韩av导航 | 久久这里有精品 | 女同一区二区 | 欧美日韩片 | 亚洲精品乱码久久久久久蜜桃91 | 欧美18免费视频 | 岳乳丰满一区二区三区 | 视频一区二区在线观看 | 艳妇乳肉豪妇荡乳av无码福利 | 日韩在线中文字幕 | 天堂中文在线视频 | 91在线观看视频 | 中出在线观看 | 亚洲爱爱视频 | 双腿张开被9个男人调教 | 亚洲成人自拍 | 羞羞网站在线观看 | 日本香蕉视频 | 久久精彩视频 | 日韩视频一区 | 女女调教被c哭捆绑喷水百合 | 免费高清av | 韩国电影大尺度在线观看 | 精品一区在线 | 久热在线视频 | 91色漫| 羞辱狗奴的句子有哪些 | 91免费看片 | 已满18岁免费观看电视连续剧 | 水蜜桃一区二区 | 美丽的姑娘观看在线播放 | 婷婷免费视频 | 亚洲免费观看视频 | 草莓av | 欧美怡红院 | 久久久久伊人 | 精品久久一区二区 | 亚洲综合视频在线观看 | 一级黄毛片 | 天堂中文在线观看 | 免费不卡av| 麻豆传媒在线播放 | 在线免费毛片 | 成人毛片18女人毛片 | 精品人妻无码一区二区 | 亚洲无毛 | 伊人久久影院 | 波多野结衣一区二区三区 | 日韩午夜激情 | 啪啪导航| 狠狠干av| 18国产免费视频 | 麻豆精品国产 | 嫩草在线观看 | 黄色日批| 四虎在线免费观看 | 影音先锋国产精品 | 精品一区二区三区在线观看 | 精品人妻一区二区三区日产乱码卜 | 日本丰满少妇 | 日韩精品一区二区在线观看 | av毛片在线 | 成人做爰www看视频软件 | 欧美一区二区三区四区五区 | 免费看裸体视频 | 少妇一级淫片免费看 | 亚洲精品伦理 | 在线视频日韩 | 色欲狠狠躁天天躁无码中文字幕 | gogogo日本免费观看电视剧最 | 国产精品麻豆视频 | 成人av影院| 黄色成人在线 | 亚洲天堂第一页 | 日韩高清在线观看 | 欧美中文字幕在线 | 97福利视频 | 波多野结衣视频在线 | 四虎av| 91网站免费看 | 国产肥白大熟妇bbbb视频 | 看一级黄色片 | 在线观看黄网 | 香蕉爱视频 | 九九人人 | 欧美第二页 | 91在线观看18 | 麻豆传媒观看 | 国产精品久久久久久99 | 日本少妇xxxx动漫 | 在线观看免费大片 | 国产精品电影网 | 国产精品一二三区 | 亚洲永久免费 | www.av在线| 特高潮videosexhd| 午夜精品电影 | 日日夜夜精品免费视频 | 国产一二三 | 久久av高潮av无码av喷吹 | 67194国产 | 91视频麻豆 | 男女互操 | 天堂在线观看视频 | 欧美另类z0z变态 | av小说在线观看 | 狠狠干狠狠干 | www.麻豆.com | 国产黄色免费 | 亚洲欧美在线观看 | 免费黄色在线观看 | 一区二区三区在线 | 欧美亚洲| av一级片 | 91成人在线观看喷潮蘑菇 | 国产精品无码白浆高潮 | 久草超碰 | 麻豆毛片 | 91蝌蚪91九色白浆 | 久久精品av | 欧美熟妇精品黑人巨大一二三区 | 深夜av | 亚洲精品午夜 | 成人免费在线观看 | 中文字幕观看 | 91午夜视频| 手机看片福利视频 | 超碰人人网 | 亚洲天堂免费视频 | 妖精视频在线观看 | 日韩精品在线播放 | av毛片网站 | 中文字幕日韩人妻在线视频 | 欧美激情中文字幕 | 欧美日韩综合 | 好吊视频一区二区三区 | 蜜桃视频一区 | 亚洲另类色图 | 又黄又爽视频 | 国产精品无码在线播放 | 97成人在线视频 | 香蕉视频网站在线观看 | 黄色片在哪里看 | 亚洲精品国偷拍自产在线观看蜜桃 | 天天插天天射 | 9i免费看片黄 | 欧美色图一区 | 激情91| 黄色中文字幕 | 香蕉视频A | 日本在线免费观看视频 | 欧美激情视频在线观看 | 热久久精品 | 成人黄色网 | 中文字幕日韩av | 波多野结衣在线播放 | 无码视频一区二区三区 | 在线中文字幕av | 国产亚洲欧美在线 | 久久av一区 | 午夜视频免费 | 色偷偷av| 久久九九热 | 亚洲精品国产精品乱码不卡√香蕉 | 日本三级视频在线观看 | 在线免费看mv的网站入口 | 黄色在线观看视频 | 老熟女重囗味hdxx69 | 亚洲综合日韩在线 | 亚洲图片在线观看 | 91好色先生 | 毛片毛片毛片毛片毛片 | 女人高潮潮呻吟喷水 | 日韩欧美在线视频 | 福利毛片 | 德国艳妇丰满bbwbbw | 粉粉嫩嫩的18虎白女 | 免费麻豆 | 日本一级视频 | 国产成人精品一区二区三 | 女人十八毛片嫩草av | 丁香激情五月 | 日韩av导航 | 在线中文字幕 | 欧美在线网站 | 午夜在线观看视频 |