Введение
Платформа Scalaxi предоставляет возможность использовать Python для различных целей в качестве удобного широко известного языка сценариев/программирования.
Сценарии Python, поддерживаемые платформой Scalaxi, должны использовать Python версии 3.0, как описано здесь: https://docs.python.org/3/. Полное руководство разработчика можно найти в Руководстве разработчика Python.
Версия Python, которую использует Scalaxi Platform, называется Iron Python, которая предоставляет интерфейс для кода C#. Он предоставляет две важные библиотеки, которые необходимо импортировать в начале скрипта — clr и system. Эти библиотеки предоставляют доступ к сущностям платформы Scalaxi, которые можно запрашивать и контролировать из скрипта.
Способы использования скриптов Python на платформе Scalaxi
Существует два основных способа использования Python на платформе Scalaxi:
- Как часть Component Script который существует для каждого Component. Он позволяет контролировать формы приложений, разработанные и выполняемые с помощью платформы Scalaxi, а также предоставлять настраиваемые индексы, которые можно запускать в качестве реакции на какое-либо событие, например нажатие кнопки клиентом.
- Как часть Dataflow с помщью использования шага Execute Script. Этот шаг позволяет задвать скрипты для выполнения действий на Python, таких как дополнительные преобразования данных, добавления переменных модели Dataflow и другие.
Исользование Python как часть Component Script
Component Script есть у каждой компоненты, и доступен по кнопке Component Script на основном окне настройки компоненты (с версии 0.6.х, до этого был доступен через меню Settings → Component Script).
Component Script состоит из двух частей - основной части, которая исполняется каждый раз когда отрисовывается одна из страниц (pages) компоненты, и функций Python (в формате def имя функции тело функции ; ) которые могу быть вызваны в различных случаях описанных ниже.
Существуют следующие случаи когда могут быть вызваны функции Python из Component Script’a:
- Функции могут быть вызваны напрямую активным контролем, к примеру кнопкой (button), если в качестве параметра Action выбран Execute Script. При выборе этого Action вам нужно будет ввести имя и параметры вызова (если есть) вашего скрипта в предоставленные поля Studio
- Функции могут быть вызваны одним из контролей UI из текущего окна пользовательского интерфейса, при наступленнии одного из событий (Events) которое этот контроль поддерживает. Детально события поддерживаемые контролями UI описаны в секциях описывающих соответствующие контроли UI. Пример поддерживаемых это например On focus change когда фокус переходит на или уходит с этого контроля UI, или On value change когда значение поля контроля меняется (что может быть например использовано для проверки валидности внесенных изменений)
- Для отслеживания изменений значения поля вам нужно определить функцию внутри скрипта компонента, а затем перейти к элементу управления пользовательского интерфейса, такому как текстовое поле и т. д., затем перейти в раздел «Events» и ввести имя вашего скрипта в поле «On value change».
- Обратите внимание, что эта функция будет вызываться только в том случае, если данные поля изменились, и фокус элемента управления пользовательского интерфейса в форме уйдет от этого элемента управления пользовательского интерфейса.
- Функции могут быть вызваны по подписке через метод платформы context.DataModel.Model.Subscribe() - подробное описание см. ниже
- Самый простой способ сделать это — определить функцию перехвата всех изменений (например, def check_all_changes()) в вашем компонентном скрипте, а затем подписаться на нее.
- Ваша функция будет вызываться каждый раз, когда происходит изменение текущих данных элемента управления пользовательского интерфейса, в тот момент, когда этот элемент управления пользовательского интерфейса теряет фокус (например, пользователь переключается на другой элемент управления пользовательского интерфейса или другое приложение).
Использование Python для доступа к компонентам платформы Scalaxi в Component Script