Секрет хорошего процесса в его простоте.
Самый простой способ это иметь в компании 2 поля: Текущее значение и Лимит значения.
В сделке существует поле, которое описывает ее значение (предположим множественное поле) и суммарное значение.
При создании сделки итератором производим подсчет "Суммарного значения" сделки.
Как только расчет произведен запрашиваем у компании Текущее значение и Лими значения и сравниваем чтобы текущее значение не было больше Лимита.
Если больше - бракуем сделку и т.п. В общем отрабатываем процесс превышения.
Если меньше - обновляем Текущее значение компании как Текущее значение компании + Суммарное значение.
Как только сделка достигает успеха или неудачи необходимо выполнить перерасчет, т.е. из Текущего значения компании вычесть суммарное значение сделки чтобы высвободить лимит.
Предполагаю что было бы неплохо дополнительно сделать следующее:
- Хранить в сделке "Флаг учета значения в компании", который установлен в значение Да, если сделка учтена в текущем значении и Нет, если ее значение не модифицировало компанию.
- Изменение Текщуего значения (увеличение или уменьшения) реализовать бизнес-процессом с логгированием в историю компании - из какой сущности, какое действие и какое логированию.