Общие сведения

Python-скрипт детализации (далее — скрипт) обеспечивает детализацию Drill-through, выполняя ее по условиям, описанным в файле конфигурации в формате JSON (см. Детализация Drill-through). Скрипт необходимо зарегистрировать для приложения при помощи утилиты plm-util, чтобы приложение могло с ним работать.

При регистрации скрипта необходимо указывать его название, которое в приложении отображается в выпадающем списке варианта «Связанный сценарий» контекстного меню факта (см. Детализация Drill-through).

В приложении может быть зарегистрировано сколько угодно много скриптов. Для каждого зарегистрированного скрипта обязательно должен быть предоставлен файл конфигурации в формате JSON (далее — файл конфигурации). Если для какого-либо зарегистрированного скрипта файл конфигурации отсутствует или имеет недопустимую структуру и детализация включена параметром конфигурации приложения plm.user_interface.scenario_hyperlink_enabled, то в ЛЮБОМ воспроизведенном сценарии, для ЛЮБОЙ его мультисферы контекстное меню факта НЕ ОТКРЫВАЕТСЯ, а в лог приложения записывается ошибка вида, соответственно:

Failed to get list of registered python scripts: linked scenario script 'Имя сценария' config file not exists
Failed to get list of registered python scripts: Rapidjson assertion error

Путь к файлу конфигурации для конкретного зарегистрированного скрипта устанавливается при регистрации скрипта или при редактировании файла-ресурса через утилиту plm-util (см. разделы «Регистрация скрипта» и «Обновление скрипта» ниже). Это позволяет иметь единственный файл с исходным кодом скрипта и отдельные файлы конфигурации для каждого конкретного зарегистрированного скрипта. 

Для обратной совместимости сохранена поддержка скриптов, файлы конфигурации которых хранятся в директории /var/plmrepo/pyscripts/директория_зарегистрированного_python-скрипта.

Регистрировать, обновлять и удалять можно только по одному скрипту за раз.

Подготовка к регистрации

  1. Остановить работу приложения:

    systemctl stop polymatica.service
  2. Убедиться, что в файле конфигурации утилиты plm-util.conf указан параметр, определяющий путь до репозитория Polymatica Analytics, обычно это /var/plmrepo:

    plm.manager.repo_directory = /var/plmrepo

Регистрация скрипта через конфигурационный файл plm-util

Регистрация скрипта

  1.  Открыть на редактирование файл plm-util.conf:

    nano /etc/polymatica/plm-util.conf
  2. Добавить в него строки:

    # Команда регистрации скрипта
    create-pyscript
    # Название регистрируемого скрипта Python
    pyscripts.create.name = Python Linked Scenario
    # Тип регистрируемого скрипта Python [Возможные типы: "formatted_export", "linked_scenario". Для скрипта детализации используется тип "linked_scenario".]
    pyscripts.create.type = linked_scenario
    # Путь до регистрируемого скрипта Python на диске
    pyscripts.create.script = /var/plmrepo/python-linked_scenario/link.py
    # Путь до файла конфигурации регистрируемого скрипта
    pyscripts.create.config = /path/to/python-linked-scenario/config.json
    # Идентификатор факта, для которого задан скрипт типа "linked_scenario". Функциональность временно выключена.
    pyscripts.create.measure_id = 07141982
  3. Сохранить изменения в plm-util.conf и выполнить команду:

    plm-util --create-pyscript

Обновление скрипта 

  1. Открыть на редактирование файл plm-util.conf:

    nano /etc/polymatica/plm-util.conf
  2. Добавить (раскомментировать) строки:

    # Команда обновления скрипта
    update-pyscript
    # Внесение изменений в зарегистрированный скрипт Python по имени
    # pyscripts.update.by_name = Python Linked Scenario
    # либо
    # Внесение изменений в зарегистрированный скрипт Python по идентификатору
    # pyscripts.update.by_id = 1a71ec1d
    # Новое наименование для скрипта Python
    pyscripts.update.new_name = New Python Linked Scenario
    # Новый тип скрипта Python
    pyscripts.update.new_type = linked_scenario
    # Путь до нового скрипта Python
    pyscripts.update.new_script = /var/plmscripts/linked_scenario/test_python_script_2.py
    # Путь до файла конфигурации нового скрипта
    pyscripts.update.new_config = /path/to/python-linked-scenario/config2.json
  3. Сохранить изменения в plm-util.conf и выполнить команду:

    plm-util --update-pyscript

Удаление скрипта

  1. Открыть на редактирование файл plm-util.conf:

    nano /etc/polymatica/plm-util.conf
  2. Добавить в него строки:

    delete-pyscript 
    # Удаление зарегистрированного скрипта Python по имени
    # pyscripts.delete.by_name = Python Linked Scenario
    либо
    # Удаление зарегистрированного скрипта Python по идентификатору
    # pyscripts.delete.by_id = e654a03f
  3. Выполните команду:

    plm-util --delete-pyscript

Вывод списка зарегистрированных скриптов

  1.  Открыть на редактирование файл plm-util.conf:

    nano /etc/polymatica/plm-util.conf
  2. Добавить (раскомментировать) строки:

    # Напечатать информацию по имеющимся скриптам
    list_pyscripts
    # Напечатать информацию только по скриптам детализации (тип "linked_scenario")
    pyscripts.list.type = linked_scenario
  3. Сохранить изменения в plm-util.conf и выполнить команду:

    plm-util --list-pyscripts

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

[2025-07-30 14:25:57.167 +03:00][    info][util] Found 'linked_scenario' python scripts: 3
[2025-07-30 14:25:57.167 +03:00][    info][util] List of found python scripts:
[2025-07-30 14:25:57.167 +03:00][    info][util] >>
[2025-07-30 14:25:57.167 +03:00][    info][util] -- name: Linked scenario copy
[2025-07-30 14:25:57.167 +03:00][    info][util] -- id: 41f836e5
[2025-07-30 14:25:57.167 +03:00][    info][util] -- creator: 
[2025-07-30 14:25:57.167 +03:00][    info][util] -- created at: Fri, 25 Apr 2025 10:11:52 +0000
[2025-07-30 14:25:57.167 +03:00][    info][util] -- updated at: Fri, 25 Apr 2025 10:13:38 +0000
[2025-07-30 14:25:57.167 +03:00][    info][util] -- type: linked_scenario
[2025-07-30 14:25:57.167 +03:00][    info][util] -- python script path: "/home/dmitrij/python-linked-scenario/link.py" (exists: true)
[2025-07-30 14:25:57.167 +03:00][    info][util] -- script config path: "" (exists: false)
[2025-07-30 14:25:57.167 +03:00][    info][util] -- config: valid
[2025-07-30 14:25:57.167 +03:00][    info][util] <<
[2025-07-30 14:25:57.167 +03:00][    info][util] >>
[2025-07-30 14:25:57.167 +03:00][    info][util] -- name: Linked scenario
[2025-07-30 14:25:57.167 +03:00][    info][util] -- id: ff09b4ce
[2025-07-30 14:25:57.167 +03:00][    info][util] -- creator: 
[2025-07-30 14:25:57.167 +03:00][    info][util] -- created at: Thu, 24 Apr 2025 11:53:53 +0000
[2025-07-30 14:25:57.167 +03:00][    info][util] -- updated at: Thu, 24 Apr 2025 11:53:53 +0000
[2025-07-30 14:25:57.167 +03:00][    info][util] -- type: linked_scenario
[2025-07-30 14:25:57.167 +03:00][    info][util] -- python script path: "/home/dmitrij/python-linked-scenario/link.py" (exists: true)
[2025-07-30 14:25:57.167 +03:00][    info][util] -- script config path: "" (exists: false)
[2025-07-30 14:25:57.167 +03:00][    info][util] -- config: valid
[2025-07-30 14:25:57.167 +03:00][    info][util] <<
[2025-07-30 14:25:57.167 +03:00][    info][util] >>
[2025-07-30 14:25:57.167 +03:00][    info][util] -- name: Gitlab linked script
[2025-07-30 14:25:57.167 +03:00][    info][util] -- id: 67b88a98
[2025-07-30 14:25:57.167 +03:00][    info][util] -- creator: 
[2025-07-30 14:25:57.167 +03:00][    info][util] -- created at: Fri, 04 Jul 2025 09:36:03 +0000
[2025-07-30 14:25:57.167 +03:00][    info][util] -- updated at: Fri, 04 Jul 2025 09:40:05 +0000
[2025-07-30 14:25:57.167 +03:00][    info][util] -- type: linked_scenario
[2025-07-30 14:25:57.167 +03:00][    info][util] -- python script path: "/home/dmitrij/python-linked-scenario/link.py" (exists: true)
[2025-07-30 14:25:57.167 +03:00][    info][util] -- script config path: "/home/dmitrij/python-linked-scenario/config.json" (exists: true)
[2025-07-30 14:25:57.167 +03:00][    info][util] -- config: valid
[2025-07-30 14:25:57.167 +03:00][    info][util] <<

Для обратной совместимости сохранена поддержка скриптов, файлы конфигурации которых хранятся в директории /var/plmrepo/pyscripts/директория_зарегистрированного_python-скрипта. Так как такие скрипты были зарегистрированы без указания пути до файла конфигурации, при вызове списка зарегистрированных скриптов у такого скрипта соответствующая строка будет иметь следующий вид: 

[2025-07-30 14:25:57.167 +03:00][    info][util] -- script config path: "" (exists: false) 



После успешного завершения процедур регистрации, перерегистрации, удаления или вывода списка скриптов можно запустить сервисы Polymatica Analytics командой:

systemctl start polymatica.service

  • Нет меток