Введение в визуальный редактор процессов¶
В данном разделе представлена информация о возможностях визуального редактора процессов.
Редактор процесса можно разделить на 4 основных элемента:
-
Панель с кнопками редактора - на данной панели отображаются все доступные кнопки редактора (например, “Сохранить”, “Обновить”, “Заблокировать на редактирование” и т.д.).
-
Панель с действиями - на данной панели отображаются все доступные действия.
-
Макет процесса - область, где происходит визуальное отображение процесса. Состоит из узлов, связей между ними и добавленными на макет дополнительными визуальными объектами (например, подписи).
-
Редактор объекта - данный редактор представляет из себя панель, открывающуюся поверх макета процесса при выборе редактируемого элемента (узла, связи) или при нажатии на кнопку Настройки процесса. Данная панель также может быть закрыта или свёрнута с помощью соответствующих кнопок на верхней правой части панели.
Панель с кнопками редактора¶
На данной панели располагаются все доступные пользователю кнопки для управления редактором процесса.
Кнопки панели:
-
Сохранить процесс - осуществляет сохранение версии процесса. Кнопка доступна только, если процесс заблокирован на редактирование или еще не был сохранен на сервере. Горячая клавиша [Ctrl+s].
-
Обновить процесс - производит обновление версии процесса и редактора. Кнопка доступна только если процесс уже был сохранен на сервере. Горячая клавиша [F5].
-
Заблокировать процесс - производит блокировку версии процесса на редактирование.
-
Разблокировать процесс - производит снятие блокировки на редактирование с версии процесса.
-
Настройки процесса - производит открытие на панели Редактор объекта формы для редактирования настроек процесса (см. Редактор процесса).
-
Отменить - производит отмену последнего изменения, производимого над макетом редактора. Горячая клавиша [Ctrl+z].
-
Вернуть - производит возврат последнего отмененного изменения над макетом редактора. Горячая клавиша [Ctrl+y].
-
Открыть руководство - производит открытие руководства разработчика бизнес-процесса. По умолчанию открывается ссылка на руководство на сайте. Ее можно переопределить путем переопределения строки локализации WorkflowEngine_ManualLink в библиотеке локализации проекта. Горячая клавиша [F1].
-
Открыть окно поиска - производит открытие окна поиска по шаблону бизнес-процесса. Описание и функциональность данного окна можно посмотрать в разделе Окно поиска. Горячая клавиша [Ctrl+f].
Панель с действиями¶
На данной панели отображаются все доступные действия.
Для добавления действия на панель редактора можно просто нажать на него (действие добавится в верхний левый угол макета) или перетащить, удерживая левую кнопку мыши, на макет, на связь (для добавления непосредственно на связь с разделением связи на две) или непосредственно в узел (как последующее действие узла). Добавление узлов доступно, только если процесс заблокирован на редактирование.
В рамках решения можно разрабатывать свои типы действий. Пример того как сделать можно посмотреть в разделе Создание собственных действий.
Окно поиска¶
Окно поиска представляет из себя механизм, позволяющий производить поиск и замену строк среди объектов шаблона процесса.
Данное окно состоит из следующих компонентов:
-
Строка фильтра - здесь вводится искомая строка. Дополнительные кнопки позволяют перезапустить поиск и открыть строку замены.
-
Строка замены - в данное поле вводится строка, на которую должна заменится искаомая строка. Замена производится путем нажатия на кнопку Заменить для замены строк только в выделенных в таблице результатов объектах, или путем нажатия кнопки Заменить все для замены всех вхождений строки.
-
Совпадение слова целиком - при наличии установленного флага производит поиск только совпадений слова целиком.
-
Таблица с результатом поиска - отображает все объекты, в которых была найдена искомая строка. В случае, когда искомая строка не задана, отображает все объекты шаблона процесса. Когда искомая строка задана, то для каждого объекта можно посмотреть места вхождения искомой строки, а также при выборе конкретного объекта или места вхождения отобразится окно с предпосмотром с подсветкой вхождения искомой строки.
Макет процесса¶
Макет процесса - это область, где происходит визуальное отображение процесса. Изменять, добавлять или удалять объекты процесса можно только при наличии блокировки на редактирование процесса.
Макет процесса поддерживает работу с историей изменений, производимых в макете процесса. С помощью сочетания клавиш Ctrl+Z можно отменить последнее изменение, а Ctrl+Y вернуть последнее отмененное изменение.
Важно, что отменять можно только изменения, произведенные непосредственно на макете (добавление узла/связи/подписи, перемещение элемента на макете, изменение размера узла и т.д.).
У макета процесса есть контекстное меню, которое разрешает производить следующие действия:
-
Масштаб по умолчанию - устанавливает масштаб макета процесса на значение по умолчанию.
-
Размер сетки - группа действий, которая позволяет изменить размер сетки или отключить ее.
-
Без сетки - отключает сетку.
-
Маленький - изменяет размер сетки на маленький.
-
Средний - изменяет размер сетки на средний. Установлен по умолчанию.
-
Большой - изменяет размер сетки на большой.
-
-
Сохранить картинку… - позволяет сохранить текущий макет процесса как картинку в формате .png. При формировании картинки учитываются также все изменения, связанные с выбором элементов, размером сетки.
-
Вставить - производит вставки скопированного узла на макет.
На макете можно выделить следующие элементы:
Узел¶
Узел может иметь различную форму и цвет (это определяется первым действием, входящим в данный узел). Узлы соединены связями между собой. В одном узле может быть одно или несколько действий.
Визуальные особенности¶
- Если в ходе работы процесса узел может содержать несколько экземпляров, это визуально отображается на узле.
- Если для узла настроены подписки по умолчанию, то цвет данного узла в редакторе шаблона становится зеленым.
Действия над узлами¶
-
Добавление узла
-
Добавить новый узел можно из панели действий, просто нажав по действию, с которым будет создан новый узел. В такой ситуации узел добавится в верхний левый угол открытой области макета.
-
Добавить новый узел можно путем перетаскивания в область макета действия из панели с действиями. Узел добавится в выбранную область непосредственно на макет. Если действие добавляется к существующем узлу, новый узел создан не будет.
-
Любой узел можно скопировать. Для этого нужно открыть контекстное меню узла и выбрать пункт Копировать или выбрать узел и нажать на сочетание клавиш Ctrl+C (важно, одновременно можно скопировать только один узел). Для добавления узла необходимо нажать правой кнопкой мыши на макете или стрелке и в контекстном меню выбрать пункт Вставить (горячая клавиша Ctrl+V) или Вставить в связь соответственно. Узел будет добавлен в позицию нажатой правой кнопки мыши.
-
-
Выбор узла
-
Выбрать узел можно простым нажатием на него. При этом откроется редактор узла (смотри раздел Редактор узла).
-
С помощью зажатой клавиши Ctrl или Shift можно выбирать несколько узлов одновременно. При выборе нескольких объектов сразу редактор узла не отображается.
-
С помощью зажатой клавиши Shift при нажатии по пустому месту на макете можно осуществить массовый выбор узлов в области.
-
Путем нажатия сочетания клавиш Ctrl+A можно выделить все узлы процесса.
-
При выборе узла рядом с ним отобразится дополнительная область узла. В данной области есть кнопки Удалить узел и Добавить связь. Для добавления связи необходимо зажать данную кнопку и потянуть к другому узлу, к которому создается новая связь.
-
-
Изменение узла
-
Если поднести курсор мыши к краю узла, то можно изменить его размер. По умолчанию размер меняется ступенчато по полклетки. Если необходимо изменять размер попиксельно, необходимо зажать клавишу Shift.
-
Если нажать на узел и зажать левую кнопку мыши, то его можно переместить. Также можно перемещать несколько выбранных узлов. По умолчанию перемещение узлов производится ступенчато по полклетки. Если необходимо установить позицию узлов попиксельно, необходимо зажать клавишу Shift.
-
Иконку и подпись узла можно изменить через редактор узла (смотри раздел Редактор узла).
-
К узлам могут быть добавлены подписи. Для добавления подписи откройте контекстное меню узла и выберите пункт Добавить подпись.
-
-
Добавление связи
-
Чтобы добавить связь нужно выбрать узел, на появившейся боковой панели зажать Добавить связь и потянуть ее к другому узлу.
-
Также можно создать новую связь, просто зажав клавишу Ctrl, нажать на узел левой кнопкой мыши и не отпуская ее потянуть появившуюся новую стрелку к другому узлу.
-
-
Удаление узла
-
Чтобы удалить узел нужно выбрать узел и на появившейся боковой панели нажать кнопку Удалить.
-
Можно выбрать один или несколько узлов и нажать на кнопку Delete на клавиатуре.
-
Более подробно о настройках узла можно посмотреть в разделе Редактор узла.
Связь¶
Связью называется стрелка с подписью, соединяющая узлы между собой. Стрелка может иметь различную форму в зависимости от настроек связи. Стрелка рисуется автоматически. Можно вручную указать с какой части узла и в какую стрелка будет рисоваться, а также добавлять к ней точки привязки для уточнения формы стрелки.
Визуальные особенности¶
Если в настройках связи указано, что переход осуществляется асинхронно, то стрелка рисуется пунктиром.
Если в настройках связи указано, что при переходе по ней необходимо всегда создавать новый экземпляр узла (если возможно), то стрелка имеет сдвоенный наконечник.
Если в настройках связи указано, что при переходе по ней никогда не создаются новые экземпляры, то стрелка имеет полоску возле ее окончания.
Если в настройках связи задано условие выхода из узла или условия перехода в узел, то к началу стрелки добавляется ромб.
Если стрелка не может быть нарисована по какой-либо из причин (например, наложение узлов), то стрелка отобразится красным цветом напрямую между узлами.
Действия над связью¶
-
Добавление связи
-
Чтобы добавить связь нужно выбрать узел, на появившейся боковой панели зажать Добавить связь и потянуть ее к другому узлу.
-
Также можно создать новую связь, просто зажав клавишу Ctrl, нажать на узел левой кнопкой мыши и не отпуская ее потянуть появившуюся новую стрелку к другому узлу.
-
-
Выбор связи
-
Выбрать связь можно простым нажатием на нее. При этом откроется редактор связи (смотри раздел Редактор связи).
-
С помощью зажатой клавиши Ctrl или Shift можно выбирать несколько связей одновременно. При выборе нескольких объектов сразу редактор связи не отображается.
-
-
Изменение связи
-
Чтобы изменить позицию начала стрелки или окончания стрелки, нужно выбрать ее и потянуть за кружок, примыкающий к соответствующему узлу.
-
Чтобы добавить точку привязки нужно нажать правой кнопкой мыши на место стрелки, куда хотите добавить точку привязки и выбрать пункт Добавить точку привязки. Ее можно выбирать, двигать и удалять как обычный узел (для нее нет редактора, ей нельзя поменять размер).
-
Чтобы изменить узел начала или окончания связи нужно выбрать стрелку и потянуть ее за кружок, примыкающий к узлу, от которого нам нужно отвязать стрелку, и перенести на узел, к которому нужно привязать стрелку.
-
-
Изменение позиции подписи - есть два режима расчета позиции подписи: автоматический и относительно “якоря” на стрелке. Если “якорь” активен, то он отображается как зеленый кружок на стрелке, иначе как серый. По умолчанию позиция подписи определяется автоматически. Сменить режим можно одним из следующих способов:
-
Открыть контекстное меню стрелки и выбрать пункт Автоматический расчет позиции подписи. Этот пункт переключает режим с одного на другой.
-
Переместить вручную подпись к стрелке. При перемещении отключается режим автоматического расчета позиции подписи.
-
Переместить вручную якорь. Это отключит режим автоматического расчета позиции подписи.
-
-
Изменение текста подписи - текст подписи изменяется через редактор связи (смотри раздел Редактор связи).
-
Удаление связи
- Чтобы удалить связь нужно выбрать одну или несколько связей и нажать на кнопку Delete на клавиатуре.
Более подробно о настройках связи можно посмотреть в разделе Редактор связи.
Подпись¶
Подпись - это текст, добавленный на макет. Подпись может быть связана с узлом.
Подписи могут иметь в качестве текста одну или несколько констант локализации. Для добавления нескольких констант локализации следует каждую константу обрамлять в фигурные скобки. Например:
{$Text1} текст без локализации {$Text2}
.
Редактирование текста подписи производится прямо на макете. Для этого дважды нажмите на подпись и на ней откроется редактор текста.
Редактор объекта¶
Редактор объекта - это внутренняя панель редактора процесса, в которой отображается форма редактирования выбранного объекта (процесса, узла, связи или действия). Для каждого вида объекта предусмотрена своя форма для редактирования.
Панель имеет следующие кнопки управления (слева на право):
-
Назад - открывает форму предыдущего объекта. Актуально для редактора действий.
-
Отменить изменения - производит отмену всех изменений, произведенных над объектом (в случае Узла, также и всех его действий), которые не были сохранены на сервере.
-
Провести валидацию объекта - по нажатию кнопки происходит валидация объекта. В валидацию входит компиляция скриптов объекта и проверка некоторых параметров объекта. Для процесса происходит валидация самого процесса, каждого узла, действия и связи, для узла - валидация данного узла и его действий, для действия - валидация самого действия, для связи - валидация самой связи.
-
Закрепить редактор - производит закрелпение редактора на одной стороне, чтобы его положение не изменялось в зависимости от положения выбранного объекта на макете.
-
Посмотреть содержимое - открывать окно с содержимым объекта в виде хеша.
-
Свернуть - сворачивает панель до минимизированного состояния. Панель будет минимизирована, пока не нажмут кнопку Развернуть.
Внешний вид свернутого редактора объекта:
-
Закрыть - закрывает панель.
Редактор процесса¶
Редактор процесса открывается по нажатию кнопки Настройки процесса на панели с кнопками редактора.
В редакторе процесса присутствует следующие параметры и кнопки:
-
Имя - имя процесса, которое используется в качестве имени экземпляра процесса. В нём могут использоваться плейсхолдеры.
-
Описание - текстовое описание процесса.
-
Уровень логирования - определяет уровень логирования, который будет установлен для экземпляров процесса при их создании.
-
Редактировать параметры процесса - кнопка, открывает редактор параметров для процесса. Про редактор параметров можно посмотреть в разделе Редактор параметров.
-
Выполнить компиляцию - кнопка, производит компиляции скриптов процесса, всех узлов, связей и действий. В случае, если возникли ошибки компиляции, они отобразятся в диалоговом окне.
-
Открыть файл в проекте - кнопка, производит открытие файла с основным скриптом процесса после выгрузки скриптов в проект .csproj.
-
Выбрать проект - кнопка, позволяет выбрать проект .csproj для выгрузки скриптов процесса в проект в виде структуры файлов в формате .cs. Более подробно смотрите в разделе Выгрузка скриптов процесса.
-
Обновить проект - кнопка, производит повторную выгрузку скриптов процесса в проект.
-
Обновить процесс по проекту - кнопка, производит загрузку скриптов из проекта обратно в процесс.
-
Показать все ссылки зависимостей - кнопка, отображает все добавленные ссылки на сторонние библиотеки, добавленные в рамках процесса в скриптах через директиву _
#reference_
. -
Базовый класс процесса - определяет класс, который будет являться базовым для всех компилируемых объектов процесса. Его свойства и методы могут использоваться во всех скриптах и условиях процесса. Подробнее смотрите в разделе Создание кастомного базового класса процесса.
-
Основной скрипт процесса - скрипт на языке C#, который может быть использован в любом месте процесса.
Редактор узла¶
Редактор узла открывается при выборе узла.
В редакторе узла присутствует следующие параметры и кнопки:
-
Имя - уникальное в рамках процесса имя узла.
-
Заголовок - отображаемый на самом узле заголовок. Поддерживает строки локализации.
-
Описание - текстовое описание узла.
-
Иконка - иконка, которая отображается на узле.
-
Редактировать параметры узла - кнопка, открывает редактор параметров для узла. Про редактор параметров можно посмотреть в разделе Редактор параметров.
-
Компилировать - кнопка, производит компиляции скриптов всех действий узла. В случае, если возникли ошибки компиляции, они отобразятся в диалоговом окне.
-
Подписки узла по умолчанию - определяет список типов сигналов, на которые подписывается данный узел при запуске процесса.
-
Действия - таблица со списком всех действий узла. Можно изменять порядок действий в узле или удалять действия. При удалении последнего действия, узел удалится вместе с ним. Для открытия редактора действия необходимо дважды щелкнуть (мышью) по строке таблицы. Из данной таблицы также можно копировать одно или несколько действий. Для этого нужно выделить строки с действиями, которые нужно копировать, открыть контекстное меню и нажать “Копировать”.
-
Входящие связи - список связей, входящих в данный узел. При двойном клике по строке таблицы откроется форма для редактирования параметров связи, относящихся к переходу в данный узел. Более подробно о параметрах можно посмотреть в разделе Редактор связи.
-
Исходящие связи - список связей, исходящих из данного узла. При двойном клике по строке таблицы откроется форма для редактирования параметров связи, относящихся к выходу из данного узла. Более подробно о параметрах можно посмотреть в разделе Редактор связи.
Редактор связи¶
Редактор связи открывается при выборе связи.
В редакторе связи присутствует следующие параметры и кнопки:
-
Имя - уникальное в рамках процесса имя связи.
-
Заголовок - текст отображаемой на стрелке подписи. Поддерживает локализацию.
-
Режим перехода - определяет режим создания экземпляра узла при переходе по данной связи.
Может иметь одно из трех значений:-
Создать экземпляр узла, если его нет - при переходе сигнала в узел по данной связи, если для данного узла еще нет активных экземпляров узла, то создается новый экземпляр и для него выполняется обработка, иначе сигнал отправляется на все активные экземпляры узла.
-
Всегда создавать экземпляр узла - при переходе сигнала в узел по данной связи, всегда будет создаваться новый экземпляр узла и для него будет выполняться обработка сигнала. Исключением являются только узлы, которые содержат действия, для которых не допустимо существование нескольких активных экземпляров узла.
-
Никогда не создавать экземпляр узла - при переходе сигнала в узел по данной связи, если для данного узла еще нет активных экземпляров узла, то обработка данного сигнала прерывается, иначе сигнал отправляется на все активные экземпляры узла.
-
-
Режим обработки сигнала - определяет режим обработки сигнала, который будет отправлен через данную связь.
Может иметь одно из трех значений:-
По умолчанию - обработка сигнала будет производиться в текущем контексте обработки процесса.
-
Асинхронный - обработка сигнала будет производиться асинхронно на Chronos.
-
После загрузки файлов - обработка сигнала будет производиться после сохранения контента файлов при сохранении карточки с файлом, или в текущем контексте, если нет сохраняемой карточки или у карточки нет сохраняемых файлов.
-
-
Блокировать процесс при асинхронном вызове - определяет, нужно ли блокировать процесс при асинхронной обработке и обработке после загрузки файлов. При синхронной обработке (по умолчанию) процесс блокируется автоматически.
-
Условие выхода из узла
-
Условие - условие на языке C#. Условие выполняется в контексте узла, из которого происходит переход. Если условие не выполнено, то переход по данной связи не осуществляется.
-
Описание условия - текстовое описание условия.
-
-
Условие входа в узел
-
Условие - условие на языке C#. Условие выполняется в контексте узла, в который происходит переход. Если условие не выполнено, то переход по данной связи не осуществляется.
-
Описание условия - текстовое описание условия.
-
По умолчанию условия пишутся в упрощенном режиме, в котором нужно написать просто результат.
Например:
SignalObject.Type == "SomeType"
С помощью директивы \#script
можно переключить режим написания условия в режим скрипта. Тогда в условие пишется как обычный метод C#, который должен возвращать значение типа bool
.
Например:
#script
var signalType = SignalObject.Type;
return signalType == "SomeType";
Редактор действия¶
Редактор действия открывается из редактора узла. В редакторе действия доступна кнопка Назад, при нажатии которой открывается редактор узла.
Редактор действия имеет различный набор параметров, в зависимости от редактируемого действия.
Пример редактора действия Задание:
В общий для всех редакторов действий входит следующий набор параметров и кнопок:
-
Имя - уникальное в рамках узла имя действия.
-
Редактировать параметры действия - кнопка, открывает редактор параметров для действия. Все настройки, которые доступны для определенных типов действий, записываются в параметры действия. Про редактор параметров можно посмотреть в разделе Редактор параметров.
-
Компилировать - кнопка, производит компиляции скриптов действия. В случае, если возникли ошибки компиляции, они отобразятся в диалоговом окне.
-
Список обрабатываемых сигналов - список типов сигналов, при получении которых действие должно производить обработку. Если не задано, действие выполняется на любой тип сигнала.
-
Предобработка - скрипт на языке C#, который выполняется перед самим действием. Допускает отмену выполнения конкретного действия путем задания свойства
Cancel
. -
Постобработка - скрипт на языке C#, который выполняется после выполнения действия. Допускает отмену дальнейшей обработки последующих действий узла путем задания свойства
Cancel
.
Редактор параметров¶
Редактор параметров открывается при нажатии соответствующей кнопки в редакторах процесса, узла или действия.
Редактор параметров служит для ручного создания и изменения параметров процесса, узла или действия.
Типы параметров¶
Параметры редактора поддерживают следующие типы данных:
-
Да/Нет - значение типа boolean.
-
Строка - значение типа string.
-
Вещественное число - значение типа double.
-
Десятичное число - значение типа decimal.
-
Целое число - значение типа int.
-
Идентификатор - значение типа Guid. Редактор имеет кнопку для генерации случайного идентификатора.
-
Дата/Время - значение типа DateTime. Редактор поддерживает возможность настройки типа хранения значения в UTC или в локальном часовом поясе.
-
Объект (хеш-таблица) - сложный объект, хранящий другие параметры внутри себя в виде пар ключ-значение.
Может использовать типы объектов, описанные в настройках конструктора процесса.
При выборе типа объекта его значение можно задать путем выбора значения из представления по нажатию кнопки Выбрать значение. -
Список - сложный объект, хранящий другие параметры внутри себя в виде списка.
Может использовать типы объектов, описанные в настройках конструктора процесса, а также имеет Режим секции, при включении которого в каждую строку будет добавлено поле RowID.
После выбора типа список можно наполнить значениями с помощью кнопки кнопки Выбрать значения. После выбора типа значения и наполнением его значениями, тип списка поменять нельзя.
Работа с параметрами¶
Работа с параметрами в редакторе параметров производится с помощью открытия контекстного меню элемента, которое открывается с помощью нажатия по ключу объекта (если он есть), двойного нажатия левой кнопкой мыши по объекту или нажатием правой кнопкой мыши.
Каждый параметр имеет следующие варианты в контекстном меню:
-
Изменить значение - открывает редактор выделенного объекта.
-
Копировать - копирует значение выбранного объекта.
-
Удалить имя ключа/из списка - производит удаление выбранного объекта из родительской хеш-таблицы или из родительского списка.
Параметры типа Объект (хеш-таблица) имеют дополнительно следующие варианты в контекстном меню:
-
Добавить элемент - позволяет добавить новый параметр в выделенный объект. При этом откроется редактор параметра с возможностью выбора типа и значения параметра, а также ключа, по которому будет хранится данный параметр.
-
Вставить - позволяет вставить скопированный объект из буфера обмена в выделенный объект. При этом откроется редактор параметра с возможностью изменения значения параметра, а также ключа, по которому будет хранится данный параметр.
-
Вставить и объединить - данынй вариант доступен только при копировании другого элемента с типом Объект (хеш-таблица). Данный вариант позволяет вставить все параметры скопированного объекта внутрь выбранного параметра с сохранением ключей. Если в скопированном и выбранном объектах есть параметры с одинаковым ключом, будет использовано значение из скопированного объекта.
Параметры типа Список имеют дополнительно следующие варианты в контекстном меню:
-
Добавить элемент в начало - позволяет добавить новый параметр в выделенный объект в начало списка. При этом откроется редактор параметра с возможностью выбора типа и значения параметра.
-
Добавить элемент в конец - позволяет добавить новый параметр в выделенный объект в конец списка. При этом откроется редактор параметра с возможностью выбора типа и значения параметра.
-
Вставить в начало - позволяет добавить скопированный параметр из буфера обмена в выделенный объект в начало списка.
-
Вставить в конец - позволяет добавить скопированный параметр из буфера обмена в выделенный объект в конец списка.
-
Очистить список - удаляет все параметры из списка.
При открытии контекстного меню для элемента списка также доступны варианты:
-
Добавить элемент в список до - позволяет добавить новый параметр в список перед выделенным объектом. При этом откроется редактор параметра с возможностью выбора типа и значения параметра.
-
Добавить элемент в список после - позволяет добавить новый параметр в список после выделенного объекта. При этом откроется редактор параметра с возможностью выбора типа и значения параметра.
-
Вставить в список до - позволяет добавить скопированный параметр из буфера обмена в список перед выделенным объектом.
-
Вставить в список после - позволяет добавить скопированный параметр из буфера обмена в список после выделенного объекта.
Форма для создания привязки¶
Эта форма используется для создания и изменения привязки параметра к выбранному источнику данных. Привязка параметров используется для возможности вынесения настроек действия из параметров действия в некий другой источник данных.
Поддерживаются следующие источники данных для параметров действия:
-
Параметры процесса
-
Параметры узла, к которому относится действие
-
Параметры самого действия
-
Параметры сигнала
-
Поле/секция карточки
-
Поле/секция задания (или заданий)
-
SQL-запрос
-
Представление
Например, можно указать роль Руководитель в параметре процесса ManagerRole, и использовать во всех действиях типа Задание, где необходимо отправить задание на роль Руководитель.
Параметры действия, которые допускают привязку, имеют справа специальную кнопку настройки привязки.
Для контролов с уже настроенной привязкой в форме добавляются дополнительные кнопки.
-
Кнопка со стрелками переключает вид контрола из режима отображения привязки на отображение значения.
-
Кнопка с крестиком позволяет удалить текущую привязку.
Через контрол, привязанный к параметру процесса, можно заполнить параметр процесса (доступно при привязке к параметрам процесса, узла или действия). Достаточно перейти в режим отображения значения и изменить значение через контрол.
При нажатии на кнопку настройки привязки открывается форма:
В форме отображаются следующие настройки:
-
Выбранный параметр - показывает текущий выбранный параметр.
-
Тип привязки - определяет текущий тип привязки. Для каждого типа используется свой редактор для создания привязки. При смене типа привязки текущая привязка очищается.
-
Редактор привязки - редактор, соответствующий текущему выбранному типу привязки.
-
Кнопка “Ок” - при нажатии сохраняет настроенную привязку в качестве значения.
-
Кнопка “Отмена” - производит отмену изменений, внесенных в привязку.
В зависимости от выбранного типа привязки отображается тот или иной редактор.
Параметры процесса, узла, действия и сигнала¶
Привязка к параметрам другого объекта подразумевает, что при получении значения по привязке будет производиться взятие параметра из этого объекта по заданному в привязке пути.
При настройке привязки с данным типом редактор выглядит практически одинаково (кроме типа Параметры сигнала, он имеет сокращенную функциональность).
Редактор для данных типов привязки выглядит следующим образом:
Редактор имеет следующие настройки:
-
Новый параметр - используется для создания нового параметра для параметров Действия, Узла и Процесса, или полем для ввода параметра для параметров Сигнала.
Значение поля Новый параметр должно содержать полный путь к создаваемому в дереве параметров элементу. Если необходимо создать параметр как вложенный в хеш-таблицу (или в дерево хеш-таблиц), то полный путь должен состоять из списка имен всей посследовательности хеш-таблиц, в которую добавляется элемент, с именем параметра, где каждое имя отделено от другого символом
.
(точка). Например, указанный путьVariables.ParameterHash.Parameter
создаст структуру вида:Variables: { ParameterHash: { Parameter: ... } }
-
Создать - создает параметр, по пути, указанному в поле Новый параметр, и делает его выбранным. Если параметр уже создан, то делает его выбранным, если тип данных параметра подходит для настраиваемого поля.
-
Создать и заполнить - делать тоже самое, что и кнопка Создать, но также позволяет сразу выбрать значение для привязываемого поля. После выбора значения, закрывает форму привязки параметра. Недоступно для типа привязки Параметры сигнала.
-
Редактор параметров - редактор параметров, из которого можно выбрать нужный параметр. Недоступен для типа привязки Параметры сигнала.
Карточка¶
Привязка к карточке подразумевает использование значения из обрабатываемой карточки при получении значения по привязке.
При настройке привязки с данным типом, редактор выглядит следующим образом:
Редактор имеет следующие настройки:
-
Тип карточки - позволяет выбрать тип карточки, структуру которой мы хотим увидеть в редакторе параметров для выбора значения.
-
Показывать виртуальные секции - флаг определяет, нужно ли отображать виртуальные секции карточки.
-
Колонка для сортировки - определяет колонку, по которой будут сортироваться значения. Доступно только при выборе списка значений.
-
Редактор параметров - отображает структуру карточки выбранного типа. В нем можно выбрать необходимое поле (или секцию при выборе списка значений).
Задание¶
Привязка к карточке подразумевает использование значения из обрабатываемого в контексте выполнения задания (или заданий) при получении значения по привязке.
При настройке привязки с данным типом, редактор выглядит следующим образом:
Редактор имеет следующие настройки:
-
Тип задания - позволяет выбрать тип карточки задания, структуру которой мы хотим увидеть в редакторе параметров для выбора значения.
-
Фильтры - блок определяет фильтры для определения задания из контекста обработки процесса.
-
Новые задания - для получения значения могут использоваться новые задания. Задания считается новым, если его State соответствует CardRowState.Inserted.
-
Завершенные задания - для получения значения могут использоваться завершенные задания. Задания считается завершенным, если его State соответствует CardRowState.Deleted или CardRowState.Modified, а Action соответствует CardTaskAction.Complete.
-
Измененные задания - для получения значения могут использоваться измененные задания. Задания считается измененным, если его State соответствует CardRowState.Deleted или CardRowState.Modified, или в задании происходит изменение хотя бы одного из его аттрибутов (Digest, Author и т.д.), а Action отличен от CardTaskAction.Complete.
-
Удалить дубликаты - установка данного флага определяет, что из полученного по привязке результата должны быть удалены дубли. Данная настройка доступна только при привязке списка значений.
-
Только первое задание - установка данного флага определяет, что для получения данных из привязки должно использоваться только первое задание, удовлетворяющее настройкам фильтрации. Данная настройка доступна только при привязке списка значений, при привязке единичного значения данный флаг всегда установлен.
-
-
Показывать виртуальные секции - флаг определяет, нужно ли отображать виртуальные секции карточки задания.
-
Колонка для сортировки - определяет колонку, по которой будут сортироваться значения. Доступно только при выборе списка значений.
-
Редактор параметров - отображает структуру задания с учетом выбранного типа. В нем можно выбрать необходимое поле (или секцию при выборе списка значений). В отображаемой структуре также доступны специфичные для заданий поля:
-
Role - роль, на которую отправлено задание.
-
Author - автор задания.
-
User - сотрудник, завершивший заданий.
-
CreatedBy - сотрудник, являющийся создателем задания.
-
Digest - описание задания.
-
Planned - плановая дата завершения задания.
-
InProgress - дата взятия задания в работу.
-
Created - дата создания задания.
-
SQL-значение¶
Привязка к SQL-значению подразумевает, что значение привязки будет взято из результата заданного SQL-запроса.
При настройке привязки с данным типом, редактор выглядит следующим образом:
В редакторе есть подсказка, какие значения должен возвращать запрос, сколько строк ожидается от данного запроса и какие параметры можно в нем использовать.
В редакторе заполняется SQL-запрос, который используется для получения значения привязки.
Важно понимать, что данный запрос используется непосредственно при получении значения, и если он написан неправильно, ошибка возникнет только в момент обработки процесса, но никак не при валидации процесса в редакторе.
Представление¶
Привязка к представлению подразумевает, что значение привязки будет взято из данных, полученных из представления.
При настройке привязки с данным типом, редактор выглядит следующим образом:
Редактор имеет следующие настройки:
-
Представление - представление, которое используется для получения данных.
-
Колонка/Ссылочное значение - колонка из списка колонок при создании привязки для получения значения простого типа (строка, число, дата и т.д.) или ссылочное значение (reference в представлении) из списка всех ссылочных значений при создании привязки для получения значения сложного типа или списка.
-
Параметр для ID карточки - параметр представления, которые используется для передачи идентификатора обрабатываемой карточки.
Редактирование экземпляра процесса¶
Редактор экземпляра процесса внешне практически не отличается от редактора шаблона процесса, однако сильно отличается его возможностями.
Окно редактора экземпляра процесса можно разделить на 3 основных элемента:
-
Панель с кнопками редактора - на данной панели отображаются все доступные кнопки редактора экземпляра процесса. Отличие от панели кнопок редактора шаблона только в наборе самих кнопок:
-
Сохранить - сохраняет изменения экземпляра процесса. Доступно только при наличии доступа на редактирование экземпляра процесса.
-
Возобновить процесс - осуществляет возобновление асинхронных операций процесса, которые упали с ошибкой. Доступно только при наличии доступа на редактирование экземпляра процесса. Подробнее про возобновление процесса в разделе Отладка экземпляров процесса.
-
Открыть шаблон процесса - осуществляет открытие шаблона процесса. Открывается версия процесса, которой соответствует данный экземпляр (может отличаться от версии по умолчанию). Доступно только при наличии доступа на редактирование экземпляра процесса.
-
Открыть карточку - открывает карточку, к которой относится текущий процесс.
-
Обновить - производит обновление экземпляра процесса. Не обновляет расположение узлов и связей на макете в случае изменения шаблона. Для полного обновления необходимо нажать на кнопку с зажатой клавишей Shift.
-
Показать логи процесса - открывает представление со всеми логами процесса. Доступно только при наличии доступа на редактирование экземпляра процесса.
-
Настройки процесса - открывает редактор экземпляра процесса (см. Редактор экземпляра процесса).
-
-
Макет процесса - область, где происходит визуальное отображение экземпляра процесса. Состоит из узлов, связей между ними и добавленными на макет дополнительными визуальными объектами (например, подписи).
-
Редактор объекта - данный редактор представляет из себя панель, открывающуюся поверх макета процесса при выборе редактируемого элемента (узла, связи) или при нажатии на кнопку Настройки процесса. Данная панель также может быть закрыта или свёрнута с помощью соответствующих кнопок на верхней правой части панели.
Отличия макета экземпляра от шаблона¶
При редактировании экземпляра узла макет имеет два основных отличия:
-
Макет нельзя редактировать
-
Для узлов добавляется подсветка. Активные узлы подсвечиваются желтым цветом, узлы, которые исполнялись, подсвечиваются серым цветом, узлы с ошибкой отображаются красным цветом (про узлы с ошибками смотри в разделе Отладка экземпляра процесса).
Изменение редактора узла¶
При редактировании экземпляра процесса в редактор узла добавляется таблица Экземпляры узла. При двойном щелчке (мыши) по строке открывается редактор экземпляра узла (см. Редактор экземпляра узла).
Если у узла всего один экземпляр, то при выборе узла сразу откроется редактор этого экземпляра узла.
Редактор экземпляра процесса¶
Редактор экземпляра процесса открывается по кнопке Настройки процесса из панели с кнопками редактора.
В редакторе экземпляра процесса присутствует следующие настройки:
-
Имя - имя экземпляра процесса.
-
Уровень логирования - уровень логирования для текущего экземпляра процесса.
-
Редактировать параметры процесса - кнопка, открывает редактор параметров для экземпляра процесса. Про редактор параметров можно посмотреть в разделе Редактор параметров.
-
Ошибки - таблица с ошибками, возникшиими при обработке экземпляра процесса. При выборе строки с ошибкой на макете красным помечается узел, в котором непосредственно возникла ошибка, а также все связи и узлы, которые были обработаны этим же сигналом, помечаются красной рамкой.
У таблицы есть следующие кнопки:-
Открыть карточку ошибки - открывает карточку выбранной ошибки в клиенте. Можно также открыть двойным щелчком (мыши) по строке таблицы.
-
Повторить отправку сигнала - производит открытие редактора сигнала (см. …) для возможности повторной отправки сигнала, который обрабатывался при возникновении ошибки. Более подробно смотри в разделе Отладка экземпляра процесса.
-
Сбросить отображение ошибки - сбрасывает отображение ошибки на макете.
-
Редактор экземпляра узла¶
Редактор экземпляра узла открывается по двойному щелчку (мыши) по строке таблицы Экземпляры узла в редакторе узла, или при выборе узла на макете, если ему соответствует всего один экземпляр узла.
Редактор экземпляра узла имеет следующие параметры, кнопки и таблицы:
-
Имя - показывает имя узла, по которому создан экземпляр.
-
Заголовок - показывает заголовок узла, по которому создан экземпляр.
-
Редактировать параметры узла - кнопка, открывает редактор параметров для экземпляра узла. Про редактор параметров можно посмотреть в разделе Редактор параметров.
-
Действия - таблица со списком всех экземпляров действий данного экземпляра узла. По двойному щелчку (мыши) по строке таблицы открывается редактор экземпляра действия (см. раздел Редактор экземпляра действия).
-
Задания - таблица, в которой отображаются все активные задания, созданные действиями из данного экземпляра узла. При двойном щелчке (мыши) по строке таблицы открывается форма с более подробной информацией о задании.
Таблица имеет кнопки для управления выбранными заданиями. Более подробно о данном функционале смотрите в разделе Отладка экземпляра процесса. -
Подпроцессы - таблица, в которой отображаются все активные подпроцессы, созданные действиями из данного экземпляра узла. При двойном щелчке (мыши) по строке таблицы открывается редактор подпроцесса.
Таблица имеет кнопки для управления выбранными подпроцессами. Более подробно о данном функционале смотрите в разделе Отладка экземпляра процесса.
Редактор экземпляра действия¶
Редактор действия открывается из редактора экземпляра узла. В редакторе экземпляра действия доступна кнопка Назад, при нажатии которой открывается редактор экземпляра узла.
Аналогично редактору действия, редактор экземпляра действия имеет различный набор параметров, в зависимости от редактируемого действия. Разница в том, что некоторые параметры действия нельзя менять в экземпляре.
В общий для всех редакторов экземпляров действий входит следующий набор параметров и кнопок:
-
Имя - уникальное в рамках узла имя действия.
-
Редактировать параметры действия - кнопка, открывает редактор параметров для экземпляра действия. Про редактор параметров можно посмотреть в разделе Редактор параметров.
Выгрузка скриптов процесса¶
Конструктор процессов поддерживает выгрузку всех скриптов процесса в файловую систему в проект .csproj. Производится это в Редакторе процесса.
При нажатии на кнопку Выбрать проект в редакторе процесса, система откроет окно для выбора файла с форматом .csproj.
Important
Для корректной работы выгрузки в выбранном проекте должна быть ссылка на Tessa.Extensions.Server.dll, а также на все зависимости, указанные в скриптах процесса.
Tip
Можно создать отдельный проект в Tessa.Extensions.sln, и использовать его для выгрузки разрабатываемых процессов, или использовать сам проект Tessa.Extensions.Server.csproj.
После выбора файла .csproj система создаст папку Processes в папке с выбранынм файлом проекта, и в нее выгрузит все скрипты процесса в виде следующей структуры:
В файле MainClass.cs хранится скрипт основного процесса. В папке Links хранятся скрипты всех связей процесса, в каждом отдельном файле хранятся все скрипты соответствующей связи. В папке Nodes хранятся папки со всеми узлами процесса. В каждой папке лежат файлы со всеми скриптами действий процесса, в каждом отдельном файла хранятся все скрипты соответствющего действия.
При нажатии на кнопку Обновить проект система пересоздаст всю структуру файлов в выбранном ранее проекте.
В редакторе каждого объекта, в котором может быть скрипт (Процесс, Связь, Действие) есть кнопка Открыть файл в проекте. Нажатие это кнопки открывает соответствующий данному объекту файл .cs с помощью приложения по умолчанию.
Tip
При использовании Visual Studio открытие .cs файла по кнопке откроет уже существующий экземпляр Visual Studio, если такой есть (обычно открывает тот, что был открыт раньше других). При этом если в данном экземпляре открыт проект, в который производилась выгрузка скриптов, то файл откроется в рамках проекта, что позволит использовать все возможности Visual Studio.
При изменении файла .cs соответствующие изменения скриптов объекта, к которому относится данный файл, автоматически переносятся и в скрипты процесса. Также можно принудительно обновить процесс по нажатию на кнопку Обновить процесс по проекту.
Important
Система определяет тело скрипта действия, связи или процесса в .cs файле по меткам регионов в формате #region
MethodName Body … #endregion
MethodName Body End. Эти не рекомендуется менять, т.к. это приведет к некорректной работе обратной загрузки скриптов в процесс.
При закрытии редактора процесса, система автоматически удалит выгруженные папки из проекта.