Esdeveniment
Campionats del món de Power BI DataViz
14 de febr., 16 - 31 de març, 16
Amb 4 oportunitats d'entrar, podríeu guanyar un paquet de conferència i arribar a la Gran Final EN DIRECTE a Las Vegas
Més informacióAquest navegador ja no s’admet.
Feu l’actualització al Microsoft Edge per aprofitar les característiques més recents, les actualitzacions de seguretat i l’assistència tècnica.
Este tutorial le guiará a través de la escritura de un complemento y su registro en Microsoft Dataverse. Primero debe leer el artículo Escribir un complemento para familiarizarse con la escritura de un complemento.
Puede encontrar los archivos de la solución del complemento para este tutorial aquí: Ejemplo: Crear un complemento básico.
Crear un complemento asincrónico registrado en el mensaje "Crear" de la tabla de cuenta. El complemento crea una actividad de tarea que recuerda al creador la cuenta que realice seguimiento una semana más tarde.
Nota
Este objetivo se puede conseguir fácilmente utilizando un flujo de trabajo sin escribir código. Estamos usando este ejemplo simple para poder centrarnos en el proceso de creación y de implementar un complemento.
Este artículo demuestra el uso de Visual Studio para escribir el complemento y compilar el ensamblado. Sin embargo, puede usar su editor favorito para codificar y usar MSBuild para compilar el ensamblado. En cualquier caso, debe utilizar la herramienta Registro de complementos para registrar el complemento con Dataverse.
Alternativamente, puede usar Power Platform CLI para crear rápidamente un nuevo proyecto con código de complemento repetitivo usando el comando pac plugin init. Seguiría usando la herramienta Registro de complementos para registrar el complemento con Dataverse.
Otra alternativa es usar la extensión de Power Platform Tools como se describe aquí: Crear y registrar un paquete de complemento usando Visual Studio. En este caso, la extensión puede crear y registrar el complemento, por lo que no se necesita la herramienta de registro de complementos.
Abra Visual Studio y abra un nuevo proyecto Biblioteca de clase (.NET Framework) mediante .NET Framework 4.6.2
El nombre usado para el proyecto también es el nombre del ensamblado. Este tutorial usa el nombre BasicPlugin
.
En el Explorador de soluciones haga clic con el botón secundario en el proyecto y seleccione Administrar paquetes de NuGet... en el menú contextual.
Seleccione Buscar y busque Microsoft.CrmSdk.CoreAssemblies
e instale la versión más reciente.
Debe seleccionar Acepto en el diálogo Aceptación de licencia.
Nota
La adición del paquete Microsoft.CrmSdk.CoreAssemblies
NuGet incluirá estos ensamblados en la carpeta de compilación de su ensamblado, pero no cargará estos ensamblados con el ensamblado que incluye su lógica. Estos ensamblados ya están presentes en el runtime de espacio aislado.
Asegúrese de que solo los ensamblados a los que hace referencia directamente el proyecto o a través de cadenas de dependencias de NuGet se encuentran en la carpeta de compilación. No puede incluir estos ensamblados cuando registra el ensamblado con su lógica. No puede suponer que los ensamblajes distintos de los incluidos en el paquete Microsoft.CrmSdk.CoreAssemblies
NuGet estarán presentes en el servidor y serán compatibles con su código.
En Explorador de soluciones, haga clic con el botón secundario en el archivo Class1.cs
y seleccione Cambiar nombre en el menú contextual.
Cambiar el nombre del archivo Class1.cs
a FollowupPlugin.cs
.
Cuando se solicite, permita que Visual Studio cambie el nombre de la clase para que coincida con el nombre de archivo.
Agregue las instrucciones using
siguientes a la parte superior del archivo FollowupPlugin.cs
.
using System.ServiceModel;
using Microsoft.Xrm.Sdk;
Implementar la interfaz IPlugin editando la clase.
Nota
Si sólo escribe : IPlugin
después del nombre de clase, Visual Studio sugerirá automáticamente la implementación de un stub para el método Execute.
public class FollowupPlugin : IPlugin
{
public void Execute(IServiceProvider serviceProvider)
{
throw new NotImplementedException();
}
}
Reemplace el contenido del método Execute
con el siguiente código.
// Obtain the tracing service
ITracingService tracingService =
(ITracingService)serviceProvider.GetService(typeof(ITracingService));
// Obtain the execution context from the service provider.
IPluginExecutionContext context = (IPluginExecutionContext)
serviceProvider.GetService(typeof(IPluginExecutionContext));
// The InputParameters collection contains all the data passed in the message request.
if (context.InputParameters.Contains("Target") &&
context.InputParameters["Target"] is Entity)
{
// Obtain the target entity from the input parameters.
Entity entity = (Entity)context.InputParameters["Target"];
// Obtain the IOrganizationService instance which you will need for
// web service calls.
IOrganizationServiceFactory serviceFactory =
(IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
try
{
// Plug-in business logic goes here.
}
catch (FaultException<OrganizationServiceFault> ex)
{
throw new InvalidPluginExecutionException("An error occurred in FollowUpPlugin.", ex);
}
catch (Exception ex)
{
tracingService.Trace("FollowUpPlugin: {0}", ex.ToString());
throw;
}
}
El complemento crea una actividad de tarea que recuerda al creador la cuenta que realice seguimiento una semana más tarde.
Agregue el siguiente código al bloque de prueba. Reemplace el comentario // Plug-in business logic goes here
con el siguiente código.
// Create a task activity to follow up with the account customer in 7 days.
Entity followup = new Entity("task");
followup["subject"] = "Send e-mail to the new customer.";
followup["description"] =
"Follow up with the customer. Check if there are any new issues that need resolution.";
followup["scheduledstart"] = DateTime.Now.AddDays(7);
followup["scheduledend"] = DateTime.Now.AddDays(7);
followup["category"] = context.PrimaryEntityName;
// Refer to the account in the task activity.
if (context.OutputParameters.Contains("id"))
{
Guid regardingobjectid = new Guid(context.OutputParameters["id"].ToString());
string regardingobjectidType = "account";
followup["regardingobjectid"] =
new EntityReference(regardingobjectidType, regardingobjectid);
}
// Create the task in Microsoft Dynamics CRM.
tracingService.Trace("FollowupPlugin: Creating the task activity.");
service.Create(followup);
regardingobjectid
para la tarea.En Visual Studio, presione F6 para crear el ensamblado. Compruebe que se compila sin errores.
En el Explorador de soluciones, haga clic con el botón secundario en el proyecto BasicPlugin y seleccione Propiedades en el menú contextual.
En las propiedades del proyecto, seleccione la pestaña Firma y seleccione la casilla Firmar el ensamblado.
En la lista desplegable Elija un archivo de clave de alta seguridad:, seleccione <Nuevo…>.
En el diálogo Crear clave de alta seguridad, introduzca un nombre de archivo de clave y desactive la casilla Proteger mi archivo de clave con contraseña.
Seleccione Aceptar para cerrar el cuadro de diálogo Crear una clave de alta seguridad.
En la pestaña Generar de las propiedades del proyecto, compruebe que la opción Configuración esté establecida como Depurar.
Pulse F6 para crear el complemento de nuevo.
Usando el Explorador de Windows, busque el complemento creado en:\bin\Debug\BasicPlugin.dll
.
Nota
Cree el ensamblado usando la configuración de Depuración porque usará el generador de perfiles de complementos para depurarlo en un tutorial posterior. Antes de incluir un complemento con la solución, debe generarlo mediante la configuración de versión.
Para registrar un complemento necesitará la herramienta de registro de complementos.
Abra la herramienta de registro de complementos ejecutando el comando PAC CLI pac tool prt
.
Seleccione +Crear nueva conexión para conectarse a su entorno de Dataverse.
Asegúrese de que Office 365 está seleccionado.
Si se está conectando usando una cuenta Microsoft diferente a la que está usando actualmente, haga clic en Mostrar opciones avanzadas e ingrese sus credenciales. De lo contrario, deje Iniciar sesión como el usuario actual seleccionado.
Nota
Si su cuenta de usuario emplea la autenticación multifactor (MFA), asegúrese de que la casilla Mostrar avanzado no esté marcada.
Si su cuenta Microsoft proporciona acceso a varios entornos, seleccione Mostrar la lista de organizaciones disponibles.
Seleccione Iniciar sesión.
Si ha seleccionado Mostrar la lista de organizaciones disponibles, seleccione la organización con la que quiere conectarse y haga clic en Iniciar sesión.
Una vez que esté conectado, verá los complementos registrados existentes, las actividades de flujo de trabajo personalizadas y los proveedores de datos.
En el desplegable Registrar, seleccione Nueva ensamblado.
En el diálogo Registrar nuevo ensamblado, seleccione el botón de puntos suspensivos (…) y busque el ensamblado que generó en el paso anterior.
Para los usuarios de Microsoft 365, compruebe que el modo aislado sea espacio aislado y la ubicación para almacenar el ensamblado sea Base de datos.
Nota
Otras opciones para modo aislado y ubicación se aplican a implementaciones locales de Dynamics 365. Para la ubicación, puede especificar la base de datos del servidor de D365, el almacenamiento local del servidor (disco) o los ensamblados de la caché de ensamblados global. Para obtener más información, consulte Almacenamiento de complementos.
Haga clic en Registrar complementos seleccionados.
Verá un diálogo de confirmación Complementos registrados.
Seleccione Aceptar para cerrar el cuadro diálogo y cerrar el diálogo Registrar nuevo ensamblado.
Ahora aparecerá el ensamblado (Assembly) BasicPlugin que puede expandir para ver el complemento (Plugin) BasicPlugin.FollowUpPlugin.
Haga clic con el botón secundario en (Plugin) BasicPlugin.FollowUpPlugin y seleccione Registrar nuevo paso.
En el cuadro de diálogo Registrar nuevo paso, establezca los siguientes campos.
Ajuste | valor |
---|---|
Publicación | Crear |
Entidad principal | cuenta |
Fase de canalización de eventos de ejecución | PostOperation |
Modo de ejecución | Asincrónico |
Seleccione Registrar nuevo paso para completar el registro y cerrar el diálogo Registrar nuevo paso.
Ahora puede ver el paso registrado.
Nota
En este punto el ensamblado y los pasos son parte de la solución predeterminada del sistema. Al crear un complemento de producción, los agregaría a la solución no administrada que distribuirá. Estos pasos no se incluyen en este tutorial. Para obtener más información, consulte Agregar el ensamblado a una solución y Agregar paso a la solución.
Abra una aplicación basada en modelos y cree una tabla Cuenta.
En un breve período de tiempo, abra la cuenta y podrá comprobar la creación de la tarea.
Dado que estamos trabajando con un complemento asincrónico, la operación de crear la tarea se produce una vez creada la cuenta. Normalmente, la creación de la tarea ocurrirá inmediatamente, pero si no es así, puede seguir viendo el trabajo del sistema en la cola en espera de aplicarse. Este registro del pasos usó la opción Delete AsyncOperation if StatusCode = Successful que es una práctica recomendada. Esto quiere decir que tan pronto como el trabajo del sistema finaliza correctamente, no podrá ver los datos del trabajo del sistema a menos que vuelva a registrar el complemento con la opción Delete AsyncOperation if StatusCode = Successful.
Sin embargo, si se produjo un error, puede ver el trabajo del sistema para ver el mensaje de error.
Use la aplicación Dynamics 365 --personalizado para ver trabajos del sistema.
En la aplicación basada en modelos, vaya a la aplicación.
En la aplicación Dynamics 365 --personalizado, vaya a Configuración>Sistema>.Trabajos del sistema.
Cuando ve trabajos del sistema, puede filtrar por Tabla (Entidad). Seleccione Cuenta.
Si el trabajo tiene error, debe ver un registro con el nombre BasicPlugin.FollowupPlugin: Creación de cuenta.
Si abre el trabajo del sistema, puede expandir la sección Detalles para ver la información escrita en el seguimiento y detalles sobre el error.
Puede usar la consulta API web siguiente para devolver trabajos del sistema con error para complementos asincrónicos.
GET <your org uri>/api/data/v9.0/asyncoperations?$filter=operationtype eq 1 and statuscode eq 31&$select=name,message
Para obtener más información, consulte Consultar datos mediante la API web
O usar el FetchXml siguiente:
<fetch top='50' >
<entity name='asyncoperation' >
<attribute name='message' />
<attribute name='name' />
<filter type='and' >
<condition attribute='operationtype' operator='eq' value='1' />
<condition attribute='statuscode' operator='eq' value='31' />
</filter>
</entity>
</fetch>
Más información: Uso de FetchXML con FetchExpression
El código de ejemplo escribió un mensaje en el registro de seguimiento. Los pasos a continuación describen cómo ver los registros.
De forma predeterminada, los registros de seguimiento de complementos no están habilitados.
Propina
Si prefiere cambiar este valor en código: Este valor está en el Columna PluginTraceLogSetting de la tabla de la organización.
Los valores válidos son:
valor | Etiqueta |
---|---|
0 | Desactivado |
1 | Excepción |
2 | Toda |
Use los siguientes pasos para habilitarlos en una aplicación basada en modelos.
Abra la aplicación personalizada de Dynamics 365.
Vaya a Configuración>Sistema>Administración.
En Administración, seleccione Configuración del sistema.
En el diálogo Configuración del sistema, en la pestaña de personalización, establezca Habilitar registro para registro de seguimientos de complemento como Todos.
Nota
Debe deshabilitar el registro después de que haya finalizado de probar el complemento, o al menos establecerlo como Excepción en lugar de Todos.
Seleccione Aceptar para cerrar el diálogo Configuración del sistema.
Repita los pasos para probar el complemento creando una nueva cuenta.
En la Aplicación predeterminada de Dynamics 365, vaya a Configuración>Personalización>.Registro de seguimiento del complemento.
Deberá ver que se ha creado un nuevo registro de seguimiento de complementos.
Si abre el registro puede esperar que incluya la información que estableció en su seguimiento, pero no es así. Solo comprueba que el seguimiento se ha producido.
Para ver los detalles, es más fácil consultar estos datos mediante API web en el explorador usando la consulta siguiente con el plugintracelog EntityType, usando la propiedad typename
para filtrar resultados en la propiedad messageblock
basándose en el nombre de la clase de complemento.
GET <your org uri>/api/data/v9.0/plugintracelogs?$select=messageblock&$filter=typename eq 'BasicPlugin.FollowUpPlugin'
Puede esperar ver esta información con formato JSON devuelta con la consulta de la API web.
{
"@odata.context": "<your org uri>/api/data/v9.0/$metadata#plugintracelogs(messageblock)",
"value": [{
"messageblock": "FollowupPlugin: Creating the task activity.",
"plugintracelogid": "f0c221d1-7f84-4f89-acdb-bbf8f7ce9f6c"
}]
}
En este tutorial ha creado un complemento simple y lo ha registrado. Complete Tutorial: Depurar un complemento para aprender a depurar este complemento.
Tutorial: Actualizar un complemento
Escribir un complemento
Registrar un complemento
Depuración de complementos.
Esdeveniment
Campionats del món de Power BI DataViz
14 de febr., 16 - 31 de març, 16
Amb 4 oportunitats d'entrar, podríeu guanyar un paquet de conferència i arribar a la Gran Final EN DIRECTE a Las Vegas
Més informacióFormació
Ruta d'aprenentatge
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
Certificació
Microsoft Certified: Power Platform Developer Associate - Certifications
Demostrar cómo simplificar, automatizar y transformar tareas y procesos empresariales mediante Microsoft Power Platform Developer.