Creating a Custom Workflow Participant Provider in Dynamics 365 F&O

Creating a Custom Workflow Participant Provider in Dynamics 365 F&O

Dynamics 365 Finance and Operations'ta Özel Workflow Katılımcı Sağlayıcı Nasıl Oluşturulur?

Dynamics 365 Finance and Operations'ta Workflow Participant Provider, iş akışlarında belirli bir adım için uygun kullanıcıları veya grupları tanımlamak için kullanılır. Bu yazıda, satınalma taleplerini yöneticilere atayan bir sınıfın nasıl oluşturulup iş akışına bağlanacağını adım adım ele alacağız.


1. Sınıfın Tanımı

Aşağıdaki sınıf, satınalma talep biriminin yöneticisini belirler ve iş akışı katılımcısı olarak atar:

class ETGPurchTableTemplateRequesterParticipantProvider implements WorkflowParticipantProvider
{
    public WorkflowParticipantTokenList getParticipantTokens()
    {
        WorkflowParticipantTokenList        tokenList = WorkflowParticipantTokenList::construct();

        tokenList.add("ETGPurchRequesterWorkflowUser", "Satınalma Talep Birimi");

        return tokenList;
    }

    public WorkflowUserList resolve(WorkflowContext _context, WorkflowParticipantToken _participantTokenName)
    {
        WorkflowUserList userList = WorkflowUserList::construct();

        if  (!_participantTokenName)
        {
            throw error("Participant token bulunamadı!");
        }

        if  (_participantTokenName == "ETGPurchRequesterWorkflowUser")
        {
            PurchTable purchTable = PurchTable::findRecId(_context.parmRecId());

            HcmPositionRecId positionRecId = HcmWorkerHelper::getWorkerPrimaryPositionAssignment(purchTable.Requester).Position;
            HcmPositionRecId parentPositionRecId = HcmPositionHierarchy::findByPosition(positionRecId).ParentPosition;
            HcmWorkerRecId parentWorkerRecId = HcmPositionWorkerAssignment::findByPosition(parentPositionRecId).Worker;

            UserId userId = HcmWorker::findPersonUser(parentWorkerRecId).User;

            if (userId)
            {
                userList.add(userId);
            }
            else
            {
                throw error(strFmt("%1 Satınalma Talep Birimi üst yöneticisi bulunamadı.", purchTable.PurchId));
            }
        }

        return userList;
    }

}

2. Workflow Participant Assignment Provider Tanımlama

Sınıfı iş akışına bağlamak için bir Workflow Participant Assignment Provider oluşturun:

  1. Yeni Provider Ekleyin:

    • Name: ETGPurchTableTemplateRequesterParticipantProvider

  2. Özellikleri Ayarlayın:

    • Label: Satınalma Talep Birimi

    • Provider Class: ETGPurchTableTemplateRequesterParticipantProvider

    • Workflow Types: PurchTableTemplate

  3. Kaydedin ve Derleyin.


3. İş Akışına Bağlama

  1. Dynamics 365'te PurchTableTemplate iş akışını açın.

  2. Bir "Approval" adımı ekleyin veya düzenleyin.

  3. Assignment Type olarak "Participant" seçin.

  4. Provider alanında yeni tanımladığınız sağlayıcıyı seçin.

  5. İş akışını kaydedin ve doğrulayın.


Sonuç

Bu işlemle, iş akışınız satınalma taleplerini otomatik olarak doğru yöneticilere atayacak şekilde özelleştirilmiştir.