jueves, 25 de febrero de 2010

MSS 2010: Business Connectivity Services (BCS)

Otro de los nuevos conceptos de interoperabilidad que incorpora SharePoint 2010 es el Business Connectivity Services (BCS) que es una muy positiva evolución del Business Data Catalog (BDC). También se le llama Business Data Connectivity Services.

Si nos pidieran de forma muy breve las principales diferencias entre BCS y BDC, podríamos hacer referencia a la siguiente tabla comparativa:

Sin embargo BCS incorpora mucha más potencia de que que esa tabla refleja. En este post intentaré repasar los conceptos más interesantes del nuevo servicio.

El BCS proporciona integración entre datos externos y SharePoint-Office, permitiendo interactuar con ellos, reutilizar de forma ágil esos datos tantas veces como queramos y permitir a los usuarios finales ganar visión dentro de los datos subyacentes. 

El BCS utiliza como estructura básica para construir las conexiones (Building Blocks) los External Content Types (ECT). Un External Content Type es un fichero xml que define la estructura de datos almacenada en un sistema externo compatible, como una base de datos SQL Server, otras bases de datos relacionales, un sitio de SharePoint, un Web service, o un conector de datos personalizado. Los ECT se añaden directamente al Business Data Conectivity Service.
 Un ECT contiene información sobre:
  • Los campos de datos que contiene el objeto
  • Los métodos para crear, leer, editar, consultar o eliminar un objeto.
  • Las acciones que el usuario puede realizar con el objeto
  • Información de soporte a la conexión de la fuente externa, que proporciona los datos del objeto.
 Los ECT pueden ser creados desde SharePoint Designer (crear modelos a partir de conectores ya creados) o con Visual Studio (crear conectores y modelos).

Una vez que hayamos creado el ECT, podremos realizar diversas acciones sobre él, como definirle

los permisos de acceso, ver todos los ECTs contenidos en un modelo o en una istancia del BCS, añadir una nueva acción al ECT, crear o modificar una página de perfil para el ECT, eliminar el ECT... 

 
Hasta aquí hemos visto por encima la estructura del BCS, pero una vez que tengamos los modelos de conexión externa definidos, ¿Qué podemos hacer con ellos? Quizás, la novedad más destacable en SharePoint 2010 sea la posibilidad de generar Listas Externas de Datos, y tratarlas como si fueran una lista más de SharePoint. Para poder crear una lista externa, deberemos haber creado previamente un ECT y haberlo incluido en el BCS.
 
Las listas externas en SharePoint 2010 tienen realmente un amplio abanico de posibilidades y opciones de interacción con el usuario:
  • Permiten acciones de Crear, Obtener, Actualizar y Borrar items
  • La interface de usuario y navegación es totalmente familiar (como las listas internas de MSS)
  • Permite filtrar, ordenar y agrupar
  • Se tiene acceso programático a las listas externas via SPList
  • Se obtiene una vista de detalle para cada item de la lista
  • Genera un formulario out-of-the box que podemos convertir a infopath
  • Permite el trabajo offline de los datos

Sin embargo, con ECT de los BCS podemos realizar muchas más integraciones en nuestra plataforma, a parte de las listas externas. 
 
  • Columnas Externas de datos --> Añaden columnas de datos externos a listas estándar de SharePoint. Estas columnas pueden además estar disponibles como controles de contenido en Word.
  • Búsquedas --> Permite integrar datos externos como resultados de búsqueda.
  • Outlook --> Integración con contactos, tareas, calendarios y posts
  • Word
  • InfoPath
  • Access
  • Otras aplicaciones Office via código .NET
  • Workflows --> Se puede acceder a los datos de los External Content Types definidos a través de los Workflows de SharePoint.

Todas las conexiones a office se realizan mediante un BCS Client Runtime.
 
Existen también, diversos WebParts en MSS 2010 que permiten tratar e interactuar con los datos obtenidos a partir de los external content types del BCS:
  • External Data List 
  • External Data Item
  • External Data Item Builder
  • External Data Related List
  • External Data Connectivity Filter
  • Chart Web Part

Además, también podemos trabajar de forma offline con los datos del BCS mediante el SharePoint WorkSpace, que  permite tanto la importación de listas externas como de librerías de documentos con columnas de datos externas. La integración offline incluye también algunas funciones extras para el tratamiento propio de los ETC, como la subscripciones o la detección automática de conflictos.

Por último comentar que la integración de los BCS se extiende hasta niveles bastante profundos de la arquitectura de SharePoint, permitiendo por ejemplo realizar operaciones masivas o en lote sobre los ETC, soporte a la validación por Claims, integración en el ciclo de vida mediante soluciones de empaquetado automático (WSP) para el manejo de despliegue de aplicaciones, Thorttling, optimización del refresco de la caché para mejorar los tiempos de respuesta (performance), etc.

Como veis, la integración de los Business Connectivity Services con la plataforma Microsoft es enorme, permitiendo aprovechar al máximo las conexiones de datos externas y reutilizarlas de múltiples formas tanto en SharePoint como en el resto de aplicaciones Office.


Hasta aquí el breve resumen del BCS, el tema es extenso y daría para muchos posts especializados, pero de momento me conformo con ir dejando claros algunos conceptos base sobre los que ya iremos profundizando con el tiempo.

¡ Saludos !

5 comentarios:

Anónimo dijo...

Buena guìa! Muchas gracias!

De que manera se realiza un ECT con documentos de aplicaciones de office? o es posible hacerlo solo con db's?

un saludo

Gabriel

Caridad dijo...

Cómo puedo usar BCS para poder crear y gestiionar entidades que están relacionadas N to N?

Caridad dijo...

Cómo puedo usar BCS para poder crear y gestiionar entidades que están relacionadas N to N?

Ignasi Tebé Tena dijo...

Anónimo, un ECT requiere de la definición previa de una conexión, la conexión se puede realizar, por defecto, a una BD SQL Server, a un WebServices, o a un .NET Type. Con Visual Studio y .NET podrías llegar a crear otros tipos de conectores personalizados.

La integración con Office que comento en el artículo es la que, una vez configurado el ECT con su correspondiente conector de datos, este puede utilizarse en aplicaciones como Word, utilizándose como metadato de la ficha del documento, por ejemplo.

Saludos!

Ignasi Tebé Tena dijo...

Caridad, tu pregunta es demasiado generalista y no se si la comprendo bien.

Lo que hacemos con los ECT es generar UNA conexión a UN origen de datos en concreto. Posteriormente esa conexión se puede utilizar tantas veces como queramos (n) para definir múltiples conexiones (n) a ese orígen de datos (1).
Claro está, siempre puedes definir n conexiones, conectadas a n orígenes de datos, pero en el fondo siempre son relaciones 1 a 1, a pesar de que cada conexión definida es reutilizable para múltiples entidades.