{"id":14277,"url":"\/distributions\/14277\/click?bit=1&hash=17ce698c744183890278e5e72fb5473eaa8dd0a28fac1d357bd91d8537b18c22","title":"\u041e\u0446\u0438\u0444\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u0438\u0442\u0440\u044b \u0431\u0435\u043d\u0437\u0438\u043d\u0430 \u0438\u043b\u0438 \u0437\u043e\u043b\u043e\u0442\u044b\u0435 \u0443\u043a\u0440\u0430\u0448\u0435\u043d\u0438\u044f","buttonText":"\u041a\u0430\u043a?","imageUuid":"771ad34a-9f50-5b0b-bc84-204d36a20025"}

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

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

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

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

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

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

Одной из базовых сущностей в системе «Атач» является документ. На скриншоте пользовательского интерфейса, согласно 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 комментарий
Раскрывать всегда