Инструменты пользователя

Инструменты сайта


axapta:axapta:пакетнаяобработка

Раздел: Программирование > СредаИсполнения


Пакетная обработка используется для того, чтобы выполнять некоторые задания периодически.

Чтобы создать собственное задание нужно написать класс, который расширяет Класс/RunBaseBatch

Как программно добавить пакетное задание в очередь

взято из \Classes\SysEmailBatch\sendToBatch

public batch sendToBatch(BatchGroupId    _groupId)
{
    BinData binData;
;
    if (attachmentfileName)
    {
        binData = new BinData();
        binData.loadFile(attachmentfileName);
        attachmentdata = binData.getData();
    }
 
    batchInfo =  batchInfo::construct(this);
    batchInfo.parmBatchExecute(true);
    batchInfo.parmGroupId(_groupId);
    batchInfo.parmDataareaId(curext());
    batchInfo.doBatch();
 
    return batchInfo.parmBatch();
}

Как запустить пакетную граппу при старте

Вазято из http://dynamicsandmore.spaces.msn.com/blog/cns!763444E3F18A4CB0!305.entry?_c11_blogpart_blogpart=blogview&_c=blogpart#permalink

Right now it is not possible to start a specific batch group with a startup command. You certainly can start the batch processing, but within the standard applications it is not possible to start one or more specific batch groups. The problem is caused by a missing parameter within the «SysStartupCmdBatchRun» class.

Now we add a new method to this class:

(xpp) container CMHParmInCont() { container conParm; int i, j; str parmString; ; conparm = conNull(); for (i = 1; i <= strlen(parm); i = j + 1) { j = strscan(parm, ',', i, strlen(parm)); if (j > 0) { parmString = substr(parm, i, j-i); } else { parmString = substr(parm, i, strlen(parm) -i +1); j = i + strlen(parmString); } conParm += parmString; } return conParm; } This method extracts the given batchgroupids from the startup command.

The second and last step is to modify the existing infoRun() method in a way that it starts the different batch jobs: (XPP) void infoRun() { batchRun batchRun = new batchRun(); BatchGroupId groupId; container conParm; int i; ; batchRun.parmUseForm(true); if (parm) { parm = strrem(parm, ' '); conParm = this.KBSParmInCont(); for (i = 1; i <= conlen(conParm); i++) { groupId = conpeek(conParm,i); batchRun.parmGroupId(groupId); if (batchRun.validate()) { batchRun.run(); } } } else { batchRun.run(); } }

axapta/axapta/пакетнаяобработка.txt · Последнее изменение: 2018/04/04 00:33 (внешнее изменение)