Project codenamed JetBAT (Jet Business Automation Technology)
Проект JetBAT - это (очередная) технология, упрощающая разработку бизнес-приложений.
Она родилась и сформировалась как набор инструментов и методология их применения
в попытке автоматизировать повседневную рутинную работу разработчика клиент-серверных
информационных систем. С самого начала решение ориентировалось на двухзвенный клиент-серверный
сценарий с бизнес-логикой, реализованной на SQL-сервере, однако нет никаких
препятствий к тому, чтобы адаптировать это решение к многозвенной среде с выделенным
слоем бизнес-логики.
Главным отличием JetBAT от большей части аналогичных решений является отказ от попытки
абстрагироваться от конкретной реализации РСУБД и попыток создать "универсальное
решение". В первую очередь JetBAT - это набор паттернов модели данных.
Текущая реализация включает два таких паттерна:
простой объект и версионный документ.
Для реализации паттернов используется генерирование кода хранимых процедур. Это
позволяет использовать все возможности конкретной СУБД, которая лежит в основе решения.
При этом изначально задано противоречивое требование - сгенерированный код никогда
не должен модифицироваться вручную, поскольку это свело бы на нет все преимущества
кодогенерации как похода: быстрое созадние (и, что крайне важно, пересоздание) большого
количества надежного кода.
Для того, чтобы удовлетворить такому противоречивому требованию используется система
хранимых процедур-делегатов (функционально - аналогов обработчиков событий
в средах, подобных Delphi), которые создаются однократно, а затем модифицируются
вручную. Таким образом, создается достаточно простой, прозрачный и надежный механизм
манипулирования данными, который, в то же время, является достаточно производительным
для промышленных решений.
Следующим уровнем организации данных является объектная модель данных.
Эта модель данных не привязана к конкретному языку программирования, и представляет
собой набор описаний бизнес-объектов, соответсвующих реализуемым паттернам: простых
объектов, представлений списков простых объектов, версионных документов
и представлений списков версионных документов. Описание объекта в первую
очередь включает в себя описание набора атрибутов объекта (что соответствует атрибуту
экземпляра обекта, либо колонке в списке объектов) и методов объекта (в JetBAT метод
объекта реализуется хранимой процедурой и формальные параметры метода ставятся в
соотвествие формальным параметрам хранимой процедуры).
Такое хранилище описаний объектов называется хранилищем метаданных. Оно
может быть реализовано различными способами, но в JetBAT основной реализацией является
хранилище в отдельной базе данных, а вспомогательной реализацией - хранилище метаданных
в XML-файле.
Помимо описания метаданных, JetBAT предоставляет набор инструментов для встраивания
в клиентское приложение. В первую очередь это провайдер метаданных и доступа,
позволяющий загрузить в память клиентского приложения описания бизнес-объектов,
создавать их экземпляры и вызывать их методы. Кроме того, специальный набор базовых
форм и элементов управления для связывания с атрибутами объектов
упрощает создания форм редактирования нормативно-справочной информации и данных,
непосредственно редактируемых пользователем. В случае необходимости набор элементов
управления легко расширяется нужными компонентами.
Информацию, хранимую и обрабатываемую информационно-учетной системой, удобно подразделять
на три основные функциональные категории: нормативно-справочную информацию,
внутреннее состояние системы и данные, непосредственно редактируемые пользователем
(подробнее можно посмотреть тут).
JetBAT предоставляет инструментарий для ускорения разработки механизмов редактирования
нормативно-справочной информации и данных, непосредственно редактируемых пользователем.
Редактирование данных, отражающих внутренне состояние системы, выполняется на уровне
бизнес-логики и реализация оставляется разработчику.