nvy, в двух словах:
Обычный агент по расписанию:
- More than once a day: All day; запуск раз в 5 минут;
- Run on: Any Server;
- Target: None.
Вызывает одну функцию, куда передаётся String, являющийся сразу и именем вьюхи, в которой искать запросы, и именем искомой формы. Функция дёргает иерархию классов.
Базовый класс содержит базовый функционал, т.е. каркас кода для выполнения любых запросов (отправка почты - частный случай):
- проверки на локальную версию и транзитный сервер - выходим;
- получение документа-запроса, если агент вызван по noteid, иначе инициализация вьюхи и навигатора, обработка в цикле запросов;
- в цикле поиск базового дока и проверка на "доступность";
- метод для обработки запроса (переопределяется в наследуемых классах);
- пометка запроса как отработанного при успешной отправке;
- принтование инфы о том, сколько найдено запросов, сколько обработано и т.п....
Функционал отправки:
- определение и сравнение мэйл-сервера для каждой персоны;
- если что-то не так, то в зависимости от настроек отправки либо прерываем процесс (если необходимо обязательно отправить всем) либо при невозможности отправки исключаем этих персон из списка отправки (если достаточно отправить хотябы одному или для данного процесса возможно игнорировать отправку при ошибке);
- если ошибка, связанная с настройками, - генерю запись лога админу, если критическая - разрабу (но это уже общий механизм регистрации ошибок и логирования включается...).
Собственно и всё.