Словарь данных и архитектура ADempiere
Словарь Данных
Архитектура системы ADempiere основаны на Словаре Данных (Application Dictionary) иногда называемого AD Engine. Все объекты системы обрабатываются в соответствии с принципом MVC (Model-View-Controller) Данные-Отображение-Поведение.
- Уровень Данных (Model) отвечает за хранение всех объектов в таблицах и записях базы данных. Объекты это - документы и шаблоны, настраиваемые типы данных, правила проверки и т.д.
- Уровень Отображения (View) отвечает за отображение данных на Java клиентах и с помощью HTML разметки при доступе к системе через WWW. Это происходит без дополнительного кодирования интерфейса.
- Уровень Поведения (Controller) отвечает описание и выполнение требуемой бизнес логики приложения.
Другими словами, словарь данных - ядро системы.
Разработка собственного приложения начинается с изучения уже существующего функционала.
Очень важно, что бы при реализации требуемого функционала не изменять базовый код системы! Для этого в системе есть множество инструментов.
Уровень Данных (Model) 
Описание структуры каждой таблицы можно найти в пункте меню Таблицы и Столбцы.
Каждый столбец имеет определенный тип Типы данных столбца могут быть обычными (сохраняться в самой таблице) или ссылаться на столбцы других таблиц.
Данные, определенные как ссылки (reference) при доступе к ним возвращают значения, считанные из других таблиц, на которые они ссылаются.
Для каждого поля данных в таблице можно определить процедуру проверки и обработки данных, значения по умолчанию и много других параметров.
Процедура проверки значения поля может быть написана на языках JavaScript, Java или SQL.
При доступе к полям может быть настроено выполнение специальных функций. Во время их выполнения можно изменять значения других полей у других таблиц. Для этого расширяется класс CalloutEngineи и вызываются методы getValue и setValue.у объекта MTab.
Любые изменения модели данных, например добавления таблиц, происходят при вызове пункта меню Таблицы и Столбцы (AD Table & Column).
Внутренние механизмы ADempiere подготавливают данные из таблиц и их полей для следующего уровня что бы он мог их отобразить в стандартном интерфейсе пользователя или при генерации отчетов.
Уровень Отображения (View)
После того, как предыдущий уровень позаботился о хранении данных, уровень Отображения выводит эти данные для пользователя. Для этого может использоваться Java Swing интерфейс или обычные web браузеры
Все функции CRUD (Создание, Чтение, Изменение, Удаление) данных берет на себя уровень Отображения. Любые изменения в модели данных сразу же появляются в интерфейсе пользователя и не требуют дополнительного программирования.
При выполнении действий пользователем, данный уровень следует за выполнением необходимых условий корректности данных (обязательные поля, и правильные значения), а так же обрабатывает ошибки пользовательского ввода.
Этот же уровень предоставляет возможность поиска информации, а так же установки доступа к отдельным записям и полям в зависимости от роли пользователя.
Уровень Отображения настраивается в следующих пунктах меню системы:
- Меню (Menu)
- Окна (Window) на предыдущей картинке
- Сообщения (Messages)
Уровень Поведения (Controller)
Вся мощь ERP приложения заключается в возможностях гибкой настройки поведения системы в зависимости от ее текущего состояния, действий пользователя, его прав, текущих и обрабатываемых данных и т.д.
Из за важности данного уровня он рассматривается как отдельная часть, отвечающая за ее поведение и выделен в отдельное описание.
Часть уровня Поведение выделена в изолированную область, что бы она могла функционировать без обращения к первым двум уровням системы. Это позволяет настраивать остальные реакции системы без изменения Словаря данных.
Проверка правильность работы системы, которую невозможно осуществить на двух предыдущих уровнях, может быть настроена на данном уровне с использованием механизма Callouts и Model Classes, управляемым в меню ModelValidator
Настройка функций логики работы приложения, такие как анализ данных, их конвертирование и т.д. полностью интегрированы с Java и могут вызываться при генерации отчетов и выполнении шагов бизнес процессов. Но настройка поведения системы возможна не только с использованием Java.
В проекте ADempiere переработана логическая часть приложения:
- Расширена модель проверки данных за счет выделения динамической проверки в отдельную область (ModelValidator,) вместо использования только статической проверки, унаследованной из Compiere.
- Добавлена возможность проверки на уровне таблиц (Table Script Validator в уровне Данных (Model) )
- Возможность написания правил бизнес логики на скриптовых языках, отличных от Java в соответствии со спецификацией JSR223
- В качестве таких языков можно использовать Groovy, Python и Ruby, что значительно расширяет возможности по настройке системы


Комментарии