2010-04-23 56 views
1

我正在開發一個Java EE 6應用程序,其中「提供者」應該能夠爲用戶定義服務的價格和不同折扣。有許多不同的供應商。每個人提供相同的服務,定價模式可以不同。如何在Java EE中實現定價模型 - 通過規則引擎?

價格型號: - 提供商應該能夠定義例如,每小時,每分鐘,每個進程......。 - 提供商應該能夠輕鬆添加條件來定義用戶獲得的折扣。例如:來自特定用戶組的用戶可獲得10%的折扣,而使用該服務的用戶可享受5次以上的折扣。 - 它能夠將條件與「AND」或「OR」等邏輯運算鏈接起來。 - 可能條件的數量應由軟件製造商定義。

  • 當用戶嘗試訪問服務時,應該顯示用戶特定的價格。在使用該服務後,特定用戶有時會獲得列出該服務總成本的發票。在使用服務時,提供者可以更改定價模型,因此必須有版本號或其他內容。定價模型版本應該保存在數據庫中。

問題是 - 使用規則引擎解決這個規範是否可能並且有意義? 提供商應該定義沒有xml文件或類似的東西的條件,只需點擊並選擇。我對規則引擎沒有經驗......所以也許有人可以幫我弄清楚哪個解決方案最適合這個問題。

回答

0

首先你需要知道所有可能的變量。你提到了number of times someone has used a servicegroup membership。如果這組變量可以改變,可能會比你想象的要多。

接下來是必須支持的規則的複雜度級別。您可能不需要全面的規則引擎。例如,您可以通過簡單的表達式評估得到很大的結果,例如參見https://eval.dev.java.net

如果您要進行表達式評估,那麼只需將每個定價模型版本作爲其自己的字符串存儲在數據庫中或其他東西中即可。您可能需要點擊式的規則,但通常書面的規則會更清晰。

+0

最重要的是爲供應商創建一個靈活的定價模型。我想到的所有變量都是。 *團體會員。 *有人使用該服務的次數。 *用戶每月/每年使用服務的時間量。 *具有特定屬性的用戶(例如來自xTown的所有用戶)。 *服務使用時間(例如,從晚上8點到12點)。 當您能夠將邏輯操作AND和OR連接起來時,它就足夠了。 也許表達式評估是不夠的。或者有可能在表達式中使用Objets並堅持這些表達式? – 2010-04-24 10:05:17

+0

'Eval'(我鏈接到上面)支持ternery'?'運算符以及AND,或者:(usedService> 5 && isMember = 1?discount = 0.1:discount = 0.0)。如果你想要一個靈活的定價模型,表達式需要以另一種方式表達。 – bitc 2010-04-25 18:07:25

+0

好的,我明白了,謝謝! – 2010-04-26 08:11:59