Перейти к основному содержимому
Версия: 1.21.3

Действия рабочих процессов

Механизм рабочих процессов поддерживает набор действий различных типов для настройки процесса, подходящего вашим потребностям.

Подробнее о механизме читайте в статье Редактор рабочих процессов.

примечание

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

Доступные действия:

  • Действие Run Script
  • Действие Join
  • Действие Set Values
  • Действие Record Generator
  • Действие Create Event
  • Действие Wait Condition
  • Действие If
  • Действие Switch
  • Действие User-approval
  • Действие Subflow
  • Действие Timer

примечание

Чтобы определить переменные в действиях при помощи агентского интерфейса, выполните следующие действия:

  1. Перейдите в навигаторе на Рабочие процессы → Действия.
  2. Откройте запись действия, которую вам нужно изменить, или нажмите Создать, чтобы создать новое действие.
  3. Заполните поля.
  4. Нажмите Сохранить или Сохранить и выйти, чтобы применить изменения. Подробнее читайте в статье Создание рабочего процесса.

Статусы действий

Статус действия сообщает механизму рабочих процессов, что нужно делать с действием. Перечисленные ниже статусы стандартны для всех типов действий, реализованных в SimpleOne.

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

Статусы действий

СтатусОписание
В обработкеМеханизм рабочего процесса начал выполнение действия.
В ожиданииМеханизм рабочего процесса игнорирует действие до наступления определенного события. Затем он продолжает его обработку.
ЗавершенаДействие завершило работу. Вы можете увидеть результат действия.
ОтмененаДействие (или содержащий его рабочий процесс) отменено.
ОшибкаПроизошла ошибка JavaScript. Просмотрите Журнал работы скриптов (sys_log_script) для получения подробной информации.

Базовые действия

Действие Begin


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

Действие End

Данное действие, так же как и действие Begin, является изначальным и появляется в создаваемых рабочих процессах. Оно является логическим завершением любого рабочего процесса.

Утилиты

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

Действие Run Script


Действие Run Script выполняет определенный скрипт.

Поля действия

ПолеОбязательноОписание
НаименованиеНетВведите наименование действия. Хорошей практикой является давать действиям информативные названия для ясности.
Запуск скриптаНетУкажите выполняемый скрипт.
ОписаниеНетВведите краткое описание действия.
внимание

Данный тип действий приводит к обновлению текущей целевой записи после выполнения. Логика действия определяется значением Незамедлительно в поле Когда запустить таблицы Типы действий (wf_activity_type).

Кроме того, вариант Незамедлительно и связанное поведение действия позволяют избежать использования current.update() внутри скриптов действий типа Run Script для обновления записей.

Действие Join


Действие Join объединяет переходы из нескольких действий, превращая их в один. Это полезно для синхронизации нескольких действий, чтобы следующее действие начиналось только когда будут завершены предыдущие.

В примере ниже, действие Join ожидает результатов обработки действий If, Subflow и Wait. Если все три перехода из этих действий ведут к действию Join, выбирается выход Complete (с переходом к действию с названием Insert). Если одно из действий обходит действие Join (в данном случае это выход No из действия If), выбирается выход Incomplete.

предупреждение

Не соединяйте два выхода из одного действия с действием Join. В противном случае действие Join срабатывает некорректно и не выбирает выход Complete.

В примере ниже, к действию Join ведут оба выхода из действия If. Несмотря на то, что условие действия If выполнено, действие Join выбирает выход Incomplete, так как выход No из действия If неактивен.

Как использовать действие Join

  1. В левом боковом меню откройте вкладку Utilities и перетащите действие Join в рабочую область.
  2. Соедините необходимые выходы действий с действием Join.
  3. Создайте переходы от выходов действия Join (Complete и Incomplete) к следующим действиям.

Поля действия

ПолеОбязательноОписание
НаименованиеНетВведите наименование действия. Хорошей практикой является давать действиям информативные названия для ясности.
ОписаниеНетВведите краткое описание действия.
РезультатОписание
CompleteВыход выбирается, если все соединенные действия закончили работу и перешли к данному действию.
IncompleteВыход выбирается, если все соединенные действия закончили работу, но как минимум одно из них не перешло к данному действию, то есть был выбран путь в обход действия Join.
В примере ниже действие If обошло действие Join, поэтому был выбран выход Incomplete.

Действие Set Values


Действие Set Values задает определенные значения текущей записи. Эти значения определяют поведение действия при остановке или завершении рабочего процесса.

внимание

Данный тип действий приводит к обновлению текущей целевой записи после выполнения. Логика действия определяется значением Незамедлительно в поле Когда запустить таблицы Типы действий (wf_activity_type).

Поля действия

ПолеОбязательноОписание
НаименованиеНетВведите наименование действия. Хорошей практикой является давать действиям информативные названия для ясности.
ОписаниеНетВведите краткое описание действия.
ТаблицаДаТаблица, затрагиваемая данным действием. Поле заполняется автоматически.
Присвоить значенияНетВыберите поле, значение которого вы хотите поменять при остановке или завершении процесса, и задайте новое значение.
Нажмите на крайнее левое поле, чтобы открыть выпадающий список доступных полей. Нажмите на крайнее правое поле, чтобы открыть выпадающий список или введите значение (в зависимости от типа выбранного поля).

Действие Record Generator


Действие Record Generator создает записи в любой таблице, наследующей от таблицы Задачи.

Поля действия

ПолеОбязательноОписание
НаименованиеНетВведите наименование действия. Хорошей практикой является давать действиям информативные названия для ясности.
ОписаниеНетВведите краткое описание действия.
Тип задачиДаВыберите тип задачи. Вы можете выбирать из соответствующей таблицы задач.
Значения изНетУкажите источник значений для создаваемой задачи. Доступные варианты:
  • Значений – значения, которые вы указывате в соответствующем списке выбора.
  • Шаблона – существующий шаблон, связанный с выбранной таблицей задач.
Присвоить значенияНетВыберите поле и задайте нужное значение.
Нажмите на крайнее левое поле, чтобы открыть выпадающий список доступных полей. Нажмите на крайнее правое поле, чтобы открыть выпадающий список или введите значение (в зависимости от типа выбранного поля).
Поле отображается, когда в поле Значения из выбрано Значений.
Шаблон задачиДаУкажите существующий шаблон, относящийся к выбранной таблице задач.
Поле отображается, когда в поле Значения из выбрано Шаблона.
Только при выполнении условияНетУстановите флажок, чтобы показать поле Условия завершения. Если флажок установлен, условия обязательны для завершения задачи.
Условия завершенияДаУкажите условия для создаваемой задачи. Процесс перейдет к следующему действию, когда все условия для задачи будут выполнены.
Поле отображается, когда установлен флажок Только при выполнении условия.
ДополнительноНетУстановите флажок, чтобы указать скрипт, который должен быть выполнен.
СкриптНетУкажите в этом скрипте значения для задачи. Используйте переменную new_task при установке дополнительных значений.
Скрипт выполняется после того, как заданы значения задачи (определенные в полях Шаблон задачи или Присвоить значения).
Поле отображается когда установлен флажок Дополнительно.
Пример скрипта
new_task.parent_id = current.sys_id;
new_task.caller = current.getValue('caller');
внимание
  • Если указаны и Условия завершения, и Скрипт, то они все должны выполниться успешно, чтобы данное действие совершило переход.
  • Убедитесь, что вы заполнили все обязательные поля при использовании данного действия, иначе выполнение рабочего процесса будет прервано.

Действие Create Event


Действие Create Event ставит событие из таблицы Реестр событий (sys_event_register) в очередь. Позднее это событие может выполнить определенные скрипты или отправить уведомления. При запуске действия Create Event, в таблице Событие (sys_event) создается новая запись события.

Подробнее читайте в статье Системные события.

Поля действия

ПолеОбязательноОписание
НаименованиеНетВведите наименование действия. Хорошей практикой является давать действиям информативные названия для ясности.
Реестр событийДаВыберите экземпляр события, на основе которого действие будет создавать события. Все экземпляры событий (или реестры событий) перечислены в таблице Реестр событий (sys_event_register).
Параметр 1 ... Параметр 5НетУкажите параметр события. Если этот параметр является значением типа строка, его необходимо заключить в кавычки.
Заданные параметры могут использоваться в записях, относящихся к системному событию:
  • записи в таблице Правила уведомлений (sys_notification_rule).
  • записи, относящиеся к таблице Правила уведомлений (sys_notification_rule): Скрипт уведомления (sys_notification_script) и Шаблон уведомления (sys_notification_template).
  • записи таблицы Скрипты действий для событий (sys_event_script_action).
ОписаниеНетВведите краткое описание действия.

Условные операторы

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

Действие Wait Condition


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

Поля действия

ПолеОбязательноОписание
НаименованиеНетВведите наименование действия. Хорошей практикой является давать действиям информативные названия для ясности.
ОписаниеНетВведите краткое описание действия.
ТаблицаНетТаблица, затрагиваемая данным действием. Поле заполняется автоматически.
УсловиеДаОпределите условия, обязательные для перехода из выхода Yes.
ДополнительноНетУстановите флажок, чтобы указать скрипт, который должен быть выполнен.
СкриптНетЕсли в поле указан скрипт, то выполнение рабочего процесса будет приостановлено, пока скрипт не возвратит значение true. Результат исполнения скрипта добавляется к результатам указанного Условия оператором И.
Поле отображается, когда установлен флажок Дополнительно.
Пример скрипта
const isUserManager =
ss.hasRole('process_manager'); // true or false
return isUserManager;
внимание

Если указаны и Условие, и Скрипт, то они оба должны выполниться успешно для перехода к следующему действию. Рабочий процесс будет приостановлен до момента, когда будет соблюдено Условие, и Скрипт возвратит значение true.

Действие If


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

примечание

Если указаны и Условие, и Скрипт, то они оба должны выполниться успешно, чтобы в этом действии был выбран переход Yes, иначе выбирается переход No.

Поля действия

ПолеОбязательноОписание
НаименованиеНетВведите наименование действия. Хорошей практикой является давать действиям информативные названия для ясности.
ОписаниеНетВведите краткое описание действия.
ТаблицаДаТаблица, затрагиваемая данным действием. Поле заполняется автоматически.
УсловиеДаУсловие, которое должно выполниться для совершения перехода из выхода Yes.
Пустое условие всегда возвращает значение true.
ДополнительноНетУстановите флажок, чтобы указать скрипт, который должен быть выполнен.
СкриптНетЕсли скрипт выполняется, результат его исполнения добавляется к результатам указанного Условия оператором И. Для перехода из выхода Yes скрипт должен возвратить значение true.
Поле отображается, когда отмечен флажок Дополнительно.
Пример скрипта
const uc = new SimpleUserCriteria();
const isUserLocal =
uc.userAcceptanceByCriteria(ss.getUserID(), '165470191717512124'); // true or false
return isUserLocal;
примечание

Если указаны и Условие, и Скрипт, то они оба должны выполниться успешно, чтобы в этом действии был выбран переход Yes, иначе выбирается переход No.

Действие Switch


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

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

Поля действия

ПолеОбязательноОписание
ТаблицаНетТаблица, затрагиваемая данным действием. Поле заполняется автоматически.
НаименованиеНетВведите наименование действия. Хорошей практикой является давать действиям информативные названия для ясности.
ТипДаВыберите источних опций выходов для этого действия. Рабочий процесс выполняет проверку значений по этим условиям. Доступные варианты:
  • Field – выходы равны вариантам поля, указанного в поле Колонка.
  • Custom – создайте набор выходов с нужными вам условиями.
КолонкаДаУкажите колонку, содержащую варианты для условия. Эти условия станут выходами действия.
Вы можете изменить условия выходов или добавить новые условия, отредактировав их.
Поле отображается, когда в поле Тип выбран вариант Field.

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

Чтобы создать дополнительные выходы, выполните следующие действия:

  1. Нажмите правой кнопкой мыши на действие Switch и выберите Добавить выход.
  2. Двойным щелчком нажмите на выход, чтобы открыть поля формы выхода.
  3. Заполните поля.
  4. Нажмите Сохранить.
  5. При необходимости повторите процесс, чтобы добавить еще поля.

Поля выхода из действия

ПолеОбязательноОписание
НаименованиеНетНаименование варианта. Если в поле Тип выбран вариант Field, наименование берется из Колонки. Если в поле Тип выбран вариант Custom, введите наименование по своему усмотрению.
ТаблицаНетТаблица, затрагиваемая данным действием. Поле заполняется автоматически.
ДействиеДаДействие, к которому относится этот выход. Поле заполняется автоматически.
ОписаниеНетВведите краткое описание выхода из действия.
УсловиеДаОпределите условия, обязательные для выполнения указанного перехода.
ДополнительноНетУстановите флажок, чтобы указать скрипт, который должен быть выполнен.
СкриптДаЕсли поле заполнено, то выполнение рабочего процесса будет приостановлено на данном действии, пока скрипт не возвратит значение true.
Поле отображается, когда установлен флажок Дополнительно.
внимание
  • Если указаны и Условие, и Скрипт, то они оба должны выполниться успешно для перехода к следующему действию. Рабочий процесс останется приостановленным до момента, когда будет соблюдено Условие, и Скрипт возвратит значение true.
  • В случае действия Switch, для каждого выхода можно настроить отдельный скрипт. Поэтому флажок Дополнительно появляется, только если у действия есть несколько выходов. Флажок появляется только на формах выходов.

Согласования

Действие User-approval настраивает обработку согласований: оно создает согласования, устанавливает правила и условия согласований.

Действие User-approval


Действие оценивает результат в зависимости от следующих факторов:

  • решение, принятое согласующими.
  • условия, указанные в поле Согласовано при условии или в полях Условия согласования и Условия отклонения.
  • (опционально) условия, указанные в скриптах.

Действие может быть завершено с одним из двух результатов: Согласовано или Отклонено.

Поля действия

ПолеОбязательноОписание
НаименованиеНетВведите наименование действия. Хорошей практикой является давать действиям информативные названия для ясности.
ОписаниеНетВведите краткое описание действия. Если указано, оно отображается на блоке действия на холсте.
ТаблицаДаТаблица, затрагиваемая данным действием. Поле заполняется автоматически.
Условия запускаНетУкажите условия, которые должны быть выполнены для создания согласований. Если условия не выполняются, рабочий процесс пропускает действие. В этом случае выбирается выход Approved.
Тип согласованияНетУкажите тип согласования для определения условий выходов из действия. Доступные варианты:
  • Автоматически – выберите условия действия, заполнив поле Согласовано при условии из заранее определенного набора условий.
  • Вручную – настройте нужные вам условия завершения действия в полях Условия согласования и Условия отклонения.
Необязательные участникиНетУстановите флажок, чтобы добавить участников, голоса которых необязательны. Когда флажок поставлен, появляется вкладка Необязательные участники.

Подпроцессы

Действие Subflow выполняет другой рабочий процесс. Это действие необходимо для создания сложных рабочих процессов, которые включают другие процессы.

Действие Subflow


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

Поля действия

ПолеОбязательноОписание
НаименованиеНетВведите наименование действия. Хорошей практикой является давать действиям информативные названия для ясности.
Рабочий процессДаУкажите опубликованный рабочий процесс, который должен быть выполнен действием.
ОписаниеНетВведите краткое описание действия.

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

Например, в основном рабочем процессе определен блок Subflow со ссылкой на рабочий процесс "Request 2nd phase". После запуска основного рабочего процесса запускается подпроцесс "Request 2nd phase". Контекст выполнения подпроцесса приостанавливается. Если в рамках основного процесса произойдет попытка еще одного запуска подпроцесса "Request 2nd phase", подпроцесс будет создан в отмененном состоянии.

Таймеры

Используйте действие Timer, чтобы приостановить рабочий процесс на определенное время.

Timer activity


Действие Timer определяет период времени, в течение которого текущий процесс не выполняется. Оно следует приведенной ниже логике:

  • Если контекст рабочего процесса не завершен и блок, следующий за блоком Timer, находится в статусе Завершен – обработка блока запускается повторно.
  • Если контекст рабочего процесса не завершен, но блок, следующий за блоком Timer, находится в статусе ((В ожидании)) – повторная обработка блока не запускается.
  • Если контекст рабочего процесса на момент выполнения блока Timer завершен – обработка следующего за ним блока не запускается.

Поля действия

ПолеОбязательноОписание
НаименованиеНетВведите наименование действия. Хорошей практикой является давать действиям информативные названия для ясности.
ОписаниеНетВведите краткое описание действия.
Задать длительностьДаСпособ расчета длительности таймера. Доступные варианты:
  • Указать – укажите период времени, который необходимо выждать до перехода к следующему действию.
  • Скрипт – укажите скрипт для расчета продолжительности.
ДлительностьДаУкажите время ожидания до перехода к следующему действию в днях, часах, минутах и секундах.
Поле отображается, когда в поле Задать длительность выбран вариант Указать.
СкриптДаУкажите скрипт, реализующий логику расчета длительности. Вы можете использовать методы API SimpleOne.
Поле отображается, когда в поле Задать длительность выбран вариант Скрипт.