Мне было интересно, может ли кто-нибудь указать мне в правильном направлении, чтобы помочь мне разработать алгоритм высокого уровня для решения проблемы, подобной описанной ниже, используя Drools.Дизайн алгоритма высокого уровня для биллинговой системы
Рассмотрим биллинговую систему, в которой за данный месяц и предоставленную услугу я могу получить из базы данных миллионы записей, таких как записи подробностей звонков (CDR), то есть с идентификатором клиента и многими другими полями, которые я хотите использовать, чтобы рассуждать в правилах. Дело в том, что мне нужно не только предпринимать действия на основе отдельных записей, но и основываться на условиях, которые будут применяться к определенным скоплениям. Например, предположим, что для всех CDR будет применяться другая цена после достижения определенного порогового значения (т. Е. Каждый CDR после 500-го дешевле). На самом деле правила были бы намного сложнее.
Теперь я уверен, что идея состоит в том, чтобы не вставлять все эти записи в двигатель (KieSession), а затем запускать все правила. Поэтому мне понадобится некоторый Object, назовем его «элементом учета», в котором я могу собрать всю информацию из каждой обработанной записи. В этом случае я хотел бы сделать:
for each CDR loop:
Insert a record;
Fire all the rules;
Delete the record;
И внутри основных правил и Drools’ мне нужно обновить свой объект учета, например подсчитывая количество обработанных записей для каждого клиента/службы.
Кроме того, поскольку я также буду принимать решения на основе этого объекта учета, его также необходимо будет включить в KieSession и остаться там на протяжении всей сессии, верно?
Я ценю любые советы, которые вы можете дать мне относительно возможных подходов к решению или реализации с такой помощью, используя Drools, и, пожалуйста, скажите мне, что то, что я сказал, имеет смысл или исправляет меня, если это не так. Спасибо!