Прикладной No-Code или своя настройка документов в Directum RX

Введение

Статей и кейсов по No-Code много, сегодня этим мало кого можно удивить, но что, если пойти чуть дальше и вместо использования готовых механизмов создать свои собственные.
Было бы неплохо, если бы форму документа можно было бы компоновать так же, как и схему No-Code задачи и подстроить ее под свои задачи...

Минуточку! Сейчас Вы скажете, что такое уже есть в коробке и будете правы, но лишь отчасти. Функционал настройки представлений позволяет управлять видимостью свойств на форме без услуг разработчика.
-Hello, Directum 5. На этом, собственно, пока и все.
А еще в Directum 5 был такой замечательный функционал, как Мастер действий, который позволял разбить старт какого-нибудь процесса на ряд понятных шагов.
А что, если попробовать скрестить Мастер действий и настройку представлений !?
Звучит как минимум интересно.

Решение

Что представляет из себя решение "Тут должно быть какое-то название, но мы его пока не придумали" !?
Если коротко, то это своего рода No-Code конструктор, который позволяет собрать из имеющихся свойств новый вид документа, адаптированный под индивидуальные потребности и ситуации без использования услуг прикладного разработчика. Другими словами, если нужен вид документа с определенными свойствами, его можно создать в пару тройку кликом мышкой.
Так же можно задать заполнение свойств значениями по умолчанию или настроить необходимые проверки.

Само решение состоит из всего 4-х компонент:

  • "Универсальный" тип документа;
  • Справочник "Настройки документов";
  • Диалог создания документа;
  • No-Code задача (опционально).

Примечание:
При желании, количество поддерживаемых типов документов можно расширить и делается это не сложно, силами прикладного разработчика. No-Code задачу так же можно заменить, если в этом есть необходимость.

Отступление

Изначально, данное решение не планировалось в качестве самостоятельного и является основой процессов более крупного решения КЭДО для гос. органов. В связи с чем, на скриншотах и в описании, я буду показывать работу решения именно в рамках процессов КЭДО (заявления, отпуска, командировки).
В начале я предлагаю посмотреть, как работает механизм создания документа и старта задачи, а потом мы перейдем к самому интересному, настройке.


Как это работает, с точки зрения пользователя

Пользователь заходит на обложку модуля и нажимает на ссылку "Оформить заявление".


Пример варианта обложки модуля.

После чего, ему показывается диалог, где он должен сразу выбрать "Вид документа" или сначала выбрать "Жизненную ситуацию", а затем один из отфильтрованных "Видов документа".
Примечание: "Жизненная ситуация" - это адаптация по процессы КЭДО и она реализована отдельным справочником с возможность создать любую ситуацию и привязать к ней необходимые виды документов. 


Пример пустого диалога создания документа.

Например, если пользовать выберет вид документа "Заявление на перевод на другую должность граж/службы", то диалог поменяется, добавятся новые поля, а поле "Дата с" будет предзаполнено датой.


Пример диалога создания для настроенного вида документа.

После того, как пользователь заполнит все необходимые поля


Пример диалога создания для настроенного вида документа.

он нажимает на кнопку "Создать" и перед ним появляется окно старта задачи.


Пример карточки No-Code задачи.

После проверки документа пользователь нажимает кнопку "Отправить", документ автоматически подписывается и направляется в работу.

И все!
Пара простых шагов со стороны пользователя и документ создан, версия сформирована по шаблону, подписана и отправлена.
А что еще пользователям нужно!?


Настройка

Давайте заглянем за фасад и посмотрим, а как же эта простота настраивается.

Для настройки процесса создания документа был разработан отдельный настроечный справочник "Настройки документов".
Давайте на примере того же вида документа "Заявление на перевод на другую должность граж/службы" рассмотрим функциональные возможности справочника, а также назначения свойств этих настроек.

Основная страница "Свойства", карточки записи справочника "Настройки документов".


Страница "Свойства" записи справочника "Настройки документов".

"Тип документа" и "Виды документов" - позволяют настроить для какого типа и видов документов будет доступна эта настройка.
В свойстве "Тип документа" доступны не все типы документов системы, а лишь те, что добавлены разработчиком программно, благо много сил и времени это не занимает.

"Состояние" - тут по классике, влияет на доступность данной настройки и имеет два состояния "Действующая" и "Закрытая".

"Шаблон документа" - в данном свойстве указывается шаблон документа, по которому будет формироваться версия документа.

"Диалог открывает" - имеет три состояния "Задачу", "Документ", "Действие не требуется" и указывает на то, какое действие будет выполнено по окончанию работы диалога создания документа.
Вариант "Задача" - открывает No-Code задачу.
Вариант "Документ" - открывает карточку документа.
Вариант "Действие не требуется" - как следует из названия, не выполняет никаких действий. Этот вариант необходим для встраивания диалога создания документов в какие-то процессы или варианты выполнения заданий, когда открывать что-либо не требуется, а нужно получить готовый документ и продолжить выполнять действия процесса. Например, создание приказа в задании по созданию приказа.

"Приказ" - данное свойство связывает текущую настройку документа с настройкой приказа, который должен быть создан по окончанию обработки документа. Например, если после согласования заявления необходимо подготовить соответствующий приказ, то заполнив это свойство настройкой приказа и вытащив в задаче соответствующий блок задания на схему, пользователю не придется совершать лишних действий, все необходимые данные передадутся в диалог создания документа автоматически.

"Классификаторы должностей", "Должности", "Наши организации", "Подразделения" - эта группа свойств позволяет задать доступность текущей настройки для разных сотрудников. Например, у руководителей подразделений другая форма документа, а документы конкретного вида имеют право создавать только руководители организаций. Ситуации могут быть разными.
Что касается свойства "Классификаторы должностей", то это адаптация для госов.

Страница "Настройка формы", карточки записи справочника "Настройки документов".


Страница "Настройка формы" записи справочника "Настройки документов".

Коллекция "Свойства формы" - данная коллекция позволяет управлять набором свойств, который доступен для указанных видов документов. Этот же набор свойств будет доступен и в карточке созданного документа.

  • "Поле" - в данном свойстве выбирается "Свойство" документа, которое необходимо добавить в документ.
    Поддерживаются свойства с типами: Строка, Текст, Целое число, Дробное число, Логическое, Перечисление, Ссылка, Коллекция (с единственным свойством-ссылкой).

    Пример выбора свойства документа.
  • "Обязательное" - признак обязательности заполнения выбранного свойства в документе.
  • "Блокировать свойство" - признак, отвечающий за доступность свойства для редактирования в карточке документа.
  • "Значение по умолчанию" - позволяет предзаполнить свойство значением по умолчанию.
    Доступные значения:
    - "Текущий сотрудник" для свойства-ссылки которое ссылается на справочник "Сотрудники";
    - "Текущая дата" заполняет свойство-дата текущей датой;
    - "Текущая дата со смещением (в раб. днях)" или "Текущая дата со смещением (в календ. днях)" заполняет свойство-дата текущей датой со смещением на указанное количество дней. Смещение может быть как положительным, так и отрицательным;
    - "Идентификатор" заполняет свойство-ссылку указанным объектом;
    - "Статическое значение" заполняет свойство-строку, свойство-текст или свойство-число указанным текстом;
    - "Отсутствует" не вызывает никаких действий.
  • "Значение/Смещение" - позволяет задать значение смещения для свойств-дат.

Коллекция "Параметры проверки данных" - данная коллекция позволяет задать условия проверки вводимых данных.

  • "Поле" - в данном свойстве выбирается "Свойство", для которого необходимо задать условие проверки. Для выбора доступны только те свойства, которые были указаны в коллекции "Свойства формы".
  • "Условие" - задает условие проверки данных.
    Доступные значения:
    - "(<, >, ≤, ≥) Поля" позволяет сравнить между собой поля с одинаковым типом данных. Например две даты, два числа и т.д.
    - "(<, >, ≤, ≥) Значения" позволяет сравнить указанное свойство со статическим значением. Например для свойства-число "Срок, дней" можно запретить указывать количество дней меньше чем 3 дня.
    - "(<, >, ≤, ≥) Значения (в раб. днях)"  или "(<, >, ≤, ≥) Значения (в календ. днях)" позволяет задать ограничения для вводимых дат.
    - "Регулярное выражение" позволяет задать регулярное выражение, формату которого должны соответствовать вводимые данные. Например, с помощью выражения можно задать требуемый формат номера телефона, email-а или любой другой информации.
  • "Значение проверки" - в зависимости от выбранного условия указывается какое-то статическое значение или другое свойство формы такого же типа.

Группа "Формат наименования документа" - позволяет задать формат наименования документа используя заданные в коллекции "Свойства формы" свойства, а также ряд базовых не редактируемых свойств документа, таких как "Рег. №", "Наша орг.", "Подразделение" и т.д.

Формат наименования документа задается в диалоге, который вызывается по ссылке "* Задать формат".
Для свойств доступны приведения к регистрам, склонения, а также форматы даты и времени.

 
Пример диалога задания формата наименования документа.

Страница "Настройка диалога", карточки записи справочника "Настройки документов".


Страница "Настройка диалога" записи справочника "Настройки документов".

Коллекция "Свойства диалога" - данная коллекция позволяет настроить формат отображения диалога создания документа.

  • "Поле" - в данном свойстве выбирается "Свойство", для которого необходимо задать условие проверки. Для выбора доступны только те свойства, которые были указаны в коллекции "Свойства формы".
  • "Страница" - в данном свойстве можно указать страницу диалога, на которой необходимо отобразить выбранное свойство. Если свойств в диалоге отображается много, то их можно разнести на разные страницы для удобства заполнения.
  • "Отображать в диалоге" - признак, отвечающий за показ свойства в диалоге.
  • "Блокировать свойство" - признак, отвечающий за доступность свойства для редактирования в диалоге создания документа.
  • "Имя в диалоге" - позволяет изменить наименование свойства для диалога.

Коллекция "Инструкция" - данная коллекция позволяет задать текстовые инструкции для сотрудников.

  • "Страница" - в данном свойстве указывается страница, на которой должна отобразится инструкция. Если на странице диалога отсутствуют свойства для отображения, то такая страница пропускается.
  • "Инструкция" - текст инструкции.

 
Пример заполнения инструкции.

Страница "Приложения", карточки записи справочника "Настройки документов".


Страница "Приложения" записи справочника "Настройки документов".

Коллекция "Настройка приложений" - данная коллекция позволяет настроить список приложений, которые необходимо прикладывать к документу, при его создании.

  • "Вид документа" - в данном свойстве задается вид документа приложения.
  • "Обязательное" - признак обязательности загрузки приложения.
  • "Тип связи" - в данном свойстве выбирается тип связи, с которым приложение свяжется с основным документом.

Страница "Задача", карточки записи справочника "Настройки документов".

Данная вкладка отображается для настройки только если в вкладке "Свойства" в поле "Диалог открывает" выбран вариант "Задачу".


Страница "Задача" записи справочника "Настройки документов".

"Требовать подпись при старте задачи" - позволяет настроить подписание документа.

Группа "Формат темы задачи" - выполняет такую же функцию, как и группа "Формат наименования документа", только задает не имя документа, а тему задачи.

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



Пример сводки по документу.


Задача

Поскольку в предыдущем блоке мы затронули тему настройки задачи, то давайте уделим пару слов и ей.
Сама задача реализована на No-Code и по мимо блоков адаптированных под процессы КЭДО, так же имеет набор универсальных блоков.


Универсальные блоки задачи.

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


Примеры настроек некоторых No-Code блоков задачи.

Поскольку задача, это вещь скорее желательная, чем обязательная и может быть заменена на любой другой процесс, то подробно останавливаться и описывать реализацию No-Code процессов я не буду. Да и речь сейчас идет о прикладном No-Code, а не коробочном.


Дополнения и возможности

1) Добавление поддержки нового типа документа занимает около 30 минут времени прикладного разработчика, а может и того меньше. Это без учета в создания самого типа, его свойств, инициализации и прочих сопутствующих работ.

2) Новые свойства в типах документах добавляются за пару минут. Добавил свойство или коллекцию, вынес его на форму, добавил наименование свойства в соответствующий список (пока так), опубликовал с инициализацией и все. Свойство появляется в настройках и с ним можно работать.

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


Пример шагов диалога при создании служебной записки на командировку.

4) Выше я написал, что диалог поддерживает работу с коллекциями (с единственным свойством-ссылкой). Да, все так, генерация соответствующих элементов диалога происходит автоматически.



Пример работы с коллекциями.

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


Пример работы условия проверки данных.

Ну а если Вы умеете работать с регулярными выражениями, то это открывает еще больший спектр возможностей.


Пример работы регулярного выражения.


Особенности, ограничения и планы на развитие

Ну а теперь о грустном, чего решение делать не умеет, ну или пока что не умеет.
1) Решение разработано на базе Directum RX 4.6, поэтому переименование свойств документа в карточке пока что не доступно.
2) Отсутствует механизм заполнения свойства из связанных свойств. Примеры: при заполнении ведущего документа, заполнить "Дату с" датой из этого документа, или при заполнении двух дат, заполнить "Продолжительность" разницей этих дат.
3) Решение не умеет генерировать в диалоге коллекции, с двумя и более свойствами.
4) Решение не умеет генерировать в диалоге коллекции, с единственным свойством, отличным от свойства-ссылки.
5) В некоторых информационных сообщениях диалогах не хватает информативности.

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


Заключение

Изначально, это решение было придумано в целью облегчения разработки разнообразных и разношёрстных заявлений решения для КЭДО, но по мере проектирования и расширения функциональных возможностей, выяснилось, что оно отлично ложится на все пользовательские процессы, где может быть много разных видов документов с различным реквизитным составом и требуется возможность настройки этих видов документов.

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

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


Команда проекта

Автор идеи и разработчик - Беляков Сергей Александрович

6
104
Авторизуйтесь, чтобы оценить материал.
Пока комментариев нет.
Авторизуйтесь, чтобы написать комментарий

У вас похожая задача?

Обсудите реализацию с экспертом Directum

Обязательное поле
Обязательное поле
Обязательное поле
Обязательное поле
Обязательное поле
Обязательное поле

Благодарим за интерес! Мы свяжемся с вами.

Directum Awards 2024
Какой проект лучше?
Авторизуйтесь, чтобы оценить материал.
Авторизуйтесь, чтобы оценить материал.
Directum Awards 2024
Спасибо за активность!
Ваш голос принят