Перейти к основному содержимому

Получение события об изменении данных класса

Формулировка задачи

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

Предварительные требования

Создан проект MyDemo, в котором описана модель данных с классом Project со следующими атрибутами:

  • Название: string;
  • Описание: string;
  • Согласовано: boolean;
  • Статус: enum;
  • Количество сотрудников: integer;
  • Руководитель: string.

Определены следующие значения перечисления Status: OK, WARNING, CRITICAL.

В проекте создана схема бизнес-процесса согласования документа, показанная на следующем рисунке.

UG_start_process_by_data_mutation_scheme.png
Схема бизнес-процесса согласования документа

Для проекта настроена модель безопасности. Проект опубликован. В базу данных добавлены данные.

Рекомендуемое решение задачи

Рекомендуемый подход к решению описанной задачи включает следующие шаги:

  1. Настройка сервиса storagedata для доступа к топику Kafka.

    В конфигурационном файле сервиса доступа к хранилищу данных storagedata в параметре ENV/Kafka__DefaultProducerTopic укажите имя топика Kafka, например, k8s-psi_STORAGE_LIB_DEFAULT.

  2. Настройка класса Project на отслеживание изменений данных класса.

    В проекте выберите файл DataModel.mdmodel, выберите класс Project и измените его параметры: установите флажок Формировать события Kafka.

  3. Настройка BPMN-элементов на схеме бизнес-процесса.

На схеме бизнес-процесса выберите BPMN-элемент Kafka Consumer Connector и укажите следующие параметры:

  • Topic: введите то же значение, которое вы указали в конфигурационном файле сервиса доступа к хранилищу данных storagedata в параметре ENV/Kafka__DefaultProducerTopic, а именно: k8s-psi_STORAGE_LIB_DEFAULT.

  • Autogenerate consumer group id: True.

  • Message type: выберите формат сообщения Kafka Storage event, поскольку именно этот формат использует сервис доступа к хранилищу данных storagedata при отправке сообщений в топик Kafka.

  • Process conditions variables: поскольку вам не нужны переменные для использования в следующем параметре, введите {}.

  • Activation condition: введите условие value.DataContext.ClassName = "Project" для срабатывания подписки на топик Kafka при изменении данных класса Project.

  • Output mappingResult expression: введите локальную переменную процесса, например, projectId. Присвойте этой переменной значение поля IdValue из структуры данных Storage event (см. описание параметра Message type выше), предварительно преобразовав это значение в число.

    {
    "projectId" : number(value.DataContext.IdValue)
    }
  • Output mappingResult variable: введите имя переменной result для записи сообщения Kafka.

  • Extended settingsUse default kafka server: True.

  • Extended settingsUse extended kafka server: False.

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

Сохраните схему бизнес-процесса. 4. Публикация проекта.

Опубликуйте проект MyDemo. 5. Запуск бизнес-процесса.

Перейдите на страницу https://<Platform_instance_URL>/demo/ и слева в меню выберите раздел BPMS Интерфейс администратора. В списке процессов выберите процесс согласно его идентификатору и нажмите кнопку Запустить процесс.

На странице запущенного процесса убедитесь, что BPMN-элемент Kafka Consumer Connector окрашивается в светло-зеленый цвет и имеет статус ELEMENT_ACTIVATED. Этот BPMN-элемент ожидает получения события в топике Kafka. Если вы измените данные класса Project, выполнение процесса продолжится, в результате чего следующий BPMN-элемент на схеме будет окрашен в светло-зеленый цвет.