Структура Фреймворка IONDV. Framework
Сегодня мы поговорим про структуру фреймворка, из чего состоят его основные компоненты, а также кратко опишем файловую структуру и метаданные. Основа IONDV. Framework состоит из ядра и функциональных модулей, реализующие специфические задачи обработки или представления данных. Основа фреймворка и следующий набор инструментальных средств вместе составляют IONDV. Framework.
- контейнеры docker ( среда виртуализации ) ;
- среда исполнения фреймворка;
- СУБД;
- файловая система;
- среды сборки версий и их хранения;
- программа редактирования метаинформации.
Также важно включить сюда технологию организации рабочего процесса: разработка ядра и самих продуктов, хранение и изменение кода и метаданных, выпуск версий, развертывание или обновление системы для промышленного использования. Более подробно о применяемых нами методиках мы расскажем в отдельной статье.
Модули
IONDV. Framework использует модули для решения различных функциональных задач. Мы предусматриваем подход к разработке приложений на основе максимального использования готовых модулей или новых модулей дополнительной функциональности.
Приведем пример, модуль реестра ( the registry module) используется в каждом проекте, так как предназначен непосредственно для ведения данных в виде реестра данных.
Также вряд ли получится обойтись без модуля администрирования ( the admin module), который отвечает за управление пользователями приложения и доступом к нему. Это модули обязательной функциональности.
В модули дополнительной функциональности входят: модуль Дашборда ( the dashboard module), модуль диаграммы Гантта ( the Gantt chart module) и т.п., то есть те модули, которые не составляют основу фреймворка. Таким образом добавляя различные модули дополнительной функциональности к основе фреймворка, мы получаем огромное множество возможных вариантов его использования — от создания небольшого информационного портала до полноценной системы управления проектами.
Файловая структура
При разработки ядра, модулей и метаданных мы обеспечили им независимость друг от друга, а также учли удобство работы с репозиторием кода и файлов, так как наша технология разработки подразумевает частый выпуск версий. Поэтому за основу была взята файловая система организации кода и данных в виде текстовых файлов. Репозиторий фреймворка выглядит следующим образом:
- папка для приложений - « applications »
- папки для модулей - « modules »
- папка для ключевой функциональности ядра — « core »
- папка с файлами запуска и низкоуровневого управления платформой - « bin »
- папка с файлами общих библиотек - « lib »
- папка с файлами конфигураций ядра - « config »
- папка с файлами шаблонов представления - « view »
Со временем мы добавили папки: версии « versions », где ведется список внесенных изменений в новые релизы; тесты « test » для тестирования изменений; документация « docs », где ведется документирование системы.
Структура метаданных
Мы разместили разные типы метаданных в разные папки, тем самым логично структурировав их в репозитории данных. Например метаданные класса расположены в папке meta, метаданные навигации в папке navigation, представления классов в папке views и т.д. Напомним, что метаданные представляют собой сведения о признаках и свойствах, характеризующих какие-либо сущности, таким образом у нас есть класс и его атрибуты.
Описывая класс, мы используем термины общая часть при описании характеристик класса и атрибутивная при описании характеристик атрибутов. Структуру основных типов меты можно представить следующим образом. Мета классов является основным источником формирования данных в приложении. Мета классов состоит из атрибутов (атрибутивная часть) и параметров самого класса (общая часть).
Атрибуты - это объекты массива "properties" общей части, которая содержит поля, имеющие отношение к самой структуре и способам оперирования данными в ней. На основе меты классов задается мета представлений, мета навигации, мета отчетов, мета бизнес-процессов и т.д.
Мета представления класса позволяет задавать желаемый состав атрибутов этого класса для отображения на форме, в соответствии с типом формы представления (представление формы списка list.json, создания create.json, изменения класса item.json) и указывать для каждого отдельного атрибута свойства, переопределяемые и (или) дополняемые свойства, задаваемые в мете класса для данного атрибута. Объединив атрибуты классы и мету представления, мы получим отображение этих атрибутов на форме.
Мета представления + Атрибуты класса = Отображение атрибутов на форме
Мета навигации регулирует расположение элементов в навигационном блоке. Мета навигации делится на мету узлов навигации и мету секции навигации.Мы дали вам краткое, базовое представление о составе фреймворка, о модулях и о разных типах метаданных. В следующей статье мы поговорим о технологиях и методологиях разработки, какие используем и как мы их применяем.