При добавлении элемента схемы "Задача сценарий" автоматически добавляется новая строка в таблицу Скриптов 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}"

Выводится сообщение об ошибке