{"id":14275,"url":"\/distributions\/14275\/click?bit=1&hash=bccbaeb320d3784aa2d1badbee38ca8d11406e8938daaca7e74be177682eb28b","title":"\u041d\u0430 \u0447\u0451\u043c \u0437\u0430\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0434\u0430\u0432\u0446\u044b \u0430\u0432\u0442\u043e?","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"f72066c6-8459-501b-aea6-770cd3ac60a6"}

Гибкость и вариативность настройки СЭД «Атач» посредством использования триггеров на уровне веб-приложения

Триггеры на уровне веб-приложения предназначены для дополнения базовых обработчиков кастомной логикой без вмешательства в ядро системы.

Представленный в данной статье подход позволяет выполнять определенные действия на пользовательские события (изменение состояний компонентов/элементов), при условии, что состав и последовательность этих действий вариативны.

Богданов Артур
Инженер-программист

Составляющие интерфейса СЭД «Атач»

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

Одной из базовых сущностей в системе «Атач» является документ. На скриншоте пользовательского интерфейса, согласно 3-х колоночной концепции, расположены следующие блоки (в соответствии с рисунком 1):

  • слева расположена панель задач;
  • по центру – карточка документа;
  • на правой панели – маршрут текущего документа.
Рисунок 1 – Пользовательский интерфейс СЭД «Атач»

Составными частями карточек и маршрутов документов являются компоненты и элементы. Примеры компонентов выделены оранжевыми линиями, элементы обозначены красными (в соответствии с рисунком 2).

Рисунок 2 – Элементы и компоненты СЭД «Атач»

К элементам относятся кнопки, текстовые поля, выпадающие списки, детали маршрута и т.п., а компоненты предназначены для группировки элементов.

Триггеры на уровне веб-приложения в СЭД «Атач»

Концептуальная схема отражает вызов триггеров на пользовательские события (в соответствии с рисунком 3).

Рисунок 3 – Вызов триггеров на пользовательские события

В качестве типов пользовательских событий могут выступать стандартные OnClick, OnCreate, OnUpdate, OnDelete, или относящиеся к предметной области – вход в группу маршрута, выход из группы, вход в шаг маршрута, выход с шага. Конкретное событие вызывает определенный обработчик. Чаще всего триггеры вызываются из базовых обработчиков, но это необязательное условие, точка входа может быть любой. Далее, в обработчике, согласно логике конкретного бизнес-процесса, вызываются триггеры с определённым типом события.

Триггеры на уровне кода – это вложенные обработчики, команды которых наследуются от общего интерфейса, идентифицируются атрибутом.

[Trigger(Domain.Enums.Action.DocumentWasCreated)] public class DocumentWasCreatedCommand : IRequest, ITrigger { public DocumentWasCreatedCommand() { } }

На конкретный компонент или элемент может быть установлено неопределенное количество триггеров с различным типом пользовательских действий и приоритетом выполнения, за счет этого и достигается условие вариативного состава и последовательности действий (в соответствии с рисунком 4).

Рисунок 4 – Триггеры на элементах

На схеме БД отражена связь между триггерами и элементами (в соответствии с рисунком 5). Для компонентов схема аналогична.

Рисунок 5 – Триггеры на элементах в БД

Заключение

Дополнение базовых обработчиков кастомной логикой без вмешательства в ядро системы позволило достичь высокого уровня гибкости и вариативности настройки СЭД «Атач». Немаловажные преимущества данного подхода – возможность делегирования разработки триггеров другим командам (в том числе, на стороне заказчика) и высокий уровень повторного использования кода.

0
4 комментария
Алла Очеретяная

Интересный подход!
Пожелание автору-схемы 2 и 4 сделать гифками с выделением значимых частей-со смартфона очень не читаемые картинки получились

Ответить
Развернуть ветку
Михаил Эпштейн

Как настоящий программист, автор и работает на компьютере и пишет статьи для просмотра с него же)

Ответить
Развернуть ветку
Артур Богданов

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

Ответить
Развернуть ветку
Артур Богданов

Спасибо, учту. В дальнейшем вся графика будет согласовываться с нашим дизайнером.

Ответить
Развернуть ветку
1 комментарий
Раскрывать всегда