Общие сведения
Надёжность и безопасность
Покупка лицензии
Начало работы
Роли в системе
Проекты
Концепции
Компоненты
Инструкции
Задачи
Финансы
Ресурсы
Таймшиты
Клиенты
Вики
Затраты
Отчёты и аналитика
FAQ
Типы отчётов
Использование отчётов
Группировка данных источника
Группировка данных в отчёте
Типы виджетов
Общие отчёты и шаблоны
Настройка отчёта
Экспорт отчётов
Пользовательские настройки отчёта
Вычисляемые поля
Выражения вычисляемых полей
Особые колонки отчётов с временными рядами
Использование панелей мониторинга
Публикация панелей
Фильтры источников данных
Настройка и администрирование
Типовой порядок настройки системы
On-premises
API
История изменений
Термины и определения

DynamicCodeContext

Обновлено: 13.03.2026

DynamicCodeContext — базовый контекст выполнения динамического кода. Он предоставляет доступ к инфраструктурным сервисам платформы:

  • сервисы сущностей;
  • сервисы жизненного цикла;
  • отправка уведомлений;
  • получение расписания пользователей;
  • доступ к лицензиям;
  • безопасные HTTP-запросы;
  • логирование.

Контекст используется как базовый класс для:

  • CustomHooksContext;
  • ScheduledJobContext;
  • LifecycleRoleContext.

Свойства

OperationType

public EntityServiceOperation OperationType { get; }

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

Возможные значения:

Значение Описание
Noop Операция отсутствует. Используется, когда выполнение динамического кода не связано с CRUD-операциями (например, задания по расписанию или вычисление ролей жизненного цикла).
Insert Создание новой сущности.
Update Обновление существующей сущности.
Delete Удаление сущности.

События

BeforeCommit

public event Func<Task> BeforeCommit

Событие вызывается перед коммитом транзакции. Позволяет выполнить дополнительные действия до сохранения изменений в базе данных. Например:

  • проверить данные;
  • внести корректировки;
  • отменить операцию при ошибке.

AfterCommit

public event Func<Task> AfterCommit

Событие вызывается после успешного коммита транзакции. Используется для операций, которые должны выполняться только после сохранения изменений. Например:

  • отправка уведомлений;
  • интеграция с внешними системами;
  • обновление кэша.

Методы

GetEntityService

public IContextEntityService<TEntity> GetEntityService<TEntity>()
    where TEntity : Entity

Возвращает сервис для работы с сущностью в текущем контексте операции. Учитывает:

  • права доступа пользователя;
  • текущую транзакцию.

Позволяет выполнять операции:

  • создание;
  • обновление;
  • удаление;
  • запросы.

GetLifecycleService

public ILifecycleService<TEntity> GetLifecycleService<TEntity>()
    where TEntity : Entity, IStatedEntity

Возвращает сервис управления жизненным циклом сущности. Используется для выполнения переходов между состояниями сущности.

GetNotificationService

public NotificationModuleService GetNotificationService()

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

GetHttpClient

public SafeHttpClient GetHttpClient()

Возвращает безопасный HTTP-клиент для выполнения внешних HTTP-запросов. Клиент поддерживает:

  • ограничения безопасности;
  • защиту от доступа к внутренним сетям;
  • ограничение количества запросов.

Используется для интеграции с внешними системами.

GetLicenseProductLimitsAsync

public Task<Dictionary<LicenseProduct, int>> GetLicenseProductLimitsAsync()

Возвращает лимиты лицензии для текущего tenant. Результат — словарь, где:

  • ключ — тип продукта лицензии (LicenseProduct);
  • значение — максимальное количество единиц.

GetUserScheduleForPeriodAsync

public Task<IDictionary<DateTime, decimal>> GetUserScheduleForPeriodAsync(
    DateTime beginDate,
    DateTime endDate,
    Guid userId
)

Возвращает рабочий график пользователя за указанный период. Результат — словарь, где:

  • ключ — дата;
  • значение — количество рабочих часов пользователя в этот день.

GetWorkResourcePlan

public Task<List<ResourcePlanEntry>> GetWorkResourcePlan(Guid entityId)

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

Log

public abstract Task Log(
    string message,
    DynamicCodeLogLevel level = DynamicCodeLogLevel.Info
)

Логирует сообщение в журнал динамического кода. Уровни логирования:

  • Info — информационное сообщение;
  • Warning — предупреждение;
  • Error — ошибка.

Тип записи журнала определяется конкретной реализацией контекста (ScheduledJobContext, LifecycleRoleContext и др.).

Предыдущая
 ILifecycleRoleResolver
Следующая
IContextEntityService 

Содержание

Свойства OperationType События BeforeCommit AfterCommit Методы GetEntityService GetLifecycleService GetNotificationService GetHttpClient GetLicenseProductLimitsAsync GetUserScheduleForPeriodAsync GetWorkResourcePlan Log
Ничего не найдено

Перейти на русскую версию?