Tracking Workflow Users in Dynamics 365

Bayram ÇETİNBayram ÇETİN
2 min read

Dynamics 365 Finance and Operations'ta iş akışları, kurumsal süreçlerin düzenli ve kontrol edilebilir bir şekilde ilerlemesini sağlayan kritik bileşenlerden biridir. İş akışı içinde kullanıcı hareketlerini takip etmek, bu hareketlere bağlı kurallar tanımlamak ve bu sayede süreci otomatikleştirmek mümkün olur.

Bu yazıda, iş akışına gönderen, onaylayan ve yeniden atanan kullanıcıların nasıl takip edileceğini gösteren display metotlar üreteceğiz. Bu metotları ilgili tabloya ekleyerek, kullanıcı hareketlerini anlık olarak görüntüleyebilir ve iş akışı kurallarına entegre edebilirsiniz.


1. İş Akışı Kullanıcı Hareketlerini Takip Etmek

Dynamics 365'te iş akışı hareketlerini kaydeden iki temel tablo vardır:

  • WorkflowTrackingTable: İş akışı hareketlerini saklayan tablo.

  • WorkflowTrackingStatusTable: İş akışının mevcut durumunu takip eden tablo.

Bu tabloları kullanarak iş akışına gönderen, onaylayan ve yeniden atanan kullanıcıyı bulabiliriz.

1.1 İş Akışını Onaylayan Kullanıcı

Bu metot, ilgili kayıt üzerinde iş akışını en son onaylayan kullanıcıyı getirir.

/// <summary>
/// İş akışını onaylayan kullanıcı
/// </summary>
display UserId workflowApprovalUser()
{
    WorkflowTrackingStatusTable workflowTrackingStatusTable;
    WorkflowTrackingTable       workflowTrackingTable;

    select firstOnly workflowTrackingTable order by CreatedDateTime desc
    exists join workflowTrackingStatusTable
     where workflowTrackingStatusTable.RecId == workflowTrackingTable.WorkflowTrackingStatusTable
        && workflowTrackingStatusTable.ContextTableId == this.TableId
        && workflowTrackingStatusTable.ContextRecId == this.RecId
        && workflowTrackingTable.TrackingType == WorkflowTrackingType::Approval;

    return workflowTrackingTable.User;
}

1.2 İş Akışına Gönderen Kullanıcı

Bir iş akışının kim tarafından başlatıldığını anlamak için aşağıdaki metodu kullanabiliriz:

/// <summary>
/// İş akışına gönderen kullanıcı
/// </summary>
display UserId workflowSubmittedUser()
{
    WorkflowTrackingStatusTable workflowTrackingStatusTable;
    WorkflowTrackingTable       workflowTrackingTable;

    select firstOnly workflowTrackingTable order by CreatedDateTime desc
    exists join workflowTrackingStatusTable
     where workflowTrackingStatusTable.RecId == workflowTrackingTable.WorkflowTrackingStatusTable
        && workflowTrackingStatusTable.ContextTableId == this.TableId
        && workflowTrackingStatusTable.ContextRecId == this.RecId
        && workflowTrackingTable.TrackingType == WorkflowTrackingType::Submission;

    return workflowTrackingTable.User;
}

Bu metot, iş akışını başlatan (ilk gönderen) kullanıcıyı getirir.

1.3 İş Akışına Son Atanan Kullanıcı

Bazen iş akışı bir başka kullanıcıya atanabilir. Bu durumda, son atanan kullanıcıyı bulmak için şu metodu kullanabiliriz:

/// <summary>
/// İş akışına son atanan kullanıcı
/// </summary>
display UserId workflowReassignedUser()
{
    WorkflowTrackingStatusTable workflowTrackingStatusTable;
    WorkflowTrackingTable       workflowTrackingTable;

    select firstOnly workflowTrackingTable order by CreatedDateTime desc
    exists join workflowTrackingStatusTable
     where workflowTrackingStatusTable.RecId == workflowTrackingTable.WorkflowTrackingStatusTable
        && workflowTrackingStatusTable.ContextTableId == this.TableId
        && workflowTrackingStatusTable.ContextRecId == this.RecId
        && workflowTrackingTable.TrackingType == WorkflowTrackingType::Creation;

    return workflowTrackingTable.User;
}

Bu metot, iş akışının son olarak hangi kullanıcıya atandığını getirir.


Sonuç

Bu display metotlarını kullanarak iş akışı hareketlerini kolayca takip edebilir ve bunlara dayalı çeşitli iş kuralları tanımlayabilirsiniz. Bu sayede iş akışınızı daha dinamik ve kural bazlı hale getirebilirsiniz.

0
Subscribe to my newsletter

Read articles from Bayram ÇETİN directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Bayram ÇETİN
Bayram ÇETİN

Senior Dynamics 365 Developer