Актуальная версия ExeMES - 2.0 (релиз от февраля 2025 г.)

Для обновления на версию ExeMES 2.0 необходимо выполнить последовательно следующие шаги:

Процесс обновления БД MESDB до версии 2.0 возможен, начиная с версии 1.3. Для обновления до версии 1.3 см. пункт Обновление на версию 1.3.

Перед обновлением выполните процедуру резервного копирования БД MESDB.

Обновление БД производится из интерфейса ExeMES Client.

  1. Пройдите стандартную процедуру авторизации в ExeMES Client.
  2. В правом верхнем углу экрана ExeMES Client воспользуйтесь всплывающим меню, которое вызывается по нажатию на иконку пользователя в статусной строке ExeMES Client
  3. Во всплывающем меню выберите пункт «Версия №», после чего откроется страница проверки и обновления версии базы данных MES.
  4. Для проверки актуальности версии БД нажмите на кнопку «Проверить актуальность БД». Результаты проверки отобразятся на странице ниже. В случае актуальной версии MESDB сообщение будет следующим:
  5. В случае необходимости обновления версии БД в окне появится кнопка «Обновить версию БД» и детальная информация о вносимых изменениях. Для обновления нажмите на кнопку «Обновить версию БД»
  6. Подтвердите обновление БД во всплывающем окне, нажав на кнопку «Ок»
  7. После завершения обновления появится соответствущее сообщение и лог обновления.


Для возможности работы с новыми приложениями ExeRuntimeClient и ExeSched необходимо импортировать конфигурацию новых клиентов в существующий реалм Keycloak. Для этого выполните следующие шаги:

  1. Зайдите в приложение Keycloak под администратором реалма и выберите в выпадающем списке реалм «exemes»
  2. В левом боковом меню выберите пункт «Clients»
  3. В центральной части экрана нажмите на кнопку «Import Client»
  4. Ниже в центральной части экрана нажмите «Browse...»
  5. Выберите файл exemesruntime-client.json из папки upd, которая находится в составе дистрибутива exemes 2.0.
  6. После завершения загрузки файла, переместитесь в конец страницы и нажмите кнопку «Save»
  7. Аналогичные действия необходимо произвести со вторым файлом в папке upd: exesched.json.
  8. После завершения импорта конфигурации убедитесь что новая конфигурация появилась в списке клиентов

Для корректной работы новых приложений ExeRuntimeClient и ExeSched необходимо создать и настроить для роли в импортированных клиентах:

  1. Выберите в списке клиентов «exemesruntime-client».
    1. В центральной части экрана перейдите на вкладку «Roles» и нажмите на кнопку «Create role»
    2. Ниже заполните поля Role name и Description, в завершении нажмите кнопку «Save»
    3. Таким образом, создайте 4 роли с описаниями:
      • Role name = Inventory,  Description = Доступ к экрану управления складскими остатками;
      • Role name = Operator, Description = Доступ к панели оператора;
      • Role name = Quality, Description = Доступ к экрану управления качеством;
      • Role name = Utilization, Description = Доступ к экрану управления событиями оборудования.
  2. Вернитесь к списку клиентов и выберите «exesched»
    1. Для exesched создайте 1 роль:
      • Role name = Scheduler, Description = Планировщик.
  3. Назначьте новые роли соответствующим группам пользователей, в зависимости от Вашей конфигурации. Подробно об Управлении доступом к ExeMES.
  4. Добавьте новые роли соответствующим группам пользователей, в зависимости от Вашей конфигурации для возможности настройки механизма разграничения прав доступа по объектам.
    1. Выберите в левом меню вкладку «Clients» далее выберите пункт «mesmiddleware»
    2. В центральной части экрана выберите вкладку «Roles» и нажмите кнопку «Create Role»
    3. В новом окне заполните поля Role name и Description. Таким образом для клиента mesmiddleware должно быть создано 2 роли:
      • Role name = VAccess,  Description = View Access Management;
      • Role name = EAccess,  Description = Edit Access Management.
    4.  Назначьте новые роли группам пользователей, в зависимости от конфигурации Вашей системы. Подробно об Управлении доступом к ExeMES.
  5. Добавьте существующие роли реалма группам пользователей, в зависимости от конфигурации Вашей системы, для корректной работы механизма разграничения доступа к объектам.
    1. Добавьте роль view-users (существующая);  
    2. Добавьте роль manage-authorization (существующая).
  6. Добавьте роль realm-management/view-clients для сервисного аккаунта клиента mesmiddleware.
    1. Для этого перейдите в левом меню на вкладку «Clients»;
    2. Выберите пункт «mesmiddleware»;
    3. В центральной части экрана перейдите на вкладку «Service Account Roles» и нажмите на кнопку «Assign role»;
    4. В появившемся окне выберите фильтр «Filter by clients»;
    5. Введите в поле фильтра «view-clients»;
    6. Выберите роль «view-clients» и нажмите кнопку «Assign».

  1. Добавьте образы новых приложений в docker. Для этого находясь в папке /images/ дистрибутива ExeMES 2.0 выполните следующие команды
    • docker load -i ./exemesmiddleware2.0.tar
      docker load -i ./exemesclient2.0.tar
      docker load -i ./exeruntimeclient1.0.tar
      docker load -i ./exesched1.0.tar
  2. Укажите новый образ для Middleware: 
    • image: "git.exeplant.ru:5050/mes-develop/exemesmiddleware:2.0"
  3. Сконфигурируйте новую переменную окружения для Middleware:
  4. Укажите новый образ для MESClient:
    • image: "git.exeplant.ru:5050/mes-develop/exemesclient:2.0"
  1. Скопируйте папки data/exeruntimeclient и data/exesched в папку с установленным ПО ExeMES (по умолчанию root/dev/);
  2. Добавьте в файл docker-compose (по умолчанию root/dev/) конфигурацию приложения ExeRuntimeClient и ExeSched;
    • exesched:
          container_name: exesched
          image: "git.exeplant.ru:5050/mes-develop/exesched:1.0"
          restart: always
          environment:
            MiddlewareApiRootUri: "https://middleware.mycompany.local:7142/api"    
            TZ: "Europe/Moscow"
            ASPNETCORE_URLS: "https://+;http://+"
            ASPNETCORE_HTTPS_PORT: "8135"
            ASPNETCORE_Kestrel__Certificates__Default__Password: "1"
            ASPNETCORE_Kestrel__Certificates__Default__Path: "/root/.aspnet/https/EXESched.pfx"
            GCCSettings:BroadcastRemoteLicenses: "0"
            GCCSettings:UseRemoteHosts: "1"
            GCCSettings:Remotehosts: "[license_server_ip]"
            DBConnection: "Server=some-postgres; User Id=postgres; Database=exesched; Port=5432; Password=postgres; SSLMode=Prefer"
          ports:     
            - "8135:443"
          volumes:
            - type: bind
              source: /root/dev/data/exesched/keycloak.json
              target: /App/keycloak.json
            - type: bind
              source: /root/dev/data/exesched/appsettings.json
              target: /App/appsettings.json
            - type: bind
              source: /root/dev/crt/EXESched.pfx
              target: /root/.aspnet/https/EXESched.pfx
            - type: bind
              source: /root/dev/crt/wildcard.mycompany.local.crt
              target: /etc/ssl/certs/wildcard.mycompany.local.pem 
          extra_hosts:
            - "mes-runtime.mycompany.local client.mycompany.local middleware.mycompany.local exesched.mycompany.local keycloak.mycompany.local:[host_ip]"
        exeruntimeclient:
          container_name: exeruntimeclient
          image: "git.exeplant.ru:5050/mes-develop/exeruntimeclient:1.0"
          restart: always
          environment:
            MiddlewareApiRootUri: "http://exemesmiddleware/api"    
            TZ: "Europe/Moscow"
            ASPNETCORE_URLS: "https://+;http://+"
            ASPNETCORE_HTTPS_PORT: "8143"
            ASPNETCORE_Kestrel__Certificates__Default__Password: "1"
            ASPNETCORE_Kestrel__Certificates__Default__Path: "/root/.aspnet/https/EXEMESClient.pfx"
            GCCSettings:BroadcastRemoteLicenses: "0"
            GCCSettings:UseRemoteHosts: "1"
            GCCSettings:Remotehosts: "[license_server_ip]"
          ports:     
            - "8143:443"
          volumes:
            - type: bind
              source: /root/dev/data/exeruntimeclient/keycloak.json
              target: /app/keycloak.json
            - type: bind
              source: /root/dev/data/exeruntimeclient/appsettings.json
              target: /App/appsettings.json
            - type: bind
              source: /root/dev/crt/wildcard.mycompany.local.pfx
              target: /root/.aspnet/https/EXEMESClient.pfx
            - type: bind
              source: /root/dev/crt/wildcard.mycompany.local.crt
              target: /etc/ssl/certs/wildcard.mycompany.local.pem
          extra_hosts:
            - "mes-runtime.mycompany.local client.mycompany.local middleware.mycompany.local keycloak.mycompany.local:[host_ip]"

      Обратите внимание, что новые приложения используют уже существующие сертификаты, проверьте правильность указания пути к файлам сертификатов (используйте аналогию с Middleware).

            - type: bind
              source: /root/dev/crt/EXESched.pfx
              target: /root/.aspnet/https/EXESched.pfx
            - type: bind
              source: /root/dev/crt/wildcard.mycompany.local.crt
              target: /etc/ssl/certs/wildcard.mycompany.local.pem 

      Параметры [license_server_ip] и [host_ip] должны быть скорректированы под Вашу конфигурацию (используйте аналогию с конфигурацией Вашего приложения Middleware).

      Параметры подключения к контейнеру БД Postgre указаны в конфигурации приложений по умолчанию. Для альтернативной БД сконфигурируйте соответствующие переменные окружения.

      Подробнее о настройке переменных окружения.

  3.   После завершения редактирования файла docker compose выполните перезапуск измененных и запуск добавленных контейнеров, выполнив команду:
    • docker compose up -d

Процесс обновления БД MESDB до версии 1.3 возможен только с версии 1.2. Для обновления до версии 1.2 см. пункт Обновление на версию 1.2

Для обновления ПО ExeMES 1.3 используется встроенный в Middleware функционал. Для корректной работы функционала обновления необходимо предварительно выполнить следующие действия:

Необходимо добавить в существующий реалм Keycloak новые роли и назначить эти роли требуемой группе пользователей, для этого:

  1. Зайдите в приложение Keycloak под администратором реалма и выберите в выпадающем списке реалм «exemes»
  2. Выберите в левом боковом меню пункт «Clients»
  3. В центральной части экрана выберите клиент «mesmiddleware»
  4. Перейдите на вкладку Roles и нажмите кнопку «Create Role»
  5. Заполните поля в открывшемся окне:
    •  Role name =EAdm,  Description = Edit (manage) Admin Tools.
  6. Нажмите кнопку «Save»
  7. Добавьте еще одну роль по аналогии:
    • Role name =VAdm,  Description = View Admin Tools.








Для корректной работы функционала обновления БД новые роли необходимо добавить группам пользователей в зависимости от Вашей конфигурации.

  1. Выберите нужную Вам группу и перейдите на вкладку «Role mapping» в центральной части экрана и нажмите на кнопку «Assign role»
  2. Во всплывающем окне выберите фильтр «Filter by clients», правее фильтра в строке поиске укажите имя роли VAdm и нажмите стрелку для поиска. Поставьте галку напротив группы VAdm и нажмите кнопку «Assign»
  3. Аналогично, для разрешения обновления версии БД MESDB группе пользователей добавьте роль EAdm.


Для корректной работы механизма обновления БД MESDB необходимо подключиться к БД MESDB любым клиентом СУБД, поддерживающим работу с Postgre версии 15.4 и выполнить следующий скрипт:

CREATE TABLE public."__EFMigrationsHistory" (
"MigrationId" varchar(150) NOT NULL,
"ProductVersion" varchar(32) NOT NULL,
CONSTRAINT "PK___EFMigrationsHistory" PRIMARY KEY ("MigrationId")
);

INSERT INTO public."__EFMigrationsHistory"
("MigrationId", "ProductVersion")
values
('20240312123332_MESDB_V0', '8.0.8'),
('20240708154420_MESDB_V1.2.0', '8.0.8');


Для обновления версий необходимо скорректировать файл docker-compose, указав

  • для Middleware
    image: "git.exeplant.ru:5050/mes-develop/exemesmiddleware:1.3.0"
  • для MESClient
    image: "git.exeplant.ru:5050/mes-develop/exemesclient:1.3.0"

Указанные образы обновляемых приложений должны быть предварительно добавлены в docker. Образы приложений располагаются в дистрибутиве в папке images. Для добавления образов в docker используйте команду docker load -i [путь к файлу образа]

 Далее для обновления необходимо использовать функционал автоматического обновления БД MESDB.

Кроме обязательных действий по обновлению БД MESDB мы предлагаем обновить описания статусов производственных заданий. Это обновление носит рекомендательный характер и никак не влияет на функционал ExeMES.

Для обновления необходимо выполнить следующий скрипт в любом клиенте СУБД подключенном к MESDB

update job_state set state_desc = 'НОВОЕ' where state_cd = 1;
update job_state set state_desc = 'В РАБОТУ' where state_cd = 2;
update job_state set state_desc = 'ВЫПОЛНЯЕТСЯ' where state_cd = 3;
update job_state set state_desc = 'ЗАВЕРШЕНО' where state_cd = 4;
update job_state set state_desc = 'ПРИОСТАНОВЛЕНО' where state_cd = 5;
update job_state set state_desc = 'ЗАМОРОЖЕНО' where state_cd = 6;
update job_state set state_desc = 'ОТМЕНЕНО' where state_cd = 7;
update job_state set state_desc = 'ПРОПУЩЕНО' where state_cd = 8;
update job_state set state_desc = 'ЗАМЕНЕНО' where state_cd = 9;


Для обновления ПО ExeMES до версии 1.2 необходимо:

  1. Установить ПО Guardant (при обновлении с версии 1.0)

  2. Обновить БД MESDB;
    • Перед обновлением БД MESDB необходимо создать резервную копию БД. При обновлении версии БД MESDB существующая конфигурация производственной модели и накопленные производственные данные будут сохранены. Обновление БД MESDB затрагивает только схему public, в том числе будут обновлены функции и хранимые процедуры.

      Для обновления версии БД MESDB потребуется любой клиент СУБД, поддерживающий подключение к СУБД Postgres. В клиенте СУБД необходимо выполнить подключение к БД MESDB, параметры подключения можно получить из docker-compose файла, который использовался при запуске существующей версии ExeMES. Далее необходимо выполнить скрипты sql, который располагаются в папке db_updates в дистрибутиве ExeMES 1.2:
      • Для обновления с версии 1.0:
            1. UPD_from_V1.0.0_to_V1.0.1.sql
            2. UPD_from_V1.0.1_to_V1.0.2.sql
            3. UPD_from_V1.0.2_to_V1.0.3.sql
            4. UPD_from_V1.0.3_to_V1.0.4.sql
            5. UPD_from_V1.0.4_to_V1.0.5.sql
            6. UPD_from_V1.0.5_to_V1.1.0.sql
      • Для обновления с версии 1.1
            1. V1.1.0_to_V1.2.0.sql
  3. Скорректировать путь для доступа контейнеров к существующему хранилищу СУБД Postgre;
    • По умолчанию при установке ExeMES для хранилища СУБД Postgre используется директория /root/dev/db/. Если при установке ExeMES было задано альтернативное размещение хранилища СУБД Postgre, то необходимо изменить путь подключения к нему. 

      Для этого перед развертыванием новых контейнеров ExeMES в Docker необходимо скорректировать файл docker-compose в части конфигурации контейнера Postgres, а именно добавить:

      volumes:
            - [путь к папке с существующим хранилищем БД Postgre]:/var/lib/postgresql/data/
  4. Удалить старые и запустить новые контейнеры ExeMES.
    • Для запуска контейнеров ExeMES версии 1.1, необходимо предварительно остановить и удалить существующие контейнеры ExeMES:
      • Postgres;
      • Keycloak;
      • Exemiddleware;
      • Exemesclient.

        Т.к. Keycloak хранит конфигурацию в БД, при удалении контейнера конфигурация не будет потеряна, внесенные настройки сохранены в БД и будут использованы новой версией контейнера

Если вы планируете изменить сертификаты безопасности не забудьте их сгенерировать и указать для использования приложениям как указано в инструкции

Затем необходимо установить новую версию ExeMES согласно инструкции ниже

Для обновления ПО ExeMES до версии 1.1 необходимо:

  1. Установить ПО Guardant

  2. Обновить БД MESDB;
    • Перед обновлением БД MESDB необходимо создать резервную копию БД. При обновлении версии БД MESDB существующая конфигурация производственной модели и накопленные производственные данные будут сохранены. Обновление БД MESDB затрагивает только схему public, в том числе будут обновлены функции и хранимые процедуры.

      Для обновления версии БД MESDB потребуется любой клиент СУБД, поддерживающий подключение к СУБД Postgres. В клиенте СУБД необходимо выполнить подключение к БД MESDB, параметры подключения можно получить из docker-compose файла, который использовался при запуске существующей версии ExeMES. Далее необходимо выполнить скрипты sql, который располагаются в папке db_updates в дистрибутиве ExeMES 1.1:
          1. UPD_from_V1.0.0_to_V1.0.1.sql
          2. UPD_from_V1.0.1_to_V1.0.2.sql
          3. UPD_from_V1.0.2_to_V1.0.3.sql
          4. UPD_from_V1.0.3_to_V1.0.4.sql
          5. UPD_from_V1.0.4_to_V1.0.5.sql
          6. UPD_from_V1.0.5_to_V1.1.0.sql
  3. Скорректировать путь для доступа контейнеров к существующему хранилищу СУБД Postgre;
    • По умолчанию при установке ExeMES для хранилища СУБД Postgre используется директория /root/dev/db/. Если при установке ExeMES было задано альтернативное размещение хранилища СУБД Postgre, то необходимо изменить путь подключения к нему. 

      Для этого перед развертыванием новых контейнеров ExeMES в Docker необходимо скорректировать файл docker-compose в части конфигурации контейнера Postgres, а именно добавить:

      volumes:
            - [путь к папке с существующим хранилищем БД Postgre]:/var/lib/postgresql/data/
  4. удалить старые и запустить новые контейнеры ExeMES.
    • Для запуска контейнеров ExeMES версии 1.1, необходимо предварительно остановить и удалить существующие контейнеры ExeMES:
      • Postgres;
      • Keycloak;
      • Exemiddleware;
      • Exemesclient.

        Т.к. Keycloak хранит конфигурацию в БД, при удалении контейнера конфигурация не будет потеряна, внесенные настройки сохранены в БД и будут использованы новой версией контейнера

Если вы планируете изменить сертификаты безопасности не забудьте их сгенерировать и указать для использования приложениям как указано в инструкции

Затем необходимо установить новую версию ExeMES согласно инструкции ниже