2012-03-07 90 views
4

为了解释我正在尝试做什么,请参阅经典的银行业务示例。我应该使用报告框架吗?

我有一个从一个银行账户进入另一个银行账户的流。我希望我的网络应用的用户能够创建他们自己的谓词来筛选将构成某些报表的输入数据的付款。我正在计划手动编写报告,而不是使用现有的报告框架。

在优先顺序,我希望用户能够与网络前端创建谓词的类型有:

  1. payment.amount > 100.0
  2. payment.amount > 100.0 || payment.dayOfWeek = TUESDAY
  3. (payment.amount > 100.0 && payment.description.contains("foo")) || payment.dayOfWeek = TUESDAY

我也希望能够坚持这些谓词在以后重用。

我觉得这必须是一个共同的要求,至少有一些必须已经开发出来,但我很难确定它是什么,我试图搜索谷歌。有没有人遇到过基于Web的框架来生成谓词和/或什么东西来保存这些数据?

回答

2

我认为您可以使用Drools来创建和重新使用业务规则。

+0

我要去看看drools。前一段时间我使用了jrules,它有决策树/表/规则;我觉得从几个角度来看它可能是过度的 - 开发,规则集部署,用户学习曲线以创建新的规则/数据集。我一直在寻找的是一个包含“金额”,“星期几”,另一个组合“包含”,“等于”,“在列表中”的组合框的表单,终值域,例如文本框,组合,列表等。添加按钮然后保存当前的“规则”,并开始另一个。它听起来像一个规则引擎,就像这样! – James 2012-03-07 14:44:01

0

业务规则引擎可能是一个很好的解决方案,但也可能会过大。

市场上有很多规则引擎,它们有很大的不同。例如,http://openrules.com是非常重的,因为drools更像是一种开发者规则引擎(请参阅http://java-source.net/open-source/rule-engines了解大量引擎)。

即使嵌入像groovy这样的脚本语言,也可能是一个很好的解决方案。

如果你真的只需要你描述的那三条规则,我猜这只需要存储这三个参数(amount,searchTerm和weekday)并且用它们建立一个DB查询是有意义的。