Написано же - чтоб не ждать выполнения batch

Чуть адаптировал пример кода к AX 2012 R3, получилось вот что:
X++:
WorkflowMessageBatchAffinity available = emptyGuid();
WorkflowMessageBatchAffinity affinity;
SysWorkflowMessageTable messageTable;
Common common;
int64 recs;
;
// определяем документ для которого стартуем подвисшие шаги согласования
common = RContractTable::findRecId(0);
if (!common.RecId)
{
warning(Error::missingRecord(funcName()));
return;
}
// сбрасываем Affinity
messageTable.readPast(true);
ttsBegin;
update_recordSet messageTable
setting BatchAffinity = available
where messageTable.WorkflowContextRecId == common.RecId
&& messageTable.WorkflowContextTableId == common.TableId
&& messageTable.MessageLifeCycleState == WorkFlowMessageLifeCycleState::Queued
&& messageTable.BatchAffinity != available
;
recs = messageTable.RowCount();
ttsCommit;
affinity = newGuid();
while (true)
{
ttsBegin;
update_recordSet messageTable
setting BatchAffinity = affinity
where messageTable.WorkflowContextRecId == common.RecId
&& messageTable.WorkflowContextTableId == common.TableId
&& messageTable.MessageLifeCycleState == WorkFlowMessageLifeCycleState::Queued
&& messageTable.BatchAffinity == available
;
recs = messageTable.RowCount();
ttscommit;
if (recs == 0)
{
break;
}
SysWorkflowQueue::dispatch(affinity);
}