ITA Labs — Наши разработки


Wizard Framework

Фреймворк для построения пошаговых мастеров, с типовым набором базовым страниц

Wizard framework Для организации процедуры настройки продуктов у нас есть свой фирменный фреймворк для создания мастеров (wizards).

Его принципиальное отличие от аналогов заключается в том, что он позволяет организовывать вложенные мастера, которые работают с единой, с архитектурной точки зрения, системой хранения данных отдельных страниц мастеров разных уровней.

Иными словами страницы не знают, в рамках какого мастера их запускают. Это позволяет из готовых страниц компоновать различные по набору шагов мастера включая вложенные, не меняя логики самих страниц.

Именно на этом фреймворке построены мастера настройки продуктов, которые мы разрабатываем для заказчиков.

Мы придерживаемся концепции easy install, смысл которой в максимальном облегчении процедуры MSI инсталляции продукта, которую мы кстати делаем на WiX, и перенос всей логики по настройке в отдельный мастер или мастера. Настройка продукта является функцией самого продукта.
А инсталляция настраивает тот необходимый минимум, чтобы эта функция заработала.

Такой поход имеет следующие преимущества:
  • Упрощается разработка, т.к. мастера удобнее разрабатывать и отлаживать
  • Уменьшается количество проблем, которые могут возникать на стадии установки продукта
  • Установка ускоряется и гарантированно дает установленный продукт с работающей подсистемой конфигурирования
  • Упрощается troubleshooting инфраструктурных проблем в процессе внедрения

Database Wizard

Готовый мастер для настройки соединения с базой данных, создания, обновления и валидации базы данных

Database wizard Для настройки data tier во всех продуктах необходимо выполнить практически одни и те же шаги. Они оформлены в виде готового SDK, содержащего необходимые шаги мастеров, функционал и специально реализованные механизмы его расширения.

Также поддерживается выбор поставщика СУБД, режима работы: новая конфигурация или существующая, поиск серверов в сети, различные режимы аутентификации, создание новых баз и подключение к существующим, обновление структуры баз при upgrade, валидацию структуры базы, набор готовых скриптов для создания основных сущностей и многое другое.

Мастер настройки базы данных out of the box позволяет работать в двух режимах
  • Новая конфигурация
  • Cуществующая конфигурация
Для режима новая конфигурация:
  • Выбор типа СУБД: Microsoft SQL Server или Oracle
  • Выбор сервера СУБД и подключение к нему с указанием настроек аутентификации для мастера
  • Выбор существующей БД или определение параметров новой с указанием настроек аутентификации для продукта
  • Валидация структуры существующей БД и ее обновление при необходимости
  • Создание новой БД
Для режима существующая конфигурация:
  • Проверка наличия конфигурации
  • Валидация структуры существующей БД и ее обновление при необходимости
Для расширения функционала мастера заложены следующие возможности:
  • Добавление своих страниц мастера
  • Добавление других типов СУБД
  • Декларативное добавление своих правил обновления БД между версиями
  • Добавление своих скриптов создания элементов БД и кастомизация существующих
  • Кастомизация графических элементов

Custom Properties Framework

SDK для создания бизнес-объектов, с динамически расширяемым набором свойств

Custom properties Типовой задачей при разработке различных информационных систем является предоставление конечному пользователю системы настраивать свойства бизнес объектов под свои нужды. Добавлять новые свойства, задавать их типы и значения, создавать справочники значений. Этот функционал лег в основу данного фреймворка.

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

Workflow Framework

SDK для создания бизнес-объектов, построенных по принципу конечного автомата

Workflow SDK Еще одной часто встречающейся задачей при разработке информационных систем является создание бизнес-объектов, построенных по принципу конечного автомата, и предоставление конечному пользователю системы настраивать наборы состояний и правила переходов между ними под свои нужды. Данный фреймворк предназначен для управления набором состояний объектов, правилами перехода между состояниями. Поддерживается ролевая модель безопасности, определяющая пользователи какой роли могут переводить объекты из одного состояния в другое.

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

Application Host Framework

SDK для построения слоя бизнес-логики как windows service

Host framework Практически все enterprise приложения с точки зрения архитектуры содержат в том или ином виде middle tier, так называемый уровень бизнес-логики. Для его хостинга существуют различные средства. Мы используем для этого специализированный win32 service. За годы работы мы выработали готовый win32 service хост, который содержит в себе всю необходимую инфраструктуру для работы 24/7, построенный по компонентной технологии.

Для реализации конкретного сервиса бизнес-логики для конкретного продукта с использованием этого фреймворка необходимо лишь разработать специфичные для продукта компоненты соблюдая идеологию хоста и зарегистрировать их в его конфигурации.

В хосте уже есть готовые подсистемы и компоненты:
  • Непосредственно сервис
  • Система активации компонент согласно конфигурации
  • Система управления компонентами через программный API и по событиям ОС, такие как запуск и останов сервиса, события по питанию
  • Система мониторинга и логгирования
  • Система конфигурирования
  • Единая система отладочной трассы
  • Система обработки ошибок
  • Счетчики производительности
Данный фреймворк позволяет строить компоненты, специфичные для продукта, используя уже готовую платформу. Что дает массу преимуществ:
  • Значительно ускоряется разработка
  • Разработка унифицируется
  • Повышается стабильность работы продукта
  • Масштабирование за счет гибкости активации тех или иных компонент в разных процессах

Enterprise Application Template

Шаблон проекта enterprise приложения с типовыми компонентами и настроенными между ними связями

Enterprise application template Работая над многочисленными enterprise приложениями мы выявили и разработали множество готовых архитектурных блоков, которые повторяются из приложения в приложение с небольшими вариациями или вообще без них. Часть из них оформлена в виде отдельных компонент и фреймворков, описанных выше.

Однако есть достаточно большая часть, которая не может быть оформлена в виде SDK или готовых исполняемых модулей, т.к. фактически является каркасом исходного кода multi tier приложения. Эта часть оформлена в виде шаблона enterprise приложения, который представляет собой готовый solution с набором заранее подготовленных и настроенных проектов.

Шаблон содержит:
  • Сервис бизнес-логики и его регистрация
  • Счетчики производительности и их регистрация
  • Трасса и ее настройки
  • Event log и его регистрация
  • Административный API
  • Уровень доступа к данным
  • Бизнес-логика
  • Подсистема мониторинга
  • Система обработки событий питания
  • Tray агент управления, command line утилита управления
  • Мастер настройки
  • Административный клиент
  • Автоматизированные тесты бизнес-логики
  • Итд
Теперь на построение основы приложения, которое инфраструктурно содержит все необходимое и, главное, отлаженное и проверенное временем, уходят считанные минуты. После переименования основных сущностей (namespaces, имена файлов, название продукта и заказчика) можно сразу приступать к реализации специфичной для проекта логики.