在哪里保持经常变化的业务逻辑

时间:2014-05-27 15:15:55

标签: java web-services e-commerce

我有一个要求,我需要用一些逻辑来计算某个实体的排名(例如有资格获得奖金的网站用户)。这种逻辑经常根据销售额,可用产品,季节等而改变。此外,应用程序的不同安装将具有不同的逻辑来计算该等级。我不知道我应该把这个逻辑放在哪里。如果我把它放在java中,我将不得不去频繁部署。通过webservice获得它看起来并不那么有希望。

我听说Drools可以在这种情况下使用,但我以前从未使用它。在这方面的任何帮助都非常感谢。

2 个答案:

答案 0 :(得分:0)

您应该将实现此逻辑的类尽可能地解耦。使用定义良好的接口,并允许每个安装在必要时提供自己的实现。像Spring这样的依赖注入框架可能是一个很好的帮助。

另外,请考虑以可以独立部署API和实现的方式创建项目。 Maven可以为此提供很多帮助。

答案 1 :(得分:0)

您可以在JSON,XML文件中放置一组规则。 将有一套规则。 您的java程序将从该文件中读取标记以执行计算。 例如:

<CalculateBonus>
  <minVal>10</minVal>
  <maxVal>30</maxVal>
</CalculateBonus>

然后java将读取包含该规则的文件,并从中获取所有必需的数据:

Int nonPremiumDiscount = 10;//got from file
Int premiumDiscount = 30;//got from file
if(person.isPremiumMember)
{
   calculateDiscount(premiumDiscount,price);
}
else
{
   calculateDiscount(nonPremiumDiscount,price);
}

如果您仔细设计程序,则可以添加新规则,无需修改代码或对代码进行少量更改即可对其进行修改。

这只是想法,对你不起作用。但这正是我现在正在做的事情。我有不同的规则适用于我的代码中的不同类型的对象。所以例如,如果我想验证一些额外的对象/类等(希望你得到我的意思)我只是添加新的规则到我的文件,甚至没有更改代码。

这是一个非常简化的例子。在我的情况下,我有超过10个不同的文件,每个文件都有aprox 100规则。所有这些都以某种方式联系在一起。所以我有一般验证的规则,但我在其他文件中包含对其他规则的引用: GeneralValidation - &gt; ValidateEntities - &gt;还有其他的东西