Начиная с AX3.0 SP6 в Аксапте появилась команда загрузки (startup command) с именем AutoRun (подробнее см. советы Команды загрузки (Startup Command) и Команды загрузки (Startup Command) в Dynamics AX4). Команда AutoRun позволяет выполнить целую последовательность действий, которые указаны в одном xml-файле.

Содержание:

Команда autoRun

Команда AutoRun позволяет выполнить целую последовательность действий, которые указаны в одном xml-файле. Эта команда имеет тип ApplInit (см. Тип команды запуска и Тип команды запуска в Dynamics AX4).

Необходимые права для запуска действий в команде AutoRun Необходимые права для запуска действий в команде AutoRun В Axapta 3.0 действия выполняются только в том случае, если у пользователя, из-под которого запущена Аксапта, имеет по крайней мере право редактирования у ключа безопасности (security key) Администрирование \ Настройка (AdminSetup). Начиная с Dynamics AX 4.0 в каждом действии есть своя проверка прав доступа.

По сути, команда AutoRun запускает класс SysAutoRun и передает туда указанный в параметрах xml-файл. Дополнительное описание можно найти в MSDN: SysAutoRun или в документации разработчика.

Параметры команды

Команда принимает два параметра. Первый - обязательный - содержит путь и имя xml-файла, в котором содержатся действия, которые исполняет AutoRun. Второй - необязательный - содержит путь к файлам, которые указаны внутри xml-файла (в конце должен быть обратный слэш "\").

AutoRun_xmlFile[,BasePath]

Пример использования:

Пример использования команды AutoRun в конфигурационной утилите

или в командной строке
-startupcmd=autorun_c:\axapta40\Commands.xml,c:\xmlCommands\

Надо отметить, что в действиях, которые оперируют с файлами, код присоединения имени файла к каталогу BasePath не отличается особым интелектом - выполняется простое соединение строк BasePath + File. Такое тривиальное поведение открывает несколько стратегий:

Формат xml-файла

Корневым элементом xml-файла должен быть элемент AxaptaAutoRun. У этого элемента может быть три атрибута:

Атрибут Обязат. Значения Комментарий
version +

3.0
4.0
5.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:

Жалко, что в стандарт не входит тип 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 (при помощи метода TreeNode.AOTCompile). Если атрибут не указан, то выполняется полная компиляция всего приложения (при помощи метода SysCompileAll.compile).

Если выполняется полная компиляция, то дополнительно к логу команды 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 указан второй параметр BasePath, то файлы ищутся в каталоге BasePath.

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
0
no
<другое>

Если значение атрибута равно 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 указан второй параметр BasePath, то файл ищется в каталоге BasePath.

Пример использования:

<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

целое

Определяет число время в секундах, в течение которого может выполнятся эта команда в окне "Панель обновления данных". Если атрибут пропущен или содержит 0 или отрицательное число, то в качестве значения используется значение maxint() миллисекунд.

В 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

целое

Определяет число время в секундах, в течение которого может выполнятся эта команда в окне "Панель обновления данных". Если атрибут пропущен или содержит 0 или отрицательное число, то в качестве значения используется значение maxint() миллисекунд.

В 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
actionMenuItem
displayMenuItem
outputMenuItem

В версии 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. Этот вложенный обработчик использует тот же BasePath, что и внешний.

Если при запуске команды AutoRun указан второй параметр BasePath, то файлы ищутся в каталоге BasePath.

Пример использования:

<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
all indexes

Определяет тип хранилища - таблицы или индексы.

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
Compute

Если атрибут указан и содержит одно из допустимых значений, то Аксапта делает запись в таблице 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
DeleteParameter
DeleteGroup
DeleteMain
DeleteTransaction
DeleteWorksheetHeader
DeleteWorksheetLine
UpdateMiscellaneous
UpdateParameter
UpdateGroup
UpdateMain
UpdateTransaction
UpdateWorksheetHeader
UpdateWorksheetLine

Определяет параметр, который будет изменен.

Параметры подтверждения Параметры подтверждения

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 Логин В Аксапте это поле называется "Сетевое имя пользователя"
email Электронный адрес Никаких проверок указанного в атрибуте значения не делается.
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 указан второй параметр BasePath, то файл ищeтся в каталоге BasePath.

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, Мазуркин Сергей