Plug-In y Code Activity snippets

Cuando desarrollas un plug-in o un workflow activity, ¿necesitas volver a buscar cómo se estructuran? ¡Olvídalo!

Aquí comparto dos snippets para crear la estructura básica tanto de un plug-in como de un code activity.

¿Cómo son?

Dynamics 365 Code Activity Structure

Este snippet genera la estructura básica de un code activity. Incluye:

  • La declaración de la interfaz CodeActivity
  • La implementación del Execute
  • Dos parámetros de ejemplo (Input y Output)
  • La declaración de contexto, tracer, factory y service
  • La obtención del parámetro input y el establecimiento del output
public class MyCodeActivity : CodeActivity
{
    #region Parameters
    [Input("Input Label")]
    [RequiredArgument]
    [ReferenceTarget("ex_myentity")]
    public InArgument<EntityReference> EntityInput { set; get; }

    [Output("Output Label")]
    public InArgument<bool> OutPut { set; get; }
    #endregion Parameters

    protected override void Execute (CodeActivityContext executionContext)
    {
        var context = executionContext.GetExtension<IWorkflowContext>();
        var tracer = executionContext.GetExtension<ITracingService>();
        var serviceFactory = executionContext.GetExtension<IOrganizationServiceFactory>();
        var service = serviceFactory.CreateOrganizationService(context.UserId);

        var entityInput = executionContext.GetValue(EntityInput);

        // Code activity business logic goes here.

        executionContext.SetValue(OutPut, true);
    }
}
Dynamics 365 Plug-In Basic Structure

A su vez, este genera la estructura básica de un plug-in. Incluye:

  • La declaración de la interfaz IPlugin
  • La implementación del Execute
  • La declaración de contexto, tracer, factory y service
  • El control más común en plug-ins: si se gestiona una entidad o no
public class MyPlugin : IPlugin
{
    public void Execute (IServiceProvider serviceProvider)
    {
        var tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
        var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
        var serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
        var service = serviceFactory.CreateOrganizationService(context.UserId);

        if ( !context.InputParameters.Contains("Target") || !(context.InputParameters["Target"] is Entity) ) return;

        // Plug-in business logic goes here.
    }
}

¿Cómo se instalan?

Existen dos maneras principalmente:

  1. Importándolas mediante el gestor de snippets de Visual Studio (Ctrl+K; Ctrl+B)
  2. Llevando los archivos a la carpeta personal de snippets (%userprofile%\Documents\Visual Studio 2019\Code Snippets\Visual C#\My Code Snippets)

Sobre la primera, el mecanismo es muy intuitivo. Apenas consiste en ver el listado de snippets e importar los interesados. El sistema hará todo por nosotros.

Sobre el segundo, sólo comprueba si la ruta es válida y corresponde a tu versión de Visual Studio. Posteriormente deberá reconocerlo el programa.

Apariencia del Code Snippets Manager

¿Cómo se declaran?

Ya en el archivo donde declarar los snippets, bastaría:

  • Shortcut Ctrl+K;Ctrl+X para llamar al listado de snippets; buscar la carpeta de los personalizados; seleccionar el deseado y dar dos veces a tab.
Declaración por atajo de la biblioteca de snippets
  • Utilizar los shortcuts de los propios snippets:
    • dyplst + dos veces a tabulación para declarar el snippet del plug-in
    • dycast + dos veces a tabulación para declarar el snippet del code activity
Declaración por atajo de los snippets

¡Así de fácil! Sólo falta que lo descargues desde aquí. ¡Que te sea productivo!

One thought on “Plug-In y Code Activity snippets

Leave a comment