В рамках платформы Tandem Framework реализован набор базовых механизмов, которые необходимы для функционирования практически любого разрабатываемого Web-приложения. Некоторые из механизмов перечислены ниже.

  • Модульность. Вся предоставляемая функциональность (платформы и разрабатываемых бизнес-приложений) организована модульным образом. С точки зрения сборки приложения каждый модуль является отдельным модулем maven (каждому такому модулю соответствует отдельный файл pom.xml). Каждый модуль может предоставлять точки расширения. Когда разрабатывается новый модуль указывается от каких существующих модулей он зависит. Когда один модуль зависит от других, он может расширить функции, предоставленные через точки расширения. Все расширения равноправны и их правильная обработка возлагается на тот модуль, который предоставляет расширение.

  • Мета-информация является одним из наиболее важных механизмов, заложенных в концепцию фреймворка. Выше мы уже описывали какая роль возлагается на мета-описания, однако необходимо отметить возможность ее гибкого расширения. Вся мета-информация, предоставляемая в проектах представлена в виде слоев. Сейчас реализованы: слой уровня бизнес-объектов (сущностей), слой уровня справочников (определение справочником системы и их предустановленных значений), слой уровня системы прав (определение топологии модели прав), а также слой уровня представления (правила визуального представления объектов). При старте системы вся мета-информация собирается и формируется в реестр, который доступен всем функциональным компонентам системы во время выполнения. В рамках фреймворка предоставляется возможность создания нового прикладного слоя мета-информации, путем создания специализированной XML-схемы (Tandem Framework позволяет быстро создавать собственные XML-схемы и их обработчики), данные из которого станут доступны наряду с уже реализованными слоями.

  • Система прав обеспечивает возможность гибкой настройки правил распределения полномочий по доступу пользователей к функциям системы. Это разграничение может обеспечиваться на основе ролевого управления полномочиями (полномочия определяются для ролей и делегируются всем пользователям в соответствии с ролью), индивидуальных настроек (полномочия задаются для отдельного пользователя). Полномочия могут определятся как для всех объектов одного типа (глобальная роль),так и в контексте отдельно взятого экземпляра объекта (локальная роль). Важно отметить, что блок, отвечающий за конкретную реализацию системы прав выделен в отдельный заменяемый блок. Благодаря этому имеется возможность заменить стандартную систему прав любой другой реализацией.

  • Настройка приложения обеспечивает возможность конфигурирования параметров системы отдельно от исполняемой части приложения. В ходе запуска приложения весь объем настроек формируется в единую карту, которая становится доступна всем функциональным блокам. Объем настроек может быть легко расширен по мере разработки новых компонентов системы.

  • Миграция обеспечивает изменение структуры базы данных при изменении метаданных приложения (изменение свойств сущностей, связей между ними и т.д.), а также обеспечивает пакетные изменения данных базы. Каждая миграция представляет собой Java-класс, в котором создается и исполняется один или несколько SQL-запросов. Все миграции пронумерованы, что позволяет игнорировать запуск уже выполненных миграций на данной базе.

  • Механизм событий обеспечивает обработку событий, связанных с созданием, изменением и удалением объектов системы. События могут регистрироваться как программно, так и декларативно. На обработчиков событий могут быть наложены фильтры, позволяющие реагировать на события только в случае, если условие фильтра выполнены. Фильтры также могут регистрироваться как программно, так и декларативно.

  • Справочники – это всевозможные классификаторы, используемые в разрабатываемых приложениях. Все они характеризуются достаточно стандартными способами редактирования, удаления и выбора элемента(ов), которые представлены в виде уже готовых компонентов, использующихся для всех справочников. Конкретные справочники приложения, а также их предустановленные значения определяются в виде мета-описаний (XML-файлы), относящихся к соответствующим модулям.

  • Кастомизация (настройка и адаптация) используется на этапе внедрения продукта, в ходе чего предоставляется возможность переопределить необходимый набор функциональных блоков системы в том виде, в котором они необходимы заказчику. Механизм кастомизации, предоставленный фреймворком, позволяет переопределить и настроить любые аспекты функциональных компонентов.

  • Механизм отчетов позволяет создавать любые отчеты с использованием различных источников данных на основе BIRT. Механизм позволяет в процессе выполнения приложения помещать сформированные в BIRT-редакторе шаблоны отчетов в определенные группы, используя стандартный пользовательский интерфейс. На группы могут быть наложены права, что позволяет настроить видимость отчетов для пользователей. Формы настроек для отчетов формируются автоматически на основе данных из шаблонов.

  • Планировщик обеспечивает настройку расписания, а также регистрацию и запуск задач в асинхронном режиме. Каждая из задач представляет собой класс-реализацию интерфейса планировщика. Настройка расписания и регистрация задач может производиться как программно, так и декларативно. Удобство настройки, а также гибкость и эффективность планировщика обеспечивается применением библиотеки Quartz.