Конечный пользователь может полностью контролировать запуск и выполнение любого прикладного метода в XAF-приложении. Реализовать метод с такими возможностями позволяет сервис Управляемых Операций (Managed Operation). Управляемая Операция обеспечивает отображение процесса выполнения метода на специальном View. Процесс может быть прерван, приостановлен либо продолжен. Возможен параллельный контроль за несколькими процессами. Ведется учет запусков Управляемых Операций с возможностью сохранения в БД.

Чтобы ознакомиться с примером использования Управляемых Операций, обратитесь к разделу Main|Actions|ManagedOperations в демо-приложении Xafari Northwind, установленном вместе с Xafari.

Win:

Сервис Управляемых Операций предоставляет ряд специфических особенностей, которые позволяют реализовать выполнение прикладного метода различными способами, с учетом потребностей конечного заказчика. Основные особенности сервиса перечислены ниже:

Рассмотрим их подробнее.

Синхронность и асинхронность

При запуске синхронной Управляемой Операции выполнение любых других действий в клиентском приложении невозможно. Для продолжения работы необходимо дождаться окончания запущенной операции. Во время выполнения операции может быть доступен только мониторинг процесса. Кроме стандартного окна мониторинга, ход выполнения синхронной операции может быть отображен с помощью индикаторов прогресс-бара или бесконечной прокрутки.

Win:

Асинхронная Управляемая Операция обеспечивает исполнение некоторого прикладного метода без приостановки работы и выполнения других действий приложения. Возможен параллельный запуск нескольких экземпляров.

Web:

Наличие подпроцессов

Управляемая операция может иметь ряд подпроцессов. Каждый подпроцесс также является управляемой операцией, которая запускается в рамках выполнения основной операции. Модуль XafariManagedOperations позволяет контролировать как выполнение основной операции в целом, так и каждого подпроцесса в отдельности. На изображении ниже представлено Detail View управляемой операции c подпроцессами в Web-приложении. Список всех подпроцессов доступен на закладке Child Process.

Web:

Локальность и глобальность

Информация о запуске и выполнении Управляемой Операции может быть сохранена в базу данных приложения. Такая Управляемая Операция называется глобальной. Также возможно локальное выполнение операции на клиентском компьютере, без сохранения сведений в базу данных. После завершения работы приложения информация о выполнении операции будет утеряна. Такая Управляемая Операция называется локальной. По умолчанию, все операции имеют глобальный тип, который может быть изменен на этапе инициализации операции.

Уникальность

В ряде случаев может быть востребовано, чтобы определенная операция в каждый момент времени могла быть запущена только одним пользователем, причем только один раз. Например, не может одновременно исполняться два процесса пересчета плана или расчета зарплаты. Уникальность Управляемой Операции означает запрет на создание еще одного экземпляра при наличии уже исполняющейся операции. Если уникальная операция уже была запущена и в данный момент выполняется, то пользователь получит соответствующее уведомление, как показано на изображении ниже.

Win:

Логирование

Логирование позволяет сохранить историю выполнения управляемых операций для последующего просмотра и анализа.

Web:

Возможно разбиение лога на части (блоки). Разбиение на части востребовано, если операция достаточно «тяжелая» и в процессе ее выполнения формируется большое количество информации. Блоки, в которых содержаться записи с сообщениями об ошибках или предупреждениях, помечаются соответствующим образом. На следующем изображении представлено несколько блоков с различными типами сообщений:

Web:

Имеется возможность включать в протокол сообщения определенных уровней критичности (все, от «Warning», от «Error» и т.д.).

Чтобы узнать больше об Управляемых Операциях, обратитесь к следующим документам: