Блок 10 курса по Optimacros: Расширенные скрипты и кастомизация в платформе Optimacros
Optimacros предлагает развитую систему скриптов, обеспечивающую не только базовую логику обработки и трансформации данных, но и возможности глубокой кастомизации и интеграции. Блок 10 учебного курса посвящен углублённому изучению механизмов создания и использования расширенных скриптов, собственных функций, подключения внешних библиотек, повторно используемых шаблонов, а также построения сложных интеграционных сценариев с поддержкой современных методов авторизации.
Это пособие предназначено для опытных моделлеров, технических архитекторов и интеграторов, разрабатывающих сложные решения в платформе Optimacros и обеспечивающих её бесшовную интеграцию с внешними системами.
1. Архитектура и типы скриптов в Optimacros
1.1 Внутримодельные скрипты
Используются для управления логикой внутри модели: расчетные цепочки, обновления справочников, очистка или инициализация данных. Поддерживают условные конструкции, циклы, работу с контекстом и размерностями.
1.2 Интеграционные скрипты
Обеспечивают обмен данными между Optimacros и внешними источниками: СУБД, REST API, файловыми хранилищами и BI-системами. Используются в связке с адаптерами и встроенными коннекторами.
1.3 Сервисные и системные скрипты
Применяются для задач администрирования, обновления системных справочников, логирования, создания бэкапов, рассылок и запуска мониторинговых процедур.
2. Разработка собственных функций в скриптах
Платформа позволяет описывать собственные функции в скриптах, расширяя базовую функциональность ядра. Это особенно важно в задачах, требующих специфической логики, например, в прогнозах, очистке данных, аналитических трансформациях.
Пример: функция пересчёта коэффициента сезонности
# Определение функции
@custom_function
def calculate_seasonality(sales, season_index):
result = []
for i in range(len(sales)):
result.append(sales[i] * season_index[i])
return result
Функции можно использовать в других скриптах и вызывать как стандартные процедуры.
Поддержка входных параметров и возврата массива
Функции могут принимать входные списки (массивы значений), контекст, даты, параметры фильтрации и возвращать скалярные или табличные значения.
3. Работа с внешними библиотеками
3.1 Подключение Python-библиотек
В случае использования внешнего движка или встраиваемого интерпретатора Python (при его активации), возможно использование библиотек:
- pandas — для работы с табличными данными
- numpy — для векторных вычислений
- requests — для вызова внешних API
- scikit-learn — для интеграции моделей ML
import pandas as pd
import requests
def get_data():
response = requests.get("https://example.com/api/plan")
df = pd.read_json(response.text)
return df
3.2 Работа с JavaScript-ядрами
В интерфейсных скриптах, особенно при разработке виджетов или визуальных расширений, возможно использовать JS-движок для преобразования данных, управления элементами интерфейса, валидации ввода.
4. Организация повторно используемых шаблонов
4.1 Библиотека шаблонов
Optimacros поддерживает выделение типовых блоков логики в шаблоны (snippets), которые можно подключать в разные скрипты.
Примеры:
- Преобразование даты
- Вычисление LFL
- Расчёт KPI
- Обработка пустых значений и ошибок
4.2 Подключение шаблона
@include("templates/date_transform")
Подключение возможно как в виде отдельного блока, так и динамически — через параметры скрипта.
5. Сложные интеграции и авторизация
5.1 Поддержка OAuth 2.0
Optimacros поддерживает подключение к API внешних систем с авторизацией по OAuth 2.0:
- Получение access token через client_credentials или authorization_code
- Хранение токенов в системных справочниках
- Автоматическое обновление expired токенов
import requests
def get_token():
response = requests.post("https://auth.example.com/oauth2/token", data={
'grant_type': 'client_credentials',
'client_id': CLIENT_ID,
'client_secret': CLIENT_SECRET
})
return response.json()['access_token']
5.2 Интеграции с подписями (HMAC, JWT)
В задачах, где требуется подпись запроса, поддерживаются алгоритмы:
- HMAC-SHA256
- JWT токены с private key
import hmac, hashlib
def sign_request(data, key):
return hmac.new(key.encode(), data.encode(), hashlib.sha256).hexdigest()
6. Примеры кастомных решений
Кейс: Расширенная логика расчета плана с ML-моделью
- Скрипт собирает данные по истории продаж
- Вызывает внешний ML-сервис (через REST API)
- Полученный прогноз обрабатывается и записывается в мультикуб
Кейс: Импорт плана от поставщика
- Скрипт получает XLS-файл через API поставщика
- Преобразует его в DataFrame (pandas)
- Производит маппинг справочников и записывает значения в модель
Кейс: Подключение к BI-системе
- Скрипт формирует набор данных по итогам сценария
- Отправляет в Power BI или Tableau через REST API
- Возвращает ссылку на отчёт пользователю
7. Практические советы и рекомендации
- Используйте шаблоны для повторяющихся действий (например, логирование, очистка, преобразование дат)
- Централизованно храните ключи и токены в системных справочниках с разграничением доступа
- Выносите параметры авторизации и URL в настройки модели
- Логируйте каждый вызов внешнего API — это упростит диагностику
- Тестируйте скрипты на небольших выборках перед публикацией
- Оборачивайте API-вызовы в try-except блоки и записывайте ошибки в аудит
Заключение
Расширенные скрипты и возможности кастомизации в Optimacros открывают широчайшие возможности для создания интеллектуальных, гибких и интегрированных моделей бизнес-планирования. Использование собственных функций, внешних библиотек, шаблонов и современных методов авторизации позволяет строить масштабируемые и надёжные решения, охватывающие как внутреннюю бизнес-логику, так и внешние каналы обмена данными.



