淺嘗CKRule規則引擎

最近在參與一家材料公司的ERP系統開發,主要負責倉儲系統。由於該公司的業務流程相對複雜且多變,做得那是萬般痛苦,成天沉浸在業務變更代碼大改的死循環裏,久而久之,有種遙遙無期的絕望。

怎樣才能很好或者說比較輕鬆的去適應這樣的複雜業務變化?最近真沒少在園裏看大神們的貼子,但是收穫甚微,也許是我個人理解的深度不夠。前兩天無聊的時候,把心裏的嘮叨在圈子裏發了下,後來有人給我推薦了個叫“CKRule”的規則引擎。規則引擎?小弟孤陋寡聞還是第一次聽,一番百度後找到了CKRule的官網,果斷下載了試用版。綠色版,文件很小,不到1M,打開後主程序,界面比較清爽。

                           



CKRule規則引擎軟件主界面

20140721_1.png

接着在官網下載了使用手冊,似懂非懂的看了下,很強大的樣子。本人對文字性的東西不太感冒,很難用心去理解每一句話,還是研究下里面帶的實例,這樣效果來得直接點。從程序中打開了《停車費》的實例。



CKRule規則引擎開發界面

20140721_2.png

認真看了下,實例中主要由“對象庫”、“調用庫”、“規則庫”三個主要部分組成。看效果的心切呀,直接點了測試列表裏的測試,測試完成後明白了:該實例滿足了多種不定因素變化導致停車費用變化的需求。




CKRule規則引擎測試

20140721_3.png

知道了實例實現的業務需求,再來仔細看看他的實現。“對象庫”中的內容相對好理解,就是平時.NET中的類和變量,《停車費》實例中在傳入傳出變量中定義了計算停車費需要用到的全部變量。“調用庫”這個在《停車費》實例中沒有用到,暫且跳過它。接下來的“規則庫”應該是CKRule的核心部分了,點開相關的界面看了兩次後,還是沒有太多的感覺,無奈還是乖乖地找到對應的使用手冊琢磨了起來。看完後,對其中的術語有了一些自己的理解。“決策表定義”就是定義一個表,可以添加自定義字段,可以設置字段的數據類型和邏輯類型(條件和結論可以自定義)。定義好表後,可以在“決策表設置”中輸入內容,這些內容就是一些準則,在該實例中其實就是一張“每小時停車費”的對照表,符合條件的時候,就返回一個正確的停車單價。“客戶規則池定義”裏的內容似乎是自動生成的,沒有經過特殊的設置,暫且沒有深入研究。“決策樹”應該也是更高級點的功能,實現更爲複雜的業務,該實例中也沒有提及。“主規則”裏面添加了一個主程序,程序中主要邏輯較少,主要就是用“停車的小時數*單位收費”得到停車費用,而“單位收費”則又決策規則去計算獲取。

回望該實例,CKRule規則引擎的亮點是把多樣的計算“單位收費”的邏輯從主規則的邏輯中抽離了出來,獨立通過決策規則去計算,這樣就保證了主規則不變的情況下,只需輕鬆地配置“單位收費”的規則便能適應停車場不同收費要素變化的業務需求,挺讚的。

花了兩個小時,通過CKRule規則引擎自帶的實例簡單瞭解了下它,也算是知道了點皮毛吧。在應對複雜多變業務的時候,CKRule規則引擎還是能獨當一面,後期會更深入的去了解它的高級功能,到時再和園裏的朋友們分享下自己的學習過程。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章