Действие процесса

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

Для создания новых пользовательских действий используется конфигурационные элемент «Действие процесса». Для запуска действия процесса используется элемент «Выполнить действие процесса». Познакомиться с этим элементом и описанием преднастроенных действий процесса можно в статье Элемент процесса «Выполнить действие процесса».

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

Пример. Создадим пользовательское действие, которое отправляет уведомление пользователю. Данное уведомление можно увидеть в коммуникационной панели.

Создание пользовательского действия процесса

Для создания действия процесса выполните следующее:

  1. Откройте раздел «Конфигурация».
  2. Выберите пользовательский пакет, в который хотите добавить действие процесса.
  3. На панели инструментов рабочей области раздела «Конфигурация» нажмите «Добавить» и выберите «Действие процесса».

Рисунок 1 — Конфигурационный элемент «Действие процесса»

Рисунок 1 — Конфигурационный элемент «Действие процесса».png

  1. Заполните свойства элемента:

Таблица 1 — Свойства элемента «Действие процесса»

Свойство

Описание

Значение для примера

Код

Название схемы. Должен начинаться с префикса, указанного в системной настройке «Префикс названия объекта». Код может содержать символы латинского алфавита и/или цифры

BpmSendNotificationProcessUserTask

Заголовок

Локализуемый заголовок схемы

Отправить уведомлению пользователю

Пакет

Пользовательский пакет, в котором находится или создается действие процесса

Устанавливается автоматически

Описание

Описание схемы

 

Страница редактирования параметров

Страница, которая отображается при настройке элемента в бизнес-процессах. Страницу предварительно необходимо создать

Базовая страница UserTaskPropertiesPage

Страница редактирования параметров кейса

Страница настройки параметров действия процесса. Отображается при настройке элемента в дизайнере кейсов. Страницу предварительно необходимо создать

 

Цвет

Шестнадцатеричный код цвета. Используется для отображения элемента в дизайнере бизнес-процессов

Заполняется автоматически, для текущего примера — #839DC3

Маленькое векторное изображение

Используется для замены стандартного изображения данного действия в дизайнере процессов

 

Рисунок 2 — Свойства элемента «Действие процесса»

Рисунок 2 — Свойства элемента «Действие процесса».png

  1. После нажмите «Применить».

После нажатия на кнопку «Применить» начнется генерация кода для действия. После окончания генерации вы будете перемещены в раздел «Конфигурация».

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

Рисунок 3 — Добавление параметров действия

Рисунок 3 — Добавление параметров действия.png

Заполните параметры действия процесса:

  • Код — название схемы (обязательный свойство);
  • Заголовок — локализуемый заголовок схемы;
  • Тип данных — тип данных параметра (обязательное свойство);
  • Справочник — свойство доступно, если свойстве «Тип данных» выбрано значение «Справочник»;
  • Схема — название схемы, связанной с параметром;
  • Признак «Обязательный для заполнения» — указывает является ли параметр обязательным для заполнения;
  • Признак «Результирующий» — указывает является ли параметр результирующим. Можно использовать в условии условного потока;
  • Признак «Содержит Id исполнителя» — идентификатор исполнителя действия. Свойство доступно, если свойстве «Тип данных» выбрано значение «Справочник»;
  • Признак «Отложенная загрузка» — позволяет без задержек загружать диаграмму процесса. Параметр загружается непосредственно перед его использованием;
  • Признак «Сериализуемый» — значение текущего параметра сохраняется в процессе выполнения действия процесса (между вызовами методов InternalExecute() и CompleteExecuting()). Используется для интерактивных действий процесса;
  • Признак «Копировать значение» — если признак установлен, значение параметра копируется при его повторном использовании. Данное свойство является устаревшим, не рекомендуется к использованию.

Для реализации примера создадим параметр:

Таблица 2 — Параметр пользовательского действия

Код

Заголовок

Тип

Сериализуемый

BpmNotificationReceiver

Получатель уведомления

Уникальный идентификатор

Да

Для реализации логики действия-процесса BPMSoft предоставляет два базовых класса:

  • Класс ProcessUserTask;
  • Класс ProcessUserTaskSchemaExtension.

Действия процесса делятся на два типа: интерактивные и неинтерактивные. В зависимости от типа действия дизайнер действия процесса позволяет классам-наследникам замещать определенные методы. Ниже представлена таблица зависимости замещаемых методов от типа действия процесса.

Таблица 3 — Таблица зависимости замещаемых методов от типа действия

Тип действия процесса Описание Замещаемые методы
Интерактивные Для завершения выполнения действия процесса необходимо взаимодействие с пользователем или приложением. Взаимодействие включает в себя ввод дополнительных данных, выбор режима работы, ожидание сигнала от объекта
  • InternalExecute()
  • CompleteExecuting()
  • CancelExecuting()
Неинтерактивные Для завершения работы действия процесса нет необходимости взаимодействия с пользователем
  • InternalExecute()
  1. Напишите логику действия в методе InternalExecute.
// Получаем схему Reminding. 
var remindingSchema = UserConnection.EntitySchemaManager.GetInstanceByName("Reminding");
// Создаем экземпляр объекта Reminding.
var reminding = remindingSchema.CreateEntity(UserConnection);
// Заполнение полей по умолчанию.
reminding.SetDefColumnValues();
// Идентификатор уведомления в таблице.
reminding.SetColumnValue("Id", Guid.NewGuid());
// Автор уведомления.
reminding.SetColumnValue("AuthorId", UserConnection.CurrentUser.ContactId);
// Получатель уведомления.
reminding.SetColumnValue("ContactId", BpmNotificationReceiver);
// Идентификатор из таблицы RemindingSource, указывающий на автора уведомления.
reminding.SetColumnValue("SourceId", new Guid("a66d08e1-2e2d-e011-ac0a-00155d043205"));
// Время отправки уведомления.
reminding.SetColumnValue("RemindTime", UserConnection.CurrentUser.GetCurrentDateTime());
// Содержание уведомления.
reminding.SetColumnValue("SubjectCaption", "Содержание уведомления");
// Заголовок уведомления.
reminding.SetColumnValue("PopupTitle", "Заголовок уведомления");
// Идентификатор таблицы (схемы) раздела, данное значение взято из имеющихся в таблице Reminding примеров уведомления.
// При реализации примера на своих стендах замените данное значение.
reminding.SetColumnValue("SysEntitySchemaId", new Guid("1BAB9DCF-17D5-49F8-9536-8E0064F1DCE0"));
// Сохраняем запись.
reminding.Save();
// При возвращении значения true, действие процесса завершает работу, устанавливается статус "Выполнено". 
// Сам бизнес-процесс продолжит работу.
return true;
Метод InternalExecute должен обязательно возвращать логическое значение.
  1. Сохраните и опубликуйте схему.

Добавление пользовательского действия процесса в бизнес-процесс

Для демонстрации написанного пользовательского действия создадим бизнес-процесс.

  1. Откройте раздел «Конфигурация».
  2. Выберите пакет, в который хотите добавить бизнес-процесс.
Бизнес-процесс и действие процесса должны находиться в одном пакете. Либо в пакет с бизнес-процессом необходимо добавить зависимость от пакета с действием процесса.
  1. На панели инструментов рабочей области раздела «Конфигурация» нажмите «Добавить» и выберите «Бизнес-процесс».
  2. Заполните свойства «Название» и «Имя».

Рисунок 4 — Свойства бизнес-процесса

Рисунок 4 — Свойства бизнес-процесса.png

  1. Вынесите на рабочую область элемент «Выполнить действие процесса».

Рисунок 5 — Элемент «Выполнить действие процесса»

Рисунок 5 — Элемент «Выполнить действие процесса».png

Рисунок 6 — Схема бизнес-процесса

Рисунок 6 — Схема бизнес-процесса.png

  1. Добавьте параметр бизнес-процесса:

Рисунок 7 — Параметр процесса

Рисунок 7 — Параметр процесса.png

В качестве значения параметра выберите значение системной переменной «Контакт текущего пользователя».

  1. Настройте элемент «Выполнить действие процесса»:
    • «Какое пользовательское действие выполнить» = «Отправить уведомление пользователю»;
    • Заполните параметр «Получатель уведомления».

Рисунок 8 — Параметры элемента «Выполнить действие процесса»

Рисунок 8 — Параметры элемента «Выполнить действия процесса».png

  1. Сохраните бизнес-процесс.

После завершения работы бизнес-процесса уведомление появится в коммуникационной панели для получателя.

Рисунок 9 — Уведомление в коммуникационной панели

Рисунок 9 — Уведомление в коммуникационной панели.png

Добавление пользовательского действия на вкладку «Действия пользователя»

Система позволяет добавить пользовательское действие в меню «Действия пользователя».

Рисунок 10 — Список «Действия пользователя»

Рисунок 10 — Список «Действия пользователя»

Для добавления пользовательского действия в список необходимо выполнить SQL-сценарий в базе данных системы:

Для Microsoft SQL Server
INSERT INTO SysProcessUserTask(SysUserTaskSchemaUId, Caption)
SELECT s.UId, s.Caption FROM SysSchema s WHERE s.Name = '[Имя действия процесса]'
Для PostgreSQL
INSERT INTO "SysProcessUserTask" ("SysUserTaskSchemaUId", "Caption")
SELECT s."UId", s."Caption" FROM "SysSchema" AS s WHERE s."Name" = '[Имя действия процесса]';

После того как SQL-сценарий выполнится, рекомендуется повторно зайти в систему или перекомпилировать систему. Пакет с реализованным примером доступен по ссылке.

Рисунок 11 — Список «Действия пользователя» после выполнения SQL-сценария

Рисунок 11 — Список после работы SQL-сценария.png

Чтобы настроить параметры элемента бизнес-процесса, нужно заполнить поле «Страница редактирования параметров». Укажите страницу, которая будет отображать эти параметры в дизайнере. Можно выбрать стандартную страницу UserTaskPropertiesPage.

Рисунок 12 — Свойство «Страница редактирования параметров»

Рисунок 12 – Свойство «Страница редактирования параметров».png

Базовые классы реализации действия процесса

Класс ProcessUserTask

Данный класс находится в пространстве имен BPMSoft.Core.Process и предназначен для реализации основной логики действия процесса. Для реализации своей логики действия классы-наследники должны заместить методы базового класса. Методы, которые можно заместить, зависят от типа действия процесса.

Таблица 4 — Методы класса ProcessUserTask

Сигнатура метода Аргументы Описание
protected virtual bool InternalExecute
(ProcessExecutingContext context)
ProcessExecutingContext context — контекст процесса

Метод замещается для интерактивного и неинтерактивного типов действия процесса

Если метод возвращает true, то действие завершает свою работу, устанавливая статус «Выполнено»

Сам процесс продолжают свою работу

Если метод возвращает false, тогда выполнение действия завершается. Статус остается в состоянии «Запущено»

Далее могут вызываться методы CompleteExecuting() или CancelExecuting()

public virtual bool CompleteExecuting
(params object[] parameters)
object[] parameters — массив параметров, необходимый при вызове IProcessEngine.CompleteExecuting Метод замещается для интерактивного типа действия процесса. В замещенном методе обязательно должен содержаться вызов базового метода base.CompleteExecuting (parameters). Метод возвращает true
public virtual void CancelExecuting(params object[] parameters) object[] parameters — массив параметров, обеспечивающий обратную совместимость Метод замещается для интерактивного типа действия процесса. Выполняется при прерывании выполнения действия процесса. В результате выполнения метода будут отменены активности, созданные в методе InternalExecute()
protected internal virtual void WriteExecutionData
(IProcessExecutionDataWriter dataWriter)
IProcessExecutionDataWriter dataWriter — экземпляр интерфейса. Выполняет сериализацию значений Передает дополнительную информацию, необходимую при открытии страницы элемента действия

Класс ProcessUserTaskSchemaExtension

Данный класс находится в пространстве имен BPMSoft.Core.Process и предназначен для расширения возможностей действий процесса, например, синхронизации параметров, установке зависимостей, и т.д. Для класса-наследника существует правило, по которому должно формироваться его имя: к названию реализовываемого класса необходимо добавить суффикс SchemaExtension.

Например, для пользовательского действия процесса BpmTestProcessUserTask название класса-наследника будет — BpmTestProcessUserTaskSchemaExtension.

Таблица 5 — Методы класса ProcessUserTaskSchemaExtension

Сигнатура метода Аргументы Описание
public virtual Dictionary<Guid, string> GetResultParameterAllValues(UserConnection userConnection, ProcessSchemaUserTask userTask)
  • userConnection — экземпляр класса UserConnection. Пользовательское подключение;
  • userTask — экземпляр класса ProcessSchemaUserTask. Класс описывает схему элемента (действие процесса), для которого вызывается текущий метод
Возвращает перечень возможных значений результирующих параметров действия процесса
public virtual void SynchronizeDynamicParameters(UserConnection userConnection, ProcessUserTaskSchema target)

  • userConnection — пользовательское подключение;
  • target — Класс, описывающий схему действия процесса, для которого вызывается метод
Синхронизирует динамические параметры. Динамическими параметрами называются параметры, которые отсутствуют в схеме действия процесса, но динамически генерируются для элемента
public virtual void SynchronizeParameters(ProcessSchemaUserTask schemaElement)
  • schemaElement — Класс, описывающий схему элемента, для которого вызывается метод
Синхронизирует параметры, созданные при реализации действия процесса в дизайнере процессов

Рекомендуем изучить

Бизнес-процессы
Элемент процесса «Выполнить действие процесса»

Материал был полезен для вас?
Вебинар: 22 апреля в 11:00
Приглашаем вас на вебинар «BPMSoft – от выбора к реальным процессам», где покажем, как компании на практике сокращают time-to-market и масштабируют бизнес с помощью решений BPMSoft.
Регистрация на мероприятие
Готовы сделать выбор CRM?
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Готовы сделать выбор CRM? (детальная)
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Готовы сделать выбор CRM?
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Готовы сделать выбор CRM? (детальная)
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Оставить заявку
Оставьте свои контакты и наш менеджер свяжется с Вами в ближайшее время.
Демонстрационная версия BPMSoft
Заполните заявку для получения бесплатного доступа к демонстрационному стенду на 14 дней.
Типовое внедрение
Внедрите BPMSoft CRM в свою компанию всего за 8 рабочих дней по фиксированной цене! Заполните заявку для уточнения условий.
Заказать презентацию
Наш менеджер свяжется с Вами в ближайшее время.
Рассчитать стоимость
Задать вопрос
Карта сценариев использования ИИ для управления маркетингом, продажами и сервисом
Заполните форму и мы отправим исследование на E-mail
Присоединяйтесь к партнерской сети BPMSoft
Оставьте свои контакты и наш менеджер свяжется с Вами в ближайшее время
Тип партнерства*
Управление полным жизненным циклом клиента: от генерации лидов и продаж до внедрения, поддержки и продления подписки.
Разработка собственного Приложения – производного программного обеспечения, созданного на платформе BPMSoft (Базовое ПО).
Есть вопросы?
Не нашли для себя подходящую вакансию, или остались вопросы?
*
Есть вопросы?
Не нашли для себя подходящую вакансию, или остались вопросы?
*
Стать образовательным партнёром
Оставьте свои контакты и наш менеджер свяжется с Вами в ближайшее время.
Заявка на консультацию
Оставьте свои контакты и наш менеджер свяжется с Вами в ближайшее время.
Подписка
Спасибо!
Ваша заявка принята.
Наш сотрудник свяжется с вами в течение 1-2 рабочих дней.
Внимание!
Обнаружена ошибка.
Проверьте вашу почту
Для завершения подписки перейдите по ссылке в письме, которое мы только что отправили. Если письма нет во «Входящих», проверьте папку «Спам».
Telegram Подписаться
Уважаемые клиенты! Предупреждаем о случаях недобросовестной конкуренции и мошенничестве в сети Интернет.
Подробнее