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