Работа в Python

Язык Python является универсальным языком, поддерживающим выполнение кода на других языках, таких как Java, C и C#. Подобная совместимость также позволяет работать и с кодом на языке Fore.NET. Для взаимодействия с Python в «Форсайт. Аналитическая платформа» был создан специальный набор внешних библиотек. Данные библиотеки позволяют работать с ядром «Форсайт. Аналитическая платформа». Библиотеки доступны в папке S\Interops\python\, где S - путь, по которому установлен продукт «Форсайт. Аналитическая платформа».

Примечание. Используемая версия Python должна совпадать с версией, которая использовалась при сборке внешних библиотек. В текущей реализации используется Python версии 3.7.8 при сборке библиотек для WIndows и версии 3.5 при сборке библиотек для Linux. При необходимости получения библиотек других версий обращайтесь в техническую поддержку по адресу support@fsight.ru или через сервисы технической поддержки, которые доступны после регистрации на сайте.

Подключение сборок

В коде пропишите строку импорта типов из внешней сборки в одном из следующих форматов:

from foresight.<Имя модуля> import * #Импорт всех классов/интерфейсов библиотеки.
from foresight.<Имя модуля> import <имя класса> #Импорт конкретного класса/интерфейс.
import foresight.<Имя модуля> as <переменная> #Импорт класса под определенным именем.

Преобразование кода

При создании внешних библиотек для использования в Python происходит специальное преобразование системных классов, интерфейсов, перечислений и других типов. При создании кода на Python с использованием ресурсов «Форсайт. Аналитическая платформа» необходимо учитывать следующие изменения:

  1. Свойствам сопоставлены методы в следующих форматах: get_<имя свойства>([<параметры>]) и put_<имя свойства>(<значение>). Get возвращает значение свойства, а Put устанавливает указанное значение.

  2. К именам классов добавлена буква C, например: классу MetabaseManagerFactory в Fore соответствует CMetabaseManagerFactory в Python.

  3. Для создания объекта нужного класса используется конструкция <Имя класса>.Create() или <Имя класса>.Create<имя интерфейса>() без ключевого слова new.

  4. Для приведения типов необходимо передавать имеющийся объект как параметр, например:

import foresight.metabase as modmetabase
...
creds = pack.CreateCredentials(amPassword)
pswdCreds = modmetabase.IPasswordCredentials(creds)

Пример

Пример подключения к репозиторию в коде на Python:

def ConnectMB():
    import foresight.metabase as modmetabase #Импорт содержимого всей сборки
    mbFactory = modmetabase.CMetabaseManagerFactory.Create()
    mbMan = mbFactory.Active
    mbDefs = mbMan.Definitions
    mbDefs.ReadFromRegistry()
    mbDef = mbDefs.FindById('FPRepository')
    pack = mbDef.Packs.FindById(mbDef.get_SecurityPackage()).Package
    creds = pack.CreateCredentials(modmetabase.amPassword)
    pswdCreds = modmetabase.IPasswordCredentials(creds)
    pswdCreds.UserName = 'user'
    pswdCreds.Password = 'password'
    mb = mbDef.OpenDefault(pswdCreds)
    print(mb.Name)
 
if __name__ == '__main__':

    ConnectMB()

См. также:

Использование ресурсов продукта в сторонних приложениях