Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Алексей Стукалов — Механизм расширений продуктовых решений

Алексей Стукалов — Механизм расширений продуктовых решений

Moscow JUG

June 29, 2017
Tweet

More Decks by Moscow JUG

Other Decks in Programming

Transcript

  1. Зачем кастомизировать? Продуктовые системы не считаются с требованиями бизнеса и

    навязывают свой подход, исходя из существующего функционала. Компания, внедряющая «коробку», утрачивает свою уникальность в части ведения бизнеса. 2
  2. Как это делаем мы Продукт – базовая система Проект –

    индивидуальная часть Проект наследует функциональность продукта и переопределяет модель данных, бизнес-логику и пользовательский интерфейс Проект содержит исключительно уникальные фичи конкретного заказчика, не дублируя продукт 5
  3. Open Inheritance в Java коде Расширение модели данных Наследование XML

    дескрипторов экранов UI Наследование свойств приложения Архитектура расширений 6
  4. Пример из жизни: такси Sherlock – продукт автоматизирующий деятельность такси

    компаний 1ый уровень кастомизации – проект содержащий географически- локализованные особенности 2ой уровень кастомизации – проект учитывающий уникальность компании на конкурентном рынке 7
  5. Как это выглядит в коде? Задача: Добавить в сущность User,

    находящуюся в компоненте приложения, поле Address MyUser.java 9
  6. Как работает @Extends? Эффективный класс сущности – самый глубокий потомок

    класса сущности 1. Конструкторы. Object Factory возвращает эффективный класс 2. Запросы. JPQL парсится и модифицируется на лету в соответствии с эффективным классом 3. Траверсивно по модели. На этапе сборки проекта генерируется orm.xml заменяя класс сущности предка в узлах на эффективный класс 10
  7. Бизнес логика на среднем слое Spring Framework прекрасно с этим

    справляется: 1. Перегружаемая логика пишется в продукте, помещаясь как @Component 2. В проекте компонент перегружается и перерегистрируется в spring.xml 3. Новая имплементация работает глобально и в проекте и в продукте 11
  8. Обновления 1. Указать новую версию продукта, на котором основывается проект

    2. В случае, если API поменялся и это оказывает влияние на проект – он физически не соберется, пока новый API не будет поддержан 3. Собрать проект и установить на сервера заказчика Факт: ТЕЗИС имеет более 300 инсталляций. Более 60 из них кастомизированы под заказчика. Эти проекты обновляются 1 раз в год, вместе с продуктом. 15