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

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

⚠️

После выполнения данной инструкции на вашем стенде должны работать только qbpmcockpit, qcui и qbprui
qbpmdesigner после миграции необходимо выключить.

⚠️

Внимание: Данная инструкция актуальна, если на стенде были установлены qbpmdesigner и qbpmcockpit. Если qbpmdesigner не был установлен ранее, а qbpmcockpit устанавливается впервые, переходим к пункту 9.

⚠️

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

⚠️

В таблице q_bpm_product id с 100 по 200 зарезервированы. Данный диапазон не использовать.

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

1. Необязательно. Узнать размер мигрируемых таблиц.
Запрос
2. Выключите qbpmdesigner и qbpmcockpit на стенде.
3. Сделайте дамп мигрируемых таблиц qbpmdesigner.
4. В Kubernetes пересоздайте Job database-qbpmcockpit, указав актуальный образ из registry-new.diasoft.ru/release/database-qbpmcockpit
5. Дождитесь успешного выполнения проливки Job database-qbpmcockpit
6. Обновите qbpmcockpit до актуальной версии из registry-new.diasoft.ru/release/qbpmcockpit
7. Выполните миграцию таблиц, убедившись в отсутствии ошибок в процессе работы скрипта:
⚠️

Если на стенде была установлена очень старая версия qbpmdesigner, некоторые таблицы могут быть не найдены. В таком случае insert с отсутствующими таблицами пропускаем.

  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;
8. Выполнить скрипт обновления групп продуктов
  UPDATE q_bpm_product
  SET parent_id = (select id from q_bpm_product where system_name = 'StandardProcess')
  WHERE parent_id IS NULL AND "type" != 4 AND system_name != 'StandardProcess' AND system_name != 'PersonalDrafts' AND system_name != 'ClientProcess';
  
  UPDATE q_bpm_product
  SET "path" = concat((select id from q_bpm_product where system_name = 'StandardProcess'), '.', "path")
  WHERE parent_id IS NOT NULL
  AND "type" != 4
  AND "path" NOT LIKE concat((select id from q_bpm_product where system_name = 'StandardProcess'), '.%')
  AND "path" NOT LIKE concat((select id from q_bpm_product where system_name = 'PersonalDrafts'), '.%')
  AND "path" NOT LIKE concat((select id from q_bpm_product where system_name = 'ClientProcess'), '.%');
9. Необязательно. Если в качестве главного меню используете qbpmui, обновите версию до актуальной версии
10. Если пункты меню Дизайнер бизнес-процессов и Мониторинг бизнес-процессов используете в своем рутовом приложении (единое главное меню, которое используется на вашем стенде):
  • Измените endpoint "service": "qbpmdesigner" и endpoint "service": "qbpmcockpit" на "service": "qcui"
      {
        "caption": "Дизайнер бизнес-процессов",
        "service": "qbpmdesigner",
        "component": "qbpmdesigner"
      },
      {
        "caption": "Мониторинг бизнес-процессов",
        "service": "qbpmcockpit",
        "component": "qbpmcockpit"
      }
  • Добавьте раздел Реестр бизнес-процессов.
      {
        "caption": "Реестр бизнес-процессов",
        "expanded": false,
        "icon": "pi-list",
        "items": [
          {
            "caption": "Бизнес-процессы и правила",
            "service": "qbprui",
            "component": "qbprui",
            "route": "/diagram",
            "icon": "qi-cubes-outlined"
          },
          {
            "caption": "Экземпляры процессов",
            "service": "qbprui",
            "component": "qbprui",
            "route": "/process-instance",
            "icon": "qi-layers-outlined"
          },
          {
            "caption": "Миграция",
            "service": "qbprui",
            "component": "qbprui",
            "route": "/migration",
            "icon": "pi-copy-outlined"
          }
        ]
      }
11. Установите актуальные версии qcui и qbprui.
12. Запустите сервис qbpmcockpit.
13. Проверьте, что у вас на стенде выключен qbpmdesigner, запущены и работают qbpmcockpit, qcui и qbprui
14. Проверьте работоспособность новых пунктов меню в главном меню.
⚠️

Если в интерфейсе возвращается ошибка 404, перезапустите mdpgateway