需求:用户每天有多个主计划,要求在晚上自动运行
Axapta里面设定:
1,在MP->Setup->Plans->Master Plans里面建立多个主计划名称MP1,MP2
2,在Basic->Setup->Batch->Batch Groups里面建立多个组BG1,BG2
3,在MP->Periodic->Master Scheduling,使General:Mster Plan=MP1,Batch:Batch Processing enabled, batch group=BG1,其他参数根据需要去设定。这样可以将当前的主计划插入到Basic->Batch List-User.中。可以依照此,增加多个主计划到batch list-user中。
4,建立一个ERP帐号,001,对应一个网络帐号AD01,001权限要对,AD01是一个域帐号,用于自动登录。
服务器上设定(AX使用两层)
5,建立一个batch file, BF01.bat,内容如下:就是打开AX客户端的脚本,并传递参数BG01.
"C:\Program Files\Navision\Axapta Client\Bin\ax32.exe" "C:\DailyBatchJob\AX_2Tier.axc" -startupcmd=BG01
同样建立BF02.bat,传递参数BG02.
6,建立Schedule Tasks: ST1,让其运行BF01.bat,运行帐号是AD01,并要求密码保持与001的一致,设定好schedule和AD01对bat文件的权限。同样可以建立好ST2运行BF02.bat.
7,在AX SysStartupCmd Class的construct方法增加一个case
case 'BG01', 'BG02':
return new BGSysStartupCmdBatchRun(s,parm);
8,在AX 增加一个类 class BGSysStartupCmdBatchRun extends SysStartupCmd
void infoRun()
{
HDM_batchRun batchRunHDMC = new HDM_batchRun();
;
batchRunHDMC.parmGroupId(startupCmd); //Should ensure batch command is same as batch group
if (batchRunHDMC.do())
{
info("yes");
} else
{
info("no");
}
infolog.shutDown(true);
}