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:
A beúszó gyorslétrehozási űrlapon:
- Adjunk neki egy nevet, amiből majd a kiválasztandó üzenet is legenerálásra kerül
- 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.
Mentsük el, majd a létrejött folyamatot megnyitva az alábbit kell látnunk:
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:
Ü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:
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

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