一言以蔽之的,我看了就知道了標準方法是什麼編碼的用戶定義的標準(如Excel的條件格式)用戶邏輯而不是硬編碼的邏輯(如Excel條件格式)
例如,讓我們說我有用下面的代碼佣金系統:
if (sales < 100 && empCategory = "junior") {
commRate = 0.50;
} else if (sales < 100 && empCategory = "senior") {
commRate = 0.60;
} else if (sales >= 100 && sales <1000) {
commRate = 0.70;
} else {
commRate = 0.80;
}
所以,在這個例子中,用於確定佣金率的邏輯是硬編碼的。但是,我想從硬編碼中取出這個邏輯,並允許用戶使用布爾和比較運算符對db中的字段添加,修改和刪除這些條件(同樣,就像Excel條件格式化一樣)
注意I以變量的設置爲例。相反,我可以根據標準調用另一個過程?
另外請注意,上面的例子非常簡單。現實生活中的計算會涉及一個更復雜的公式,該公式將大多數布爾/比較運算符與嵌套語句結合使用。如果沒有條件滿足,幾乎總是會有一個「其他」情況。最後,這將應用於每一行是一個相當大的記錄集。
設計這個圖形用戶界面是沒有問題的,但我不能確定:
在哪裏存儲用戶的條件(在數據庫表中的XML,等等)?
如何設置commRate變量如果布爾/比較操作符堪與布爾語句的結構本身(即嵌套的語句)沒有硬編碼
我難倒如何實現這一目標如果我在實際代碼中實際上沒有使用布爾/比較運算符,但我知道這是可能的。我知道你可以使用二叉樹數據結構來處理數學公式,但我不確定我是否在正確的軌道上。
我會很感激任何建議。
感謝
這是在[業務規則引擎](http://en.wikipedia.org/wiki/Business_rules_engine)中處理的。一個Java解決方案在JBoss drools中解釋[here](http://stackoverflow.com/q/776901/1065197)。 – 2013-02-21 21:15:04