2012-12-09 103 views
-1

我設計一個簡單的規則引擎。我首先給出一個概述。動態配置規則

發動機初始化與特定的規則要運行的配置文件,其也旨在由這些規則中使用的參數。

實施例:

我有一個傳入訂單對象,我會希望做一些健全性檢查它像 訂單數量不能超過一定量X的情況下(x被作爲參數傳遞給所述發動機傳遞)這是一個傳遞參數的簡單例子。

一個複雜的例子:

一些順序Type.Some region.Some desk.Order數量= X

一些順序Type.Some region.Some desk.Some trader.Quantity = Y。

一些順序Type.Some region.Some Product.Daily體積= A

一些順序Type.Some region.Some desk.Daily體積= B

很多像這些參數用於初始化該規則打算使用的引擎。

問:

應當如何進行這些初始化參數傳遞給API? - JSON,XML?

什麼是最好的軟件設計實踐來表示處理和存儲這些參數,這樣的規則可以使用該信息(如什麼是應該做的傳入訂單對象的完整性檢查允許交易者羣體的數量?)

我打算提前

+0

是它的功課? – darlinton

回答

3

落實這在C++

感謝跳進創建一個新的規則引擎之前,你應該知道的複雜性涉及例如Rete Algorithm如果您打算維護數千個規則,這是有意義的,因爲從這些數字開始,如果您按順序評估規則,它會成爲高性能表現,性能在交易系統中尤其重要。我實際上會研究和探索重用現有的規則引擎,例如另一個有希望的可能性是在你的進程中嵌入某種腳本語言(通常可能在例如Java中),這些腳本語言可以訪問你的內存域模型,例如, embed a Python解釋器並將其用作您的「規則引擎」。如果你絕對必須實現你自己的,那麼你可以使用yacc和lex,但是最後一次使用它我記得它不是很有趣,你必須意識到複雜性,例如,如果你打算擁有數千或者更多的可伸縮性,更多規則。

對於規則管理,即記賬,編輯,註釋,版本等你將要XML,並把實際的規則CDATA元素。

+0

感謝您的建議。 – KodeWarrior