Показаны различия между двумя версиями страницы.
axapta:пакетнаяобработка [2018/04/13 22:43] |
axapta:пакетнаяобработка [2018/04/13 22:43] (текущий) |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | Раздел: | ||
+ | ----- | ||
+ | Пакетная обработка используется для того, чтобы выполнять некоторые задания периодически. | ||
+ | Чтобы создать собственное задание нужно написать класс, который расширяет Класс/ | ||
+ | *[[http:// | ||
+ | *[[AxForum: | ||
+ | *[[http:// | ||
+ | |||
+ | === Как программно добавить пакетное задание в очередь === | ||
+ | |||
+ | взято из \Classes\SysEmailBatch\sendToBatch | ||
+ | <code xpp> | ||
+ | public batch sendToBatch(BatchGroupId | ||
+ | { | ||
+ | BinData binData; | ||
+ | ; | ||
+ | if (attachmentfileName) | ||
+ | { | ||
+ | binData = new BinData(); | ||
+ | binData.loadFile(attachmentfileName); | ||
+ | attachmentdata = binData.getData(); | ||
+ | } | ||
+ | |||
+ | batchInfo = batchInfo:: | ||
+ | batchInfo.parmBatchExecute(true); | ||
+ | batchInfo.parmGroupId(_groupId); | ||
+ | batchInfo.parmDataareaId(curext()); | ||
+ | batchInfo.doBatch(); | ||
+ | |||
+ | return batchInfo.parmBatch(); | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | === Как запустить пакетную граппу при старте === | ||
+ | |||
+ | Вазято из [[http:// | ||
+ | |||
+ | 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 " | ||
+ | |||
+ | Now we add a new method to this class: | ||
+ | <code xpp> | ||
+ | container CMHParmInCont() | ||
+ | { | ||
+ | container | ||
+ | int i, j; | ||
+ | str | ||
+ | ; | ||
+ | conparm = conNull(); | ||
+ | for (i = 1; i <= strlen(parm); | ||
+ | { | ||
+ | j = strscan(parm, | ||
+ | if (j > 0) | ||
+ | { | ||
+ | parmString = substr(parm, | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | parmString = substr(parm, | ||
+ | j = i + strlen(parmString); | ||
+ | } | ||
+ | conParm += parmString; | ||
+ | } | ||
+ | return | ||
+ | } | ||
+ | </ | ||
+ | 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: | ||
+ | <code XPP> | ||
+ | void infoRun() | ||
+ | { | ||
+ | batchRun | ||
+ | BatchGroupId | ||
+ | container | ||
+ | int i; | ||
+ | ; | ||
+ | batchRun.parmUseForm(true); | ||
+ | if (parm) | ||
+ | { | ||
+ | parm = strrem(parm, | ||
+ | conParm = this.KBSParmInCont(); | ||
+ | for (i = 1; i <= conlen(conParm); | ||
+ | { | ||
+ | groupId = conpeek(conParm, | ||
+ | batchRun.parmGroupId(groupId); | ||
+ | if (batchRun.validate()) | ||
+ | { | ||
+ | batchRun.run(); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | batchRun.run(); | ||
+ | } | ||
+ | } | ||
+ | </ |