書名: 實戰Drools規則引擎作者名: 關澤發 陳楚暉本章字數: 543字更新時間: 2023-03-30 21:35:40
1.5.2 事實對象
事實對象(fact)是Drools用來評估條件和執行結果的模型對象,也稱為事實數據。
?事實對象可以簡單地理解為Java的POJO類(Plain Old Java Object)。
?事實對象可以有自己的函數,提供給規則引擎在“那么”的部分調用。
?事實對象可以從數據庫中加載。
?事實對象不需要繼承任何類或實現某些接口。
Drools要求這些事實對象必須遵從Java Beans的規范。事實對象根據其產生方式可以分為以下兩種類型。
?Stated fact(陳述事實對象):規則調用者提供給規則的事實對象。
?Inferred fact(推斷事實對象):規則引擎根據調用者提供的陳述事實通過計算推導出的事實對象,推斷事實可能會隨著時間的變化而改變。
比如,在一個商品促銷的場景下,我們要根據顧客的會員級別和購買金額計算出顧客此次購物的折扣率,顧客的會員級別和此次購買金額是陳述事實,而根據會員級別和購買金額計算出的折扣率就是推斷事實。
Drools規則引擎用規則中的“如果”部分進行規則觸發條件的判斷,判斷的依據就是事實對象。這些事實對象既可以是陳述事實,也可以是推斷事實。如果滿足觸發條件,則觸發規則(觸發規則的“那么”部分)。規則通常會在“那么”部分對既有的事實數據進行更新/刪除操作或產生新的事實數據,這些變動過的事實數據會再次引起規則引擎的條件判斷而觸發其他規則。因此規則不是被調用者直接觸發的,而是由Drools的決策引擎觸發的。