項目中復雜多變的條件
需求介紹
公司通過在頭條、快手,騰訊等媒體平台上投放APP的廣告,以此來長期塑造品牌形象以及達成拉新,活躍,留存等目的,廣告的投放方式豐富多彩的,廣告主關心的是哪種投放方式投入產出比ROI最優,通過實現廣告投放系統中的回傳上報和點擊歸因所產生的數據,進行投放和運營各層面的有效優化,從而用合理的投入成本,達到最大化效果產出。
使用規則引擎原因
其中回傳上報模塊中上報的條件復雜多變,且業務需要經常變更, 如果按照傳統的邏輯思維,通常的做法首先要傳進去參數,通過if…else或者通過像MyBatis中的動態SQL進行業務邏輯判斷。其次獲取到接口執行完畢后的結果。每次變更業務都要依賴開發人員改代碼然后測試人員測試,這樣做的話會增加開發人員、測試人員和運營的工作量。
規則引擎的出現就完美的解決了這些問題,規則引擎的核心目的之一就是將復雜且多變的規則從硬編碼中解放出來,使其代碼與業務解耦合。業務由業務操作員管理,不再依賴開發人員去修改代碼。
選用Drools的原因
規則引擎的種類很多,選用Drools是因為開源,成熟度高,有非常活躍的社區支持,為Java量身定制的基於Charles Forgy的RETE算法的規則引擎的實現。
規則模板后台
規則詳情編輯頁面
實現中的關鍵點
項目初始化時加載規則
解析生成規則內容並入庫
數據庫中規則內容如下