Модуль сценариев

Модуль Scripting Module объединяет движки Octave и Python, позволяя пользователям писать и выполнять расчеты на любом из этих языков в рамках Requirements & Systems Portal. Модуль предназначен для выполнения сложных расчетов, которые невозможны через стандартный ValiEngine.

Если пользователи хотят манипулировать любыми другими объектами, кроме числовых значений Valis, они должны использовать Python API портала Requirements & Systems Portal. Примеры использования включают:

  • Создание значения и массовое добавление его в несколько блоков

  • Массовое редактирование идентификаторов требований

  • Запуск симуляций с помощью Python

  • Преобразование единиц измерения мощности в кВт.

  • Запуск пользовательского поведения рабочего процесса на основе автоматических триггеров

Поток скриптового модуля

Чтобы использовать модуль, пользователь создает новый скрипт, добавляет входы/выходы, пишет код в формате .m или .py и запускает его для получения желаемого результата.

Рабочий процесс модуля сценариев.

Создание нового сценария

Чтобы создать новый скрипт, нажмите на опцию "+ Script" (1) в модулях сценариев.

image-20240324-150602.png

Появится диалоговое окно, позволяющее ввести название сценария, выбрать движок (Octave или Python) и дополнительные опции, которые пользователь может использовать или переиспользовать из шаблонов.

image-20240324-151035.pngОпция создания нового сценария

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

У пользователей также есть возможность сделать скрипт "Глобальным скриптом", переключив опцию с опции, показанной на рисунке Create New Script Option.

После создания нового скрипта пользователи также могут создавать дополнительные текстовые, JSON и YAML файлы для своих скриптов. Чтобы добавить новый файл, нажмите на опцию "+Добавить файл" (1), добавьте имя и выберите тип файла в диалоговом окне. Это добавит файл в сценарий.

Чтобы использовать любой из дополнительно созданных файлов, пользователь должен включить следующие две строки кода в верхней части файла main.py:

import site
site.addsitedir('script_code/')

После этих двух строк любые дополнительные файлы могут быть вызваны с помощью стандартного оператора import оператор.

Управление секретами:

Чтобы не раскрывать использование необходимых учетных данных при использовании скриптов, подключающихся к нашему API или API других инструментов, можно определить личные секретные переменные, которые могут быть вызваны во время выполнения скрипта и не подвергать риску их раскрытия другим пользователям при развертывании, храня их в файлах скриптов.

Как и где их добавить

Секреты можно определить на панели настроек в разделе "Секреты пользователя". Эти секреты можно повторно использовать в сценарии для входа в Requirements & Systems Portal. Вот короткое видео, демонстрирующее, как можно создавать пользовательские секреты.

Как следует из названия, эти секреты уникальны для каждого пользователя и доступны только тем, кто их определил.

Как использовать секреты в сценарии

Импортировав имя секрета из модуля ".settings", пользователи могут использовать секреты для аутентификации в скриптах.

from .settings import USERNAME, PASSWORD # с учетом регистра, используйте то же слово, что и в пользовательских секретах.

LOGIN_DATA = {
    'домен': 'API_URL',
    'username': USERNAME,
    'пароль': ПАРОЛЬ
}

Если вы работаете в Requirements & Systems Portal на Altium 365, вы не можете получить доступ к остальным API через имя пользователя и пароль. Вы должны использовать "Токены пользователей" из настроек, как описано здесь.

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

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

Система очередей

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

Очередь сценариев в действии

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

Запущенный сценарий можно остановить, нажав кнопку "Остановить" в выпадающем меню "Действия".

image-20250103-120600.pngДействие "Остановить" для скрипта.

Работа с разрешениями

Скрипты имеют свои собственные разрешения, которыми можно управлять либо непосредственно из модуля скриптов, либо из модуля проекта в разделе "Разрешения".

Установка пользовательских прав для скрипта.

Запуск скриптов из панели управления

Пользователи также могут создавать пользовательские панели взаимодействия с помощью кнопок "Запустить сценарий". Они аналогичны ранее доступным кнопкам Request, используемым для запуска вызовов REST, но могут быть настроены на запуск одного или нескольких скриптов одним нажатием кнопки.

Используя Python API в вызываемых сценариях, можно настроить пользовательские панели взаимодействия, в которых такие элементы, как стандартные текстовые поля, могут использоваться в качестве полей ввода и вывода для сценария, который затем может прямо или косвенно влиять на другие элементы на экране.

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

Создание кнопки действия "Запустить скрипт" в панели инструментов.

Это позволяет создать кнопку, с помощью которой можно запускать скрипты, обновляющие определенные блоки панели.

Интересный случай использования - подсчет пройденных и проваленных тестов и их отображение в текстовом блоке на той же панели.

кнопка "Запустить сценарий" на панели инструментов для подсчета статуса тестовых прогонов.

Сценарий и автоматизация

Заданные автоматические действия могут запускать скрипты. Например, сложный расчет можно настроить на автоматический запуск при изменении определенных входных данных. Кроме того, используя Python API портала Requirements & Systems Portal, можно запрограммировать специальное комплексное поведение для построения пользовательских рабочих процессов.

Автоматизация не только запускает сценарии, но и передает информацию о том, какие объекты ее вызвали, чтобы сценарии могли действовать непосредственно на этих объектах. Информация об объектах доступна в словарной переменной "kwargs" под ключом 'triggered_objects', как показано в следующем примере:

object_data = kwargs['triggered_objects'][0]

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

Примеры скриптов рабочего процесса можно найти в папке templates публичного репозитория valifn.

Пользовательские изображения Valifn

У локальных пользователей есть дополнительная возможность настроить свой экземпляр valifn для запуска любого пакета Python, при условии, что серверное оборудование может с этим справиться. У локальных пользователей также есть возможность управлять тем, какой образ valifn будет использоваться во время выполнения сценария.

Настройка образа valifn для сценария в локальном развертывании.

Как показано на рисунке, эта опция доступна в виде текстового поля в общих настройках для каждого отдельного сценария.

Как создать пользовательский образ

Дополнительные инструкции по настройке собственных образов valifn можно найти на страницах документации публичного репозитория:

Примеры скриптов на Python

Примеры сценариев можно найти как в проекте примера Valicopter 5000 (новые развертывания), так и в публичном репозитории ValiFn на Github.

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

Многие из этих примеров были созданы в качестве демонстрации возможностей модуля сценариев и автоматики для создания индивидуальных автоматизированных рабочих процессов. Пользователям предлагается доработать любой существующий скрипт под свои нужды и поделиться любыми скриптами общего назначения и улучшениями в публичном репозитории ValiFn.

Предупреждение о подозрительных детях (автоматизация)

Rational

Этот сценарий запускается автоматикой, которая должна быть настроена на запуск при изменении существующего требования, поскольку сценарий действует на свойства отредактированного требования. Его текущее действие заключается в размещении обсуждения в каждом из дочерних требований (если таковые имеются) со специальным сообщением об изменении статуса родительского требования.

Предлагаемая настройка

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

Текущие действия

  • Проверяет, есть ли у требования, запустившего предустановленную автоматизацию, дочерние элементы

  • Если оно имеет дочерние требования, то в каждом дочернем требовании публикуется обсуждение, указывающее, что родительское требование было обновлено.

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

Новая задача (автоматизация)

Rational

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

Предлагаемая настройка

Используйте kwargs['triggered_objects'][0] для извлечения информации об объекте, вызвавшем автоматизацию, и добавления ее в поле ввода задачи.

Текущие действия

  • Отправляет новую задачу, назначенную указанному пользователю.

Статистика требований

Rational

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

Предлагаемые настройки

  1. Возьмите извлеченную информацию о требованиях и выведите из нее более сложную статистику, сравнив ее с ранее обновленными значениями. Каждое значение может указывать, насколько оно увеличилось/уменьшилось, выраженное в процентах.

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

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

Текущие действия

  • Построение общей статистики требований для одного проекта при развертывании.

  • Патчит предварительно созданный Valis с результатами.

Генерация спецификаций

Rational

Пример сценария, демонстрирующего возможности Python API для создания полностью автоматизированных отчетов. Хотя основной сценарий также доступен на странице документации по интеграции, эта версия была адаптирована для запуска из модуля сценариев развертывания.

Он может быть запущен автоматикой или вручную.

Предлагаемые настройки

  1. Создать полный отчет, адаптировав текущий процесс получения требований для извлечения блоков и других объектов, которые будут заполнены в отчете

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

  3. Измените конечный выходной файл на PDF вместо редактируемого файла Word.

Текущие действия

  • Принимает файл Word в качестве шаблона из данного развертывания и возвращает в качестве выходных данных сгенерированные файлы, столько же, сколько спецификаций, помещенные в Управление файлами развертывания (более подробную информацию см. в разделе "Экспорт спецификаций на основе шаблона Microsoft Word" ).

Приборная панель тестирования

Rational

Счетчики Dashboard еще не догнали модуль Testing, и автоматических счетчиков для тестов пока не существует. Этот сценарий был разработан в качестве доказательства концепции для пользовательского счетчика, который еще не был реализован. Изначально он был задуман для запуска при ручном срабатывании кнопки Run Script в Dashboard.

Предлагаемые настройки

  1. Расширить статистику тестов, которая публикуется в Dashboards.

  2. При успешном выполнении теста публикуйте результат в подключенную задачу и меняйте ее состояние на "Выполнено".

Текущие действия

  • Возвращает строку, размещенную в предопределенных текстовых блоках Dashboard, с рассчитанной статистикой тестового прогона.

  • Она может получать данные от автоматики или запускаться вручную.

AI-LocalizedAI-localized
If you find an issue, select the text/image and pressCtrl + Enterto send us your feedback.
Доступность функциональных возможностей

Набор доступных функциональных возможностей зависит от вашего решения Altium – Altium Develop, редакция Altium Agile (Agile Teams или Agile Enterprise) или Altium Designer (на активной подписке).

Если вы не видите в своем ПО функцию, описанную здесь, свяжитесь с отделом продаж Altium, чтобы узнать больше.

Content