Egyedi művelet (custom action) létrehozása a Dataverse-ben

Ebben a bejegyzésben megnézzük hogyan kell egy olyan egyedi folyamatot / műveletet (custom action) létrehozni, ami egyedi logikát tartalmazhat és meghívhatjuk más műveletek során.

Az egyedi művelet (custom action) sokkal ritkábban használt, mint például a plugin-ek vagy a cloud flow-k, de bizonyos esetekben rendkívül hasznos: meghívható klasszikus workflow lépéseként, kliens oldalról Java Script-ből, plugin-ból vagy akár még cloud flow-ból is.

Egy ilyen egyedi műveletet az előzö bejegyzésben megismert módon írhatunk meg C#-ban, de egyedi üzenethez regisztrálhatjuk be – tehát nem Create / Update / Delete stb. eseményhez. Így gyakorlatilag bármilyen logikát leprogramozhatunk. Viszont további fontos különbség, hogy használhatunk be- és kimenő paramétereket, így a legjobban talán a programozásban használt függvényekhez hasonlítható.

Custom action létrehozása

Hozzunk létre egy egyszerű példán keresztül egy új egyedi műveletet. A logika a következő: bemenő paraméterként beadunk egy szöveget, amit a logikánk csupa nagybetűssé alakít és visszaad.

A plugin-októl eltérően itt nem egyből kódolunk majd regisztrálunk, hanem első lépésként létre is kell hozzuk a Dataverse-ben az egyedi folyamatot, amelynek a logikai neve lesz az üzenet, amihez majd regisztrálni tudjuk.

Lássuk, hogy mit is jelent ez lépésről lépésre most már az új felületen: látogassunk el a maker portálra, hozzunk létre vagy válasszunk ki egy megodlást, majd hozzunk létre egy újat a „New > Automation > Process > Action” kiválasztásával:

Create a new action in solution
Action létrehozása megoldásban

A beúszó gyorslétrehozási űrlapon:

  1. Adjunk neki egy nevet, amiből majd a kiválasztandó üzenet is legenerálásra kerül
  2. Az „Add to” alatt válasszuk a „None” opciót, így globálisan elérhetővé tesszük azaz bármely entitásnál / tábla rekordja esetén meghívható lesz.

Creating new action
Action létrehozása

Mentsük el, majd a létrejött folyamatot megnyitva az alábbit kell látnunk:

The new action
A megnyitott új action

Figyeljük meg, hogy:

  • a művelet egyedi neve „Unique name” a megjelenítendő névből és a prefixből jött létre: „ConvertTexttoUpperCase”. Ez később már nem módosítható, hiába nevezzük át.
  • A kategória „Category” típusa „Action”.

Lejjebb görgetve tudjuk megadni, hogy milyen bemenő és kimenő paraméterekkel rendelkezzen. A paraméterek lehetnek kötelezők vagy opcionálisak és különböző típusúak is. A mi esetünkben a szövegre lesz szükség:

Parameters
Paraméterek

Ügyeljünk rá, hogy a megadott paraméternévvel érjük majd el a kódból is a paraméterünk értékét. Ezt követően ne felejtsük el aktiválni a folyamatot a menü szalagon lévő gomb segítségével, mert különben nem fogjuk tudni a későbbi regisztrációhoz felhasználni:

Folyamat aktiválása

Tipp: Az aktiválás párbeszéd ablaka nagyon lassan szokott betölteni, ha a megoldásban a folyamatot kijelölve „Turn on” gombra nyomva aktiváljuk, az szinte azonnali.

Egyedi logika megírása

Hogy hogyan hozunk létre Visual Studio-ban projektet és hogyan build-eljük, arra az előző bejegyzésben részletesebben kitértem, most fókuszáljunk csak a kódra:

using Microsoft.Xrm.Sdk;
using System;

namespace kogerohu.Actions
{
    public class TextToUpperCase : IPlugin
    {
        /// <summary>
        /// Action to convert an input text to upper case and return
        /// </summary>
        public void Execute(IServiceProvider serviceProvider)
        {
            IPluginExecutionContext executionContext = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));

            var inputText = (string)executionContext.InputParameters["inputText"];

            if (string.IsNullOrWhiteSpace(inputText)) return;

            var outputText = inputText.ToUpper();

            executionContext.OutputParameters["outputText"] = outputText;
        }
    }
}

Build-elést követően töltsük fel az assembly-nket az előző bejegyzésben ismertetett módon. Fontos különbség, hogy step létrehozásánál a „Message” az egyedi folyamat „unique name” értéke legyen és entitást ne állítsunk be, mert globális típusúnak definiáltuk és „post operation” legyen a „stage”:

Ezzel így készen is vagyunk és a custom action használatra kész, sikeresen létrehoztunk egy egyedi logikával rendelkező Action kategóriájú folyamatot, amelyet plugin formában kódoltunk le és amit meghívhatunk JavaScript-ből, plugin alól, workflow vagy cloud flow lépéseként is. Ezeket egy következő bejegyzsésben össze is foglalom.

A kód és a VS projekt megtalálható a GitHub-omon.

Forrás

  1. https://learn.microsoft.com/en-us/dynamics365/customerengagement/on-premises/developer/create-own-actions?view=op-9-1

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük