AX允许管理员使用含有配置命令的XML文件来配置AX,同时也可以结合XML文件在AX启动后进行测试及运行代码。这样做的好处就是我们可以在不需要人工干预的情况下配置测试AX,之后只要查看配置文件就可以了,相当方便。
以下是一个简单的配置文件:
<AxaptaAutoRun exitWhenDone="true" version="5.0" logFile="C:/Axapta/AxaptaAutorun.log">
<CompileApplication crossReference="false" />
<LicenseInformation file="C:/MBS.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>
假设文件名为 axsetup.xml,路径为c:/axsetup.xml
则可以使用如下语法来执行配置:
Ax32.exe _StartupCmd=AutoRun c:/axsetup.xml
下面我们来解释这些标签及他们的属性。
(1) 根标签AxaptaAutoRun,拥有4个属性:
属性 | 值类型 | 解释 |
|
ExitWhenDone | True,false | 在执行完文件所指定任务后是否退出AX客户端 |
|
LogFile | String | 存放日志文件的文件名及路径 |
|
Version | 4.0,5.0 | AX版本 |
|
LogToScrean |
|
| ? |
(2) 标签SyncServiceUserAccount
,
Create the synchronization service admin user account.
属性 | 值类型 | 解释 |
|
| True,false | 是否使用传递进来的参数中的域用户名作为同步服务的用户名 |
|
| String |
|
|
| String |
|
|
| string |
| ? |
参考:http://msdn.microsoft.com/en-us/library/cc568656.aspx
(3)
标签WorkflowExecutionUserAccount
,创建工作流执行用户。
属性 | 值类型 | 解释 |
|
| True,false | 是否使用传递进来的参数中的域用户名作为工作流的用户名 |
|
| String |
|
|
| String |
|
|
| string |
| ? |
参考:http://msdn.microsoft.com/en-us/library/cc603321.aspx
(4)
标签WorkflowSystemUserAccount
,创建工作流系统用户。
属性 | 值类型 | 解释 |
|
| True,false | 是否使用传递进来的参数中的域用户名作为工作流系统用户名 |
|
| String |
|
|
| String |
|
|
| string |
|
|
参考:http://msdn.microsoft.com/en-us/library/cc573462.aspx
(5) 标签CompileApplication,编译应用程序或AOT上的某一个节点,有两个属性:
属性 | 可选值 | 解释 | Optional |
Node | 节点字符串 | AOT上的节点 | Yes |
CrossReference | False,true |
| Yes |
如果不指定任何Node,会编译所有对象,如果指定了Node,则只编译指定了的对象。如果需要指定多个Node。
E.G.:
<CompileApplication node="/classes/Tax" crossReference="true" />
<CompileApplication node="/classes/FieldList" crossReference="true" />
参考:http://msdn.microsoft.com/en-us/library/aa617759.aspx
(6) 标签LicenseInformation,安装License文件,有一个属性:
属性 |
|
| Optional |
File | string | License文件路径 | No |
E.G.:
<LicenseInformation file="//server/share/license.txt" />
参考:http://msdn.microsoft.com/en-us/library/aa852484.aspx
(7) 标签Configuration,用于修改的配置键,可以结合标签ConfigurationKey使用。如果只指定该标签不会配置任何键,如:
<Configuration>
(8) 标签ConfigurationKey,用于修改配置键,有两个属性:
属性 |
|
| Optional |
Name | String | 配置键的名称 | No |
Enabled | False,true |
| No |
只会配置指定的配置键,E.G.:
<Configuration>
<ConfigurationKey name="SysUserLog" enabled="true" />
<ConfigurationKey name="PBA_AdvancedProductBuilder" enabled="false" />
</Configuration>
配置键可以在DataDictionary下的Configuration Keys下找到。
参考:http://msdn.microsoft.com/en-us/library/aa628842.aspx
(9) 标签AdjustGlobalTypes,用于修改全局数据类型的属性,全局数据类型指会被用到多个公司的EDT。该标签有四个属性:
属性 | Description of attribute | |
length | String | Sets the StringSize property. |
adjustRight | String | Sets the Adjustment property to Right. |
displayLength | Real | Sets the DisplayLength property. |
decimals | Real | Sets the NoOfDecimals property. |
使用方式如下:
<AdjustGlobalTypes>
<AccountNum length="24" adjustRight="false" />
<AmountMst displayLength="12" decimals="10" />
</AdjustGlobalTypes>
其中AccountNum和AmountMst都是GlobalTypes.可以在Form SysEDTSetup下查看所有GlobalTypes。
参考:http://msdn.microsoft.com/en-us/library/aa582156.aspx
(10) 标签CheckList,检查Install CheckList或Update Checklist是否完成,如果没有完成就启动checklist。该标签只有一个属性:type
属性 | value | Description of attribute |
type |
|
E.G.
<CheckList type="installation" />
参考:http://msdn.microsoft.com/en-us/library/aa657793.aspx
(11)
标签PreventCheckList
,在AX启动时不显示Check list,只是不显示,并不阻止运行。可以用于这种情况下:我们执行了一部分CheckList而不想执行其余的checklist,并且在启动时不想看到checklist了。这个时候我们使用该标签就可以在启动时不显示checklist了。
E.G.:
<PreventCheckList />
参考:http://msdn.microsoft.com/en-us/library/aa618627.aspx
(12) 标签Synchronize,如果在xml中出现该标签,则将AOT中的表与数据库中的表进行同步。
E.G.:
<Synchronize />
参考:http://msdn.microsoft.com/en-us/library/aa638124.aspx
(13)
标签PostSynchronizeDataUpgrade
,表示在做数据更新后做同步。
参考:
http://msdn.microsoft.com/en-us/library/aa884023.aspx
(14)
标签PreSynchronizeDataUpgrade
,表示在做数据更新前先做同步。
参考:http://msdn.microsoft.com/en-us/library/aa857077.aspx
(15) 标签UserOptions,配置用户权限,有两个属性:
属性 |
|
|
|
UserId | String | 要被更新权限的用户名 |
|
CopyFromUserId | String | 权限被复制的用户 |
|
每个UserOptions可以有一到多个UserOption标签,用来设置特定权限,也就是说我们将CopyFromUserId的权限拷给UserId,但其中一些权限需要修改,这时候就使用UserOption.使用方法如下:
<UserOptions userId="John" copyFromUserId="Admin">
<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>
(16) 标签CompanyAccounts,可以用来创建公司帐号,有3个属性:
|
|
|
|
ID | 3个字母 | 公司ID |
|
Name | String | 公司名称 |
|
overwirte | True,false | 是否重写该ID所对应的所有数据 |
|
E.G.:
<CompanyAccounts>
<Company id="NWT" name="Northwind Traders" overwrite="true" />
</CompanyAccounts>
该代码在SysAutoRun执行后会创建一个Id为NWT,名字为Northwind Traders的公司帐号。
参考:http://msdn.microsoft.com/en-us/library/aa855216.aspx
(17) 标签DataImport,导入dat数据文件到某公司,属性如下:
|
|
|
|
CompanyId | String |
|
|
file | String | Dat文件路径,在该文件路径下要存在一个对应的.def文件 |
|
includeSystemTables | True,false | 是否导入系统表和共享表,默认不导入 |
|
definitionGroupId | string | 使用一个已存在的组来进行导入 |
|
E.G.:
<DataImport companyId="DAT" includeSystemTables="true"
file="d:/data/demodata.dat" />
参考:http://msdn.microsoft.com/en-us/library/aa584930.aspx
(18)
标签XpoImport
,使用xpo文件导入对象。该标签只有一个属性file,其值为要导入xpo文件的路径。
E.G.:
<XpoImport file="d:/xpo/class_TestCase_SalesOrderCreate.xpo" />
参考:http://msdn.microsoft.com/en-us/library/aa872677.aspx
(19)
标签Run
,当AX启动后运行知道方法或Menuitem.有如下属性:
|
|
|
|
|
| 要运行对象的类别 |
|
| String | 方法所属的类名或MenuItem的名字,如果使用类那么一定要在new方法里实例化这个类 |
|
| True,false | 方法名 |
|
| string | 只有简单数据类型或全局数据类型可以做参数,不能给Main方法赋参数。 |
|
E.G.:
<Run type="class" name="MyClass" method="run"
parameters="'my text',7" />
参考:http://msdn.microsoft.com/en-us/library/aa876533.aspx
(20)
标签RunXML
,可以同时使用其他的XML文件来配置。将我们当前的XML文件称为parent,那么runXML中属性所指的XML为child, 系统会忽略child中的
master settings,包括cwd
, exitWhenDone
, logFile
, 和 logToScreen
,它们分别指:
当前工作目录;
是否在执行完xml文件后关闭AX;
日志文件的路径;
日志文件是否被写入日志文件或写到屏幕。
E.G.:
<RunXml file="/MyAutoRun.xml" />
参考:http://msdn.microsoft.com/en-us/library/aa677902.aspx