Начиная с AX3.0 SP6 в Аксапте появилась команда загрузки (startup command) с именем AutoRun (подробнее см. советы Команды загрузки (Startup Command) и Команды загрузки (Startup Command) в Dynamics AX4). Команда AutoRun позволяет выполнить целую последовательность действий, которые указаны в одном xml-файле.
Содержание:
- Параметры команды
- Формат xml-файла
- Список действий
- Описание действий
- Как изменить или добавить действие в команду AutoRun
Команда autoRun
Команда AutoRun позволяет выполнить целую последовательность действий, которые указаны в одном xml-файле. Эта команда имеет тип ApplInit (см. Тип команды запуска и Тип команды запуска в Dynamics AX4).
В Axapta 3.0 действия выполняются только в том случае, если у пользователя, из-под которого запущена Аксапта, имеет по крайней мере право редактирования у ключа безопасности (security key) Администрирование \ Настройка (AdminSetup). Начиная с Dynamics AX 4.0 в каждом действии есть своя проверка прав доступа.
По сути, команда AutoRun запускает класс SysAutoRun и передает туда указанный в параметрах xml-файл. Дополнительное описание можно найти в MSDN: SysAutoRun или в документации разработчика.
Параметры команды
Команда принимает два параметра. Первый - обязательный - содержит путь и имя xml-файла, в котором содержатся действия, которые исполняет AutoRun. Второй - необязательный - содержит путь к файлам, которые указаны внутри xml-файла (в конце должен быть обратный слэш "\").
AutoRun_xmlFile[,BasePath]
Пример использования:
![]()
или в командной строке
-startupcmd=autorun_c:\axapta40\Commands.xml,c:\xmlCommands\
Надо отметить, что в действиях, которые оперируют с файлами, код присоединения имени файла к каталогу BasePath не отличается особым интелектом - выполняется простое соединение строк BasePath + File. Такое тривиальное поведение открывает несколько стратегий:
- норма: BasePath содержит путь, file содержит имя файла;
- просто: BasePath не указывается, file содержит полное имя с путем;
- изврат: в BasePath указывается полное имя с путем, атрибут file пропущен или пустой (работает только в том случае, если в xml-файле есть только одна команда, работающая с файлами).
Формат xml-файла
Корневым элементом xml-файла должен быть элемент AxaptaAutoRun. У этого элемента может быть три атрибута:
| Атрибут | Обязат. | Значения | Комментарий |
|---|---|---|---|
| version | + | 3.0 |
Должен совпадать с номером версии Dynamics AX, которая выполняет команду AutoRun. Параметр не должен со держать инфромацию о релизах и билдах. Для Axapta 3.0 параметр должен содержать 3.0, для Dynamics AX 4.0 - 4.0, для Dynamics AX 2009 - 5.0. |
| exitWhenDone | - | true <другое> |
Если значение атрибута не указано или равно true, то по завершении всех действий выполняется выход из Dynamics AX. Любое другое значение трактуется как false. |
| logFile | - | Лог выполнения выводится в указанный файл, если параметр указан, или на экран. Внимание, на этот атрибут не влияет второй параметр команды AutoRun. Т.е. в этом атрибуте должен быть указан полный путь к лог-файлу, а не относительно базового каталога BasePath. |
Пример использования:
<AxaptaAutoRun exitWhenDone="false" version="4.0" logFile="D:\Axapta40\AxaptaAutorun.log">
<CompileApplication crossReference="false" />
<LicenseInformation file="d:\axapta\license.txt" />
<Configuration>
<ConfigurationKey name="SysUserLog" enabled="true" />
<ConfigurationKey name="PBA_AdvancedProductBuilder" enabled="false" />
</Configuration>
<AdjustGlobalTypes>
<AccountNum length="24" adjustRight="false" />
<AmountMst displayLength="12" decimals="10" />
</AdjustGlobalTypes>
<Synchronize />
<UpdateCrossReference />
<UserGroups>
<UserGroup id="sales" name="Sales force" />
</UserGroups>
<Users>
<User id="MaryN" name="Mary North" email="someone@example.com" language="en-us" companyId="ex" osAccount="MaryN"/>
</Users>
<CompanyAccounts>
<Company id="NWT" name="Northwind Traders" overwrite="true" />
</CompanyAccounts>
<XpoImport file="d:\axapta\setup\XPO\Logger\Enum_TestLogEntryType.xpo" />
<DataImport companyId="BVT" file="d:\axapta\basedata.dat" />
<Run type="class" name="RunMyTests" method="main" />
<PreventCheckList />
</AxaptaAutoRun>
Список действий
Внутри корневого элемента AxaptaAutoRun могут содержаться следующие действия:
| Действие | Тип | Есть подэлементы | 3.0SP6 | 4.0 | 2009 |
|---|---|---|---|---|---|
| AdjustGlobalTypes | Installation | + | + | + | + |
| CompanyAccounts | Installation | + | + | + | + |
| CompileApplication | Installation | + | + | + | |
| Configuration | Installation | + | + | + | + |
| HomePageProfiles | Installation | + | |||
| InitializeHelpSystem | Installation | + | + | ||
| LicenseInformation | Installation | + | + | + | |
| PasswordParameters | Installation | + | |||
| Synchronize | Installation | + | |||
| SyncServiceUserAccount | Installation | + | |||
| SqlSetup (только для Oracle) | Installation | + | + | + | |
| Statistics (только для Oracle) | Installation | + | + | ||
| UpdateCrossReference | Installation | + | |||
| UserGroups | Installation | + | + | ||
| Users | Installation | + | + | ||
| WorkflowExecutionAccount | Installation | + | |||
| WorkflowSystemAccount | Installation | + | |||
| CreateUpgradeProject | Upgrade | + | |||
| DataCleanup | Upgrade | + | |||
| PostSynchronizeDataUpgrade | Upgrade | + | + | + | |
| PreSynchronizeDataUpgrade | Upgrade | + | + | + | |
| CheckList | Other | + | + | + | |
| DataImport | Other | + | + | + | |
| Exit | Other | + | + | + | |
| PreventCheckList | Other | + | + | + | |
| Run | Other | + | + | + | |
| RunXml | Other | + | + | ||
| UserOptions | Other | + | + | + | + |
| XpoImport | Other | + | + | + |
Описание действий
AdjustGlobalTypes
Существует с версии Axapta 3.0 SP6.
Действие изменяет некоторые типы данных. После успешного выполнения этого действия, пункт "Коррекция основных типов" контрольного списка установки отмечается как выполненный.
Обратите внимание, что после этой команды синхронизация не выполняется.
В Axapta 3.0 изменение типов выполняется только в том случае, если у пользователя, из-под которого запущена команда AutoRun, имеет по крайней мере право редактирования у ключа безопасности (security key) Администрирование \ Настройка (AdminSetup). В Dynamics AX 4.0 команда выполняется только в том случае, если у этого пользователя есть права на выполнение пункта "Коррекция основных типов" контрольного списка установки.
У элемента AdjustGlobalTypes нет атрибутов. Однако этот элемент может содержать внутри подэлементы, которые и определяют какие типы и каким образом будут изменены. Список типов определен непосредственно в коде метода SysAutoRun.execAdjustGlobalTypes:
- AccountNum
- AmountMST
- ExternalAccount
- ProjIdBase
- ItemId
- WMSLocationId
- SysGroup
- ItemFreeTxtBase
- BankAccount
Жалко, что в стандарт не входит тип Num. Это базовый тип для большинства типов, которые отвечают за коды: Документ ГК (Ваучер, Voucher), Лот (InventTransID), Коды заказов и т.п. При внедрении тип Num достаточно часто изменяется.
Для этих подэлементов, в зависимости от базового типа подэлемента, можно использовать следующие атрибуты:
| Атрибут | Для какого базового типа допустим | Значения | Комментарий |
|---|---|---|---|
| length | String | 1..1000 | Устанавливает максимально допустимую длину строки - свойство StringSize у типа данных (Extended Data Type). |
| adjustRight | String | true <другое> |
Если значение атрибута не указано или равно true, то устанавливается выравнивание "вправо". Любое другое значение трактуется как false и приводит к выравниванию "влево". В Axapta 3.0 очень многие строковые типы выравнены вправо. Начиная с Dyanmics AX4.0 разработчики изменили выравнивание практически всех типов на выравнивание "влево". |
| decimals | Real | 0..100 | Устанавливает число десятичных знаков после запятой - свойство NoOfDecimals у типа данных (Extended Data Type). |
| displayLength | Real | 1..100 | Устанавливает число отображаемых знаков (включая десятичные знаки) - свойство DisplayLength (Extended Data Type). |
Вообще говоря, свойство displayLength присустствует и у строковых типов, и у целочисленных и у enum'ов... Жаль, что его реализовали только для Real
Пример использования:
<AxaptaAutoRun version="4.0">
<AdjustGlobalTypes>
<AccountNum length="24" adjustRight="false" />
<AmountMst displayLength="12" decimals="10" />
</AdjustGlobalTypes>
</AxaptaAutoRun>
CheckList
Существует с версии Axapta 3.0 SP6.
Включает контрольные списки (check list). У этого элемента может быть один атрибут:
| Атрибут | Значения | Комментарий |
|---|---|---|
| type | installation upgrade |
Включает контрольный список установки или контрольный список обновления. При следующем входе пользователь увидит или контрольный список установки или контрольный список обновления. Если указаны другие значения, то команда ничего не выполняет. |
Пример использования:
<AxaptaAutoRun version="4.0">
<CheckList type="upgrade" />
</AxaptaAutoRun>
CompanyAccounts
Существует с версии Axapta 3.0 SP6.
Действие добавляет невиртуальные компании. После успешного выполнения этого действия, пункт "Компании" контрольного списка установки отмечается как выполненный.
В Axapta 3.0 изменение типов выполняется только в том случае, если у пользователя, из-под которого запущена команда AutoRun, имеет по крайней мере право редактирования у ключа безопасности (security key) Администрирование \ Настройка (AdminSetup). В Dynamics AX 4.0 команда выполняется только в том случае, если у этого пользователя есть права на выполнение пункта "Компании" контрольного списка установки.
У элемента CompanyAccounts нет атрибутов. Однако этот элемент может содержать внутри подэлементы с любым названием, которые и определяют какие компании будут добавлены. У подэлементов может быть три атрибута:
| Атрибут | Значения | Комментарий |
|---|---|---|
| name | наименование компании |
Наименование компании должно быть непустым. |
| id | код компании | Команда проверяет длину значения - компания должна содержать от 1 до 3 символов. Команда также проверяет - существует ли группа с указанным кодом. Если существует, и атрибут overwrite не равен true, то в лог записывается ошибка. |
| overwrite | true <другое> |
Если значение атрибута равно true, то компания будет перезаписана новыми значениями. Любое другое значение или неуказанный атрибут трактуется как false и приводит к тому, что новые значения не записываются, а в логе появляется ошибка, если компания с таким кодом уже существует. |
Пример использования:
<AxaptaAutoRun version="3.0">
<CompanyAccounts>
<CompanyAccount id="dmo" name="Demo Data Russian " />
<CompanyAccount id="ceu" name="Contoso Entertainment USA" />
<CompanyAccount id="cee" name="Contoso Entertainment Europe" />
</CompanyAccounts>
</AxaptaAutoRun>
CompileApplication
Существует с версии Axapta 3.0 SP6.
Выполняет полную перекомпиляцию с 4ым уровнем предупреждений компилятора. После успешного выполнения этого действия, пункт "Компиляция" контрольного списка установки отмечается как выполненный.
В Axapta 3.0 перекомпиляция выполняется только в том случае, если у пользователя, из-под которого запущена команда AutoRun, имеет по крайней мере право редактирования у ключа безопасности (security key) Администрирование \ Настройка (AdminSetup). В Dynamics AX 4.0 команда выполняется только в том случае, если у этого пользователя есть права на выполнение пункта "Компиляция" контрольного списка установки, а обновление перекрестных ссылок будет выполняться только в том случае, если у пользователя есть права на форму параметров компилятора (см. скриншот).
У этого элемента может быть два атрибута:
| Атрибут | Значения | Комментарий |
|---|---|---|
| node | путь к объекту в AOT |
Если атрибут указан, то выполняется компиляция указанного объекта AOT (при помощи метода Если выполняется полная компиляция, то дополнительно к логу команды AutoRun выполняется экспорт лога копиляции в файл %Client%\Log\AxCompileAll.html. В случае полной компиляции также может выполняться обновление перекрестных ссылок. |
| crossReference | true false |
Атрибут определяет, будет ли выполняться построение перекрестрых ссылок после полной перекомпиляции. Атрибут действует только если не указано значение атрибута node. Если атрибут не указан, либо содержит значение, отличное от 'true' или 'false', то режим обновления перекрестных ссылок после полной перекомпиляции определяется параметрами компилятора пользователя, из под которого запущена команда AutoRun. |
Пример использования:
<AxaptaAutoRun version="4.0" logFile="D:\Axapta40\AxaptaAutorun.log">
<CompileApplication node="\Data Dictionary\Tables\LedgerTrans" />
</AxaptaAutoRun>
<AxaptaAutoRun version="4.0" logFile="D:\Axapta40\AxaptaAutorun.log">
<CompileApplication node="" crossReference="false" />
</AxaptaAutoRun>
Configuration
Существует с версии Axapta 3.0 SP6.
Действие изменяет состояние конфигурационных ключей. После успешного выполнения этого действия, пункт "Конфигурация" контрольного списка установки отмечается как выполненный.
Обратите внимание, что после этой команды синхронизация не выполняется.
В Axapta 3.0 изменение конфигурации выполняется только в том случае, если у пользователя, из-под которого запущена команда AutoRun, имеет по крайней мере право редактирования у ключа безопасности (security key) Администрирование \ Настройка (AdminSetup). В Dynamics AX 4.0 команда выполняется только в том случае, если у этого пользователя есть права на выполнение пункта "Конфигурация" контрольного списка установки.
У элемента Configuration нет атрибутов. Однако этот элемент может содержать внутри подэлементы ConfigurationKey, которые и определяют какие конфигурационные ключи будут включены, а какие выключены. У элементов ConfigurationKey может быть два атрибута:
| Атрибут | Значения | Комментарий |
|---|---|---|
| name | имя конфигурационного ключа |
Если атрибут пропущен, то подэлемент ConfigurationKey пропускается и не создается никакого диагностического сообщения в логе. Если указано неправильное имя конфигурационного ключа, то в лог выводится ошибка, а команда продолжает свою работу с другими конфигурационными ключами. |
| enabled | true <другое> |
Если значение атрибута не указано или равно true, то конфигурационный ключ включается. Любое другое значение трактуется как false и приводит к выключению конфигурационного ключа. |
Пример использования:
<AxaptaAutoRun version="4.0">
<Configuration>
<ConfigurationKey name="SysUserLog" enabled="true" />
<ConfigurationKey name="PBA_AdvancedProductBuilder" enabled="false" />
</Configuration>
</AxaptaAutoRun>
CreateUpgradeProject
Существует только в версии Axapta 3.0 SP6.
В Axapta 3.0 команда не реализована. В дальнейших версиях элемент исключен из списка. После выполнения этой команды, пункт "Создание проекта обновления приложения" контрольного списка обновления отмечается как выполненный.
<AxaptaAutoRun version="3.0">
<CreateUpgradeProject />
</AxaptaAutoRun>
DataCleanup
Существует только в версии Axapta 3.0 SP6.
В версии Axapta 3.0 команда не реализована. В дальнейших версиях элемент исключен из списка. После выполнения этой команды, пункт "Очистка данных " контрольного списка обновления отмечается как выполненный.
<AxaptaAutoRun version="3.0">
<DataCleanup />
</AxaptaAutoRun>
DataImport
Существует с версии Axapta 3.0 SP6.
Импортирует данные, выгруженные из Axapta в dat/def-файлы (binary format).
В Axapta 3.0 загрузка лицензий выполняется только в том случае, если у пользователя, из-под которого запущена команда AutoRun, имеет по крайней мере право редактирования у ключа безопасности (security key) Администрирование \ Настройка (AdminSetup). В Dynamics AX 4.0 команда выполняется только в том случае, если у этого пользователя есть права на выполнение пункта Главного меню \ Администрирование \ Периодические операции \ Экспорт/Импорт данных \ Импорт.
У элемента DataImport могут быть следующие атрибуты:
| Атрибут | Значения | Комментарий |
|---|---|---|
| companyId | код компании |
Если атрибут пропущен, то подэлемент ConfigurationKey пропускается и не создается никакого диагностического сообщения в логе. Если указано неправильное имя конфигурационного ключа, то в лог выводится ошибка, а команда продолжает свою работу с другими конфигурационными ключами. |
| file | имя файла | В атрибуте нужно указывать dat-файл. В том же каталоге, где находится dat-файл, должен быть соответствующий def-файл. Если при запуске команды AutoRun указан второй параметр |
| definitionGroupId | код группы определения | Содержит код уже существующей группы определения для импорта. Группа определения позволяет импортировать не все данные, а только некоторые, указанные в группе опеределения. Если атрибут пропущен или содержит пустое значение, то импортируются все данные несистемных таблиц, которые есть в файлах. А также данные системных таблиц, если атрибут includeSystemTables содержит true. |
| includeSystemTables | true <другое> |
Если значение атрибута равно true и код группы определения не указан, то из файлов импортируются данные системных таблиц (если данные есть в файлах). Любое другое значение или отсутствие атрибута трактуется как false и данные в системные таблицы не импортируются. |
serverHasAccessToFile |
true <другое> |
Если значение атрибута равно true и сервер действительно может прочитать указанный файл, то импорт выполняется на сервере AOS (устанавливается режим "Выполнить на AOS"). В противном случае импорт выполняется на клиенте. Атрибут появился в Dynamics AX 4.0 |
Пример использования:
<AxaptaAutoRun version="4.0">
<DataImport companyId="dmo" includeSystemTables="true" file="с:\axapta40\demodata.dat" />
</AxaptaAutoRun>
Exit
Существует только версии Axapta 3.0 SP6.
Действие этой команды полностью эквивалентно установке атрибута exitWhenDone="true" в элементе AxaptaAutoRun: если такая команда появляется, то после завершения всех команд будет выполнен выход из Аксапты.
В Dynamics AX 4.0 эта команда объявлена устаревшей. Рекомендуется использовать атрибут exitWhenDone.
Пример использования:
<AxaptaAutoRun version="3.0">
<Exit />
</AxaptaAutoRun>
HomePageProfiles
Существует с версии Dynamics AX 2009.
Команда позволяет переимпортировать профили ролевого центра из AOT. Dynamics AX 2009 команда выполняется только в том случае, если у этого пользователя есть права на выполнение пункта "Инициализировать профили ролевого центра" контрольного списка установки.
Элемент может работать с одним атрибутом:
| Атрибут | Значения | Комментарий |
|---|---|---|
| overwrite | false |
Если значение атрибута равно false или 0 или no, то при импорте уже существующие стандартные профили не изменяются. Если же атрибут не указан, либо содержит другое значение, то импорт переписывает заного стандартные профили. |
Пример использования:
<AxaptaAutoRun version="5.0">
<HomePageProfiles />
</AxaptaAutoRun>
InitializeHelpSystem
Существует только в версии Axapta 3.0 SP6.
Команда создает индексы по справочной системе Axapta 3.0 при помощи SysHelpSetupWizard::doRun. После успешного выполнения этой команды, пункт "Инициализация справочной системы" контрольного списка установки отмечается как выполненный. У элемента InitializeHelpSystem еть один необязательный атрибут.
| Атрибут | Значения | Комментарий |
|---|---|---|
| developerIndex | true |
Если значение атрибута равно true, то дополнительно происходит создаются индексы по справке для разработчика (AOT\Application Developer Configuration). Любое другое значение, в том числе пропущенный атрибут, трактуется как false и приводит к тому, что по справке для разработчика индексы не создаются. |
Элемент InitializeHelpSystem должен содержать внутри подэлементы Language, которые определяют какие языки будут проинициализированы. У элементов Language может быть один атрибут:
| Атрибут | Значения | Комментарий |
|---|---|---|
| name | код языка |
Список доступных языков можно взять в таблице LanguageTable. Если указан неправильный код языка или атрибут пропущен, то подэлемент Language пропускается безо всяких сообщений в логе. |
Пример использования:
<AxaptaAutoRun version="3.0">
<InitializeHelpSystem developerIndex="true">
<Language name="en-us" />
<Language name="ru" />
</Configuration>
</AxaptaAutoRun>
LicenseInformation
Существует с версии Axapta 3.0 SP6.
Загружает лицензию из файла, указанного в параметре file. После успешного выполнения этой команды, пункт "Лицензионные условия " контрольного списка установки отмечается как выполненный.
Обратите внимание, что после этой команды синхронизация не выполняется.
В Axapta 3.0 загрузка лицензий выполняется только в том случае, если у пользователя, из-под которого запущена команда AutoRun, имеет по крайней мере право редактирования у ключа безопасности (security key) Администрирование \ Настройка (AdminSetup). В Dynamics AX 4.0 команда выполняется только в том случае, если у этого пользователя есть права на выполнение пункта "Лицензионные условия" контрольного списка установки.
У этого элемента может быть атрибут:
| Атрибут | Значения | Комментарий |
|---|---|---|
| file | имя файла с лицензией |
Загружается лицензии из файла, имя которого указано в этом атрибуте. Если при запуске команды AutoRun указан второй параметр |
Пример использования:
<AxaptaAutoRun version="4.0">
<LicenseInformation file="c:\axapta40\AxCodes.6516222.txt" />
</AxaptaAutoRun>
PasswordParameters
Существует только версии Axapta 3.0 SP6.
В Axapta 3.0 команда не реализована. В дальнейших версиях элемент исключен из списка.
Пример использования:
<AxaptaAutoRun version="3.0">
<PasswordParameters />
</AxaptaAutoRun>
PostSynchronizeDataUpgrade
Существует с версии Axapta 3.0 SP6.
Команда выполняет апгрейд данных после синхронизации с обновленным приложением в процедуре обновления. После успешного выполнения этой команды, пункт "Обновление данных после синхронизации" контрольного списка обновления отмечается как выполненный.
В Axapta 3.0 команда выполняется только в том случае, если у пользователя, из-под которого запущена команда AutoRun, имеет по крайней мере право редактирования у ключа безопасности (security key) Администрирование \ Настройка (AdminSetup). В Dynamics AX 4.0 команда выполняется без проверки прав доступа.
У этого элемента может быть один атрибут:
| Атрибут | Значения | Комментарий |
|---|---|---|
| timeoutSeconds | целое |
Определяет число время в секундах, в течение которого может выполнятся эта команда в окне "Панель обновления данных". Если В Axapta 3.0 это 2147483647 миллисекунд (что-то около 600тыс.часов или около 70 лет). Как сказано в комментарии в коде - let it run... Если обновление данных выполняется дольше, чем разрешено этим атрибутом, то обновление данных принудительно завершается, а команда завершается неудачей. Если обновление данных выполняется меньше, чем разрешено этим атрибутом, то команда завершается успешно. |
<AxaptaAutoRun version="4.0">
<PostSynchronizeDataUpgrade timeoutSeconds="18000" />
</AxaptaAutoRun>
PreSynchronizeDataUpgrade
Существует с версии Axapta 3.0 SP6.
Команда выполняет апгрейд данных до синхронизации с обновленным приложением в процедуре обновления. После успешного выполнения этой команды, пункт "Обновление данных перед синхронизацией" контрольного списка обновления отмечается как выполненный.
В Axapta 3.0 команда выполняется только в том случае, если у пользователя, из-под которого запущена команда AutoRun, имеет по крайней мере право редактирования у ключа безопасности (security key) Администрирование \ Настройка (AdminSetup). В Dynamics AX 4.0 команда выполняется без проверки прав доступа.
У этого элемента может быть один атрибут:
| Атрибут | Значения | Комментарий |
|---|---|---|
| timeoutSeconds | целое |
Определяет число время в секундах, в течение которого может выполнятся эта команда в окне "Панель обновления данных". Если В Axapta 3.0 это 2147483647 миллисекунд (что-то около 600тыс.часов или около 70 лет). Как сказано в комментарии в коде - let it run... Если обновление данных выполняется дольше, чем разрешено этим атрибутом, то обновление данных принудительно завершается, а команда завершается неудачей. Если обновление данных выполняется меньше, чем разрешено этим атрибутом, то команда завершается успешно. |
<AxaptaAutoRun version="4.0">
<PreSynchronizeDataUpgrade timeoutSeconds="18000" />
</AxaptaAutoRun>
PreventCheckList
Существует с версии Axapta 3.0 SP6.
Запрещает открытие контрольных списков. Команда эквивалентна пункту в главном меню Администрирование \ Настройки \ Система \ Контрольные списки \ Запрет запуска списков. У этого элемента нет атрибутов.
В Axapta 3.0 загрузка лицензий выполняется только в том случае, если у пользователя, из-под которого запущена команда AutoRun, имеет по крайней мере право редактирования у ключа безопасности (security key) Администрирование \ Настройка (AdminSetup). В Dynamics AX 4.0 команда выполняется только в том случае, если у этого пользователя есть права на выполнение пункта Главного меню.
Пример использования:
<AxaptaAutoRun version="4.0">
<PreventCheckList />
</AxaptaAutoRun>
Run
Существует с версии Axapta 3.0 SP6.
Команда позволяет выполнить класс из AOT. Перед выполнением класс компилируется. Команда не поддерживает возвращаемые значения - если класс скомпилировался без ошибок, не является абстрактным, был вызван метод и в нем не возбуждено исключение (throw), то команда Run считается выполненной успешно.
В версии Axapta 3.0 команда выполняется только в том случае, если у пользователя, из-под которого запущена команда AutoRun, имеет по крайней мере право редактирования у ключа безопасности (security key) Администрирование \ Настройка (AdminSetup). А в Dynamics AX 4.0 запуск классов выполняется только в том случае, если у этого пользователя есть полные права на Разработку, а запуск menuItem'ов выполняется только в том случае, если у этого пользователя есть соответствующие права на эти menuItem'ы.
Элемент может работать с четырьмя атрибутами:
| Атрибут | Значения | Комментарий |
|---|---|---|
| type | class |
В версии Axapta 3.0 поддерживается только запуск классов. В версии Dynamics AX 4.0 поддерживается запуск menuItem'ов. |
| name | имя класса | Класс должен быть не абстрактным. Класс должен копмилироваться без ошибок. |
| method | имя метода | Как правило, здесь указывается имя статического метода main. Пустая строка или неуказанный атрибут трактуется как статический метод main. Любой другой метод (статический или нестатический) должен иметь модификатор public и у него не должно быть обязательных параметров (могут быть только параметры с дефолтными значениями). |
| parameters | строка с параметрами | Если присутствуют параметры, то система фактически создает job, формирует код вызова метода класса и использует вместо параметров строку, которая указана в этом атрибуте. Выполняет этот job только в том случае, если он компилируется без ошибок. Атрибут появился начиная с версии Dynamics AX4.0. |
Пример использования:
<AxaptaAutoRun version="4.0">
<Run type="class" name="MyClass" method="run" parameters="'my text',7" />
</AxaptaAutoRun>
RunXml
Существует с версии Dynamics AX 4.0.
Команда позволяет выполнить еще один скрипт, вызвав вложенный обработчик AutoRun. Маскимальный уровень вложенности не ограничен программно (только стеком самой Аксапты).
Элемент может работать с атрибутами:
| Атрибут | Значения | Комментарий |
|---|---|---|
| file | имя файла |
В атрибуте нужно указывать xml-файл, который содержит команды для AutoRun. Этот вложенный обработчик использует тот же Если при запуске команды AutoRun указан второй параметр |
Пример использования:
<AxaptaAutoRun version="4.0">
<RunXml file="c:\axapta40\moreCommands.xml" />
</AxaptaAutoRun>
Synchronize
Существует с версии Axapta 3.0 SP6.
Выполняет синхронизацию базы данных. Атрибутов не имеет. После успешного выполнения этой команды, пункт "Синхронизация" в контрольном списке установки или контрольном списке обновления отмечается как выполненный.
В Axapta 3.0 изменение типов выполняется только в том случае, если у пользователя, из-под которого запущена команда AutoRun, имеет по крайней мере право редактирования у ключа безопасности (security key) Администрирование \ Настройка (AdminSetup). В Dynamics AX 4.0 команда выполняется только в том случае, если у этого пользователя есть права на выполнение пункта "Синхронизация" контрольного списка установки.
Пример использования:
<AxaptaAutoRun version="4.0">
<Synchronize />
</AxaptaAutoRun>
SyncServiceUserAccount
Существует с версии Dynamics AX 2009.
Команда позволяет определить логин для запуска Business Connector Proxy. Аксапта проверяет домен и пользователя. Если Аксаптовский пользователь указан правильно или такой пользователь существует в домене, то он используется для запуска Business Connector Proxy.
В Dynamics AX 2009 команда выполняется только в том случае, если у этого пользователя есть права на выполнение пункта "Системные служебные счета" контрольного списка установки.
Элемент может работать с атрибутами:
| Атрибут | Значения | Комментарий |
|---|---|---|
| useDomainUser | true |
Если значение атрибута равно true, то используется доменный пользователь (должны быть заданы атрибуты domainName и domainUserAlias). Если же атрибут не указан, либо содержит другое значение, то используется пользователь Аксапты (должен быть задан атрибут axUserId). |
| domainUserAlias | логин доменного пользователя | |
| domainName | домен | |
| axUserId | код пользователя в аксапте |
Пример использования:
<AxaptaAutoRun version="5.0">
<SyncServiceUserAccount axUserId="Admin" />
</AxaptaAutoRun>
SqlSetup
Существует с версии Dynamics AX 4.0.
Команда позволяет определить хранилища (TableSpace) для данных и для индексов в Oracle. После успешного выполнения этой команды, пункт "Хранилище Oracle" контрольного списка установки отмечается как выполненный.
Команда будет выполнена только если Аксапта работает на Oracle и у пользователя, из-под которого запущена Аксапта есть права на выполнение пункта "Хранилище Oracle" контрольного списка установки.
У элемента SqlSetup нет атрибутов. Однако этот элемент может содержать внутри подэлементы с любым названием, которые и определяют какие хранища будут использованы. У подэлементов может быть два атрибута:
| Атрибут | Значения | Комментарий |
|---|---|---|
| selectionfor | all tables |
Определяет тип хранилища - таблицы или индексы. |
| name | наименование хранилища |
Аксапта не делает проверок на допустимость значений - просто устанавливает "как указано". |
Пример использования:
<AxaptaAutoRun version="4.0">
<SqlSetup>
<TableSpace selectionfor="all tables" name="axData" />
<TableSpace selectionfor="all indexes" name="axIdx" />
</SqlSetup>
</AxaptaAutoRun>
SqlStatistics
Существует с версии Dynamics AX 4.0.
Команда позволяет периодичность обновления статистики в Oracle, а также начать обновление статистики непосредственно во время выполнения команды AutoRun. После успешного выполнения этой команды, пункт "Статистика" контрольного списка установки отмечается как выполненный.
Команда будет выполнена только если Аксапта работает на Oracle и у пользователя, из-под которого запущена Аксапта есть права на выполнение пункта "Статистика" контрольного списка установки.
У элемента SqlSetup может быть несколько атрибутов:
| Атрибут | Значения | Комментарий |
|---|---|---|
| enabled | true |
Если атрибут указан и его значение true, то Аксапта делает запись в таблице sqlStorage о том, что обновление статистики разрешено. Отличное от true значение трактуется как запрет обновления статистики. Если атрибут не указан, то флаг обновления статистики не изменяет своего значения. Согласно информации из MSDN, по умолчанию обновление статистики выключено. |
| calcMethod | Estimate |
Если атрибут указан и содержит одно из допустимых значений, то Аксапта делает запись в таблице sqlStorage о способе обновления статистики. Если атрибут не указан, то метод обновления статистики не изменяется. |
| interval | Daily Weekly Monthly |
Если атрибут указан и содержит одно из допустимых значений, то Аксапта делает запись в таблице sqlStorage о периодичности расчета статистики. Если атрибут не указан, то периодичность обновления статистики не изменяется. |
| startingDate | Дата | Дата начала в формате ДД.ММ.ГГ или ДД.ММ.ГГГГ. Внимание! контроль на валидность не выполняется |
| startingTime | Время | Время начала. Внимание! контроль на валидность не выполняется |
| runNow | true <другое> |
Если атрибут указан и его значение true, то Аксапта запускает обновление статистики и ждет завершения обновления. |
Пример использования:
<AxaptaAutoRun version="4.0">
<SqlStatistics enabled="true" calcMethod="estimate" interval="Weekly" startingDate="31.12.2008" runNow="true"/>
</AxaptaAutoRun>
UpdateCrossReference
Существует только в версии Axapta 3.0 SP6.
Выполняет полное обновление перекрестных ссылок. Атрибутов не имеет.
После успешного выполнения этой команды, пункт "Обновление перекрестных ссылок" в контрольном списке установки отмечается как выполненный.
Пример использования:
<AxaptaAutoRun version="3.0">
<UpdateCrossReference />
</AxaptaAutoRun>
UserGroups
Существует только в версии Axapta 3.0 SP6.
Команда добавляет группы пользователей. После успешного выполнения этой команды, пункт "Группы пользователей" контрольного списка установки отмечается как выполненный.
У элемента UserGroups нет атрибутов. Однако этот элемент может содержать внутри подэлементы с любым названием, которые и определяют какие группы будут добавлены. У подэлементов может быть два атрибута:
| Атрибут | Значения | Комментарий |
|---|---|---|
| name | наименование группы |
|
| id | код группы | Команда проверяет только одно - существует ли группа с указанным кодом. Если существует, то в лог записывается ошибка. Команда не проверяет был ли код непустым. Не проверяет, поместится ли код в поле таблицы. Не проверяет был ли вообще указан код группы. |
Пример использования:
<AxaptaAutoRun version="3.0">
<UserGroups>
<UserGroup id="Прод" name="Продавцы" />
<UserGroup id="Снабж" name="Снабженцы" />
<UserGroup id="Склад" name="Кладовщики" />
<UserGroup id="Водит" name="Водители" />
</UserGroups>
</AxaptaAutoRun>
UserOptions
Существует с версии Axapta 3.0 SP6.
Команда изменяет параметры подтверждения для указанного пользователя. Кроме того, команда позволяет скопировать эти параметры из другого пользователя.
В Axapta 3.0 изменение параметров подтверждения только в том случае, если у пользователя, из-под которого запущена команда AutoRun, имеет по крайней мере право редактирования у ключа безопасности (security key) Администрирование \ Настройка (AdminSetup). В Dynamics AX 4.0 команда выполняется только в том случае, если у этого пользователя есть права на форму "Группы пользователей".
У элемента UserOptions два атрибута:
| Атрибут | Значения | Комментарий |
|---|---|---|
| userId | код пользователя | Определяет пользователя, у которого будут изменены параметры подтверждения. |
| copyFromUserId | код пользователя | Если непустое значение, то параметры подтверждения пользователя с этим кодом будут скопированы в userId. |
Кроме того, этот элемент может содержать внутри подэлементы с произвольным именем, которые и определяют какие параметры подтверждения будут изменены. Список допустимых значений атрибута name определен непосредственно в коде метода SysAutoRun.execUserOptions.
Для этих подэлементов, в зависимости от базового типа подэлемента, можно использовать следующие атрибуты:
| Атрибут | Значения | Комментарий |
|---|---|---|
| name | DeleteMiscellaneous |
Определяет параметр, который будет изменен. |
| enable | true <другое> |
Если значение атрибута равно true, то параметр включается. Любое другое значение или неуказанный атрибут трактуется как false и приводит к выключению параметра. |
Пример использования:
<AxaptaAutoRun version="4.0">
<UserOptions userId="John" copyFromUserId="mazzy">
<UserOption name="DeleteMain" enabled="false" />
<UserOption name="UpdateMain" enabled="true" />
<UserOption name="DeleteMiscellaneous" enabled="false" />
<UserOption name="UpdateMiscellaneous" enabled="false" />
<UserOption name="DeleteParameter" enabled="false" />
<UserOption name="UpdateParameter" enabled="false" />
<UserOption name="DeleteGroup" enabled="false" />
<UserOption name="UpdateGroup" enabled="false" />
<UserOption name="DeleteTransaction" enabled="false" />
<UserOption name="UpdateTransaction" enabled="false" />
<UserOption name="DeleteWorksheetHeader" enabled="false" />
<UserOption name="UpdateWorksheetHeader" enabled="false" />
<UserOption name="DeleteWorksheetLine" enabled="false" />
<UserOption name="UpdateWorksheetLine" enabled="false" />
</UserOptions>
</AxaptaAutoRun>
Users
Существует только в версии Axapta 3.0 SP6.
Команда добавляет пользователей. У добавленных пользователей устанавливается пустой пароль. Команда позволяет указать только одну группу для добавленных пользователей.
После успешного выполнения этой команды, пункт "Пользователи" контрольного списка установки отмечается как выполненный.
У элемента Users нет атрибутов. Однако этот элемент может содержать внутри подэлементы с любым названием, которые и определяют какие пользователи будут добавлены. У подэлементов может быть несколько атрибутов:
| Атрибут | Значения | Комментарий |
|---|---|---|
| name | Имя пользователя |
Никаких проверок указанного в атрибуте значения не делается. |
| id | код пользователя | Команда проверяет только одно - существует ли пользователь с указанным кодом. Если существует, то в лог записывается ошибка. Команда не проверяет является ли код непустым. Не проверяет, поместится ли код в поле таблицы. Не проверяет был ли вообще указан код пользователя. |
| osAccount | Логин | В Аксапте это поле называется "Сетевое имя пользователя" |
| Электронный адрес | Никаких проверок указанного в атрибуте значения не делается. | |
| language | Код языка | Список доступных языков можно взять в таблице LanguageTable. Никаких проверок укананного в атрибуте значения не делается. Кроме того, поле Language в Axapta 3.0 присутствует, но системой практически не используется и не отображается в форме параметров пользователя. |
| companyId | Код компании | Команда не делает никаких проверок. В частности, не проверяет есть ли такая компания. Если атрибут не указан, то команда поставит пользователю пустую компанию. |
| groupId | Код группы | Никаких проверок указанного в атрибуте значения не делается. Если группа не указана, то добавленный пользователь не будет привязан ни к одной группе. |
Пример использования:
<AxaptaAutoRun version="3.0">
<Users>
<User id="mazzy" name="Мазуркин Сергей Петрович" osAccount="mazzy" groupId="admin" />
<User id="ivan" name="Иванов Иван Иванович" />
<User id="petr" name="Петров Петр Петрович" />
</Users>
</AxaptaAutoRun>
XpoImport
Существует с версии Axapta 3.0 SP6.
Выполняет импорт объектов приложения, выгруженные в xpo-файлы. После импорта выполняется компиляция импортированных объектов.
Обратите внимание, что после этой команды синхронизация не выполняется.
Обратите внимание, что перекрестные ссылки для импортированных объектов не обновляются.
В Axapta 3.0 загрузка xpo-файла выполняется только в том случае, если у пользователя, из-под которого запущена команда AutoRun, имеет по крайней мере право редактирования у ключа безопасности (security key) Администрирование \ Настройка (AdminSetup). В Dynamics AX 4.0 команда выполняется только в том случае, если у этого пользователя есть полные права на разработку.
У элемента XpoImport могут быть следующие атрибуты:
| Атрибут | Значения | Комментарий |
|---|---|---|
| file | имя файла | В атрибуте нужно указывать xpo-файл. Если при запуске команды AutoRun указан второй параметр |
| importWithIds | true <другое> |
Если значение атрибута равно true, то импортируются объекты с идентификаторами. Атрибут появился в Dynamics AX 4.0 |
| suppressCompileErrors | true <другое> |
Если значение атрибута равно true, то ошибки компиляции импортированных объектов выводятся в лог как предупреждения (warning), а не как ошибки. Атрибут появился в Dynamics AX 4.0 |
Пример использования:
<AxaptaAutoRun version="4.0">
<DataImport file="с:\axapta40\class_test.xpo" />
</AxaptaAutoRun>
WorkflowExecutionAccount
Существует с версии Dynamics AX 2009.
Команда позволяет определить логин для выполнения документооборота. Аксапта проверяет указанный домен и указанного пользователя. Если Аксаптовский пользователь указан правильно или такой пользователь существует в домене, то он используется для выполнения документооборота.
В Dynamics AX 2009 команда выполняется только в том случае, если у этого пользователя есть права на выполнение пункта "Системные служебные счета" контрольного списка установки.
Элемент может работать с атрибутами:
| Атрибут | Значения | Комментарий |
|---|---|---|
| useDomainUser | true |
Если значение атрибута равно true, то используется доменный пользователь (должны быть заданы атрибуты domainName и domainUserAlias). Если же атрибут не указан, либо содержит другое значение, то используется пользователь Аксапты (должен быть задан атрибут axUserId). |
| domainUserAlias | логин доменного пользователя | |
| domainName | домен | |
| axUserId | код пользователя в аксапте |
Пример использования:
<AxaptaAutoRun version="5.0">
<WorkflowExecutionAccount axUserId="Admin" />
</AxaptaAutoRun>
WorkflowSystemAccount
Существует с версии Dynamics AX 2009.
Команда позволяет определить системный счет (логин) документооборота. Аксапта проверяет указанный домен и указанного пользователя. Если Аксаптовский пользователь указан правильно или такой пользователь существует в домене, то он используется как системный для документооборота.
В Dynamics AX 2009 команда выполняется только в том случае, если у этого пользователя есть права на выполнение пункта "Системные служебные счета" контрольного списка установки.
Элемент может работать с атрибутами:
| Атрибут | Значения | Комментарий |
|---|---|---|
| useDomainUser | true |
Если значение атрибута равно true, то используется доменный пользователь (должны быть заданы атрибуты domainName и domainUserAlias). Если же атрибут не указан, либо содержит другое значение, то используется пользователь Аксапты (должен быть задан атрибут axUserId). |
| domainUserAlias | логин доменного пользователя | |
| domainName | домен | |
| axUserId | код пользователя в аксапте |
Пример использования:
<AxaptaAutoRun version="5.0">
<WorkflowSystemAccount axUserId="Admin" />
</AxaptaAutoRun>
Как изменить или добавить действие в команду AutoRun
Вся обработка ведется к классе SysAutoRun. Чтобы добавить действие, необходимо реализовать свой метод ExecMyAction и расширить switch в методе SysAutoRun.ExecCommand.
Буду рад Вашим замечаниям и предложениям.
E-Mail: mazzy@mazzy.ru, Мазуркин Сергей