Настройка администратора

Руководство администратора

Выпуски Q.BPM

Актуальные версии образов:

  • registry-new.diasoft.ru/release/qbpmui:24062802
  • registry-new.diasoft.ru/release/qbpmdesigner:24080705
  • registry-new.diasoft.ru/release/database-qbpmdesigner:24080705
  • registry-new.diasoft.ru/release/qbpmcockpit:24071205
  • registry-new.diasoft.ru/release/database-qbpmcockpit:24071205
  • registry-new.diasoft.ru/release/dqhumantask:24101702
  • registry-new.diasoft.ru/release/database-dqhumantask:24101702
  • registry-new.diasoft.ru/release/humantaskui:24092302
  • registry-new.diasoft.ru/release/qbpetqbpmplayer:24102203
  • registry-new.diasoft.ru/release/database-qbpetqbpmplayer:24102203

Создание эталонной базы данных проекта

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

Список модулей и их БД:

  1. QBPD - Дизайнер бизнес-процессов и бизнес-правил (Q.BPM Business Process Designer): qbpmdesigner
  2. QC - Управление бизнес-процессами (Q.BPM Cockpit): qbpmcockpit
  3. QHT - Пользовательские задания (Q.BPM Human Task): dqhumantask
  4. QBPET - Средства исполнения бизнес-процессов (Q.BPM Player): qbpetqbpmplayer
  5. QAL - Список заявок (Q.BPM Application List): qbpmapplist

Создание репозитория и сборки микросервиса на базе Q.BPM Player

Для создания прикладных микросервисов на базе Q.BPM Player должен быть использован базовый образ Q.BPM Player. Алгоритм создания репозитория и сборки для прикладного микросервиса следующий:

  • Для каждого разворачиваемого микросервиса на базе Q.BPM Player (далее модуль) в GitLab должен быть создан собственный отдельный репозиторий;

    Структура репозитория микросервиса должна быть следующая: Каталог модуля

    • Проект (main)
      • Ресурсы (resource)
        • Схемы (schemas)
          • Схема – файл .json
        • Процесс – файл .bpmn
    • Docker
      • Dockerfile-database.txt
      • Dockerfile-service.txt
      • properties.properties
    • pom.xml
  • В репозитории модуля должен быть расположен каталог проекта «main», где нет java кода, каталог «Docker» и файл pom.xml;

  • В каталоге «main» должен быть расположен каталог «resource», где должны содержаться только ресурсы (процесс + схема (объект)). Для хранения схем в каталоге «resource» должен быть выделен каталог «schemas». Хранение схем (объектов) в отдельном каталоге необходимо для обеспечения однозначной идентификации бизнес-объекта, необходимого для запуска модуля. Таким образом, библиотека динамических атрибутов однозначно определяет схему, необходимую для запуска модуля. В частных случаях сервис может стартовать без схем;

  • В каталоге «Docker» должны быть расположены Dockerfile-database.txt и Dockerfile-service.txt - инструкции для сборки docker-образа Q.BPM Player. В файлах Dockerfile-database.txt и Dockerfile-service.txt должно быть указано расположение хранилища, где хранится образ Q.BPM Player определенной версии, указано расположение файл.jar и параметры запуска;

  • Пример GIT QHT/qhtbpm (opens in a new tab);

  • Далее настройка Jenkins файла полностью идентична настройка MSA и процесс выпуска построен точно так же.

Обновление базового образа Q.BPM Player

Для обновления базового образа плеера необходимо:

  1. Перейти в репозиторий плеера в каталог docker
  2. В файлах Dockerfile-database.txt и Dockerfile-service.txt указать актуальную версию образа из registry-new.diasoft.ru/release
Dockerfile-database.txt
Dockerfile-service.txt
  1. Зафиксировать изменения. Начнется сборка модуля на обновленном образе
  2. Если в docker указана версия release, достаточно перезапустить сборку
  3. Обновить модуль на стенде
⚠️

Версии образа в Dockerfile-database.txt и Dockerfile-service.txt обязательно должны совпадать

Параметры Q.BPM Player:

  • QBPM_PROCESS_INPUT_TOPICS - через точку с запятой топики для подписки
  • QBPM_PROCESS_OUTPUT_TOPICS - через точку с запятой топики, в которые разрешена отправка (Пример: QBPM_PROCESS_OUTPUT_TOPICS = dsTaskCreateEvent;dsTaskCancelEvent;dsTaskActionEvent)
  • QBPM_MODE - режим работы плеера dev/prod/run
  • QBPM_DLQ_TOPICS - создание топиков с постфиксом dlq - по умолчанию false (true - создание включено; false - создание выключено)
  • QBPM_LIMIT_DEFINITION_VERSIONS_ENABLED - автоудаление бизнес-процессов - по умолчанию false (true - автоудаление включено; false - автоудаление выключено)
  • QBPM_LIMIT_DEFINITION_VERSIONS_COUNT - количество сохраненных процессов (по умолчанию 10)
💡

При автоудалении в Дизайнере бизнес-процессов диаграмма меняет статус на архивный. Из Мониторинга процессов удаляются связанные процессы. Если у процесса есть активные экземпляры - данный процесс не удаляется. Удаление происходит после публикации новой версии.

Режим работы плеера dev/prod/run

Реализовано разделение диаграмм по областям/неимспейсам/профилям на три режима работы (в каждом из режимов у диаграмм параметр tenantId будет соответствующий):

  1. DEV - все версии диаграмм помечаются специальной меткой. Активизируется job, который "чистит" активные процессы - завершает (будут иметь статус "Внешне завершенный") все активные экземпляры процессов, если они исполняются более 12ч. Также спустя один день исполнения экземпляра процесса по нему очищается история - удаляются записи в сервисе qbpetqbpmplayer таблицы: act_hi_*
  2. PROD - режим по умолчанию, платформа работает, как и раньше. Публикуются диаграммы, хранится полная история и т.п.
  3. RUN - все версии диаграмм помечаются специальной меткой. Активизируется job, который "чистит" активные процессы - завершает (будут иметь статус "Внешне завершенный") все активные экземпляры процессов, если они исполняются более 5 минут. Очищается история - удаляются записи в сервисе qbpetqbpmplayer таблицы: act_hi_*

При этом контроллеры в Swagger также разделены по профилям и не пересекаются.

Режим, настройка конфигурации QBPM_MODE, устанавливается вручную через конфиги Kubernetes. Эта доработка дает несколько плюсов и решает ряд проблем:

  1. Проведение показов и важных презентаций в режиме PROD. Избавляет от демонстрации множества версий, на которых происходила отладка (мусор).
  2. В режиме DEV можно удалять версии, как и сколько угодно. Режим PROD для использования финальной, рабочей, стабильной версии диаграммы (без возможности всякого удаления версий диаграмм).
  3. Уменьшение потребления памяти сервисом.

Дополнительные возможности - реализация функционала тестового запуска экземпляра диаграммы. Кнопка Play открывает модальное окно, в котором указываются входные и выходные параметры, после чего можно запустить на исполнение экземпляр диаграммы в режиме RUN. Данный режим позволяет отлаживать небольшие "кусочки" большой диаграммы, которые разбиваются на подмножество диаграмм. Таким образом позволяя найти и устранить все дефекты при проектировании. При таком тестовом запуске все активные экземпляры диаграмм будут завершены, если исполняются более 5 минут. Также спустя один день исполнения экземпляра процесса по нему очищается история - удаляются записи в сервисе qbpetqbpmplayer таблицы:act_hi_*.

empty

Для того чтобы произвести тестовый запуск экземпляра процесса, необходимо в модальном окне у входных параметров заполнить столбец "Тестовое значение".

Хранение истории выполнения процессов

Для экономии памяти в БД можно настроить очистку истории выполненных процессов. Количество дней хранения истории выполнения процессов записывается в act_re_procdef.history_ttl_

Задать значение history_ttl_ - History Time To Live можно несколькими способами:

  1. Можно полностью выключить хранение истории. В Дизайнере бизнес-процессов в свойствах процесса включить параметр Не хранить историю выполнения процесса. Настраивается отдельно на каждом процессе. empty
  2. Задать количество дней хранения истории. В Дизайнере бизнес-процессов в свойствах процесса задать значение для параметра Время жизни истории. Настраивается отдельно на каждом процессе. empty
  3. Задать в Q.BPM Player режим работы через параметр QBPM_MODE
  4. Добавить в Мониторинг бизнес-процессов (qbpmcockpit) параметр QBPM_HISTORY_TIME_TO_LIVE и указать ему значение в днях. (Пример QBPM_HISTORY_TIME_TO_LIVE: P1D)
💡

Если в Q.BPM Player не выставлен режим работы (QBPM_MODE=run/dev/prod), в таком случае значение для act_re_procdef.history_ttl_ будет проставляться из qbpmcockpit в параметре QBPM_HISTORY_TIME_TO_LIVE

💡

Таблицы истории выполнения процессов не будут очищены, пока процесс активный.

💡

Рекомендуем настроить выполнение VACUUM FULL в таблицах act_hi_*

Возможности логирования и уровни

logging:
    config: classpath:log4j2.xml
level:
    root: ${LOGGING_ROOT_LEVEL:INFO} // логирование абсолютно всего
    ru.diasoft.micro: ${LOGGING_DIASOFT_LEVEL:${LOGGING_ROOT_LEVEL:INFO}} // логирование классов Диасофта
    org.hibernate.type: ${LOGGING_HIBERNATE_LEVEL:INFO} #To log values set TRACE // логирование запросов в БД
    org.apache.kafka.clients: ${LOGGING_KAFKA_LEVEL:INFO} // логирование кафка-клиента
    org.springframework.kafka.listener: ${LOGGING_KAFKA_LEVEL:INFO} // логирование лиснеров
    org.camunda.bpm.engine: ${LOGGING_CAMUNDA_LEVEL:INFO} // логирование всех действий камунды
    org.springframework.transaction: ${LOGGING_TRANSACTION_LEVEL:INFO} // логирование транзакций

Логирование всегда должно быть включено. По умолчанию логирование устанавливает в уровень ERROR, допускается использование всех модулей. Для режима PROD- рекомендуется выставлять уровень ERROR и только на необходимый модуль. Для режима DEV или RUN- рекомендуется выставлять уровень ALL, модуль "root".

Доступные режимы логирования:

  • INFO - только информативные сообщения и то, что логируется в коде с уровнем INFO;
  • ERROR - выводится информация по всем ошибкам;
  • WARN - информация о различных предупреждениях;
  • ALL - максимальный уровень, который выводит абсолютно все;
  • DEBUG - режим отладки
⚠️

В режиме DEBUG сервис потребляет большое количество ресурсов

Q.BPM Руководство по установке и запуску сервисов

Настройка проектного стенда и конфигурации для него в репозитории

devops_configs (opens in a new tab)

Настраивать можно по аналогии с веткой [omniplatform] (https://gitflex.diasoft.ru/devops/devops_configs/-/tree/omniplatform/devops/stages/dev (opens in a new tab)) Необходимо создать свою ветку: название ветки = название неймспейса

Настройка конфигурации сервисов

Примеры общих настроек неймспейса (БД PostgreSQL):

Примеры необходимых настроек для модулей:

  1. Q.BPM UI (Рутовое приложение)
    • Настройки QBPM UI (стандартная авторизация через mdpauth)
    Пример содержимого конфигурационного файла
    • Настройки QBPM UI (Keycloak авторизация)
    Пример содержимого конфигурационного файла
  2. QBPD - Дизайнер бизнес-процессов и бизнес-правил (Business Process Designer)
    qbpmdesigner.properties
  3. QC - Управление бизнес-процессами (Cockpit)
    qbpmcockpit.properties
  4. QHT - Пользовательские задания (Human Task)
    dqhumantask.properties
  5. QHT - Пользовательские задания UI (Human Task UI)
    humantaskui.properties
  6. QBPET - Средства исполнения бизнес-процессов (Q.BPM Player)
    qbpetqbpmplayer.properties
⚠️

Для сервисов Q.BPM корректны следующие значения:
ALLOW_ALL_FOR_DEBUG: false
SECURITY_ENABLED: true

⚠️

Для работы сервисов Q.BPM потребуется установка актуальных версий платформенных сервисов

  • mdpauth
  • mdpdepartments
  • mdpemployee
  • mdpgateway
  • mdprefs
  • mdproles
  • mdpsenders
  • mdpsettings
  • mdpusers
💡

Актуальные версии платформенных сервисов запрашивать у команды "Инструменты и платформа Back-end разработки"

Настройка авторизации

Для бэкенд сервисов Q.BPM обязательны параметры
Для вызова через rest-connector потребуются дополнительные параметры

Настройка лицензии

После 10.03.2023 в сервисах Q.BPM включена проверка на лицензирование.
Для оформления лицензии необходимо направить запрос на «CTL - входящие обращения ctl@diasoft.ru»

Модули, которые должны быть указаны в лицензии:

  • QBPD - Управление бизнес процессами (qbpmdesigner)
  • QC - Мониторинг бизнес-процессов (qbpmcockpit)
  • QHT - Пользовательские задачи (dqhumantask)
  • QBPET - Средства исполнения бизнес-процессов (qbpetqbpmplayer)

Настройка в неймспейсе через Kubernetes

  1. Открыть Kubernetes, раздел Config Maps
  2. Найти конфигурацию с наименованием share-config-volume
  3. Открыть на редактирование
  4. empty
  5. Найти в разделе data параметр license.xml:
  6. empty
  7. Если данный параметр отсутствует - добавить параметр с названием license.xml
  8. В значение параметра добавить все содержимое полученного файла license.xml
  9. Сохранить конфигурацию share-config-volume по кнопке Update
  10. В system-config либо в конфигурацию сервиса добавить параметр LPATH: /share/config/
  11. Проверить значение параметра LPATH в сервисах Q.BPM. При необходимости изменить значение на корректное, либо отключить (удалить) параметр
  12. После настройки параметра перезапустить сервисы Q.BPM
⚠️

Файл лицензии также необходимо подложить в devops_configs вашего проекта в каталог share_templates/config_templates
И убедиться, что в devops_configs в каталоге properties настроен для сервисов параметр LPATH

Настройка аутентификации в Kafka через SSL (Secure Sockets Layer)

Описание параметров

  • KAFKA_SECURITY_PROTOCOL - протокол, по которому сервис подключается к брокеру, по умолчанию ”PLAINTEXT для включения SSL необходимо задать значение ”SSL”.
  • KAFKA_TRUSTSTORE_LOCATION - путь до хранилища доверенных сертификатов, по умолчанию пустой, значение должно начинаться с указания протокола ”file:// после этого указывается полный путь до файла.
  • KAFKA_TRUSTSTORE_PASSWORD - пароль от хранилища доверенных сертификатов, по умолчанию пустой.
  • KAFKA_KEYSTORE_LOCATION - путь до хранилища приватных ключей, по умолчанию пустой, правила заполнения аналогично KAFKA_TRUSTSTORE_LOCATION.
  • KAFKA_KEYSTORE_PASSWORD - пароль от хранилища приватных ключей, по умолчанию пустой.
  • KAFKA_KEY_PASSWORD - пароль от приватного ключа, по умолчанию пустой.

Параметры необходимо добавить в файл с настройками сервиса на стенде и в файл, который загружается на стенд при установке/обновлении сервиса (application.properties или application.yaml)

Пример настроек

Настройка сервисов для работы с Keycloak-авторизацией

Для использования ВPM-сервисов на стенде с Keycloak необходимо:

  1. Настроить стенд для работы с keycloak

  2. Установить актуальные версии Q.BPM сервисов и платформенных сервисов, необходимых для работы Q.BPM

  3. В Kubernetes в сервисных конфигурационных файлах добавить параметры

    Параметры
  4. Удалить в конфигурационных файлах параметр AUTH_PROVIDER=digitalq

  5. В системном конфигурационном файле добавить параметр KUBERNETES_LEGACY_MOD=true

  6. В BPM-сервисах включить параметр SECURITY_ENABLED=true

  7. Параметры для добавления технического пользователя в Q.BPM Player

    Параметры
  8. После выполнения настроек перезапустить сервисы Пример настроенного стенда (opens in a new tab)

Завершающий этап

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

Запуск сервисов

Рекомендуемые значения ресурсов для запуска сервиса:

Проверить настройки в Deployment сервиса в разделе resources/limits. Рекомендуемые лимиты для сервисов Q.BPM:

          resources:
            limits:
              cpu: '2'
              memory: 2Gi

Параметры пула выделения памяти:

JAVA_XMS: 1g
JAVA_XMX: 2g
  • JAVA_XMS - начальный пул выделения памяти
  • JAVA_XMX - максимальный пул выделения памяти

Сколько выделено памяти, будет видно при запуске сервиса. Если не настроить параметры JAVA_XMS и JAVA_XMX, по умолчанию их значения следующие:

JAVA_XMS: 64m
JAVA_XMX: 512m

empty

⚠️

Нельзя выставлять параметры JAVA_XMS и JAVA_XMX выше лимитов в деплойменте сервиса. В таком случае сервис не запустится.

Распространенные ошибки при запуске сервисов

Сервис перезапускается с ошибкой Killed в логе:

  • Решение: Поднять лимиты в деплойменте сервиса

Сервис перезапускается с ошибкой Java heap space в логе:

  • Решение: Проверить настройки JAVA_XMS и JAVA_XMX согласно описанию выше

Сервис не запускается

Error creating bean with name 'springSecurityFilterChain' defined
  • Решение: Неправильно заданы параметры ALLOW_ALL_FOR_DEBUG и SECURITY_ENABLED
⚠️

Для сервисов Q.BPM корректны следующие значения:
ALLOW_ALL_FOR_DEBUG: false
SECURITY_ENABLED: true

Статус ImagePullBackOff у пода:

Failed to pull image <image name:tag>: rpc error: code = NotFound desc = failed to pull and unpack image <image name:tag>: failed to resolve reference <image name:tag>: <image name:tag>: not found

Решение: Прописать актуальный образ из реестра образов

JPA_DIALECT

Failed to initialize JPA EntityManagerFactory: Unable to load class [jsonb-node]

Решение: Неправильно задано значение параметра JPA_DIALECT

Лицензия:

Error creating bean with name 'LStart': Invocation of init method failed; nested exception is java.lang.Exception: Signature is invalid

Решение: Неправильно задан параметр LPATH. Проверить значение параметра LPATH. Также данная ошибка может возникать, если файл лицензии неправильной структуры

Error creating bean with name 'LStart': Invocation of init method failed; nested exception is java.lang.Exception: Expired

Решение: Истек срок лицензии. Лицензию необходимо обновить.

Error creating bean with name 'LStart': Invocation of init method failed; nested exception is java.lang.Exception: Error reading file

Решение: Раздел license.xml на стенде пустой либо имеет некорректное содержание. Необходимо проверить его содержимое на стенде.

Parameter not found: ExpirationDate

Решение: Проверить настройки лицензии (opens in a new tab)

При некорректной проливке БД в интерфейсе будет возникать ошибка:

ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet

Решение: Проверить лог проливки database. При необходимости выполнить проливку заново. Успешно выполненной проливкой является наличие сообщения: The DB-manager worked SUCCESSFULLY

Q.BPM Player не запускается

The deployment contains definitions with same key '<key value>' (id attribute), this is not allowed

Решение: Открыть репозиторий с Q.BPM Player. Проверить процессы в каталоге src/main/resources на наличие повторяющихся ключей. Убрать повторение. Пересобрать Q.BPM Player.

ENGINE-01011 Cannot deploy process definition <someProcess>: there already is a message event subscription for the message with name <someTopicName>

Решение: Проверить в БД Q.BPM Player таблицу act_ru_event_subscr на наличие данных с топиком из лога. Запись с проблемным топиком необходимо удалить из БД.

ENGINE-09005 Could not parse BPMN process

Решение: проверить репозиторий Q.BPM Player на наличие ошибок в диаграммах. Удалить невалидные диаграммы или исправить ошибки. Пересобрать Q.BPM Player.

Авторизация

Failed to instantiate [javax.servlet.Filter]: Factory method 'springSecurityFilterChain' threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mdpAuthJwtDecoder' defined in class path resource [ru/diasoft/micro/mdp/lib/qoauth/QSecurityConfig.class]

Решение: обновить версию mdpauth, проверить настройки авторизации (opens in a new tab)

Kafka

Failed to create topics. error: Creating topics with default partitions/replication factor are only supported in CreateTopicRequest version 4+. The following topics need values for partitions and replicas: [qpbcd-pbc-ext-bussiness-platform-platform-type-reply]

Решение: В Config Maps сервиса добавить параметр spring.cloud.stream.kafka.binder.replication.factor: '1' Для Kafka версии ниже 2.4 значение -1. На версии от 2.4 значение 1

Expiring 1 record(s) for <имя топика>:120000 ms has passed since batch creation

Решение: В параметрах сервиса Kafka выставить настройку min.insync.replicas = 1

⚠️

Значение параметра replication.factor ≥ min.insync.replicas

Failed to create new KafkaAdminClient
Invalid url in bootstrap.servers: qkafka

Решение: Проверить корректность настроек KAFKA_HOST, KAFKA_PORT, KAFKA_URL на стенде

Понял! Вот отформатированный текст с возможностью копирования:

Инструкция по переходу на Реестр бизнес-процессов

Внимание: Количество времени, затраченное на переход, будет зависеть от размера БД qbpmdesigner.

Узнать размер мигрируемых таблиц

SELECT SUM(pg_total_relation_size('qbpmdesigner.' || table_name)) / 1024 / 1024 AS "Размер таблиц в МБ"
FROM information_schema.tables
WHERE table_schema = 'qbpmdesigner'
  AND table_name IN ('auto_pk_support',
                     'q_bpm_clob_data',
                     'q_bpm_product_owner',
                     'q_bpm_product',
                     'q_bpm_diagram',
                     'q_bpm_diagram_comment',
                     'q_bpm_diagram_comment_read',
                     'q_bpm_diagram_version',
                     'q_bpm_diagram_item',
                     'q_bpm_diagram_item_link',
                     'q_bpm_diagram_item_req',
                     'q_bpm_diagram_item_variable',
                     'q_bpm_diagram_labels',
                     'q_bpm_diagram_milestone',
                     'q_bpm_diagram_template',
                     'q_bpm_diagram_verification',
                     'q_bpm_diagram_version_protocol',
                     'q_bpm_diagram_version_res_def',
                     'q_bpm_favourite_diagram',
                     'q_bpm_favourite_product',
                     'q_bpm_label',
                     'q_bpm_milestone',
                     'q_bpm_milestone_version',
                     'q_bpm_milestone_version_link',
                     'qbpmdesigner_access',
                     'qbpmdesigner_access_right',
                     'qbpmdesigner_api',
                     'qbpmdesigner_api_attribute',
                     'qbpmdesigner_attribute',
                     'qbpmdesigner_event',
                     'qbpmdesigner_event_attribute',
                     'qbpmdesigner_participant',
                     'qbpmdesigner_pbc',
                     'qbpmdesigner_role',
                     'qbpmdesigner_role_access',
                     'qbpmdesigner_test_value_set',
                     'qhprj_healthproject',
                     'qhprj_healthprojectitem',
                     'qhprj_healthprojectpublish',
                     'qhprj_projectgrouptpstate',
                     'rights_cacheid');

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

  1. Выключите qbpmdesigner и qbpmcockpit на стенде.

  2. При наличии технической возможности снимите дамп мигрируемых таблиц qbpmdesigner.

  3. Пересоздайте Job database-qbpmcockpit, указав образ registry-new.diasoft.ru/release/database-qbpmcockpit:versionTag. Дождитесь успешного выполнения проливки database-qbpmcockpit.

  4. Обновите qbpmcockpit до версии registry-new.diasoft.ru/release/qbpmcockpit:versionTag.

  5. Выполните миграцию таблиц, убедившись в отсутствии ошибок:

    TRUNCATE TABLE qbpmcockpit.auto_pk_support;
    INSERT INTO qbpmcockpit.auto_pk_support SELECT * FROM qbpmdesigner.auto_pk_support;
    INSERT INTO qbpmcockpit.q_bpm_clob_data SELECT * FROM qbpmdesigner.q_bpm_clob_data;
    INSERT INTO qbpmcockpit.q_bpm_owner SELECT * FROM qbpmdesigner.q_bpm_product_owner;
    INSERT INTO qbpmcockpit.q_bpm_product SELECT * FROM qbpmdesigner.q_bpm_product;
    INSERT INTO qbpmcockpit.q_bpm_diagram SELECT * FROM qbpmdesigner.q_bpm_diagram;
    INSERT INTO qbpmcockpit.q_bpm_diagram_comment SELECT * FROM qbpmdesigner.q_bpm_diagram_comment;
    INSERT INTO qbpmcockpit.q_bpm_diagram_comment_read SELECT * FROM qbpmdesigner.q_bpm_diagram_comment_read;
    INSERT INTO qbpmcockpit.q_bpm_diagram_version SELECT * FROM qbpmdesigner.q_bpm_diagram_version;
    INSERT INTO qbpmcockpit.q_bpm_diagram_item SELECT * FROM qbpmdesigner.q_bpm_diagram_item;
    INSERT INTO qbpmcockpit.q_bpm_diagram_item_link SELECT * FROM qbpmdesigner.q_bpm_diagram_item_link;
    INSERT INTO qbpmcockpit.q_bpm_diagram_item_req SELECT * FROM qbpmdesigner.q_bpm_diagram_item_req;
    INSERT INTO qbpmcockpit.q_bpm_diagram_item_variable SELECT * FROM qbpmdesigner.q_bpm_diagram_item_variable;
    INSERT INTO qbpmcockpit.q_bpm_diagram_labels SELECT * FROM qbpmdesigner.q_bpm_diagram_labels;
    INSERT INTO qbpmcockpit.q_bpm_diagram_milestone SELECT * FROM qbpmdesigner.q_bpm_diagram_milestone;
    INSERT INTO qbpmcockpit.q_bpm_diagram_template SELECT * FROM qbpmdesigner.q_bpm_diagram_template;
    INSERT INTO qbpmcockpit.q_bpm_diagram_verification SELECT * FROM qbpmdesigner.q_bpm_diagram_verification;
    INSERT INTO qbpmcockpit.q_bpm_diagram_version_protocol SELECT * FROM qbpmdesigner.q_bpm_diagram_version_protocol;
    INSERT INTO qbpmcockpit.q_bpm_diagram_version_res_def SELECT * FROM qbpmdesigner.q_bpm_diagram_version_res_def;
    INSERT INTO qbpmcockpit.q_bpm_favourite_diagram SELECT * FROM qbpmdesigner.q_bpm_favourite_diagram;
    INSERT INTO qbpmcockpit.q_bpm_favourite_product SELECT * FROM qbpmdesigner.q_bpm_favourite_product;
    INSERT INTO qbpmcockpit.q_bpm_label SELECT * FROM qbpmdesigner.q_bpm_label;
    INSERT INTO qbpmcockpit.q_bpm_milestone SELECT * FROM qbpmdesigner.q_bpm_milestone;
    INSERT INTO qbpmcockpit.q_bpm_milestone_version SELECT * FROM qbpmdesigner.q_bpm_milestone_version;
    INSERT INTO qbpmcockpit.q_bpm_milestone_version_link SELECT * FROM qbpmdesigner.q_bpm_milestone_version_link;
    INSERT INTO qbpmcockpit.qbpmdesigner_access SELECT * FROM qbpmdesigner.qbpmdesigner_access;
    INSERT INTO qbpmcockpit.qbpmdesigner_access_right SELECT * FROM qbpmdesigner.qbpmdesigner_access_right;
    INSERT INTO qbpmcockpit.qbpmdesigner_pbc SELECT * FROM qbpmdesigner.qbpmdesigner_pbc;
    INSERT INTO qbpmcockpit.qbpmdesigner_api SELECT * FROM qbpmdesigner.qbpmdesigner_api;
    INSERT INTO qbpmcockpit.qbpmdesigner_attribute SELECT * FROM qbpmdesigner.qbpmdesigner_attribute;
    INSERT INTO qbpmcockpit.qbpmdesigner_api_attribute SELECT * FROM qbpmdesigner.qbpmdesigner_api_attribute;
    INSERT INTO qbpmcockpit.qbpmdesigner_event SELECT * FROM qbpmdesigner.qbpmdesigner_event;
    INSERT INTO qbpmcockpit.qbpmdesigner_event_attribute SELECT * FROM qbpmdesigner.qbpmdesigner_event_attribute;
    INSERT INTO qbpmcockpit.qbpmdesigner_participant SELECT * FROM qbpmdesigner.qbpmdesigner_participant;
    INSERT INTO qbpmcockpit.qbpmdesigner_role SELECT * FROM qbpmdesigner.qbpmdesigner_role;
    INSERT INTO qbpmcockpit.qbpmdesigner_role_access SELECT * FROM qbpmdesigner.qbpmdesigner_role_access;
    INSERT INTO qbpmcockpit.qbpmdesigner_test_value_set SELECT * FROM qbpmdesigner.qbpmdesigner_test_value_set;
    INSERT INTO qbpmcockpit.qhprj_healthproject SELECT * FROM qbpmdesigner.qhprj_healthproject;
    INSERT INTO qbpmcockpit.qhprj_healthprojectitem SELECT * FROM qbpmdesigner.qhprj_healthprojectitem;
    INSERT INTO qbpmcockpit.qhprj_healthprojectpublish SELECT * FROM qbpmdesigner.qhprj_healthprojectpublish;
    INSERT INTO qbpmcockpit.qhprj_projectgrouptpstate SELECT * FROM qbpmdesigner.qhprj_projectgrouptpstate;
    INSERT INTO qbpmcockpit.rights_cacheid SELECT * FROM qbpmdesigner.rights_cacheid;
  6. Обновите версию qpbmui до registry-new.diasoft.ru/release/qpbmui:versionTag.

  7. Если пункты меню Дизайнер бизнес-процессов и Мониторинг бизнес-процессов используются в своем рутовом приложении:

    • Измените endpoint "service": "qbpmdesigner" и "service": "qbpmcockpit" на "service": "qcui".
    • Добавьте раздел Реестр бизнес-процессов.

Пример раздела "Реестр бизнес-процессов"

{
  "caption": "Реестр бизнес-процессов",
  "expanded": false,
  "icon": "pi-list",
  "items": [
    {
      "caption": "Бизнес-процессы и правила",
      "service": "qbprui",
      "component": "qbprui",
      "route": "/diagram",
      "icon": "qi-cubes-outlined"
    }
  ]
}
  1. Установите qcui registry-new.diasoft.ru/release/qcui:versionTag и qbprui registry-new.diasoft.ru/release/qbprui:versionTag.
  2. Включите qbpmcockpit.
  3. Проверьте работоспособность новых пунктов меню в рутовом приложении.