Предлагаемое решение содержит ряд возможностей, совершенно необходимых для полноценной работы с бизнес-процессами, в частности, управления ходом процесса, его отладки и наглядного представления работы.
Раздел легко переносится на любые проектные решения версий с 3.2.0. до 3.3.2, представляя собой часть пакета элементов БП для проектных решений. Коэволюция элементов БП и представляемого раздела в ряде проектов за прошедший год позволила решить ряд важных задач, с которыми постоянно сталкиваются пользователи, и которые невозможно решить базовыми средствами без серьёзной доработки.
В настоящей публикации подробно описывается работа раздела.
По существу раздел представляет собой модификацию базового раздела «Процессы». Конструкция раздела стандартная, но вместо окна групп в верхнем левом углу находится окно иерархии процессов. Древовидное представление данного окна отражает реальный путь прохождения процессов, приведших в выделенному в основном реестре шагу. На представленной иллюстрации видно, что процесс «Согласование договора» запустил два подпроцесса: «Назначение менеджера ОС» и «Согласование договора с клиентом». Первый уже завершён, а второй, в свою очередь, запустил подпроцесс «Подписание договора», который тоже запустил два подчинённых подпроцесса, шаг одного из которых выделен в основном реестре.
При щелчке по любой ветке дерева в основном реестре отфильтровываются шаги, принадлежащие выделенной ветке (в окне «Фильтры» автоматически накладывается фильтр по ID процесса), что позволяет быстро сориентироваться, какие шаги в каких из связанных процессов ожидают своего выполнения.
Окно фильтрации не имеет никаких отличий от базового, и функция его аналогична.
В основном реестре существуют четыре представления: «Мои элементы», «Все элементы», «Абсолютно все элементы», «Все процессы». Первые два представления доступны всем пользователям, два последних – только администраторам.
В представлении «Мои элементы» отображаются не пройденные шаги, где ответственный – текущий пользователь.
В представлении «Все элементы» отображаются шаги других пользователей по процессам, где на определённом этапе участвует текущий пользователь. Важно, что там отображаются не вообще все невыполненные шаги системы, а только те, к которым имеет отношение текущий пользователь. Например, если два разных менеджера завели каждый свою продажу, то процессы друг друга, связанные с этими продажами, они взаимно не будут видеть. Но если в обеих продажах один и тот же куратор, он увидит оба процесса, хотя менеджеры могут и не догадываться об успехах процесса коллеги. Обратите внимание на количество видимых шагов на иллюстрации.
Представление «Абсолютно все элементы» доступно только администратору. Здесь отображаются все невыполненные шаги, которые есть в данный момент в системе. Обратите внимание на количество видимых шагов на иллюстрации.
Представление «Все процессы» также доступно только администратору. Здесь отображаются только сами процессы, не их шаги. Здесь видны как выполненные, так и находящиеся в работе процессы. Используя это представление вместе с деревом иерархии процессов можно вывести в основной реестр любые шаги (в том числе и выполненные) по любым процессам.
Кнопки в основном реестре идентичны по выполняемым функциям базовым, за исключением кнопки справа – «Удалить процессы…». Эта кнопка доступна только администратору.
Как видно из выпадающего списка, есть возможность удалить как процесс, которому принадлежит выделенный шаг, так и вообще все процессы системы. В последнем случае специальное предупреждение переспросит пользователя, точно ли он готов удалить ВСЕ процессы.
Процесс удаляется вместе с подчинёнными подпроцессами. Вместе с процессом удаляются и задачи, созданные по нему. Остальные сущности, используемые в процессе (например, контрагент, проект и т.п.), не удаляются, но с них снимается запрет на удаление. Данный запрет существует, пока существует хотя бы один процесс, использующий в своей работе данную сущность. При попытке удалить такую запись возникает сообщение об использовании данной сущности в процессе с указанием шага.
Блокировку может снять администратор, не удаляя сам процесс, используя деталь «Сущности» раздела «Процессы». Но, фактически, такая возможность избыточна: удалив сущность, с которой работал процесс, мы тем самым сделаем его бессмысленным. Поэтому указанная деталь по умолчанию в разделе «Процессы» не отображается.
Деталь раздела «Все элементы» содержит все элементы процесса (включая и не Action), к которому принадлежит выделенная в основном реестре запись. Для администратора на этой детали доступна кнопка «Перезапустить отсюда». При нажатии этой кнопки текущий процесс перезапускается с указанного шага. Все шаги, что следовали прежде за перезапускаемым шагом, удаляются, включая созданные по ним задачи и блокировки удаления связанных сущностей. Параметры процесса сохраняют свои значения, за исключением случаев, когда был произведён ConnectParameter к параметрам удаляемого шага. При перезапуске ветки, содержащей подпроцессы, они также удаляются по тем же правилам. Фактически, процесс приводится в то состояние, в котором он был на момент достижения перезапускаемого шага.
Описанная возможность крайне необходима для исправления ошибок пользователей (вместо одного результата задачи случайно указал другой, и пошёл по неправильному пути). Также очень полезна для ускоренного тестирования бизнес-процесса, в особенности, когда для достижения тестируемого шага требуется пройти целый каскад процессов, либо когда следует протестировать разные ветки процесса. Нет необходимости каждый раз проходить весь каскад процессов заново: достаточно перезапустить с шага, где происходит ветвление. Наконец, в случае программной ошибки в каком-то месте процесса достаточно перезапустить этот шаг после исправления ошибки: процесс отработает корректно, а работа пользователя, предшествовавшая сбойному шагу, сохранится.
Деталь «Элемент» является основной рабочей деталью раздела. Её внешний вид отличается в версиях 3.2 и 3.3, наличием в последней шапки с описанием выделенного элемента:
Для базовых элементов заголовок выглядит, как «Стандартный элемент». В проектных элементах система описывает на основании свойств выделенного шага, что представляет собой выделенный элемент. Данное свойство важно как для пользователя, так и для программиста, ведь не всегда по названию можно определить функцию данного элемента в процессе. Ниже приводятся примеры автоматически сформированных заголовков для проектных элементов:
Группа полей слева - «ID», «Элемент», «WorkflowID» несёт информативную функцию, и нужна, по большей части, только программисту. Благодаря указанным полям можно мгновенно идентифицировать элемент и процесс в их таблицах. В базовой версии даже такая задача может быть очень трудоёмка.
Поле «Владелец элемента» содержит указание на роль владельца шага в бизнес-процессе, и связано с логикой определения ответственных. Изменение значения в этом поле позволяет передать шаг пользователю с другой ролью (например, если шаг был поставлен по ошибке). Подробнее о ролях пользователей в процессе и функциях этого поля я напишу в последующей публикации, посвящённой общим свойствам и логике работы проектных элементов БП.
Ниже чёрным шрифтом выводится название текущего элемента на схеме БП. Такая информация полезна в том случае, если реальное название шага отличается от его названия на схеме (например, когда оно формируется динамически, сопоставить реальный шаг и шаг на диаграмме удобно именно по этому полю).
Кнопка «Пройденный путь» открывает схему прохождения текущего бизнес-процесса с указанием текущего шага. На схеме отображаются только пройденные шаги.
Кнопка «Отладка логики» доступна только администратору, и становится активной только для элемента «Логика». Нажатие на эту кнопку вызывает отладчик и помещает в него функцию, содержащуюся в элементе «Логика». Подробнее о работе «Логики» я напишу в отдельной публикации.
Группа полей справа содержит грид используемых в процессе сущностей и поле «Подсказка». Каждый из проектных элементов может содержать некую текстовую подсказку (например, указания менеджеру, какими критериями руководствоваться при заполнении карточки или ответе на вопрос по БП). Эта подсказка отображается здесь и вызывается кнопкой «Подсказка» из окна элемента. Подробнее об автоматически генерируемых кнопках окон проектных элементов я напишу в последующей публикации, посвящённой общим свойствам и логике работы проектных элементов БП.
В представленном гриде, как и в обычном, можно настраивать колонки, открывать карточки редактирования связанных сущностей и переходит в их разделы.
Описываемый раздел и деталь не принадлежат какому-то определённому проектному решению. Название «проектные элементы БП» указывает лишь на то, что до сих пор клиент получает весь описанный функционал в качестве бесплатного довеска к проектному решению, так как загрузить пакет сервисов проектных элементов намного проще, чем разрабатывать каждый раз специфический функционал заново. Разработка описываемого решения носила превентивный характер (то есть, ещё до момента, когда такой функционал в действительности потребуется в каком-то проекте), что объясняет его гибкость и лёгкость загрузки на любые версии с 3.2.0. до 3.3.2.
Полагаю, что клиенты, пользующиеся базовым функционалом раздела «Процессы» охотно купят и установят у себя предлагаемое решение.