static void workflowUndefinedRecords(Args args) { Common buffer; SysDictTable dictTable; SysWorkflowTable workflowTable; WorkflowMessageTable workflowMessageTable; WorkflowWorkItemTable workflowWorkItemTable; WorkflowTrackingStatusTable trackingStatus; boolean deleteifNotExist = true; ; ttsbegin; deleteifNotExist = Box::yesNo('Hatalı bulunan iş akış kayıtları silinsin mi?',DialogButton::No) == DialogButton::Yes ? true : false; setPrefix('SysWorkflowTable'); while select forupdate workflowTable { changecompany(workflowTable.ContextCompanyId) { dictTable = new SysDictTable(workflowTable.ContextTableId); buffer = dictTable.makeRecord(); select buffer where buffer.RecId == workflowTable.ContextRecId; if (!buffer) { info(strfmt('%1 tablosunda %2 kaydı yok. Şirket:%3',tableId2pname(workflowTable.ContextTableId),workflowTable.ContextRecId,workflowTable.ContextCompanyId)); if(deleteifNotExist) { trackingStatus = WorkflowTrackingStatusTable::findByCorrelation(workflowTable.RootCorrelationId,true); trackingStatus.delete(); workflowTable.delete(); info(strfmt('%1 iş akış öğesi silindi',workflowTable.RootCorrelationId)); } } } } setPrefix('WorkflowMessageTable'); while select forupdate workflowMessageTable where workflowMessageTable.MessageLifeCycleState == WorkflowMessageLifeCycleState::Queued { changecompany(workflowMessageTable.WorkflowContextCompanyId) { dictTable = new SysDictTable(workflowMessageTable.WorkflowContextTableId); buffer = dictTable.makeRecord(); select buffer where buffer.RecId == workflowMessageTable.WorkflowContextRecId; if (!buffer) { info(strfmt('%1 tablosunda %2 kaydı yok. Şirket:%3',tableId2pname(workflowMessageTable.workflowContextTableId),workflowMessageTable.workflowContextRecId,workflowMessageTable.workflowContextCompanyId)); if(deleteifNotExist) { trackingStatus = WorkflowTrackingStatusTable::findByCorrelation(workflowMessageTable.RootCorrelationId,true); trackingStatus.delete(); workflowMessageTable.delete(); info(strfmt('%1 iş akış öğesi silindi',workflowMessageTable.RootCorrelationId)); } } } } setPrefix('WorkflowMessageTable&StatusTable'); while select forupdate workflowMessageTable // where workflowMessageTable.MessageLifeCycleState == WorkflowMessageLifeCycleState::Queued notexists join trackingStatus where trackingStatus.CorrelationId == workflowMessageTable.WorkflowCorrelationId { changecompany(workflowMessageTable.WorkflowContextCompanyId) { info(strfmt('WorkMessage %1 için TrackingStatus kaydı yok. statü:%2',workflowMessageTable.WorkflowCorrelationId,workflowMessageTable.MessageLifeCycleState)); if(deleteifNotExist) { workflowMessageTable.delete(); info(strfmt('%1 iş akış öğesi silindi',workflowMessageTable.WorkflowCorrelationId)); } } } setPrefix('WorkflowWorkItemTable'); while select forupdate workflowWorkItemTable { changecompany(workflowWorkItemTable.CompanyId) { dictTable = new SysDictTable(workflowWorkItemTable.RefTableId); buffer = dictTable.makeRecord(); select buffer where buffer.RecId == workflowWorkItemTable.RefRecId; if (!buffer) { info(strfmt('%1 tablosunda %2 kaydı yok. Şirket:%3',tableId2pname(workflowWorkItemTable.refTableId),workflowWorkItemTable.refRecId,workflowWorkItemTable.CompanyId)); if(deleteifNotExist) { trackingStatus = WorkflowTrackingStatusTable::findByCorrelation(workflowWorkItemTable.CorrelationId,true); trackingStatus.delete(); workflowWorkItemTable.delete(); info(strfmt('%1 iş akış öğesi silindi',workflowWorkItemTable.CorrelationId)); } } } } setPrefix('WorkflowWorkItemTable&StatusTable'); while select forupdate workflowWorkItemTable notexists join trackingStatus where trackingStatus.CorrelationId == workflowWorkItemTable.CorrelationId { changecompany(workflowWorkItemTable.CompanyId) { info(strfmt('WorkItem %1 için TrackingStatus kaydı yok. statü:%2',workflowWorkItemTable.CorrelationId,workflowWorkItemTable.Status)); if(deleteifNotExist) { workflowWorkItemTable.delete(); info(strfmt('%1 iş akış öğesi silindi',workflowWorkItemTable.CorrelationId)); } } } setPrefix('WorkflowtrackingStatusTable'); while select forupdate trackingStatus { changecompany(trackingStatus.ContextCompanyId) { dictTable = new SysDictTable(trackingStatus.ContextTableId); buffer = dictTable.makeRecord(); select buffer where buffer.RecId == trackingStatus.ContextRecId; if (!buffer) { info(strfmt('%1 tablosunda %2 kaydı yok. Şirket:%3',tableId2pname(trackingStatus.ContextTableId),trackingStatus.ContextRecId,trackingStatus.ContextCompanyId)); if(deleteifNotExist) { trackingStatus.delete(); info(strfmt('%1 iş akış öğesi silindi',trackingStatus.RootCorrelationId)); } } } } ttscommit; }
21 Ocak 2019 Pazartesi
İş akışlarının ilerlememesi | Dynamics Ax
İş akışlarınız ilerlemiyorsa muhtemelen gereksiz kayıtlar kalmış ve ilgili tablolar şişmiş olabilir(gönderilmiş formdan silinmiş vs.). Aşağıdaki kod oluşan bu gereksiz kayıtları siler.
İş akışlarınız çalışmaya devam eder.
Kaydol:
Kayıt Yorumları (Atom)
Total ciro
static void MAA_SalesTableTotal(Args _args) { SalesTable SalesTable; utcDateTime dateTime; dateTime ...
-
Dynamics Ax Microsoft’un orta ve büyük ölçekli işletmelerin ihtiyaçlarını karşılamak için tasarladığı temel iş çözümüdür. Veritabanı yöne...
-
Veri Filtreleme CTRL+F Geçerli alanı filtrelemek için kullanılır. Ekran açılır. Hangi alan üzerine tıklandı ise o alan için filtreleme k...
Hiç yorum yok:
Yorum Gönder