我有一个说明付款的授权屏幕
显示交易清单。这是一个筛选列表。 此屏幕中列出的每个交易都需要满足以下条件
A)符合授权验证矩阵(AVM)条件
B)..此时没有更多的条件
最简单的形式AVM定义如下
- 5000以下 - ApproverRole
- 5000以上 - SeniorApproverRole
因此,如果loggedIn用户属于ApproverRole,则应显示低于5000的所有交易。
我正在尝试使用drools来解决这个问题。
建议的解决方案。
付款有两个有趣的属性 1)金额 2)是符合条件的
当付款对象被声明为工作记忆时,“AVMRULE”会修改payment.isEligible。用户界面根据payment.isEligible
显示或隐藏交易
问题: 系统中的平均支付数量可能高达一百万。 上述解决方案意味着应用程序必须将所有百万条记录提取到业务层。
可以对其进行优化以获取批量记录和 我们发现前10条记录符合真实条件后立即停止阅读。如果用户想要查看第一页,则此方法有效。如果他想看最后一页,那就行不通了。 我不确定在至少20个并发用户的多用户环境中整体性能是否会提高
问题: 请注意问题是显示已过滤的列表。 还要考虑有更多条件要处理,AVM比上面定义的要复杂得多。
规则引擎是否适合解决此问题?
这是正确的做法吗?
有没有人解决类似的问题?
是否有关于如何最小化提取到业务层的记录数量的指南?