08 febrero 2013

Secure Configuration en Plugins

- En CRM es posible enviar información parametrizada a un plugin para ser utilizada durante su ejecución, haciendo uso de los espacios Secure y Unsecure en la configuración durante el registro del plugin

- En este ejemplo vamos a desarrollar un plugin que envíe un email al Contacto principal de una cuenta cuando esta es modificada

- Para ello implementaremos el constructor del plugin que incluye los espaciós de configuración como parámetros

public class Plugin : IPlugin
{
    private IPluginExecutionContext context;
    private IOrganizationServiceFactory factory;
    private IOrganizationService service;
    protected string TextoEmail;

    public Plugin(string unsecureConfig, string secureConfig)
    {
        TextoEmail = secureConfig;
    }

    public void Execute(IServiceProvider serviceProvider)
    {
        context = (IPluginExecutionContext)
           serviceProvider.GetService(typeof(IPluginExecutionContext));
        factory = (IOrganizationServiceFactory)
           serviceProvider.GetService(typeof(IOrganizationServiceFactory));
        service = factory.CreateOrganizationService(context.UserId);

        try
        {
            if (context.PostEntityImages["account"].Contains("primarycontactid"))
            {
                Guid primaryContactId = ((EntityReference)
                   context.PostEntityImages["account"]["primarycontactid"]).Id;

                Email email = new Email();

                ActivityParty fromParty = new ActivityParty();
                fromParty.PartyId = 
                   new EntityReference(SystemUser.EntityLogicalName, context.UserId);
                ActivityParty toParty = new ActivityParty();
                toParty.PartyId = 
                   new EntityReference(Contact.EntityLogicalName, primaryContactId);

                email.From = new ActivityParty[] { fromParty };
                email.To = new ActivityParty[] { toParty };
                email.Description = TextoEmail;
                email.Subject = "Su cuenta " + 
                   context.PostEntityImages["account"]["name"].ToString() + 
                   " ha sido modificada ";

                Guid emailId = service.Create(email);

                SendEmailRequest sendReq = new SendEmailRequest();
                sendReq.IssueSend = true;
                sendReq.TrackingToken = "";
                sendReq.EmailId = emailId;

                service.Execute(sendReq);
            }
        }
        catch (InvalidPluginExecutionException)
        {
            throw;
        }
        catch (Exception ex)
        {
            throw new InvalidPluginExecutionException(ex.Message);
        }
    }
}


- Al realizar el registro del plugin incluiremos datos de Configuración Segura, como se indica a continuación



- Para el desarrollo de este ejemplo registraremos una PostEntityImage con los dos siguientes atributos



- El resultado de una actualización y la ejecución del plugin es el siguiente





- Con el uso de esta configuración en el plugin conseguimos dinamizar los valores de los parámetros durante la ejecución del plugin

Desde Innovar Tecnologías esperamos que este documento les sea de ayuda en su desarrollo


http://www.fotografodebodasbarcelonafg.com

No hay comentarios:

Publicar un comentario