No exemplo também implementei a alteração da hora de inicio, sendo que o mesmo será executado somente uma vez!
Caso o seu cenário mude, deve-se estudar os demais métodos da classe SysRecurrence, com a finalidade de alterar os outros parâmetros de recorrência!
Segue código de exemplo:
YourRunBaseBatchClass yourRunBaseBatchObj = new YourRunBaseBatchClass();
yourRunBaseBatchObj.batchInfo().parmBatchExecute(NoYes::Yes);
yourRunBaseBatchObj.parmValue(args.parm());
// Set the recurrence data
sysRecurrenceData = SysRecurrence::defaultRecurrence();
sysRecurrenceData = SysRecurrence::setRecurrenceEndAfter(sysRecurrenceData,0);
yourTable = YourTable::find();
switch (yourTable.SysRecurrenceUnit)
{
case SysRecurrenceUnit::Day:
sysRecurrenceData = SysRecurrence::setRecurrenceStartDateTime(sysRecurrenceData, DateTimeUtil::addDays(DateTimeUtil::utcNow(), yourTable.Counting)); // Set range of recurrence
break;
case SysRecurrenceUnit::Hour:
sysRecurrenceData = SysRecurrence::setRecurrenceStartDateTime(sysRecurrenceData, DateTimeUtil::addHours(DateTimeUtil::utcNow(), yourTable.Counting)); // Set range of recurrence
break;
case SysRecurrenceUnit::Minute:
sysRecurrenceData = SysRecurrence::setRecurrenceStartDateTime(sysRecurrenceData, DateTimeUtil::addMinutes(DateTimeUtil::utcNow(), yourTable.Counting)); // Set range of recurrence
break;
}
yourRunBaseBatchObj.batchInfo().parmBatchHeader().parmRecurrenceData(sysRecurrenceData);
yourRunBaseBatchObj.batchInfo().parmCaption("Batch Job Description");
yourRunBaseBatchObj.doBatch();
Qualquer dúvida, por favor poste na área de comentários!