Платформа Xafari позволяет реализовать отдельные функции XAF-модулей таким образом, чтобы их выполнение можно было запускать в консольном режиме.

При эксплуатации прикладной системы существует ряд задач, которые необходимо выполнять в автоматическом, пакетном режиме, возможно, по расписанию. Например импорт/экспорт данных или пакетное формирование отчетов. При выполнении таких задач взаимодействие с пользователем  минимально, или отсутствует вовсе.

Использовать для этих целей тяжелое, полнофункциональное Win или Web приложение с его мощным графическим интерфейсом, которое при инициализации подгружает десятки различных модулей может быть нецелесообразно или даже невозможно. Многие из загружаемых модулей могут быть вовсе не нужными для решения конкретной задачи.

Модулем Xafari предоставляется инфраструктура, позволяющая унифицированным образом реализовать функции (команды) произвольного XAF модуля. В состав платформы входит консольная утилита RunCmd.exe, позволяющая выполнять команды, которые реализованы в произвольных пользовательских XAF-модулях. В составе утилиты реализованы механизмы гибкой настройки подсистемы аутентификации.

Разработчики реализуют команды, заключая их в состав модуля XAF. Чтобы использовать в модуле инфраструктуру команд разработчик должен подключить к модулю сборку Xafari.dll, пространство имен Xafari.Commands содержит необходимые классы и интерфейсы. На рисунке ниже приведена диаграмма классов, входящих в сборку

Чтобы команды из модуля стали «видны» утилите запуска команд, модуль должен реализовать интерфейс ICommandEnumerator. Каждая команда описывается отдельным классом. Этот класс должен реализовать интерфейс ICommand или ICommandExtIO. Код, непосредственно выполняющий полезную работу, т.е. осуществляющий исполнение команды должен быть реализован в методе Execute. Метод получает коллекцию пар ключ-значение, представляющую параметры команды, а также ссылку на экземпляр XAF-приложения, вызвавшего команду на исполнение.

Для упрощения задачи разработчику команд реализованы абстрактные классы CommandBase и CommandExtIOBase. Они содержат код, который может быть использован при реализации многих команд.

Утилита для запуска команд должна быть сконфигурирована индивидуально под нужды конкретного приложения. Конфигурация осуществляется посредством стандартного конфигурационного файла RunCmd.exe.config. Утилита должна поддерживать тот же механизм аутентификации, что и основное приложение с которым утилита поставляется и с БД которого взаимодействуют команды.

Чтобы узнать больше о консольном выполнении функций модулей обратитесь к следующим документам:

Reference: