一言以蔽之的,我看了就知道了标准方法是什么编码的用户定义的标准(如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