![]() |
#6 |
Участник
|
Написано же - чтоб не ждать выполнения 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); } |
|
|
За это сообщение автора поблагодарили: trud (2), iCloud (2). |
|
|