SharePoint 2013: Novedades en Business Connectivity Services (III)!

Siguiendo con la serie de posts sobre las novedades que se incorporan en Business Connectivity Services (BCS) en SharePoint 2013, en esta ocasión vamos a ver como podemos consultar datos de negocio expuestos por BCS a través del modelo de objetos en cliente (novedad para BCS). Pero antes os recuerdo los posts previos de la serie:

Para ver el modelo de objetos en cliente de BCS en acción, necesitamos en primer lugar una lista externa creada a partir del correspondiente Tipo de Contenido Externo (ECT) ya sea con Visual Studio 2012 (VS 2012) o con SharePoint Designer 2013 (SP 2013):

  • En mi caso, dispongo de una lista externa Contactos creada a partir de un sencillo ECT denominado Contacto que cuenta con dos finders: VisualizarContacto y VisualizarContactos.

image

  • En VS 2012 creamos un proyecto de tipo aplicación de consola y añadimos las referencias necesarias para trabajar con el modelo de objetos en cliente de SharePoint 2013 y de BCS: Microsoft.SharePoint, Microsoft.SharePoint.Client.Runtime y Microsoft.BusinessData.
  • Añadimos las siguientes directivas using necesarias para poder utilizar el modelo de objetos en cliente.
   1:  using MO_Cliente = Microsoft.SharePoint.Client;
   2:  using Microsoft.BusinessData.MetadataModel;
   3:  using Microsoft.BusinessData.MetadataModel.Collections;
   4:  using BCS_Runtime= Microsoft.BusinessData.Runtime;
   5:  using Microsoft.BusinessData;
  • Para poder consultar los datos expuestos a través de la entidad Contacto por medio del modelo de objetos en cliente tenemos que realizar lo siguiente:
    • Como siempre, definir una instancia de ClientContext especificando la Url del sitio.
    • A continuación, a partir de un ojeto de tipo Web podremos crear una instancia de la entidad (objeto Entity) utilizando para ello el método GetEntity del objeto Web que recibe el espacio de nombres para el modelo de BDC y el nombre de la entidad.
    • A partir del objeto Entity podemos obtener fácilmente la instancia del sistema de negocio utilizando para ello los objetos LobSystem y LobSystemCollection.
    • A partir del sistema de negocio, ya podemos ejecutar los finders definidos para la entidad y procesar los resultados. Esto lo conseguimos con los objetos FilterCollection y EntityInstanceCollection.
    • Finalmente, procesamos el resultado de la consulta y sacamos por pantalla los datos de cada registro expuesto por Contacto.

   1:         static void ConsultarEntidadBCS()
   2:          {
   3:              try
   4:              {
   5:                  using (MO_Cliente.ClientContext ctx =
   6:                      new MO_Cliente.ClientContext(
   7:                          "http://winsrv2012/IT/"))
   8:                  {
   9:                      MO_Cliente.Web wWeb = ctx.Web;
  10:                      ctx.Load(wWeb);
  11:   
  12:                      //Instancia de una entidad del ECT y del sistema de negocio
  13:                      Entity eEntity =
  14:                          ctx.Web.GetEntity(
  15:                          "CRMECT.CRMModel", "Contacto");
  16:                      LobSystem lobSistema = eEntity.GetLobSystem();
  17:   
  18:                      //Colección de instancias de sistemas de negocio
  19:                      LobSystemInstanceCollection lsic =
  20:                          eEntity.GetLobSystem().GetLobSystemInstances();
  21:                      ctx.Load(lsic);
  22:                      ctx.ExecuteQuery();
  23:     
  24:                      //Sistema de negoco concreto
  25:                      LobSystemInstance lobSystemInstance = lsic[0];
  26:                      // Accedemos a la colección de filtros para un cierto "Finder"
  27:                      FilterCollection fCollection = 
  28:                          eEntity.GetFilters("VisualizarContactos");
  29:                      
  30:                      //Acceso a los datos de negocio
  31:                      EntityInstanceCollection eicResultado= 
  32:                          eEntity.FindFiltered(fCollection, 
  33:                          "VisualizarContactos", lobSystemInstance);
  34:                      ctx.Load(eicResultado);
  35:                      ctx.ExecuteQuery();
  36:                      int iContador = 1;
  37:                      foreach (var r in eicResultado)
  38:                      {
  39:                          Console.WriteLine("Registro # {0}", iContador);
  40:                          Console.WriteLine(" -> ID: " + r.FieldValues["IDContacto"]);
  41:                          Console.WriteLine(" -> Nombre: " + r.FieldValues["sNombre"]);
  42:                          Console.WriteLine(" -> Apellidos: " + r.FieldValues["sApellidos"]);
  43:                          Console.WriteLine(" -> Dirección: " + r.FieldValues["sDireccion"]);
  44:                          Console.WriteLine(" -> E-Mail: " + r.FieldValues["sEMail"]);
  45:   
  46:                          iContador = iContador + 1;
  47:                       }
  48:                  }
  49:              }
  50:              catch (Exception ex)
  51:              {
  52:                  Console.WriteLine(
  53:                      "Error: ", ex.Message);
  54:              }
  55:          }

  • La correspondiente salida por pantalla es la siguiente:

image

 

Referencias:

Publicado por

Juan Carlos González

Juan Carlos es Ingeniero de Telecomunicaciones por la Universidad de Valladolid y Diplomado en Ciencias Empresariales por la Universidad Oberta de Catalunya (UOC). Cuenta con más de 12 años de experiencia en tecnologías y plataformas de Microsoft diversas (SQL Server, Visual Studio, .NET Framework, etc.), aunque su trabajo diario gira en torno a SharePoint & Office 365. Juan Carlos es MVP de Office Servers & Services desde 2015 (anteriormente fue reconocido por Microsoft como MVP de Office 365 y MVP de SharePoint Server desde 2008 hasta 2015), coordinador del grupo de usuarios .NET de Cantabria (Nuberos.Net, www.nuberos.es), co-fundador y coordinador del Grupo de Usuarios de SharePoint de España (SUGES, www.suges.es), así como co-director de la revista gratuita en castellano sobre SharePoint CompartiMOSS (www.compartimoss.com). Hasta la fecha, ha publicado 8 libros sobre SharePoint & Office 365 y varios artículos en castellano y en inglés sobre ambas plataformas.

2 comentarios en “SharePoint 2013: Novedades en Business Connectivity Services (III)!”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *