Задача [RD5]: Графический редактор маршрутов

Формулировка проблемы: необходимо реализовать графический редактор маршрутов на основе структуры бизнес-процессов (BPMN).

Используется:

Графический редактор: Конфигуратор -> Процессы -> Шаблоны маршрутов

Решение:

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

Примечание

Для редактора маршрутов в подразделе "Шаблоны маршрутов" не будут доступны следующие типы процессов:

  • "Таймер"

  • "Сопоставление записей реестра"

Во-вторых, к существующему типу редактора необходимо добавить его графическую версию.

Графический редактор - это представление редактора маршрутов, основанное на элементах стандарта BPMN.

Необходимо добавить в верхнюю панель основной рабочей области редактора маршрутов групповую кнопку со значениями:

При создании маршрута/бизнес-процесса и последующем нажатии на противоположную кнопку необходимо конвентировать его согласно выбранному представлению.

При перемещении этапов в режиме "Маршрут" необходимо отображать диалоговое окно с кнопками "ОК" и "Отмена" и текстом сообщения:

При внесении изменений в маршруте некоторые элементы бизнес-процесса возможно будут изменены, либо удалены. Вы действительно хотите продолжить?

В зависимости от выбора методолога необходимо:

Данное окно отображается всего один раз (в рамках текущего редактирования маршрута в режиме "Маршрут").

Графический редактор маршрутов

Графический редактор маршрутов представлен в виде основной рабочей области и специфических элементов, располагающихся в ней. Рабочая область разграничена сеткой с шагом в 8 px.

Элементы графического редактора

Новый интерфейс будет содержать специальные элементы, специфичные для BPMN-процессов:

  • событие "Начало";

  • событие "Конец";

  • событие "Остановка";

  • "Задача";

  • логический оператор "И";

  • логический оператор "Исключающее ИЛИ";

  • поток управления.

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

Если на элемент наведен курсор - контуры элемента подсвечиваются желтым цветом. Подсвечивание стрелки осуществимо в радиусе 5 px от нее. Стрелку невозможно выделить.

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

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

  • при изменении возврата для этапа в панели редактирования также будет изменен поток управления соответствующей задачи;

  • если порядок следования задач в основной рабочей области был изменен, то номера этапов в панели редактирования должны быть соответствующим образом скорректированы.

    Пример

    Имеется процесс со следующими задачами:

    (1 - Работа) -> (2 - Согласование)

    В поток управления между этими задачами была добавлена еще одна задача. Процесс выглдит следущим образом:

    (1 - Работа) -> (2 - Задача) -> (3 - Согласование)

    То есть при добавлении третьей задачи у задачи "Согласование" номер этапа изменился с 2 на 3.

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

Для упрощения последующего описания задачи типа следующие задачи в дальнейшем будут называться как "задачи с условием":

  • "Согласование";

  • "Утверждение";

  • "Регистрация";

  • "Запуск маршрута по шаблону";

  • "Ввод значения показателей";

  • "Условный переход";

  • "Перевод";

  • "Назначение на должность";

  • "Увольнение";

  • "Таймер";

  • "Копировать в личное дело";

  • "Назначение календаря";

  • "Результат запроса";

  • "Работа по форме";

  • "Переназначение работ";

  • "Сопоставление записей реестра".

Событие "Начало"

Рисунок 222. Событие "Начало"

Событие "Начало"

Представляет собой элемент начала бизнес-процесса.

Событие "Конец"

Рисунок 223. Событие "Конец"

Событие "Конец"

Представляет собой элемент успешного окончания бизнес-процесса.

Событие "Остановка"

Рисунок 224. Событие "Остановка"

Событие "Остановка"

Представляет собой элемент неуспешного окончания бизнес-процесса. Данный элемент добавляется автоматически для задач с условием и объединен с логическим оператором "Исключающее ИЛИ" отрицательным потоком.

Логический оператор "И"

Рисунок 225. Логический оператор "И"

Логический оператор "И"

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

  • все входящие потоки управления группы задач идут от первого элемента "И";

  • все исходящие потоки управления группы задач идут к второму элементу "И".

В виду своей специфичности случай параллельности задач с условием рассмотрен отдельно.

Логический оператор "Исключающее ИЛИ"

Рисунок 226. Логический оператор "Исключающее ИЛИ"

Логический оператор "Исключающее ИЛИ"

Данный элемент добавляется автоматически и только для задач с условием. В случае отсутствия возврата для этих задач также автоматически добавляется элемент "Остановка".

Примечание

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

При смене типа действия на любой другой, но без условия элемент "Исключающее ИЛИ" удаляется автоматически.

Поток управления

Рисунок 227. Поток управления

Поток управления

Представляет собой порядок выполнения действий. Потоки невозможно удалить. Существуют три типа потоков:

  • положительный - определяет дальнейший ход маршрута;

  • отрицательный (окрашен красным цветом) - приводит маршрут к остановке либо возврату на предыдущий этап;

  • отсутствие перехода - возможен только для этапа "Условный переход" (подробнее).

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

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

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

При изменении действия для отрицательного потока управления его лейбл остается неизменным.

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

По умолчанию данные лейблы имеют пустое значение, за исключением процессов:

  • задачи с условием (кроме типа "Условный переход"):

    • отрицательный поток: -;

  • "Условный переход":

    • отрицательный поток: -;

    • положительные потоки переходов представлены в формате:

      %ID% %Условие% %Значение%

    • положительные потоки для переходов по умолчанию: Переход по умолчанию

Примечание

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

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

Задача

Рисунок 228. Пользовательская задача

Пользовательская задача

Рисунок 229. Задача-сервис

Задача-сервис

Рисунок 230. Задача-подпроцесс

Задача-подпроцесс

Представляет собой элемент этапа. Элемент имеет три типа, которые отличаются иконкой:

  • пользовательская задача - для процессов:

    • "Работа";

    • "Согласование";

    • "Утверждение";

    • "Ознакомление";

    • "Резолюция";

    • "Регистрация";

  • задача-сервис - для процессов:

    • "Блокирующий процесс";

    • "Отправка документа";

    • "Отправка документа по форме";

    • "Назначение на должность";

    • "Перевод";

    • "Увольнение";

    • "Копировать в личное дело";

    • "Назначение календаря";

    • "Событие реестра";

    • "Результат запроса";

    • "Работа по форме";

    • "Ввод значения показателей";

    • "Таймер";

    • "Условный переход";

    • "Копирование в карточку";

    • "Переназначение работ";

    • "Сопоставление записей реестра";

  • задача-подпроцесс - для процессов:

    • "Маршрут";

    • "Запуск маршрута по шаблону";

    • шаблоны маршрутов процесса "Условный переход".

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

%Номер_этапа%. %Название_процесса%

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

Шаблон маршрута

Данное поле можно сохранить пустым. В таком случае ввод лейбла осуществляется двойным нажатием на сам элемент.

При смене типа действия задачи значение лейбла зависит от его предыдущего состояния:

  • если лейбл был изменен - он остается неизменным;

  • если лейбл никогда не был изменен - он сбросит на значение по умолчанию с названием нового типа задачи.

В виду их специфичности, задачи "Работа по форме" и "Условный переход" с ее подпроцессом шаблон маршрута будут рассмотрены отдельно.

Работа по форме

Данный тип задачи может иметь два элемента "Остановка", либо одну "Остановку" и возврат на предыдущий этап. Условием такого поведения является выбор этапов "Согласование" или "Утверждение" в качестве типа работы.

Последовательная работа по форме

В данном случае задача имеет один логический оператор "Исключающее ИЛИ". Количество отрицательных потоков зависит от типа работы.

В случае выбора типа "Работа" или "Ознакомление" задача имеет один отрицательный поток, ведущий к элементу "Остановка".

Если же выбрано "Согласование" либо "Утверждение", возникает следующее:

  • если для данных типов не настроен возврат, отображается один общий отрицательный поток, ведущий к элементу "Остановка";

  • если настроен возврат на предыдущий этап - из оператора "Исключающее ИЛИ" ведут два отрицательных потока:

    • к элементу "Остановка";

    • непосредственно возврат к этапу.

Рисунок 231. Последовательная работа по форме (тип работы "Работа"/"Ознакомление")

Последовательная работа по форме (тип работы "Работа"/"Ознакомление")

Рисунок 232. Последовательная работа по форме (тип работы "Согласование"/"Утверждение", возврат)

Последовательная работа по форме (тип работы "Согласование"/"Утверждение", возврат)

Условный переход

Последовательный условный переход

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

Если задача "Условный переход" не имеет ни одного перехода с запуском шаблона маршрута, то для нее отображается один оператор "Исключающее ИЛИ".

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

Рисунок 233. Условный переход в группе параллельных задач

Условный переход в группе параллельных задач

Исходящими потоками элемента XOR1 являются:

  • положительные потоки управления, представляющие собой условия переходов;

  • поток для переходов к этапу / по умолчанию, либо при отсутствии условий для всех переходов.

Исходящими потоками элемента XOR2 являются:

  • положительные потоки управления, представляющие собой переходы на этапы согласно их условиям;

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

  • отрицательный поток управления, определяющий возврат самой задачи "Условный переход".

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

При создании / изменении этапа "Условный переход" таким образом, что переход будет установлен на несуществующий этап, то он будет осуществляться на автоматически создаваемое событие "Остановка". В момент, когда такой этап будет создан, событие "Остановка" автоматически удалится, и поток первоначального перехода будет вести к этому этапу.

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

Рисунок 234. Последовательный условный переход: 2 шаблона, 2 перехода

Последовательный условный переход: 2 шаблона, 2 перехода

Рисунок 235. Последовательный условный переход: 2 шаблона

Последовательный условный переход: 2 шаблона

Рисунок 236. Последовательный условный переход: 2 перехода

Последовательный условный переход: 2 перехода

Условный переход без перехода на следующий элемент

Если этап "Условный переход" был создан / изменен таким образом, что ни один переход не будет вести на следующую задачу / событие "Конец", то от первого логического оператора "Исключающее ИЛИ" добавится отрицательный поток к следующей задаче / событию "Конец". Данный поток будет содержать лейбл:

Нет условий для этого перехода

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

Рисунок 237. Условный переход без перехода на следующий элемент

Условный переход без перехода на следующий элемент

Шаблон маршрутов задачи "Условный переход"

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

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

Данный элемент невозможно удалить отдельно. Он автоматически удаляется вместе с задачей "Условный переход", к которой он относится.

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

Параллельные задачи с условием

Параллельные задачи с условием делятся на два типа:

Задачи, неуспешное завершение которых ведет к остановке всего маршрута

  • "Перевод";

  • "Назначение на должность";

  • "Увольнение";

  • "Таймер";

  • "Копировать в личное дело";

  • "Назначение календаря";

  • "Результат запроса";

  • "Работа по форме";

  • "Переназначение работ";

  • "Сопоставление записей реестра".

Возврат доступен только для задачи типа "Работа по форме" (для типов работ "Согласование" и "Утверждение").

Для перечисленных выше задач логический оператор "Исключающее ИЛИ" добавляется внутри группы логических операторов "И". То есть остановка, либо возврат (только для задачи "Работа по форме") осуществляется без ожидания окончания остальных параллельных этапов.

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

  • "Согласование";

  • "Утверждение";

  • "Регистрация";

  • "Работа по форме" (для типов работ "Согласование" и "Утверждение");

  • "Запуск маршрута по шаблону";

  • "Ввод значения показателей";

  • "Условный переход" (подробнее).

Для этих задач логический оператор "Исключающее ИЛИ" добавляется после второго логического оператора "И". Таким образом возврат, либо остановка таких задач будут ожидать окончания всех параллельных этапов.

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

Рисунок 238. Параллельный условный переход: 2 шаблона, 2 перехода

Параллельный условный переход: 2 шаблона, 2 перехода

Рисунок 239. Параллельный условный переход: 2 шаблона

Параллельный условный переход: 2 шаблона

Рисунок 240. Параллельный условный переход: 2 перехода

Параллельный условный переход: 2 перехода

Параллельная работа по форме

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

В случае, если в качестве типа работы выбрано "Работа" или "Ознакомление" задача имеет единственный логический оператор "Исключающее ИЛИ", объединенный отрицательным потоком с элементом "Остановка".

Если же типом работы выбрано "Согласование" или "Утверждение", то задача будет иметь два оператора "Исключающее ИЛИ":

  • Первый располагается после самой задачи и отрицательным потоком ведет к элементу "Остановка" - данное условие подразумевает успешность задачи "Работа по форме".

  • После синхронизирующего оператора "И" - такое условие определяет успешность этапа "Согласование" или "Утверждение". Может быть представлено в виде возврата на предыдущий этап.

Если в группу параллельных задач входят иные задачи с условием, элементы "Исключающее ИЛИ" и "Остановка" (при наличии), располагающиеся после синхронизирующего оператора "И", будут общими.

Рисунок 241. Параллельная работа по форме (тип работы "Работа"/"Ознакомление")

Параллельная работа по форме (тип работы "Работа"/"Ознакомление")

Рисунок 242. Параллельная работа по форме (тип работы "Согласование"/"Утверждение", возврат)

Параллельная работа по форме (тип работы "Согласование"/"Утверждение", возврат)

Действия с элементами
Добавление

Добавление элементов осуществляется через потоки управления или задачу. При наведении курсором мыши на элемент отобразится кнопка +. По нажатию на кнопку отобразится палитра, содержащая элемент "Задача". Кнопка + и палитра отображаются в месте наведения/нажатия курсора.

Добавление элементов невозможно для потоков управления:

  • между операторами "Исключащее ИЛИ" и "И";

  • между операторами "И" и "Исключащее ИЛИ";

  • между задачей и "Исключающем ИЛИ", относящимся к ней же;

  • в отрицательный поток управления.

Добавление параллельной задачи

Добавление параллельной задачи осуществимо несколькими способами:

  • при указании нескольких ответственных за исполнение какой-либо задачи (добавится столько задач, сколько и указано ответственных);

  • добавление от элемента "Задача";

  • добавление в потоки управления, связывающие группу параллельных задач.

В первых случаях также автоматически добавляются два логических оператора "И", объединяющие новую группу параллельных задач.

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

Добавление последовательной задачи

При выборе элемента "Задача" он добавляется в тот поток управления, из которого была открыта палитра элементов. Добавленная задача станет выделенной, а в панели редактирования поля примут значения по умолчанию (как при добавлении нового этапа в режиме "Маршрут").

При добавлении задач с условием также добавится логический оператор "Исключающее ИЛИ" и потоки управления с их лейблами согласно настройкам в панели редактирования.

Удаление

Удаление доступно только для элементов типа "Задача". Данные элементы имеют контекстное меню с пунктом "Удалить".

При удалении задач, связанных исходящим потоком с логическим оператором "Исключающее ИЛИ" автоматически удалится он, а также все связанные с ним переходы и возвраты / события "Остановка".

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

Валидация

Необходимо проводить следующую валидацию бизнес-процесса.

При попытке сохранения процесса, содержащего лишь события "Начало" и "Конец" необходимо отображать ошибку с текстом:

Маршрут не может быть пустым

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

Все несохраненные изменения будут потеряны! Продолжить?

При этом в зависимости от выбора методолога необходимо:

  • "ОК" - закрывать окно и переходить на страницу без сохранения изменений;

  • "Отмена" - закрывать окно.

Форматирование

Цвета:

  • #ddefff - тело выделенной задачи;

  • #89bfff - контур выделенного элемента;

  • #e6c644 - контур элемента в состоянии mouse_over;

  • #f47172 - отрицательный поток управления.

Действия при обновлении системы

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

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

Других видимых изменений быть не должно.

Рисунок 243. Графический редактор маршрутов в подразделе конфигуратора "Шаблоны маршрутов" (часть 1)

Графический редактор маршрутов в подразделе конфигуратора "Шаблоны маршрутов" (часть 1)

Рисунок 244. Графический редактор маршрутов в подразделе конфигуратора "Шаблоны маршрутов" (часть 2)

Графический редактор маршрутов в подразделе конфигуратора "Шаблоны маршрутов" (часть 2)