У меня есть экран авторизации, например, для платежей
Отображается список транзакций. Это отфильтрованный список.
Каждая транзакция, указанная на этом экране, должна удовлетворять следующим условиям
A) Соответствует условиям матрицы проверки полномочий (AVM)
B) .. еще несколько условий, не являющихся на данный момент
В простейшей форме AVM определяется следующим образом
- Ниже 5000 - ApproverRole
- свыше 5000 - SeniorApproverRole
Следовательно, если зарегистрированный пользователь принадлежит ApproverRole, должны отображаться все транзакции ниже 5000.
Я пытаюсь решить эту проблему, используя слюни.
Предлагаемое решение.
- Создать правило "AVMRULE"
- Каждый платеж моделируется как ФАКТ.
Оплата имеет два интересных свойства
1) сумма
2) Допустимо
Когда объект платежа помещается в рабочую память, «AVMRULE» изменяет payment.isElitable. Пользовательский интерфейс отображает или скрывает транзакцию на основе payment.isElitable
Проблема:
Среднее количество платежей в системе может доходить до миллиона.
Приведенное выше решение подразумевает, что приложение должно извлечь все миллионы записей на бизнес-уровень.
Он может быть оптимизирован для получения пакета записей и
прекратите чтение, как только мы найдем первые 10 записей, которые имеют значение true. Это работает, если пользователь хочет видеть первую страницу. Не работает, если он хочет увидеть последнюю страницу.
Я не уверен, улучшится ли общая производительность в многопользовательской среде как минимум 20 одновременно работающих пользователей
Вопрос:
Обратите внимание, что проблема заключается в отображении отфильтрованного списка.
Также учтите, что существует больше условий для обработки и AVM намного сложнее, чем определено выше.
Подходит ли механизм правил для решения этой проблемы?
Это правильный подход?
Кто-нибудь решил подобную проблему?
Существуют ли руководящие указания по минимизации количества записей, извлекаемых на бизнес-уровне?