記一次框架設計經驗--規則引擎

前面講數據質量監控的時候,樓下不少評論但願能把規則引擎也講一下,規則引擎是一個既複雜但又簡單的系統,複雜的地方在於它要知足多種多樣的業務需求,須要知道各個事實的既定結果,而後經過既定公式得到最終須要的結果。程序員


在開講以前咱們首先要了解幾個名詞:web

 facts 事實,咱們實現的時候,會有一個事實庫。用F表示。算法

patterns 模板,事實的一個模型,全部事實庫中的事實都必須知足模板中的一個。用P表示。架構

conditions 條件,規則的組成部分。也必須知足模板庫中的一條模板。用C表示。咱們能夠這樣理解factspatternsconditions之間的關係。Patterns是一個接口,conditions則是實現這個接口的類,而facts是這個類的實例。ide

rules 規則,由一到多個條件構成。通常用andor鏈接conditions。用R表示。spa

actions 動做,激活一條rule執行的動做。設計


舉個貸款的例子:一個在國企工做名下有一套房的35歲已婚男士去銀行貸款買車。按照正常思惟,這我的工做穩定有持續的經濟來源,在18週歲到56歲之間生活可以自理而且能持續還款,同時已婚表明有很大機率該客戶責任心大,至少不會由於一些小挫折不還款,有擔心,就有保證,若是是個人話,確定貸給他。orm


其實你們不可能根據一篇文章就會知道全部的規則引擎知識。從網上下了一張圖,以下就是一個地址校驗的規則,首先咱們去判斷是否知足一個地址的長度或者說非空,纔會走入下一個規則校驗行政區和經緯度是否一致:blog


圖片 

其實理論知識你們都知道很多了,上邊的幾個名詞就是每條規則抽象出來的元件,還有就是rete算法是規則引擎比較經常使用的算法,你們能夠了解一下。接口


我接下來說一下設計規則引擎時候注意的幾個點:

1.通常來說規則都是有四則運算或者更復雜的數學計算組成,例如:非A即B,A且B爲C

因此這些東西都是很容易抽象的,開發的時候確定要注意的。

2.你們都是程序員因此開發的時候仍是儘可能把作到可拓展,其實只要把架構的最小單元找對了,可拓展小菜一碟。。

寫的很少,你們若是感興趣我再接着寫,實在是工做比較忙,只能找點下班時間寫會

相關文章
相關標籤/搜索