Dynamics 365 Finance and Operations Yeni Bir İş Akışı Nasıl Oluşturulur?

Bu yazıda Dynamics 365 Finance and Operations yeni bir iş akışı (Workflow) nasıl oluşturulur anlatmaya çalışacağım. Öncelikle yeni bir tablo ve formumuz olmalı ben örnek olsun diye FDActivityType tablosunu kullanacağım.  Adımlar halinde anlatacağım.

Resim-1


  1. Adım: Olan bir Enum’ı kullanın veya yeni bir Enum oluşturun. Ben yeni bir Enum oluşturdum.

Resim-2

Bu elementleri ekledim.

Resim-3

  1. Adım: Bu Enum‘ı alan olarak tabloya ekledim.

Resim-4

  1. Adım: Tabloya aşağıda ki iki metodu ekliyoruz.

public boolean canSubmitToWorkflow(str _workflowType = ”)

{

boolean ret;

ret = super(_workflowType);

if (this.WorkflowStatus == FDWorkflowStatus::NotSubmitted)

{

ret = boolean::true;

}

else

{

ret = boolean::false;

}

return ret;

}

static void updateWorkflowStatus(RefRecId _recId, FDWorkflowStatus _status)

{

FDActivityType activityType;

select forupdate activityType

where activityType.RecId == _recId;

ttsBegin;

activityType.WorkflowStatus = _status;

activityType.update();

ttsCommit;

}

  1. Adım: Yeni bir Query oluşturuyoruz.

Resim-5

Tablomuzu Query’e ekliyoruz.

Resim-6

  1. Adım: Workflow Category oluşturuyoruz. Etiket ve modül seçiyoruz oluşturduktan sonra .

Resim-7

  1. Adım: Workflow Type oluşturuyoruz.

Resim-8

İlgili seçimleri yapıp devam ediyoruz.

Resim-9

  1. Adım : Form Design kısmında iş akışı seçimlerini yapıyoruz.

Resim-10

  1. Adım: FDActivityTypeWorkflowTypeEventHandler sınıfına aşağıdaki kodları ekliyoruz.

/// <summary>

/// The FDActivityTypeWorkflowTypeEventHandler workflow event handler.

/// </summary>

public class  FDActivityTypeWorkflowTypeEventHandler implements WorkflowCanceledEventHandler,

WorkflowCompletedEventHandler,

WorkflowStartedEventHandler

{

public void started(WorkflowEventArgs _workflowEventArgs)

{

FDActivityType::updateWorkflowStatus(_workflowEventArgs.parmWorkflowContext().parmRecId(),FDWorkflowStatus::Submitted);

}

public void canceled(WorkflowEventArgs _workflowEventArgs)

{

FDActivityType::updateWorkflowStatus(_workflowEventArgs.parmWorkflowContext().parmRecId(),FDWorkflowStatus::Submitted);

}

public void completed(WorkflowEventArgs _workflowEventArgs)

{

FDActivityType::updateWorkflowStatus(_workflowEventArgs.parmWorkflowContext().parmRecId(),FDWorkflowStatus::Submitted);

}

}

  1. Adım:  FDActivityTypeWorkflowTypeSubmitManager sınıfına aşağıdaki kodları ekliyoruz.

/// <summary>

/// The FDActivityTypeWorkflowTypeSubmitManager menu item action event handler.

/// </summary>

public class FDActivityTypeWorkflowTypeSubmitManager

{

public static void main(Args args)

{

FDActivityType          activityType ;

WorkflowComment         note = “”;

WorkflowSubmitDialog    workflowSubmitDialog;

WorkflowCorrelationId   workflowCorrelationId;

WorkflowTypeName        workflowTypeName = workFlowTypeStr(“FDActivityTypeWorkflowType”);

workflowSubmitDialog = WorkflowSubmitDialog::construct( args.caller().getActiveWorkflowConfiguration());

workflowSubmitDialog.run();

if (workflowSubmitDialog.parmIsClosedOK())

{

activityType = args.record();

note = workflowSubmitDialog.parmWorkflowComment();

try

{

ttsbegin;

workflowCorrelationId = Workflow::activateFromWorkflowType(workflowTypeName, activityType.RecId, note, NoYes::No);

activityType.WorkflowStatus = FDWorkflowStatus::Submitted;

activityType.update();

ttscommit;

info(“Submitted.”);

}

catch (Exception::Error)

{

error(“Error workflow.”);

}

}

args.caller().updateWorkFlowControls();

}

}

  1. Adım: Workflow Approval oluşturuyoruz.

Resim-11

Eğer Workflow decument kısmı gelmiyorsa projenizi build edip eşitleyip tekrar deneyin. Tablonuza bir FieldGroup ekleyip burada seçmelisiniz.

Resim-12

  1. Adım:  FDActivityTypeWFApprovalEventHandler sınıfına aşağıdaki kodu ekliyoruz.

/// <summary>

/// The FDActivityTypeWFApprovalEventHandler workflow outcome event handler.

/// </summary>

public final class FDActivityTypeWFApprovalEventHandler implements WorkflowElementCanceledEventHandler,

WorkflowElemChangeRequestedEventHandler,

WorkflowElementCompletedEventHandler,

WorkflowElementReturnedEventHandler,

WorkflowElementStartedEventHandler,

WorkflowElementDeniedEventHandler,

WorkflowWorkItemsCreatedEventHandler

{

public void started(WorkflowElementEventArgs _workflowElementEventArgs)

{

// TODO: Write code to execute once the workflow is started.

}

public void canceled(WorkflowElementEventArgs _workflowElementEventArgs)

{

FDActivityType::updateWorkflowStatus(_workflowElementEventArgs.parmWorkflowContext().parmRecId(), FDWorkflowStatus::Rejected);

}

public void completed(WorkflowElementEventArgs _workflowElementEventArgs)

{

FDActivityType::updateWorkflowStatus(_workflowElementEventArgs.parmWorkflowContext().parmRecId(), FDWorkflowStatus::Rejected);

}

public void denied(WorkflowElementEventArgs _workflowElementEventArgs)

{

FDActivityType::updateWorkflowStatus(_workflowElementEventArgs.parmWorkflowContext().parmRecId(),FDWorkflowStatus::Rejected);

}

public void changeRequested(WorkflowElementEventArgs _workflowElementEventArgs)

{

// TODO: Write code to execute once change is requested for the workflow.

}

public void returned(WorkflowElementEventArgs _workflowElementEventArgs)

{

FDActivityType::updateWorkflowStatus(_workflowElementEventArgs.parmWorkflowContext().parmRecId(),FDWorkflowStatus::Rejected);

}

public void created(WorkflowWorkItemsEventArgs _workflowWorkItemsEventArgs)

{

// TODO: Write code to execute once work items are created.

}

}

  1. Adım:  WorkflowType içinde Yeni bir Supported Element oluşturup onay nesnemizi yazıyoruz.

Resim-13

Bu aşamadan sonra tanım kısmı bitti projenizi derleyip eşitlemeyi unutmayın yoksa iş akışı kurulum sayfasında çıkmayacaktır. Özellikle eşitlemede hata olmadığından emin olun.

Bu yazıda yeni bir iş akışı tanımı nasıl yapılır anlatmaya çalıştım. İş kışı çok fazla talep gören ve doğru ayarlanmazsa çok sorun çıkartan bir yapı. Standartlara sadık kalmak ve modül mantığında çok değişiklik yapmamakta fayda var.

Selamlar.

www.fatihdemirci.net

TAGs: Microsoft Life Cycle Services, LCS, Azure, Azure DevOps, Workflow, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365, Dynamics 365 Insights Power BI, Power Automate, Power Apss, Power Virtual Agents, Dynamics 365 nedir, Dynamics 365 ERP, Create new workflow

 
Comment are closed.