Compartir por


Usar mensajes (clases de respuesta y solicitud) con el método Execute

 

Publicado: noviembre de 2016

Se aplica a: Dynamics CRM 2015

Puede usar los métodos en el IOrganizationService para realizar operaciones comunes. Además de los métodos comunes, puede usar el método IOrganizationService.Execute para ejecutar los mensajes que no se exponen como métodos. El método Execute recibe una clase de solicitudes del mensaje como parámetro y devuelve un tipo de respuesta de mensaje. Los nombres de clase del mensaje de solicitud finalizan con "Solicitud" y los nombres de clase del mensaje de respuesta finalizan con "Respuesta". Para obtener más información sobre todos los mensajes compatibles con el método de Execute, consulte Mensajes de xRM en el servicio de organización, Mensajes de CRM en el servicio de organización.IDiscoveryServicey los servicios web de IDeploymentService usan una solicitud de ejecución similar y un patrón de respuesta.

Flujo de mensajes de ejecución

OrganizationRequest es la clase base para todas las solicitudes de mensajes. Puede usar esta clase base para ejecutar cualquier mensaje, al especificar un nombre del mensaje y la recopilación de parámetros para la solicitud. Sin embargo, cuando usa una clase derivada, como AssociateRequest, el parámetro de recopilación de parámetros se completa cuando usa las propiedades en el tipo de la solicitud.

El método de Execute devuelve la clase de respuesta correspondiente a la solicitud, una clase derivada de la clase de OrganizationResponse. Al igual que la clase de solicitud, la clase derivada contiene una propiedad para cada valor de la recopilación de parámetros de los resultados. Todos los mensajes tienen una respuesta, pero muchos no tienen ninguna propiedad de la respuesta. .

Los mensajes se definen previamente en los metadatos y se almacenan como registros en las entidades de mensajes del SDK. En cada mensaje puede determinar si funciona mientras está conectado al servidor o desde Microsoft Dynamics CRM para Microsoft Office Outlook con acceso sin conexión. Esta información se puede encontrar en el atributo de SdkMessage.Availability. Para obtener más información, vea Entidades de registro de complementos.

En este tema

Parámetros opcionales de paso en mensajes

Ejecutar mensajes en una sola transacción de la base de datos

Ejecutar mensajes en segundo plano (asincrónicamente)

Parámetros opcionales de paso en mensajes

Puede pasar parámetros opcionales a cualquier solicitud de mensaje al agregar un valor a la propiedad de Parameters. Algunos parámetros no son propiedades expuestas en clases de solicitud. A fin de establecer estos parámetros, deben estar definidos en la recopilación de Parameters en la clase de Request.

La siguiente tabla muestra estos parámetros.

Parameter

Descripción

Mensajes

SolutionUniqueName

Una String especifica que el nombre único de la solución a la que se aplica la operación. Para obtener más información, vea Seguimiento de las dependencias de los componentes de la solución.

AddPrivilegesRoleRequest
CreateRequest
DeleteRequest
MakeAvailableToOrganizationTemplateRequest
UpdateRequest

CalculateMatchCodeSynchronously

Ya n o se requiere la especificación de este parámetro. Los códigos de coincidencia usados para detectar duplicados se calculan de forma sincrónica independientemente del valor pasado en este parámetro. Para obtener más información, vea Ejecutar detección de duplicados.

CreateRequest
UpdateRequest

SuppressDuplicateDetection

Un Boolean usado para deshabilitar la detección de duplicados en una operación de creación o actualización. Para obtener más información, vea Ejecutar detección de duplicados.

CreateRequest
UpdateRequest

El siguiente ejemplo se muestra cómo pasar un parámetro opcional:

Account target = new Account();
target.Name = "Fabrikam";
CreateRequest req = new CreateRequest();
req.Target = target;
req["SuppressDuplicateDetection"] = true;
req["CalculateMatchCodeSynchronously"] = true;
req["SolutionUniqueName"] = "MySolutionName";
CreateResponse response = (CreateResponse)_service.Execute(req);

Ejecutar mensajes en una sola transacción de la base de datos

Un requisito común en aplicaciones de negocios es la coordinación de los cambios de varios registros en el sistema de modo que todos se produzcan todos los cambios de datos ninguno de ellos. En términos de la base de datos, esto se conoce como ejecutar varias operaciones en una sola transacción con la capacidad de revertir todos los cambios de los datos cuando hay error en una operación.

Nota

Este mensaje se introdujo con Actualización 1 de Microsoft Dynamics CRM Online 2015.

Puede ejecutar dos o varias solicitudes de servicio de la organización en una sola transacción de base de datos mediante el uso de la solicitud de mensajes ExecuteTransactionRequest. Para usar este mensaje, rellene la colección Requests con dos o más solicitudes de organización que deben ejecutarse en la transacción. Establezca ReturnResponses como true si desea devolver una colección de respuestas, una para cada solicitud de mensajes ejecutada, en la colección Responses. Las solicitudes de mensaje en la colección Requests se ejecutan en el orden que aparecen en la colección, donde el elemento en el índice 0 se ejecuta primero. Este mismo orden se mantiene en la colección Responses.

Si se produce un error en cualquiera de las solicitudes y se revierte la transacción, se deshacen los cambios de los datos completados durante la transacción. Además, se devuelve un ExecuteTransactionFault que identifica el índice en la colección de solicitudes del mensaje de solicitud que produjo el error.

Una ExecuteMultipleRequest puede contener una o varias instancias de ExecuteTransactionRequest. Una instancia de ExecuteTransactionRequest no puede contener una ExecuteMultipleRequest o ExecuteTransactionRequest. Para obtener más información sobre ExecuteMultipleRequest, vea Usar ExecuteMultiple para mejorar el rendimiento de la carga masiva de datos.

Ejecutar mensajes en segundo plano (asincrónicamente)

Además de ejecutar solicitudes del mensaje inmediatamente, como en el caso del llamado a Execute y el traslado de una solicitud de mensaje, también puede optar por ejecutar una solicitud del mensaje en segundo plano (asincrónicamente). Esto mejorará el rendimiento del sistema al posponer la ejecución de mensajes hasta un tiempo después, cuando se disminuya la carga del servidor. Los usuarios interactivos no tienen que esperar al mensaje de destino para ejecutarse antes de poder continuar. Esto es especialmente útil para procesar los mensajes que tardan unos minutos o más para ejecutarse.

Nota

Actualmente, sólo el mensaje de ImportSolutionRequest se puede usar con el mensaje de ExecuteAsync.

Use el mensaje de ExecuteAsyncRequest para ejecutar un mensaje asincrónicamente. Configure la solicitud y pase la instancia de solicitud como argumento a Execute.ExecuteAsyncResponse vuelve con el Id. del trabajo asincrónico. Puede (opcionalmente) crear una consulta del trabajo con el Id. para buscar su estado actual.

También puede ejecutar varios mensajes a la vez mediante el mensaje de ExecuteMultipleRequest. Para ello, agregue una o varias solicitudes de mensaje deExecuteAsync a una solicitud de mensaje de ExecuteMultiple. Según las restricciones de limitación que mejoran el rendimiento del sistema general, solo puede ejecutarse asincrónicamente un mensaje a la vez para cada organización. No se puede ejecutar una solicitud de mensaje de ExecuteMultiple desde una solicitud de mensaje de ExecuteAsync. Para obtener más información acerca de la solicitud de mensaje de ExecuteMultiple, consulte Usar ExecuteMultiple para mejorar el rendimiento de la carga masiva de datos.

Ver también

Execute
OrganizationRequest
OrganizationResponse
ExecuteAsyncMaxConnectionsPerServer
ExecuteAsyncPerOrgMaxConnectionsPerServer
Usar el servicio web IOrganizationService para leer y escribir datos o metadatos
Usar ExecuteMultiple para mejorar el rendimiento de la carga masiva de datos
Usar mensajes (clases de respuesta y solicitud) con el método ExecuteCrmOrganizationRequest
Mensajes del servicio de detección
Mensajes de xRM en el servicio de organización
Mensajes de CRM en el servicio de organización
ExecuteAsync message privileges

© 2017 Microsoft. Todos los derechos reservados. Copyright