Содержание:

Конфигурирование утилиты

Для успешного применеия утилиты RunCmd, очень важно правильно ее сконфигурировать под нужды конкретного приложения. По умолчанию, утилита использует файл RunCmd.exe.config, однако имеется возможность указывать другой config-файл (по аналогии с DBUpdater). Чтобы указать config-файл, используйте ключ /appconfig (см. п. "Ключи командной строки" ниже).

Ниже рассмотрены важные секции config-файла.

Настройка подсистемы безопасности.

Для настройки подсистемы безопасности используйте секцию <securityConfiguration>.

Утилита поставляется в качестве дополнения к некоторому XAF-приложению, запускаемые утилитой команды взаимодействуют с БД этого приложения. Следовательно, утилита должна поддерживать тот же механизм аутентификации, что и основное приложение.

В понятие механизма аутентификации входят следующие важные элементы:

Все эти типы входят в систему безопасности приложения, они находятся в определенных сборках. Вы должны указать названия этих сборок. Для этого воспользуйтесь свойством securityAssemblies и перечислите в нем требуемые сборки с типами, разделив их имена символом ";". Если упомянутые сборки являются модулями XAF, то вы также должны их указать в ключе Modules секции <appSettings>.

При необходимости, вы можете указать частные реализации классов ролей и пользователей. Для этого воспользуйтесь свойствами roleTypeName и userTypeName. Укажите пространство имен и имя класса. Эти значения будут использованы консольной утилитой при инициализации свойств SecurityStrategyComplex.RoleType и SecurityStrategyComplex.UserType соответственно.

Чтобы описать класс аутентификации, используйте секцию <authentificationClass>. Задайте в свойстве typeName пространство имен и имя класса. Утилита создаст экземпляр указанного класса и будет использовать его для установки свойства SecurityStrategyComplex.Authentication. Для создания экземпляра класса аутентификации фреймворк может затребовать инициализацию некоторых свойств этого класса. Чтобы указать значения таких свойств, используйте подсекцию <properties> внутри секции <authentificationClass>. Каждое новое свойство описывается при помощи конструкции <add name="…" value="…">. Утилита обрабатывает все значения, которые вы укажете в свойстве value. Метод System.ComponentModel.TypeConverter.ConvertFromString в коде утилиты генерирует значения с учетом типа инициализируемых свойств. Если инициализируемое свойство имеет тип System.Type, то для генерации его значение будет создан экземпляр указанного в value класса.

Настройка соединения с БД

Укажите строку подключения к БД в секции <connectionStrings> по аналогии с основным приложением.

В секции <applicationSettings> установите значение параметра DbApplicationName, укажите имя основного приложения, работающего с БД. Это имя требуется чтобы проверить совместимость с БД.

В ключе Modules раздела <appSettings> перечислите все модули, которые содержат реализацию команд.

При первом запуске утилиты может возникнуть исключение несовместимости с БД. Если это произойдет, то вам необходимо выполнить команду обновления БД, которая встроена в утилиту, для этого надо использовать ключ командной строки /dbupdate, он описан ниже.

DevExpress поставляет утилиту DBUpdater для обновления БД, однако на новой БД вместе с RunCmd.exe она работает некоррекно. Если БД уже использовалась, то для приведения БД в согласованное состояние можно использовать и DBUpdater.

Ключи командной строки утилиты для запуска команд.

Для вывода на экран краткой справки по использованию утилиты вы можете использовать любой из следующих ключей:

/? 

/h

/help

Чтобы получить список доступных для исполнения команд, запустите утилиту со следующими ключами:

/cmdlist

/s

Вы можете изучить параметры любой команды. Для этого примените ключи

/paramlist <comand_name>

/p <comand_name>

Выполнение команды. Укажите имя команды и перечислите параметры, отделяйте значение параметра от его названия символом ":". Используйте следующие формы записи ключей для запуска:

/command <comand_name> <parameter_1>:<value_1> <parameter_2>:<value_2> <parameter_3>:<value_3> ... 

/c <comand_name> <parameter_1>:<value_1> <parameter_2>:<value_2> <parameter_3>:<value_3> ...

Если команда задана в качестве первого аргумента командной строки, то ключ /command или /c можно не указывать.

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

Существует возможность предварительно задать список команд в текстовом файле, а затем передать утилите его имя в качестве параметра ключа:

/batch <имя_файла>

/b <имя_файла>

Каждая команда со своими параметрами занимает одну строку в текстовом файле. Команды должны иметь следующий вид:

<1_comand_name> <parameter_1>:<value_1> <parameter_2>:<value_2> <parameter_3>:<value_3> ...

<2_comand_name> <parameter_1>:<value_1> <parameter_2>:<value_2> <parameter_3>:<value_3> ...

...

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

/logon <parameter_1>:<value_1> <parameter_2>:<value_2> …

/l <parameter_1>:<value_1> <parameter_2>:<value_2> …

Параметры и их значения передаются в командной строке в виде пар <parameter_x>:<value_x>. Утилита интерпретирует эти пары как имена и значения свойств класса, который описывает logon-параметры. Например, свойства класса XafariAuthenticationLogonParameters. Утилита создает экземпляр класса logon-параметров, устанавливает для его свойств те значения, которые указаны в командной строке, и, затем, использует полученный экземпляр при аутентификации.

Для завершения сеанса аутентифицированного пользователя предназначен ключ

/logoff

Этот ключ востребован при использовании интерактивного режима (см. ниже), он позволит выполнять команды под разными пользователями.

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

@<имя_файла>

Вы можете применять несколько таких ключей в командной строке утилиты.

При возникновении рассогласованности с базой данных необходимо воспользоваться ключом

/dbupdate [silent]

При этом будет выполнена стандартная процедура проверки совместимости БД и выполнено обновление.  Необязательный параметр silent позволяет провести обновление без участия пользователя.

Для работы утилиты в интерактивном режиме служит ключ

/console

Если запустить команду

RunCmd.exe /console

то утилита стартует в интерактивном режиме, она выведет в консоль приглашение ко вводу команд и будет ждать действий пользователя. Для ввода команды используйте <Enter>, для выхода из интерактивного режима используйте команды "exit", "quit" или сочетания клавиш Ctrl+Break и Ctrl+C.

При этом инициализация приложения выполняется только 1 раз, при старте утилиты. Такой режим позволит выполнять последовательно несколько команд, не теряя время на ожидание инициализации приложения. Интерактивный режим можно применять для выполнения команд под разными пользователями (см. ключи /logon и /logoff выше).

Чтобы указать config-файл, отличный от RunCmd.exe.config, воспользуйтесь ключами

/appconfig <file name>

/basedir <path to dir>

Параметр <file name> указывает путь к config-файлу. /basedir позволяет указать каталог с необходимыми сборками. Если /basedir не указан, то поиск необходимых сборок будет производится в каталоге расположения config-файла.