規則引擎能夠搞啥?通常使用場景,是經過可視化節目進行拖拉或者簡單的操做指定流程和規則,將規則輸入獲得目標輸出。性能
規則編排的過程是各類條件的組合,相似於搭積木,指定邏輯規則,細化邏輯因子,好比指定選人規則,一個用戶id進來以後根據指定的不一樣邏輯規則獲得該用戶能夠發的券集合。一樣能夠用來篩選商品,篩選營銷規則等。編碼
在交易系統中主要是和用戶和營銷策略相關,好比根據歷史訂單,是否會員信息,是否門店新老客等規則因子,組合規則因子,也就是指定決策邏輯。動態的去響應不一樣用戶的不一樣策略。3d
規則引擎的難點在於:規則的易變和定製化。blog
規則每每處於熱更新的狀態,在產品決策過程當中由於ABTest等緣由,可能隨時調整規則。同時一套營銷規則可能由於用戶畫像不一樣致使千人前面的策略,有必定的定製特色。產品
在沒有規則引擎以前,系統實現規則引擎通常採用硬編碼,if/else登方式。哪怕是將規則相關邏輯單獨抽離到規則模塊,代碼規則實現存在硬編碼難以熱更新的問題依然存在。可視化
可是硬編碼並不是一無可取,較粗粒度的規則仍是須要固化到系統中,這樣能夠達到更好封裝和抽象的目的,下降必定的迭代成本。配置
規則引擎被定義爲系統中的一組規則組件,能夠將業務邏輯和決策邏輯進行拆分,抽離出來。im
規則引擎的關鍵詞:d3
爲更好的固化和沉澱一部分規則到系統中,咱們通常創建一套規則管理系統,以可視化方式提供給使用方,在可視化界面操做規則編排,規則的變動最好加上版本,以區分和熱更新,避免硬切規則形成的數據不一致狀況,能夠平滑過分到下一個規則中。數據
規則引擎的難點在於,對於配置化的規則進行系統性的解析和業務邏輯的執行,當咱們經過存儲系統對規則進行存儲以後,在將規則以原子性的方式拉取出來後,執行規則便成了比較複雜的地方了,通常能夠採用Drools,Aviator等三方引擎,也能夠本身定製。