上面的例子看起來好像用原生的 if / else 或 switch / case 就可以做到同樣的事?然而在某些不同的場景上,用 if / else 是不適合的。
首先是關注的焦點不同,不論是 if / else 或 switch / case,他們的語法都專為判斷程式運作邏輯而設計,並不適合拿來做商業邏輯的判斷,因為商業邏輯的規則往往更複雜;規則引擎的關注焦點就是商業邏輯而非程式邏輯。硬要用 if / else 來做商業邏輯很有可能長出多層巢狀的 if / else,並且在商業邏輯上,隨著規則的複雜化,系統要做的可能不只是單純的判斷,而是推斷,根據一系列的指標數據由系統協助推斷後續的動作,以銀行系統為例,根據客戶的各項指標(年齡、職業、性別、家庭、地區、資產、收入、信用、健康)來推斷他的風險值,並進一步決定他的借貸利率,像這樣的規則引擎的應用被稱為專家系統,專家系統的推斷可以用演算法或是人工智慧的方式實現。
第二點,規則引擎提供更靈活的參數調整方式,在 if / else 裡面的判斷條件都是死的,難以被開發者以外的營運人員變更,或是必須由開發者手動刻出參數調整的程式、介面,而規則引擎在這方面都提供更靈活的調整方法,可能是用讀入特定格式的檔案(csv 或 xls 或 json)來實現規則的設定,並且這些格式同時是人機可讀的,讓營運人員更簡易的自行調控。第二種做法就是由規則引擎提供程式介面,由開發人員實現操作介面給營運人員使用,這當然有一定的複雜度,需要花費心力去讀規則引擎的文件,但以一個商業用系統的長遠來看,用規則引擎來實現應該是可以有更低的長期維運成本。