Скрипты для BPMN-процесса
При добавлении элемента схемы "Задача сценарий" автоматически добавляется новая строка в таблицу Скриптов BPMN-процесса. В этой же таблице необходимо для каждого элемента добавить скрипты, которые должны быть созданы в Конфигураторе.
Создадим атрибуты для типа объектов "Корень" с типом атрибута "Функциональная кнопка", в настройках укажем тип "Настраиваемое событие" и создадим для каждого атрибута скрипт.
Скрипт "Согласование документа_ Подготовка к согласованию".
На первом этапе создания скрипта необходимо добавить объекты. В данном случае добавляем объекты "Заявка" и "На согласовании", устанавливаем флажок "Потомок на всех уровнях".
Действия |
Условие |
Описание |
Найти объект - 02 |
Атрибут (Переменная) – NODE; Операция – "="; Тип выражения – "Сложное выражение"; Сложное выражение – "{SYS_STARTOBJECT}". |
Выбираем объект "Заявка" в списке объектов. Переменная {SYS_STARTOBJECT} передаётся в скрипт из BPMN-процесса и указывает на объект – заявку, из которой процесс запущен. Будет выполнен поиск данной заявки среди всех заявок приложения. |
ЕСЛИ - 02 |
Проверка, найден ли объект в действии выше. Если найден - отработает действие "То", если не найден - действие "Иначе". |
|
ТО |
Объект - Заявка найден |
|
ЕСЛИ – 02 |
Атрибут (Переменная) – "Номер заявки"; Операция – "="; Тип выражения – "Значение"; Значение – "". |
Проверяет заполнено ли обязательное поле "Номер заявки" |
ТО |
Номер заявки НЕ заполнен |
|
ВЕРНУТЬ |
"Не заполнен номер документа" |
Выводится сообщение об ошибке |
ИНАЧЕ |
Номер заявки заполнен |
|
ЕСЛИ - 02 |
Атрибут (Переменная) – "Содержание заявки"; Операция – "="; Тип выражения – "Значение"; Значение – "". |
проверяет заполнено ли обязательное поле "Содержание заявки" |
ТО |
Содержание заявки НЕ заполнено |
|
ВЕРНУТЬ |
"Не заполнено содержание заявки" |
Выводится сообщение об ошибке |
ИНАЧЕ |
Содержание заявки заполнено |
|
Найти объект - 02 |
Ищем объект "На согласовании" в списке объектов каталога. |
|
ЕСЛИ - 03 |
Проверяет найден ли объект "На согласовании" |
|
ТО |
Объект "На согласовании" найден |
|
Изменить атрибуты - 02 |
Атрибут (Переменная) – "PARENT"; Операция – "="; Тип выражения – "Объект"; Объект – "03(На согласовании)". Атрибут (Переменная) – "Статус заявки"; Операция – "="; Тип выражения – "Значение"; Значение – "На согласовании". |
Меняется родительский объект, в дереве каталогов заявка будет перенесена из каталога "Новая" в "На согласовании". Устанавливается статус заявки "На согласовании" |
ВЕРНУТЬ |
"Заявка отправлена на согласование." |
Выводится сообщение об успешном начале согласования |
ИНАЧЕ |
Объект - Заявка НЕ найден |
|
ВЕРНУТЬ |
"Ошибка для {SYS_STARTOBJECT}" |
Выводится сообщение об ошибке |
Добавляем действие "Найти объект – 02" – выбираем объект "Заявка" в списке объектов. В условиях указываем Выражение – "NODE", Значение – "SYS_STARTOBJECT" (переменная из BPMN- процесса). Будет выполнен поиск заявки, из которой запущен BPMN -процесс среди всех заявок приложения.
Функция "Если" 1 на уровень ниже – проверка, найден ли объект в действии выше. Если найден отработает действие "То" 1, если не найден - действие "Иначе" 1. После "Иначе" 1 действие "Вернуть" выдает сообщение об ошибке
Действие "Если" 2 – проверяет заполнено ли поле "Номер заявки". Для проверки добавляем условие: выражение – "Номер заявки", функция – "=", значение – оставляем пустым. Если номер заявки не заполнен, то отработает действие "То" и действие "Вернуть", которое выдает сообщение – "Не заполнен номер заявки".
Действие "Если"3 – проверяет заполнено ли обязательное поле "Содержание заявки". Для проверки заполнено ли поле добавляем условие: выражение – "Содержание заявки", функция - "=", значение – оставляем пустым. Если содержание заявки не заполнено, то отработает действие "То" и действие "Вернуть", которое выдает сообщение – "Не заполнено содержание заявки". Если заполнено переход к действию "Иначе".
Следующее действие "Найти" ищет объект "На согласовании", для того чтобы в него перенести заявку со статусом "На согласовании". Функция "Если" 4 проверяет найден ли объект "На согласовании", если найден, то отработает действие "То".
После того как проверки пройдены, отработает действие "Изменить атрибуты". В данном действии изменяем статус заявки:
Выражение – "Статус заявки", функция - "=", значение – "На согласовании" и меняем родительский объект на объект "03 На согласовании".
И выводим сообщение об успешном начале согласования: добавляем действие "Вернуть", которое будет выводить сообщение "Заявка отправлена на согласование".
Скрипты "Согласование документа_ Выбрать Согласующего 1" и "Согласование документа_ Выбрать Согласующего 2"
Добавляем объекты в коллекцию объектов: Заявка 02, Корень 03, Сотрудник 04. Для каждого устанавливаем флажок "Потомок на любом уровне".
Добавляем переменную VAR1, при создании переменой в поле комментарий указываем {Согласующий_1} – переменная, фигурные скобки {} указывают на то, что в комментарии именно переменная из BPMN-процесса. Для второго согласующего указываем переменную {Согласующий_2}.
Действия |
Условие |
Описание |
Найти объект – 02 В настройках действия выбираем объект "Заявка" |
Атрибут (Переменная) – NODE; Операция – "="; Тип выражения – "Сложное выражение"; Сложное выражение – "{SYS_STARTOBJECT}". |
Переменная {SYS_STARTOBJECT} передаётся в скрипт из BPMN-процесса и указывает на объект – заявку, из которой процесс запущен. Будет выполнен поиск данной заявки среди всех заявок приложения. |
ЕСЛИ – 02 В настройках действия выбираем объект "Заявка" |
Проверка, найден ли объект в действии выше. Если найден отработает действие "То", если не найден действие "Иначе". |
|
ТО |
Объект - Заявка найден |
|
Найти объект – 04 В настройках действия выбираем объект "Сотрудник" |
Атрибут (Переменная) – NODE; Операция – "="; Тип выражения – "Сложное выражение"; Сложное выражение – "[O2]<Согласующий 1> |
Поиск пользователя, который указан как Согласующий 1. Аналогично для второго согласующего необходимо указать - Сложное выражение – "[O2]<Согласующий 2> |
ЕСЛИ – 04 |
Проверка найден ли сотрудник |
|
ТО |
Объект - Сотрудник найден |
|
Изменить атрибуты – 02 В настройках действия выбираем объект "Заявка" |
Атрибут (Переменная) – "VAR1"; Операция – "="; Тип выражения – "Сложное выражение"; Сложное выражение – "[O4]<Ссылка на пользователя>". |
Передача данных о согласующем в переменную VAR1 (данные из переменной будут переданы в BPMN-процесс с помощью переменной {Согласующий_1} или {Согласующий_2}) |
Изменить атрибуты – 02 В настройках действия выбираем объект "Заявка" |
Атрибут (Переменная) – "Дата согласования 1"; Операция – "="; Тип выражения – "Значение"; Значение – "NOW". |
Устанавливаем дату согласования. Для второго согласующего "Дата согласования 2" |
ВЕРНУТЬ |
"Выбран первый согласующий: [O4]<ФИО>" Или "Выбран второй согласующий: [O4]<ФИО>" |
Выводится сообщение об успешной установке согласующего |
ИНАЧЕ |
Объект - Сотрудник не найден. |
|
Изменить атрибуты – 02 В настройках действия выбираем объект "Заявка" |
Атрибут (Переменная) – "VAR1"; Операция – "="; Тип выражения – "Значение"; Значение – "-1". |
В переменную Согласующий_1 или Согласующий_2 передаётся значение -1, что значит, что сотрудник не найден. |
ВЕРНУТЬ |
"Не удалось найти карточку сотрудника." |
Выводится сообщение, что сотрудник не найден. |
ИНАЧЕ |
Объект - Заявка НЕ найден |
|
ВЕРНУТЬ |
"Не найдена карточка СЗ с id={SYS_STARTOBJECT}" |
Выводится сообщение об ошибке |
Скрипты "Согласование документа_Заполнить резолюцию Согласующего 1" и "Согласование документа_Заполнить резолюцию Согласующего 2"
Добавляем объекты в коллекцию объектов: Заявка 02, устанавливаем флажок "Потомок на любом уровне".
Действия |
Условие |
Описание |
Найти объект – 02 В настройках действия выбираем объект "Заявка" |
Атрибут (Переменная) – NODE; Операция – "="; Тип выражения – "Сложное выражение"; Сложное выражение – "{SYS_STARTOBJECT}". |
Переменная {SYS_STARTOBJECT} передаётся в скрипт из BPMN-процесса и указывает на объект – заявку, из которой процесс запущен. Будет выполнен поиск данной заявки среди всех заявок приложения. |
ЕСЛИ – 02 В настройках действия выбираем объект "Заявка" |
Проверка, найден ли объект в действии выше. Если найден отработает действие "То", если не найден действие "Иначе". |
|
ТО |
Объект - Заявка найден |
|
Изменить атрибуты – 02 В настройках действия выбираем объект "Заявка" |
Атрибут (Переменная) – "Резолюция1"; Операция – "="; Тип выражения – "Сложное выражение"; Сложное выражение – "{Резолюция_Согласующего_1}". Атрибут (Переменная) – "Комментарий 1"; Операция – "="; Тип выражения – "Сложное выражение"; Сложное выражение – "{Комментарий_Согласующего_1}" |
Передача результатов согласования из переменных BPMN-процесса Резолюция_Согласующего_1 Комментарий_Согласующего_1, в атрибуты заявки. Для второго согласующего необходимо указать: Резолюция2 - Резолюция_Согласующего_2 Комментарий 2 - Комментарий_Согласующего_2 |
ВЕРНУТЬ |
"Добавлена резолюция первого согласующего>" Или "Добавлена резолюция второго согласующего" |
Выводится сообщение об успешном вводе результатов согласования |
ИНАЧЕ |
Объект - Заявка НЕ найден |
|
ВЕРНУТЬ |
"Не найдена карточка СЗ с id={SYS_STARTOBJECT}" |
Выводится сообщение об ошибке |
Скрипты "Согласование документа_Установить статус Отклонено" и "Согласование документа_Установить статус Согласовано"
Добавляем объекты в коллекцию объектов: Заявка 02, Согласованные 03 (Отклонённые 03), устанавливаем флажок "Потомок на любом уровне".
Действия |
Условие |
Описание |
Найти объект – 02 В настройках действия выбираем объект "Заявка" |
Атрибут (Переменная) – NODE; Операция – "="; Тип выражения – "Сложное выражение"; Сложное выражение – "{SYS_STARTOBJECT}". |
Переменная {SYS_STARTOBJECT} передаётся в скрипт из BPMN-процесса и указывает на объект – заявку, из которой процесс запущен. Будет выполнен поиск данной заявки среди всех заявок приложения. |
ЕСЛИ – 02 В настройках действия выбираем объект "Заявка" |
Проверка, найден ли объект в действии выше. Если найден отработает действие "То", если не найден действие "Иначе". |
|
ТО |
Объект - Заявка найден |
|
Найти объект – 03 В настройках действия выбираем объект "Согласованные" ("Отклонённые") |
Ищем объект "Согласованные" ("Отклонённые") в списке объектов каталога. |
|
ЕСЛИ – 02 В настройках действия выбираем объект "Согласованные" ("Отклонённые") |
Проверка, найден ли объект в действии выше. Если найден отработает действие "То", если не найден действие "Иначе". |
|
ТО |
Объект - "Согласованные" ("Отклонённые") найден |
|
Изменить атрибуты – 02 В настройках действия выбираем объект "Заявка" |
Атрибут (Переменная) – "Статус заявки"; Операция – "="; Тип выражения – "Значение"; Значение – "Согласовано" ("Отклонено"). |
Сохранение всех результатов согласования в атрибуты заявки. Установка статуса "Согласовано" или "Отклонено" |
ВЕРНУТЬ |
"СОГЛАСОВАНА" Или "ОТКЛОНЕНА" |
Выводится сообщение об результате согласования |
ИНАЧЕ |
Объект - Заявка НЕ найден |
|
ВЕРНУТЬ |
"Не найдена карточка СЗ с id={SYS_STARTOBJECT}" |
Выводится сообщение об ошибке |