Usar OData y tipos de conector externo (ETC) en SharePoint 2013

Artículo original publicado el viernes 7 de diciembre de 2012

Una de las fantásticas mejoras en el ámbito de las soluciones BCS de SharePoint 2013 es que ahora SharePoint puede usar OData en las aplicaciones de BDC. Hay un par de obstáculos con los que me topé recientemente al realizar este proceso, así que pensé que convendría explicarlos aquí por si a alguien más le pasaba lo mismo. Antes de nada, recomiendo leer este documento, en el que encontrará las nociones básicas para crear una aplicación para OData: https://msdn.microsoft.com/en-us/library/sharepoint/jj163967.aspx. La conclusión principal de este documento es que NO se puede crear una aplicación de BDC en SharePoint Designer que se conecte a un origen de OData; para ello, será necesario crear un tipo de contenido externo (ECT) con una herramienta como Visual Studio.

El documento que he mencionado antes guía por el proceso de creación del ECT, y lo hace explicando cómo usar esos ECT en una aplicación SharePoint y cómo implementarlos de dicha forma, pero NO indica qué hacer si se quieren agregar al catálogo BDC para poder usarlos en muchas colecciones de sitios. Y aquí es donde este artículo resulta útil. Lo primero que hay que saber es que, cuando se realiza el proceso descrito en el mencionado artículo, se crea un ECT por cada entidad (como una tabla). Es importante tener esto en cuenta porque dichos ETC usarán un nombre compartido en el archivo ECT, lo que evitará que se cargue más de uno en el catálogo BDC. Esto es lo que se debe hacer para usar cada una de estas entidades en SharePoint:

  1. Haga clic con el botón secundario en el archivo ECT en Visual Studio y seleccione Abrir con... Luego, seleccione Editor XML (texto). En la parte superior del documento, en el elemento Modelo, verá un atributo Name. Este valor debe ser único en todos los ECT que cargue en el BDC, de modo que deberá cambiar cada uno a un valor descriptivo de la entidad, como "Tabla de clientes".
  2. Puede (si bien no es obligatorio) cambiar el atributo Namespace del elemento Entity, que está 20 líneas más abajo aproximadamente en el documento. Yo he modificado el mío para que coincida con el nombre de modelo, pero es una cuestión de estilo puramente preferencial.
  3. Una vez que haya realizado los cambios y guardado el archivo, puede cargar el archivo .ect directamente en el BDC. Basta con usar las opciones predeterminadas (es un modelo) y hacer clic en el botón Aceptar.
  4. Tras importar los modelos, no olvide conceder permisos a los compañeros para que los usen; de poco sirve todo esto si no lo hace.

Una última cosa que reseñar: los extremos de metadatos OData no se obtienen directamente sobre elementos como bases de datos SQL, almacenamiento de tabla de Azure, etc., pero, por suerte, se pueden agregar para SQL con relativa facilidad. En pocas palabras, hay que:

  1. Crear una aplicación web ASP.NET vacía
  2. Agregar un Entity Data Model de ADO.NET
  3. Agregar un servicio de datos de WCF
  4. En el servicio de datos de WCF se debe establecer el tipo en el constructor de la clase, algo que puede resultar algo confuso en principio. Lo que hay que hacer es buscar un archivo (que debe estar en la carpeta App_Code) cuyo nombre se parezca en cierto modo a myDataConnection.Context.tt. Si se expande, verá una clase myDataConnection.Context.cs. Si abre esta clase, verá los dos tipos de datos que se necesitan para el servicio de datos de WCF: 1) el nombre de la clase, que se usará como tipo del constructor de la clase del servicio de datos de WCF y 2) los nombres de las entidades compatibles, implementadas como propiedad get, propiedad set, etc. Los nombres de entidad también serán necesarios en el servicio de dato de WCF porque, como mínimo, se debe crear "SetEntitySetAccessRules" por cada entidad que se quiera exponer. Esto se describe en mayor profundidad en los comentarios cuando se agrega un servicio de datos de WCF, puesto que aquí solamente estoy intentando indicarle dónde ir para encontrar el nombre de entidad que debe usarse al crear una de estas reglas.

 

Esta entrada de blog es una traducción. Puede consultar el artículo original en Using OData and ECTs in SharePoint 2013