【问题标题】:How to implement a Pricing Model in Java EE - via a Rule Engine?如何在 Java EE 中实现定价模型 - 通过规则引擎?
【发布时间】:2014-05-15 04:41:47
【问题描述】:

我正在开发一个 Java EE 6 应用程序,其中“供应商”应该能够为用户定义服务的价格和不同的折扣。有许多不同的提供者。每家提供相同的服务,定价模式可能不同。

价格模型: - 供应商应该能够定义价格,例如每小时,每分钟,每个进程,...... - 提供商应该能够轻松添加条件来定义用户获得的折扣。例如:来自特定用户组的用户获得 10% 的折扣,使用该服务超过 5 次的用户获得另一个折扣。 - 它应该能够将条件与“AND”或“OR”等逻辑运算联系起来。 - 可能条件的数量应由软件制造商定义。

  • 当用户尝试访问服务时,应显示用户特定的价格。使用该服务后,特定用户有时会收到一张发票​​,其中列出了该服务的总费用。在使用服务时,提供商可以更改定价模型,因此必须有版本号或其他东西。然后应将定价模型版本保存在数据库中。

问题是 - 使用规则引擎来解决这个规范是否可能且有意义? 提供者应该定义没有 xml 文件或类似文件的条件,只需单击并选择即可。我没有使用规则引擎的经验......所以也许有人可以帮助我找出最适合该问题的解决方案。

【问题讨论】:

    标签: rule-engine


    【解决方案1】:

    首先,您需要了解所有可能的变量。你提到了number of times someone has used a servicegroup membership。如果变量集可以更改,可能比您想象的要多。

    接下来是必须支持的规则的复杂程度。您可能不需要成熟的规则引擎。您可以通过简单的表达式求值走得更远,例如参见 https://eval.dev.java.net

    如果您要进行表达式评估,那么只需将每个定价模型版本作为其自己的字符串存储在数据库或其他东西中。您可能需要点击式规则,但书面对应的规则通常要清晰得多。

    【讨论】:

    • 最重要的是为提供商创建灵活的定价模型。我想到的所有变量都是。 * 团体会员。 * 某人使用该服务的次数。 * 用户每月/每年使用服务的时间。 * 具有特定属性的用户(例如来自 xTown 的所有用户)。 * 使用服务的时间(例如,从晚上 8 点到中午 12 点)。当您能够使用逻辑运算 AND 和 OR 连接规则时,这就足够了。可能是 Expression Evaluation 还不够。或者是不是可以在 Expressions 中使用 Objets 并持久化这些表达式?
    • ´Eval´(我在上面链接到)支持三元 ´?´ 运算符以及 AND,OR:(usedService > 5 && isMember = 1 ? discount = 0.1 : discount = 0.0)。如果您想要灵活的定价模型,则需要以某种方式使用其他表达式。
    • 我必须考虑一下...也许一个简单的表达式评估更适合这个应用程序的复杂性。然而,像 Drools 这样的规则引擎是一个有趣的选择。
    猜你喜欢
    • 2011-09-23
    • 1970-01-01
    • 2010-10-02
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    相关资源
    最近更新 更多