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

PDF
Основы

Конфигурационный элемент типа Действие процесса (User task) — это сущность, которая позволяет реализовать однотипные операции для дальнейшего выполнения в бизнес-процессе. Подробнее о бизнес-процессах читайте в блоке статей Бизнес-процессы. Элемент процесса Выполнить действие процесса (User task) позволяет выбрать необходимый тип действия. Этот тип действия реализован в схеме конфигурационного элемента типа Действие процесса (User task). Подробнее об элементе Выполнить действие процесса (User task) читайте в статье Элемент процесса Выполнить действие процесса.

Схема действия процесса, которую позволяет добавить Creatio IDE, представлена значением выпадающего списка Добавить (Add) панели инструментов рабочей области раздела Конфигурация (Configuration).

Подробнее о видах конфигурационных элементов читайте в статье Операции в Creatio IDE.

Конфигурационный элемент типа Действие процесса (User task) представлен схемой типа Действие процесса (User task) выпадающего списка Тип (Type) панели инструментов рабочей области раздела Конфигурация (Configuration). Схема — основа конфигурации Creatio.

Тип схемы действия процесса представлен на рисунке ниже.

Подробнее о типах конфигурационных элементов читайте в статье Операции в Creatio IDE.

Реализовать действие процесса 

По умолчанию в приложении доступен набор преднастроенных пользовательских действий процесса. Creatio IDE предоставляет возможность реализовать пользовательское действие процесса. В простой реализации действие процесса частично повторяет логику элемента процесса Задание-сценарий (Script task). Подробнее об элементе Задание-сценарий (Script task) читайте в статье Элемент процесса Задание-сценарий.

Creatio позволяет использовать реализованное пользовательское действие процесса в разных бизнес-процессах. При внесении изменений в пользовательское действие процесса эти изменения применяются во всех бизнес-процессах, в которых используется текущее пользовательское действие.

Чтобы реализовать действие процесса:

  1. Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлена схема.
  2. На панели инструментов реестра раздела нажмите Добавить —> Действие процесса (Add —> User task).

  3. В дизайнере действия процесса заполните свойства схемы.

    Основные свойства схемы:

    • Код (Code) — название схемы (обязательное свойство). Начинается с префикса (по умолчанию Usr), который указан в системной настройке Префикс названия объекта (Prefix for object name, код SchemaNamePrefix). Может содержать символы латинского алфавита и цифры. При создании схемы конфигурационного элемента префикс, который указан в системной настройке Префикс названия объекта (Prefix for object name, код SchemaNamePrefix), автоматически добавляется в текущее поле. Наличие префикса и его совпадение со значением системной настройки проверяется при сохранении свойств схемы. Если он отсутствует или не совпадает, то пользователь получает соответствующее уведомление.
    • Заголовок (Title) — локализуемый заголовок схемы (обязательное свойство). Заголовок схемы конфигурационного элемента генерируется автоматически и совпадает со значением свойства Код (Code) без префикса.
    • Пакет (Package) — пользовательский пакет, в котором создается схема. Заполняется автоматически и недоступно для редактирования.
    • Описание (Description) — локализуемое описание схемы конфигурационного элемента.
    • Страница редактирования параметров (Parameters edit page) — выберите страницу настройки параметров действия процесса, которая отображается при настройке элемента в бизнес-процессе. Эту страницу необходимо предварительно создать. В другом случае отображается перечень параметров действия процесса.
    • Страница редактирования параметров кейса (Dcm parameters edit page) — выберите страницу настройки параметров действия процесса, которая отображается при настройке элемента в дизайнере кейсов. Эту страницу необходимо предварительно создать. В другом случае отображается перечень параметров действия процесса.
    • Цвет (Color) — HEX-код цвета, который используется для отображения текущего конфигурационного элемента в дизайнере бизнес-процессов. По умолчанию — "#839DC3".
    • Маленькое векторное изображение (Small vector image), Большое векторное изображение (Large vector image), Векторное изображение заголовка (Title vector image), Маленькое векторное изображение для DCM (Small vector image for DCM) — изображения, которые используются для отображения действия процесса в дизайнере бизнес-процессов.

    Для применения заданных свойств нажмите Применить (Apply).

    В результате заданные свойства конфигурационного элемента типа Действие процесса (User task) сохраняются. После этого закрывается дизайнер действия процесса. Повторно открыв схему конфигурационного элемента типа Действие процесса (User task), в рабочей области дизайнера действия процесса вы увидите C#-код, который генерируется в процессе сохранения.

    Панель свойств дизайнера действия процесса позволяет:

    • Изменить основные свойства схемы (кнопка ).
    • Задать дополнительные свойства схемы (кнопка ).

    Дополнительные свойства схемы:

    • Локализуемые строки (Localizable strings).
    • Параметры (Parameters). Параметры пользовательского действия возвращают результат выполнения действия. Для добавления параметров воспользуйтесь инструкцией, которая приведена в пункте Добавить параметр действия процесса.
  4. В дизайнере действия процесса добавьте исходный код. Для реализации бизнес-логики действия процесса воспользуйтесь инструкцией, которая приведена в пункте Реализовать бизнес-логику действия процесса.
  5. На панели инструментов дизайнера действия процесса нажмите Сохранить (Save) для временного сохранения изменений в метаданных схемы.
  6. На панели инструментов дизайнера действия процесса нажмите Опубликовать (Publish) для выполнения изменений на уровне базы данных.

Добавить параметр действия процесса 

  1. На панели свойств в контекстном меню узла Параметры (Parameters) нажмите .
  2. В дизайнере действия процесса заполните свойства параметра.

    Основные свойства параметра:

    • Код (Code) — название параметра (обязательное свойство).
    • Заголовок (Title) — локализуемый заголовок параметра (обязательное свойство).
    • Тип данных (Type) — тип параметра (обязательное свойство). В зависимости от выбранного значения, текущий параметр можно связать с другими параметрами действия процесса.
    • Справочник (Lookup) — выберите справочник. Свойство доступно при выбранном значении "Справочник" ("Lookup") свойства Тип данных (Type).
    • Схема (Schema) — название схемы, которая связана с параметром. Недоступно для редактирования.
    • Признак Обязательный для заполнения (Required). Указывает, что параметр является обязательным для заполнения.
    • Признак Результирующий (Resulting) — значение текущего параметра можно использовать в условии условного потока. Указывает, что параметр является результирующим.
    • Признак Содержит Id исполнителя (Contains performer Id) — идентификатор контакта, который является исполнителем. Свойство доступно при выбранном значении "Справочник" ("Lookup") свойства Тип данных (Type).
    • Признак Отложенная загрузка (Lazy load) — позволяет без задержек загружать диаграмму процесса. Параметр загружается непосредственно перед его использованием. Об отложенной загрузке читайте на Википедии.
    • Признак Сериализуемый (Serializable) — значение текущего параметра сохраняется в процессе выполнения действия процесса (т. е. между вызовами методов InternalExecute() и CompleteExecuting()). Используется для интерактивных действий процесса. Подробнее о типах действий процесса читайте в пункте Реализовать бизнес-логику действия процесса.
    • Признак Копировать значение (Copy value). При установленном признаке позволяет копировать значение параметра при его повторном использовании. Устаревшее свойство. Не рекомендуется использовать.

    Для добавления параметра нажмите Добавить (Create).

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

    • Изменить свойства параметра (кнопка ).
    • Удалить параметр (кнопка ).

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

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

  • Класс, который является наследником класса Terrasoft.Core.Process.ProcessUserTask. Назначение класса — реализация основной логики работы действия процесса. Название класса совпадает со значением свойства Код (Code) схемы действия процесса.
  • Класс, который является наследником класса Terrasoft.Core.Process.ProcessUserTaskSchemaExtension. Назначение класса — реализация дополнительных возможностей действия процесса (например, синхронизация параметров, установка зависимостей и т. д.). Чтобы сформировать название класса-наследника, к названию класса действия процесса добавьте суффикс SchemaExtension (например, для действия процесса PerformHardWorkUserTask название пользовательского класса-наследника — PerformHardWorkUserTaskSchemaExtension).

Методы класса ProcessUserTask описаны в статье Класс ProcessUserTask. Методы класса ProcessUserTaskSchemaExtension описаны в статье Класс ProcessUserTaskSchemaExtension.

Методы, которые позволяет заместить дизайнер действия процесса в классе-наследнике класса ProcessUserTask, зависят от типа действия процесса. Типы действий процесса содержатся в таблице ниже.

Типы действий процесса
Тип действия процесса
Описание
Замещаемые методы
Интерактивные
Для завершения выполнения действия процесса необходимо взаимодействие с пользователем или приложением. Взаимодействие включает в себя ввод дополнительных данных, выбор режима работы, ожидание сигнала от объекта.
InternalExecute()
CompleteExecuting()
CancelExecuting()
Неинтерактивные
Для завершения выполнения действия процесса нет необходимости взаимодействовать с пользователем.
InternalExecute()

Добавить действие процесса на вкладку Элементы процесса 

Если пользовательский элемент действия процесса планируется часто использовать, то для удобства его необходимо добавить на вкладку Элементы процесса (Process elements) дизайнера процессов.

Чтобы добавить действие процесса на вкладку Элементы процесса (Process elements) дизайнера процессов:

  1. В базе данных выполните SQL-скрипт, который приведен ниже.

    SQL-скрипт
    MSSQL
    PostgreSQL
    insert into SysProcessUserTask(SysUserTaskSchemaUId, Caption)
    select s.UId, s.Caption from SysSchema s
    where s.Name = 'UsrSomeProcessUserTask'
    INSERT INTO "SysProcessUserTask" ("SysUserTaskSchemaUId", "Caption")
    VALUES
    (
        SELECT s."UId", s."Caption" FROM "SysSchema" AS s
        WHERE s."Name" = 'UsrSomeProcessUserTask'
    )
    

    UsrSomeProcessUserTask — название (значение свойства Код (Code)) схемы действия процесса.

  2. Повторно войдите в приложение или выполните его компиляцию. О компиляции читайте в статье Операции в Creatio IDE.
Реализовать пользовательское действие процесса
Средний

Пример. Реализовать пользовательское действие процесса Действие процесса по суммированию чисел (User task of sum numbers). Действие процесса вычисляет сумму двух чисел, которые заданы в качестве параметров действия. Результат вычисления суммы двох чисел отобразить на автогенерируемой странице бизнес-процесса.

1. Создать схему действия процесса 

  1. Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлена схема.
  2. На панели инструментов реестра раздела нажмите Добавить —> Действие процесса (Add —> User task).

  3. В дизайнере действия процесса заполните свойства схемы.

    • Код (Code) — "UsrSumNumbersProcessUserTask".
    • Заголовок (Title) — "Действие процесса по суммированию чисел" ("User task of sum numbers").

    Для применения заданных свойств нажмите Применить (Apply).

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

    1. На панели свойств в контекстном меню узла Параметры (Parameters) нажмите .
    2. В дизайнере действия процесса заполните свойства параметра.

      • Код (Code) — "FirstNumber".
      • Заголовок (Title) — "Первое число" ("First number").
      • Тип (Type) — выберите "Целое" ("Integer").
      • Установите признак Сериализуемый (Serializable).
      scr_FirstNumber_props.png
    3. Для добавления параметра нажмите Добавить (Create).
  5. Аналогично добавьте параметры действия процесса, которые содержат:

    • Значение второго числа.
    • Значение суммы чисел.

    Свойства параметров, которые необходимо добавить, приведены в таблице ниже.

    Значения свойств параметров
    Параметр
    Свойство
    Значение свойства
    Параметр, который содержит значение второго числа
    Код (Code)
    "SecondNumber"
    Заголовок (Title)
    "Второе число" ("Second number")
    Тип (Type)
    Выберите "Целое" ("Integer")
    Признак Сериализуемый (Serializable)
    Установите
    Параметр, который содержит значение суммы чисел
    Код (Code)
    "SumNumbers"
    Заголовок (Title)
    "Сумма чисел" ("Sum of numbers")
    Тип (Type)
    Выберите "Целое" ("Integer")
    Признак Сериализуемый (Serializable)
    Установите
  6. Реализуйте логику суммирования чисел. Для этого добавьте реализацию метода InternalExecute() автогенерируемого исходного кода схемы действия процесса.

    Метод InternalExecute()
    protected override bool InternalExecute(ProcessExecutingContext context) {
        /* Выполняет операции с параметрами действия. */
        SumNumbers = FirstNumber + SecondNumber;
        /* Указывает на успешное выполнение сценария действия. */
        return true;
    }
    
    Полный исходный код схемы действия процесса
  7. На панели инструментов дизайнера действия процесса нажмите Опубликовать (Publish) для выполнения изменений на уровне базы данных.

2. Реализовать бизнес-процесс 

  1. Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлена схема.
  2. На панели инструментов реестра раздела нажмите Добавить —> Бизнес процесс (Add —> Business process).

  3. Заполните свойства бизнес-процесса.

    • На панели настройки элементов заполните свойство Заголовок (Title) — "Sum of numbers process".
    • На вкладке Настройки (Settings) панели настройки элементов заполните свойство Имя (Code) — "UsrProcessSumNumbers".
  4. Реализуйте бизнес-процесс.

    Бизнес-процесс представлен на рисунке ниже.

    1. Добавьте действие процесса.

      1. В области элементов дизайнера нажмите Действия системы (System actions и разместите элемент Выполнить действие процесса (User task) в рабочей области дизайнера процессов между начальным событием Простое (Simple) и завершающим событием Останов (Terminate).

      2. Заполните свойства действия процесса.

        • Какое пользовательское действие выполнить? (Which user task to perform?) — выберите "Действие процесса по суммированию чисел" ("User task of sum numbers").
        • Заполните значения параметров действия процесса.

          • Первое число (First number) — "12".
          • Второе число (Second number) — "23".
    2. Добавьте автогенерируемую страницу.

      1. В области элементов дизайнера нажмите Действия пользователя (User actions и разместите элемент Автогенерируемая страница (Auto-generated page) в рабочей области дизайнера процессов после элемента Выполнить действие процесса (User task).

      2. Заполните свойства автогенерируемой страницы.

        • Заголовок (Title) — "Sum of numbers page".
        • Название страницы (Page title) — "Страница суммирования чисел" ("Sum of numbers page").
      3. Добавьте элемент автогенерируемой страницы.

        1. В блоке Элементы страницы (Page Items) нажмите кнопку и выберите "Целое число" ("Integer").

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

          • Заголовок (Title) — "SUM:".
          • Код (Code) — "Sum".
          • Значение (Value) — нажмите —> Параметр процесса —> Сумма чисел (Process parameter —> Sum of numbers).
        3. Для добавления параметра нажмите Сохранить (Save).
  5. На панели инструментов дизайнера процессов нажмите Сохранить (Save).

Результат выполнения примера 

Чтобы посмотреть результат выполнения примера, запустите бизнес-процесс Sum of numbers process.

В результате отображается автогенерируемая страница Страница суммирования чисел (Sum of numbers page). На странице отображается сумма двух чисел, которые заданы в качестве значения параметров бизнес-процесса.

Класс ProcessUserTask
Средний

Пространство имен Terrasoft.Core.Process.

Класс Terrasoft.Core.Process.ProcessUserTask предназначен для реализации основной логики работы действия процесса. В пользовательском классе, который является наследником класса ProcessUserTask, необходимо выполнить замещение методов. Методы, которые позволяет заместить дизайнер действия процесса в классе-наследнике класса ProcessUserTask, зависят от типа действия процесса.

На заметку. Полный перечень методов класса ProcessUserTask, его родительских классов, а также реализуемых им интерфейсов можно найти в Библиотеке .NET классов.

Методы 

protected virtual bool InternalExecute(ProcessExecutingContext context)

Выполняет основную логику действия процесса. При необходимости завершить выполнение действия процесса для дальнейшего вызова метода CompleteExecuting() или CancelExecuting() необходимо вернуть false, в другом случае — true. Если метод возвращает значение true, то элемент завершает свое выполнение (т. е. для него устанавливается статус Выполнено (Completed)) и процесс продолжает свое выполнение. Если метод возвращает значение false, то выполнение элемента и процесса прерывается. При этом элемент остается в статусе Запущено (Running). Метод замещается для интерактивного и неинтерактивного типов действия процесса.

Параметры
context Контекст выполнения процесса. Значение типа ProcessExecutingContext.
public virtual bool CompleteExecuting(params object[] parameters)

Вызывается при завершении выполнения действия процесса. Содержит обязательный вызов базового метода base.CompleteExecuting(parameters). Возвращает значение true. Метод замещается для интерактивного типа действия процесса.

Параметры
parameters Массив параметров, которые передаются при вызове IProcessEngine.CompleteExecuting.
public virtual void CancelExecuting(params object[] parameters)

Вызывается при прерывании выполнения элемента процесса. Выполняет компенсацию (т. е. отмену активностей, которые созданы в методе InternalExecute(), связанных записей и т. д.). Метод замещается для интерактивного типа действия процесса.

Параметры
parameters Массив параметров. Необходим для обратной совместимости.
protected internal virtual void WriteExecutionData(IProcessExecutionDataWriter dataWriter)

Передает дополнительную информацию, которая необходима при открытии страницы элемента действия процесса. Запись значений выполняет интерфейс IProcessExecutionDataWriter.

Параметры
dataWriter Экземпляр интерфейса IProcessExecutionDataWriter. Выполняет сериализацию значений.
Класс ProcessUserTaskSchemaExtension
Средний

Пространство имен Terrasoft.Core.Process.

Класс Terrasoft.Core.Process.ProcessUserTaskSchemaExtension предназначен для реализации дополнительных возможностей действия процесса (например, синхронизация параметров, установка зависимостей и т. д.). В пользовательском классе, который является наследником класса ProcessUserTaskSchemaExtension, необходимо выполнить замещение методов.

На заметку. Полный перечень методов класса ProcessUserTaskSchemaExtension, его родительских классов, а также реализуемых им интерфейсов можно найти в Библиотеке .NET классов.

Методы 

public virtual Dictionary<Guid, string> GetResultParameterAllValues(UserConnection userConnection, ProcessSchemaUserTask userTask)

Возвращает перечень возможных значений результирующих параметров действия процесса в виде Dictionary<System.Guid, System.String>.

Параметры
userConnection Пользовательское подключение. Экземпляр класса UserConnection.
userTask Действие процесса. Экземпляр класса схемы ProcessSchemaUserTask. Класс описывает схему элемента, для которого вызывается текущий метод.
public virtual void SynchronizeDynamicParameters(UserConnection userConnection, ProcessUserTaskSchema target)

Синхронизирует динамические параметры. Динамические параметры — параметры, которые отсутствуют в схеме действия процесса, но динамически генерируются для элемента.

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

Синхронизирует параметры, которые созданы при реализации действия процесса в дизайнере процессов.

Параметры
schemaElement Экземпляр класса схемы ProcessSchemaUserTask. Класс описывает схему элемента, для которого вызывается текущий метод.
public virtual void AnalyzePackageDependencies(ProcessSchemaUserTask schemaElement, IProcessSchemaPackageDependencyReporter dependencyReporter)

Устанавливает зависимости связанных схем действия процесса путем вызова метода ReportSchemaDependency() параметра dependencyReporter. Метод реализован для версий 8.0.1 и выше.

Параметры
schemaElement Экземпляр класса схемы ProcessSchemaUserTask. Класс описывает схему элемента, для которого вызывается текущий метод.
dependencyReporter Интерфейс, который содержит методы для установки зависимости на схему или колонку объекта.