【发布时间】:2015-12-21 18:28:17
【问题描述】:
我想知道是否有人可以为我指明正确的方向,帮助我设计一种高级算法来解决如下所述的问题,使用 Drools。
让我们考虑一个计费系统,对于给定的月份和给定的服务,我可以从数据库中获取数百万条记录,例如呼叫详细记录 (CDR),即带有客户 ID 和我想要的许多其他字段用于在规则中进行推理。问题是,我不仅需要根据单个记录采取行动,而且还需要基于适用于某些聚合的条件。例如,假设在达到某个阈值后,所有 CDR 将采用不同的价格(即第 500 个之后的每个 CDR 更便宜)。实际上,规则会比这复杂得多。
现在,我很确定这个想法不是将所有这些记录一起插入到引擎 (KieSession) 中,然后触发所有规则。因此,我需要一些对象,我们称之为“会计元素”,我可以在其中收集每个处理记录的所有信息。在这种情况下,我会这样做:
for each CDR loop:
Insert a record;
Fire all the rules;
Delete the record;
在 Drools 的规则中,我需要更新我的会计对象,例如计算为每个客户端/服务处理的记录数。
此外,由于我还将根据此记帐对象做出决策,因此它也必须插入 KieSession 中,并在整个会话期间保持不变,对吗?
感谢您就使用 Drools 解决此类问题的可能解决方案/实施方法给我的任何建议,如果我说的有道理,请告诉我,如果没有,请纠正我。谢谢!
【问题讨论】:
标签: architecture drools billing