Описание бизнес процесса.
Периодически ежедневно, еженедельно, ежемесячно надо отправлять отчетные данные поставщикам, за какой-то период день, неделя, месяц соотвественно. Содержание отчета как правило представляет собой шапку, таблицу и итоги (агрегаты).
Обычно формат отправки CSV.
Как сделано сейчас:
В коде вызывается хранимая процедура, построчно данные форматируются в StringBuilder, считаются агрегаты, и отчет отправляется.
На каждого поставщика существует свой кусок кода и как правило своя хранимка.
Есть мысли перепилить так:
Вызываем хранимую процедуру, она формирует xml-документ, и далее я делаю XSL трасформацию и шлю.
Какие вижу плюсы:
При внесении нового отчета/расширении существующего, код не трогается, обновляется только ХП и если надо шаблон.
Гибкость конфигурирования: для нового поставщика можно использовать общую хранимку и общий шаблон, если надо можно написать спец. хранимку и спец шаблон.
В итоге получается так:
имеем конфигурационный файл для отчетов. В описателе каждого отчета содержится: хранимка, шаблон, реквизиты кому и куда слать, периодичность.
Вот какие есть еще варианты преобразования данных из БД в текстовый или HTML формат. Ну или какие могут быть подводные камни такой архитектуры?
Здравствуйте, diez_p, Вы писали:
_>Как сделано сейчас:
А собственно, что не нравится?
... << RSDN@Home 1.2.0 alpha 4 rev. 1492>> SQL Express 2008 R2
2Lloyd: спасибо, посмотрю, чет сам недодумался посмотреть какие либо отчетные вещи у MSSQL
Здравствуйте, akasoft, Вы писали:
A>Здравствуйте, diez_p, Вы писали:
_>>Как сделано сейчас:
A>А собственно, что не нравится?
То что при добавлении нового клиента, добавляется: код (форматирование), хранимка. Но если еще хранимки как-то можно параметризовать, то от кода форматирования никуда не деться. Отсюда имеем, что при изменении форматирования, необходимо перевыложить весь сервис, доп. затраты на время.
Сейчас реализация примерно такая
case "ident1":
// составляем письмо
// шлем
break;
case "ident2":
// составляем письмо
// шлем
break;
Также получить всех клиентов, для которых доступны отчеты невозможно без вывертов.
Мне кажется должно быть так.
Единый конфиг файл на всех клиентов, запись на клиента содержит: имя хранимки, имя шаблона, периодичность, получателей отчета.
Добавление стандартного отчета выльется лишь добавлением в файл конфигурации (Можно использовать стандартную хранимку и стандартный шаблон отчета)
При добавлении нестандартного нового отчета добавляется хранимка и шаблона отчета, но такое редко.
Общее число кода будет меньше.