Microsoft Dynamics CRM: servicios web

Microsoft Dynamics CRM proporciona dos servicios web importantes que se utilizan para acceder a CRM desde una aplicación externa e invocar métodos web para realizar operaciones de datos comerciales comunes, como crear, eliminar, actualizar y buscar en CRM.

Considere los siguientes escenarios:

  • Tiene una aplicación .NET externa, que necesita comunicarse con CRM. Por ejemplo, es posible que desee insertar un registro de contacto en CRM cuando se registre un nuevo cliente en su aplicación externa.

  • O tal vez, desee buscar registros en CRM y mostrar los resultados de la búsqueda en su aplicación externa.

En tales escenarios, puede utilizar los servicios web expuestos por CRM para consumirlos en su aplicación y realizar operaciones de creación, eliminación, actualización y búsqueda en CRM.

Servicio web IDiscoveryService

Este servicio web devuelve una lista de organizaciones a las que pertenece el usuario especificado y el punto final de URL para cada una de las organizaciones.

Servicio web IOrganizationService

Este servicio web es el servicio web principal que se utiliza para acceder a datos y metadatos en CRM. IOrganizationService utiliza dos ensamblados importantes:Microsoft.Xrm.Sdk.dll y Microsoft.Crm.Sdk.Proxy.dll. Estos ensamblados se pueden encontrar en el paquete CRM SDK dentro delBin carpeta.

Microsoft.Xrm.Sdk.dll

Este conjunto define los tipos y métodos principales de xRM, incluidas las clases de proxy para simplificar la conexión con Microsoft Dynamics CRM, los métodos de autenticación y los contratos de servicio.

Microsoft.Crm.Sdk.Proxy.dll

Este ensamblado define las solicitudes y respuestas para mensajes no esenciales, así como las enumeraciones necesarias para trabajar con los datos de la organización. A continuación se muestran los espacios de nombres admitidos por estos dos ensamblados.

Cada uno de estos ensamblados soporta ciertos mensajes, que se utilizarán para trabajar con los datos almacenados en cualquier entidad. Puede encontrar una lista completa de los mensajes compatibles con ellos en los siguientes enlaces:

Supported xRM Messages - https://msdn.microsoft.com/en-us/library/gg334698.aspx

Supported CRM Messages - https://msdn.microsoft.com/en-us/library/gg309482.aspx

Métodos de servicio web de IOrganizationService

los IOrganizationService proporciona ocho métodos que le permiten realizar todas las operaciones comunes en el sistema y las entidades personalizadas, así como los metadatos de la organización.

No Señor Método y descripción
1

IOrganizationService.Create

Crea un registro.

2

IOrganizationService.Update

Actualiza un registro existente.

3

IOrganizationService. Retrieve

Recupera un registro.

4

IOrganizationService. RetrieveMultiple

Recupera una colección de registros.

5

IOrganizationService. Delete

Elimina un registro.

6

IOrganizationService. Associate

Crea un vínculo entre registros.

7

IOrganizationService.Disassociate

Elimina un vínculo entre registros.

8

IOrganizationService.Execute

Se utiliza para el procesamiento de registros comunes, así como para el procesamiento especializado, como resolución de casos, detección de duplicados, etc.

Ejemplo de servicio web

Para comprender cómo funcionan los servicios web en CRM, veremos un ejemplo proporcionado por CRM SDK. En este ejemplo, crearemos un nuevo registro de cuenta, lo actualizaremos y finalmente lo eliminaremos usando el CRM.IOrganizationService servicio web.

Step 1- Abra la carpeta donde había extraído CRM SDK. Ahora abra la solución QuickStartCS.sln navegando a la siguiente ubicación: SDK \ SampleCode \ CS \ QuickStart

Step 2 - Estaremos explorando el QuickStart con Simplified Connectionproyecto. Abiertoapp.configen este proyecto. Por defecto, elconnectionStrings sección en este archivo será comentada.

A partir de esto, elimine el comentario de la primera clave de cadena de conexión y edite los siguientes tres detalles:

Url- Especifique la URL de su instancia de CRM. En nuestro caso, dado que estamos usando la versión en línea de CRM, deberá mencionar esa URL.

Username - Su nombre de usuario de CRM Online.

Password - Su contraseña de CRM Online.

Step 3 - Abra el SimplifiedConnection.cs archivo en este proyecto y Runmethod dentro de él.

public void Run(StringconnectionString, boolpromptforDelete) {
   try {
      
      // Establish a connection to the organization web service using CrmConnection.
      Microsoft.Xrm.Client.CrmConnection connection =
         CrmConnection.Parse(connectionString);
      
      // Obtain an organization service proxy.
      // The using statement assures that the service proxy will be properly disposed.
      using(_orgService = new OrganizationService(connection)) {

         //Create any entity records this sample requires.
         CreateRequiredRecords();
         
         // Obtain information about the logged on user from the web service.
         Guid userid = ((WhoAmIResponse)_orgService.Execute(new WhoAmIRequest())).UserId;
         SystemUser systemUser = (SystemUser)_orgService.Retrieve("systemuser",userid,
            new ColumnSet(newstring[]{"firstname","lastname"}));
         
         Console.WriteLine("Logged on user is {0} {1}.",
            systemUser.FirstName,systemUser.LastName);

         // Retrieve the version of Microsoft Dynamics CRM.
         RetrieveVersionRequest versionRequest = new RetrieveVersionRequest();
         RetrieveVersionResponse versionResponse =
            (RetrieveVersionResponse)_orgService.Execute(versionRequest);
         Console.WriteLine("Microsoft Dynamics CRM version {0}.",
            versionResponse.Version);
         
         // Instantiate an account object. Note the use of option set
         enumerations defined in OptionSets.cs.
         
         // Refer to the Entity Metadata topic in the SDK documentation to
         determine which attributes must
         
         // be set for each entity.
         Account account = new Account{Name = "Fourth Coffee"};
         account.AccountCategoryCode = new OptionSetValue(
            (int)AccountAccountCateg oryCode.PreferredCustomer);
         account.CustomerTypeCode = new OptionSetValue(
            (int)AccountCustomerTypeCod e.Investor);
         
         // Create an account record named Fourth Coffee.
         _accountId = _orgService.Create(account);
         Console.Write("{0} {1} created, ",account.LogicalName,account.Name);
         
         // Retrieve the several attributes from the new account.
         ColumnSet cols = new ColumnSet(
            new String[]{"name","address1_postalcode","lastusedincampaign"});
         Account retrievedAccount =
            (Account)_orgService.Retrieve("account", _accountId, cols);
         Console.Write("retrieved, ");

         // Update the postal code attribute.
         retrievedAccount.Address1_PostalCode = "98052";

         // The address 2 postal code was set accidentally, so set it to null.
         retrievedAccount.Address2_PostalCode = null;

         // Shows use of a Money value.
         retrievedAccount.Revenue = new Money(5000000);

         // Shows use of a Boolean value.
         retrievedAccount.CreditOnHold = false;
         
         // Update the account record.
         _orgService.Update(retrievedAccount);
         Console.WriteLine("and updated.");
         
         // Delete any entity records this sample created.
         DeleteRequiredRecords(promptforDelete);
      } 
   } 
   // Catch any service fault exceptions that Microsoft Dynamics CRM throws.
   catch(FaultException<microsoft.xrm.sdk.organizationservicefault>) {

      // You can handle an exception here or pass it back to the calling method.
      throw;
   }
}

Step 4- Este método básicamente demuestra todas las operaciones CRUD utilizando servicios web CRM. El código primero crea una instancia de organización, luego crea un registro de cuenta, actualiza el registro creado y finalmente lo elimina. Veamos los componentes importantes de este código. Para ver los cambios sobre la marcha en CRM cuando se ejecuta este código, puede depurar este código paso a paso (como explicamos a continuación) y ver simultáneamente los cambios en CRM.

Step 4.1 - Establece la conexión con la organización mediante la cadena de conexión que habíamos modificado en Step 2.

Microsoft.Xrm.Client.CrmConnection connection = CrmConnection.Parse(connectionString);

Step 4.2 - Obtiene una instancia de proxy del servicio web de la organización CRM.

_orgService = new OrganizationService(connection)

Step 4.3 - Crea un nuevo objeto de entidad Cuenta y establece su Nombre, AccountCategoryCode y CustomerTypeCode.

Account account = new Account{Name = "Fifth Coffee"}; 
account.AccountCategoryCode = new OptionSetValue(
   (int)AccountAccountCategoryCode.P referredCustomer); 
account.CustomerTypeCode = new OptionSetValue(
   (int)AccountCustomerTypeCode.Investor);

Step 4.4 - Crea el nuevo registro utilizando el método Crear de servicio de organización.

_accountId = _orgService.Create(account);

Si navega a CRM, verá un registro de cuenta recién creado.

Step 4.5 - Una vez que se crea la cuenta, el servicio recupera el registro de CRM utilizando el método de servicio web Recuperar.

ColumnSet cols = new ColumnSet(new String[]{
   "name","address1_postalcode","lastusedincampaign"}); 
Account retrievedAccount = 
   (Account)_orgService.Retrieve("account", _accountId, cols);

Step 4.6 - Una vez que tenga el registro recuperado, puede establecer el valor actualizado del registro.

retrievedAccount.Address1_PostalCode = "98052"; 
retrievedAccount.Address2_PostalCode = null; 
retrievedAccount.Revenue = new Money(5000000); 
retrievedAccount.CreditOnHold = false;

Step 4.7 - Después de establecer el valor actualizado del registro, actualice el registro de nuevo a la base de datos de CRM utilizando el método de servicio web Actualizar.

_orgService.Update(retrievedAccount);

Si abre el registro en CRM, verá estos valores actualizados allí.

Step 4.8 - Finalmente, elimine el registro utilizando el método Eliminar del servicio web.

_orgService.Delete(Account.EntityLogicalName, _accountId);

Si ahora actualiza el mismo registro en CRM, verá que el registro ya no está disponible porque ya está eliminado.

Conclusión

En este capítulo, tratamos dos importantes servicios web proporcionados por CRM y un ejemplo práctico de cómo estos servicios web se pueden utilizar desde una aplicación externa para realizar varias operaciones CRUD.