Введение

Платформа 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:

  1. Как часть Component Script который существует для каждого Component. Он позволяет контролировать формы приложений, разработанные и выполняемые с помощью платформы Scalaxi, а также предоставлять настраиваемые индексы, которые можно запускать в качестве реакции на какое-либо событие, например нажатие кнопки клиентом. Существует 3 основных способа использования кода Python в Component Script
  2. Основная часть Component Script, которая выполняется каждый раз при отображении формы компонента
  3. Вызов функции внутри Component Script, например, при нажатии кнопки
    1. Для этого вам нужно определить функцию внутри Component Script, а затем перейти к элементу управления пользовательского интерфейса, такому как Button, перейти в раздел «Actions» и установить для параметра «Command Type» значение «Execute Script». Затем вам нужно ввести имя и параметры вызова (если есть) вашего скрипта в предоставленные поля
    2. Использование функции внутри Component Script для событий изменения значения
      1. Для этого вам нужно определить функцию внутри скрипта компонента, а затем перейти к элементу управления пользовательского интерфейса, такому как текстовое поле и т. д., затем перейти в раздел «Events» и ввести имя вашего скрипта в поле «On value change».
      2. Обратите внимание, что эта функция будет вызываться только в том случае, если данные поля изменились, и фокус элемента управления пользовательского интерфейса в форме уйдет от этого элемента управления пользовательского интерфейса.
  4. Подписавшись на изменения данных с помощью метода context.DataModel.Model.Subscribe()
    1. Самый простой способ сделать это — определить функцию перехвата всех изменений (например, def check_all_changes()) в вашем компонентном скрипте, а затем подписаться на нее.
    2. Ваша функция будет вызываться каждый раз, когда происходит изменение текущих данных элемента управления пользовательского интерфейса, в тот момент, когда этот элемент управления пользовательского интерфейса теряет фокус (например, пользователь переключается на другой элемент управления пользовательского интерфейса или другое приложение).
  5. В рамках действия DataFlow выполните скрипт для определения логики принятия решений и преобразования данных и установки внутренних переменных, которые будут использоваться как часть сценариев DataFlow. Вы можете увидеть примеры использования скрипта Python для DataFlow в нашем Уроке №2.

Использование Python для доступа к компонентам платформы Scalaxi

Чтобы получить доступ к компонентам платформы Scalaxi, сначала необходимо импортировать clr библиотеки IronPython, как показано ниже курсивом.

#Add IronPython library that imports system CRL (.NET) names into Python

import clr

После импорта к нескольким объектам можно получить доступ изнутри скрипта Python через системную переменную «context».

Использование context.Model & context.DataModel

context.Model & context.DataModel обеспечивают доступ к различным полям данных модели Scalaxi Platform.

Для context.Model поля данных включают как поля компонента по умолчанию, предоставляемые платформой Scalaxi, так и настраиваемые поля, добавленные разработчиком компонента.

Для context.DataModel доступны только настраиваемые поля, добавленные разработчиками компонентов.