Business Connectivity Services

O SharePoint 2010 é uma plataforma complexa e com um impressionante conjunto de funcionalidades nativas que lhe permitem adaptar-se a uma enorme variedade de situações. Uma das novas funcionalidades com mais potencial designa-se Business Connectivity Services e este artigo é uma introdução a esta tecnologia e às suas potencialidades.

O que são os Business Connectivity Services e para que servem?

Business Connectivity Services (BCS) é o nome da tecnologia integrada no SharePoint 2010 que permite ler e escrever informação em sistemas externos a partir do SharePoint 2010 e do Office 2010. Trata-se de uma evolução da tecnologia Business Data Catalog (BDC) introduzida no SharePoint 2007, e sobre a qual foram feitas várias melhorias, nomeadamente:

  • Possibilidade de leitura e escrita sobre a fonte de dados externa;
  • Suporte para cenários de autenticação mais complexos;
  • Suporte para múltiplas fontes de dados;
  • Integração com aplicações Office;
  • Novas e melhores formas de apresentar a informação;
  • Ferramentas destinadas à criação e manipulação dos modelos;
  • Extensibilidade através de assemblies .Net.

O objectivo desta tecnologia é permitir a integração de informação proveniente de sistemas externos e apresentá-la em SharePoint e aplicações Office com o mínimo de esforço possível e, idealmente, sem ser necessário escrever qualquer linha de código. Há, de facto, um conjunto de cenários em que é possível a utilização da tecnologia BCS apenas por configuração mas é a suaextensibilidade que lhe permite adequar-se a praticamente qualquer necessidade de integração.

Arquitectura

A tecnologia BCS não se limita a apenas um serviço ou API dentro do SharePoint 2010. É, na realidade, um conjunto de componentes, serviços e ferramentas tal como apresentado no esquema abaixo.

Business Data Connectivity (BDC) Service

O Business Data Connectivity Service é uma das peças mais importantes dos BCS. Trata-se do componente que permite, através do seu repositório central de metainformação, guardar as descrições da informação à qual se pretende aceder bem como do próprio sistema externo onde esta está armazenada.

Metadata Store

O repositório de metainformação é a base de dados utilizada pelo Business Data Connectivity Service para armazenar as descrições da informação e dos sistemas externos onde esta está armazenada. Este repositório não contém qualquer informação proveniente dos sistemas externos, apenas a metainformação necessária para a obter.

Connectors

Os connectors são as peças que permitem ao Business Data Connectivity Service ligar-se às fontes de dados externas descritas nos modelos armazenados no seu Metadata Store. São fornecidos três conectores com o produto:

  • Database Connector – permite a ligação a bases de dados SQL Server.
  • WCF/Web Services Connector – permite a ligação a serviços WCF ou web services.
  • .Net Assembly Connector – permite a ligação utilizando um assembly .Net desenvolvido à medida. Uma vez que se trata de um assembly desenvolvido à medida, este conector permite a ligação a virtualmente qualquer fonte de dados externa, incluindo até a ligação a múltiplas fontes em simultâneo.

Este mecanismo de connectors é extensível, sendo ainda possível desenvolver conectores à medida, para casos em que os conectores existentes não são suficientes.

BDC Client Runtime

As aplicações cliente que fazem parte do Office 2010 conseguem também expor informação proveniente de sistemas externos através dos BCS. Isso é possível porque o Office 2010 inclui o BDC Client Runtime, um componente que faz no contexto da aplicação cliente o que o BDC Service faz no contexto do servidor SharePoint, ou seja, acede ao repositório de metainformação e, através das definições que este contém, acede à informação propriamente dita.

Client Data Cache

No sentido de acelerar o acesso à informação, bem como para suportar cenários de acesso offline à informação, os BCS utilizam uma cache para guardar a informação externa obtida através dos mesmos. Esta cache é baseada numa base de dados SQL Server 2005 Compact Edition e possui um mecanismo de sincronização automático que permite que todas as alterações efectuadas sobre a informação em modo offline sejam replicadas assim que o sistema externo fica disponível.

Principais Conceitos

Uma vez conhecida a arquitectura dos Business Connectivity Services, é importante que se perceba em que consiste a metainformação que é armazenada na Metadata Store pelo Business Data Connectivity Service.

Modelo

A metainformação utilizada pelo BDC Service e armazenada na Metadata Store materializa-se em ficheiros XML que descrevem Modelos, normalmente designados por BDC Metadata Models. No SharePoint 2007, estes ficheiros de metainformação eram designados por application definition files. Um modelo contém, de forma declarativa, toda a informação necessária para que os BCS consigam ligar-se a um sistema externo e obter a informação que se encontra armazenado no mesmo.

Lob System

No contexto dos BCS, o Lob System (ou Line-of-Business System) refere-se ao sistema externo no qual está armazenada a informação a que se pretende aceder. Este sistema pode ser uma base de dados relacional, ou qualquer outro sistema que exponha essa informação através de web services ou serviços WCF.

External Content Type

O External Content Type (ECT) é o conceito central e mais importante dos BCS, uma vez que descreve uma entidade de negócio, ou seja, descreve a estrutura e comportamento da informação a que se pretende aceder. Exemplos de ECTs podem ser Cliente, Factura ou Colaborador. Na definição de um ECT é especificada a estrutura e o comportamento da entidade, ou seja:

  • Os campos que constituem uma instância da entidade, e respectivo tipo de dados. Por exemplo: Nome, Morada ou País.
  • O mapeamento destes campos para objectos utilizados pelas aplicações Office cliente. Por exemplo: o campo Nome da entidade corresponde ao campo FullName no Outlook.
  • Os métodos que devem ser invocados pelos BCS para ler, criar, actualizar e apagar instâncias da entidade. Estes métodos podem corresponder, por exemplo, a stored procedures, queries SQL ou web services.

No contexto de um Modelo, podem ser definidas várias entidades, ou seja, vários External Content Types.

Métodos

Os métodos são abstracções da API do sistema externo e permitem ao BDC Service saber que stored procedures ou web services devem ser chamados para manipular a informação. A definição de um método é feita no contexto de uma entidade e baseia-se sempre num dos estereótipos disponibilizados pelos BCS. Existem cerca de 20 estereótipos possíveis, como sejam, Updater (para actualizar um item), Finder (para listar itens), SpecificFinder (para obter um item específico), Deleter (para apagar um item) entre outros.

Filtros

Os filtros descrevem os parâmetros que podem ser passados para os métodos na definição de cada entidade. Existem 18 tipos de filtros que podem ser utilizados nos métodos e que indicam ao BDC Service que informação deve ser passada para os mesmos. Exemplos de filtros são o UserName que permite passar o username do utilizador em contexto, ou o Limit que define o número máximo de itens a retornar numa chamada.

Associação

Uma associação, designada por association, corresponde a uma relação entre duas entidades (External Content Types). No entanto, uma vez que não há garantia que a fonte de dados seja uma base de dados relacional, a associação requer a existência de métodos que permitam obter, a partir de uma entidade, elementos da entidade relacionada.

Exemplo de Modelo

Felizmente, na grande maioria dos casos, não precisamos de editar o modelo manualmente já que as ferramentas fornecidas pela Microsoft permitem fazer grande parte da configuração de forma visual. No entanto, apenas a título de exemplo, um ficheiro de modelo tem o aspecto apresentado abaixo.

Apresentar Informação Externa

Mas toda esta complexidade tem um objectivo – o de permitir apresentar e manipular a informação armazenada em sistemas externos – por isso não faltam várias alternativas para o fazer.

External List

A External List é um novo tipo de lista no SharePoint 2010 que, através da associação a um External Content Type, permite visualizar e manipular a informação desse ECT como se esta estivesse armazenada numa lista de SharePoint normal. Na realidade, a informação continua a residir no sistema externo e é lida e manipulada em tempo real.

A grande vantagem das External Lists é que se parecem e comportam exactamente como listas normais e, adicionalmente, o object model do SharePoint trata-as como se assim fossem, permitindo aos developers ler e escrever itens como se estes estivessem armazenados no próprio SharePoint. Por outro lado, nem tudo funciona exactamente como nas listas tradicionais. Em particular:

  • Workflows
  • Alertas
  • Pastas (folders)
  • Anexos (attachments)
  • Feeds RSS
  • Exportação para Excel

Para que um ECT possa ser utilizado numa External List este tem que definir, pelo menos, os métodos Finder (listar itens) e SpecificFinder (obter um item específico). Isto permitirá à External List apresentar a lista de itens e ver o detalhe de cada um. Adicionalmente, se o ECT possuir métodos Updater (actualizar um item), Deleter (eliminar um item) e Creator (criar um novo item), a External List disponibilizará as acções correspondentes.

External Data Column

A External Data Column já existia no SharePoint 2007 e, embora tenha sido ligeiramente melhorada no SharePoint 2010, o seu objectivo é o mesmo – permitir utilizar informação externa numa coluna de uma lista. O funcionamento é semelhante ao de uma coluna lookup, permitindo ao utilizador seleccionar um dos itens retornados pelo ECT.

Uma das vantagens das External Data Columns é a possibilidade de serem utilizadas também pelo Word 2010, permitindo ao utilizador seleccionar um item exposto através de BCS e utilizando essa informação nos documentos. Tal como para as External Lists, para utilizar um ECT numa External Data Column este tem que definir, pelo menos, os métodos Finder e SpecificFinder.

Business Data Web Parts

As Business Data Web Parts são, como o nome indica, um conjunto de web parts que conseguem ligar-se a fontes de dados externas através de um ECT e apresentar essa informação no SharePoint. Estas web parts também já existiam no SharePoint 2007 mas foram melhoradas no SharePoint 2010, nomeadamente permitindo fazer cache da informação externa para melhorar o desempenho.

As Business Data Web Parts utilizam XSLT para apresentar a informação, o que lhes dá uma enorme flexibilidade no que respeita ao seu aspecto gráfico bem como a possibilidade de edição através do SharePoint Designer 2010. As web parts incluídas neste pacote são:

  • Business Data List – permite listar instâncias (itens) de uma entidade (ECT).
  • Business Data Item – permite apresentar o detalhe de uma instância (item) de uma entidade (ECT).
  • Business Data Item Builder – permite utilizar parâmetros da query string para criar uma instância (item) de uma entidade (ECT) que pode depois ser utilizada para alimentar outras web parts, nomeadamente a Business Data Item web part.
  • Business Data Related List – permite listar instâncias (itens) de uma entidade (ECT) relacionada. É especialmente útil para apresentar informação em cenários de Master/Detail.
  • Business Data Connectivity Filter – permite filtrar a informação proveniente de um ECT antes que seja consumida por outra web part, como a Business Data List web part.
  • Business Data Actions – apresenta as acções disponíveis para uma instância (item) de uma entidade (ECT).

Pesquisa

Um dos maiores benefícios oferecidos pelos BCS é a possibilidade de indexar e realizar pesquisas sobre a informação externa exposta através dos ECTs como se se tratasse de informação armazenada em listas no SharePoint. Para que um ECT seja indexável é necessário que defina, pelo menos, os métodos IDEnumerator e SpecificFinder. O primeiro permitirá ao SharePoint obter os IDs de todos os itens e o segundo obter o detalhe de cada um. Adicionalmente, o modelo tem que ter a propriedade ShowInSearchUI para que o SharePoint o consiga indexar. Mas isto é para que a informação seja indexada. Para que, ao realizar uma pesquisa, o utilizador consiga clicar sobre um dos resultados e visualizar informação detalhada sobre o resultado que seleccionou, precisamos também de configurar a Profile Page de cada ECT indexado. Uma Profile Page não é mais que uma página em SharePoint com algumas web parts que recebe o identificador de um item na query string e apresenta informação detalhada sobre esse item, incluíndo itens de ECT relacionados (através de Associations). As Profile Pages são configuradas na Central Administration, acedendo à gestão do Business Data Connectivity Service. A única informação que precisamos de fornecer é o endereço URL do site onde estas páginas serão automaticamente criadas e o SharePoint fará o resto por nós. Neste ponto, basta-nos apenas dizer ao Search Service que deve indexar uma nova Content Source do tipo Line of Business Data e efectuar um Full Crawl. Após a conclusão do crawl a informação externa passa a estar disponível para ser pesquisada e a informação de cada item será apresentada na respectiva Profile Page.

User Profiles

Utilizando os BCS, o SharePoint 2010 consegue utilizar fontes de dados externas para complementar a informação dos User Profiles. Para isso basta que seja possível mapear User Profiles com itens de um ECT, utilizando um campo de cada lado. Não é possível configurar um ECT como fonte principal para a sincronização de perfis, mas é possível que uma sincronização com Active Directory seja complementada com informação proveniente de um ECT.

Integração com Office Client

A integração da informação externa nas aplicações do Office 2010 é outra das novidades do SharePoint 2010 relacionada com os Business Connectivity Services. Até agora, este tipo de funcionalidade só era possível com desenvolvimentos à medida de razoável complexidade. Com os BCS é possível apresentar a informação externa nas aplicações Office, utilizá-la em cenários offline e, em determinados casos, actualizar a informação directamente na fonte de dados externa. Contudo, nem todas as aplicações incluídas no Office 2010 suportam esta integração nativamente. De momento apenas o Outlook 2010, o Word 2010, o Access 2010, o InfoPath 2010 e o SharePoint Workspace 2010 conseguem fazê-lo, sendo que cada uma das aplicações utiliza esta tecnologia de forma diferente.

Outlook 2010

O Outlook 2010 é uma das aplicações que tira melhor partido das funcionalidades cliente dos BCS. Para que seja possível visualizar a informação exposta através de um ECT no Outlook 2010 são necessários dois passos na configuração desse ECT:

  1. Definir qual o tipo de informação exposto pelo ECT, de entre os tipos de informação manipulados pelo Outlook: Contactos (Contacts), Tarefas (Tasks), Eventos (Appointments) ou Artigos (Posts). Esta configuração pode ser feita através do SharePoint Designer ou directamente no XML do Modelo.
  2. Mapear os campos do ECT com os campos do Outlook para esse tipo de informação. Por exemplo, indicar quais os campos do ECT que correspondem aos campos Last Name, First Name, E-mail Address e outros, no Outlook.

Existindo uma External List que exponha a informação do ECT, passa a ser possível utilizar o botão Connect to Outlook disponibilizado pela ribbon da lista. Ao pressionar o botão, o SharePoint vai analisar a especificação do ECT e vai incluí-lo num pacote de instalação Click Once que é imediatamente instalado no Outlook 2010 do utilizador como um Add-In. Uma vez instalado o pacote, a lista aparece na interface do Outlook permitindo ao utilizador interagir com a informação externa como se fossem contactos, tarefas, eventos ou artigos normais. Caso o ECT defina os métodos necessários, é ainda possível utilizar o Outlook para actualizar a informação da fonte de dados externa. Todos os campos expostos pelo ECT que não estejam mapeados em campos do objecto Outlook, são mostrados numa secção própria do detalhe desse objecto e podem também ser actualizados.

Tal com as restantes aplicações Office, o Outlook tira partido de um mecanismo de cache e sincronização da informação permitindo ao utilizador trabalhar sobre esta em offline e sincronizando-a automaticamente assim que o acesso ao sistema externo fica disponível.

Word 2010

O Word 2010 é outras das aplicações Office que tem suporte nativo para os BCS. No entanto, os cenários para aplicação desta tecnologia são diferentes dos disponíveis para Outlook. A utilização dos BCS em Word 2010 limita-se à inserção de informação proveniente de fontes de dados externas em documentos através de Quick Parts. Para quem não conhece, as Quick Parts são uma funcionalidade do Word que permite criar campos para preenchimento dinâmico da informação no meio do texto de um documento. Estes campos podem depois ser preenchidos automaticamente com informação proveniente do content type do documento, no SharePoint. Isto inclui informação proveniente de uma External Data Column existente na Biblioteca de Documentos em que o documento está armazenado. O funcionamento é simples:

  1. Numa Biblioteca de Documentos, cria-se uma External Data Column configurando-a para expor a informação de um determinado ECT e definindo os campos do ECT que são expostos.
  2. Cria-se um novo documento nessa biblioteca, utilizando o botão New da ribbon.
  3. Já no Word, através da ribbon Insert, inserimos uma (ou mais) Quick Part, seleccionando a(s) Document Property(s) que corresponde(m) à informação externa que queremos incluir no documento.
  4. O Word passa então a permitir que o utilizador seleccione um item do ECT, utilizando o Entity Data Picker, e popula automaticamente todos os campos relacionados.

Access 2010

O Access 2010 consegue importar um modelo Business Data Connectivity (BDC) e apresentar a informação externa sob a forma de tabelas. No entanto, as tabelas criadas são read-only, ou seja, não é possível escrever de volta para a fonte de dados externa.

InfoPath 2010

Quando é criada uma External List, são também gerados forms para inserção, edição e consulta da informação externa. Por omissão, estes forms são gerados como páginas ASP.NET normais mas, utilizando o SharePoint Designer ou a ribbon da External List, é possível criar forms mais inteligentes utilizando InfoPath. Os forms são gerados automaticamente, mas podem depois ser modificados utilizando o InfoPath. É ainda possível arrastar um External Data Picker para um formulário InfoPath e definir uma External List como fonte de informação, permitindo a leitura e escrita de informação proveniente de fontes de dados externas.

SharePoint Workspace 2010

O SharePoint Workspace 2010 é a evolução do Groove 2007 e posiciona-se como a ferramenta de acesso offline à informação guardada em SharePoint 2010, incluindo External Lists. Tal como para os restantes tipos de listas, basta clicar no botão Sync to SharePoint Workspace para que o conteúdo das mesmas seja descarregado para a máquina do utilizador ficando disponível quando este está desligado do servidor. No que respeita aos BCS, o que o SharePoint Workspace faz é descarregar a definição do ECT associado à External List e armazená-la localmente, bem como os forms de inserção, edição e consulta da informação que foram gerados para essa External List. Tal como as restantes aplicações Office descritas, o SharePoint Workspace utiliza a cache local para garantir a disponibilização da informação externa quando o sistema externo não está disponível.

Soluções e Ferramentas

Uma das grandes queixas de quem utilizou o Business Data Catalog no SharePoint 2007, foi a falta de ferramentas que permitissem uma boa experiência na criação e manipulação da metainformação (modelos). A Microsoft ouviu essas queixas e brindou-nos com duas ferramentas fantásticas para utilizar com os Business Connectivity Services:

  • SharePoint Designer 2010
  • Visual Studio 2010

SharePoint Designer 2010

O SharePoint Designer 2010 é uma ferramenta gratuita e obrigatória para qualquer utilizador avançado ou developer de SharePoint. Possui um enorme número de funcionalidades focando-se principalmente na criação de soluções sem código, ou seja, soluções de customização do SharePoint sem necessidade de desenvolvimentos à medida.

No que respeita aos Business Connectivity Services, o SharePoint Designer 2010 permite:

  • Criar e manipular External Content Types, incluindo alterar configurações, criar novos métodos e mapear ECTs com objectos Office. Na criação de ECTs apenas é possível efectuar ligações a bases de dados SQL Server, Web Services cujos schemas sejam suportados pelos BCS ou assemblies .Net existentes.
  • Criar e configurar External Lists com base em ECTs já criados.
  • Gerar e editar formulários InfoPath de suporte às External Lists.
  • Utilizar informação externa em workflows.
  • Criar web part pages e profile pages.

Estas funcionalidades permitem a utilização dos BCS sem qualquer desenvolvimento à medida e adaptam-se às necessidades mais simples e comuns.

Visual Studio 2010

Com o Visual Studio 2010 podemos criar soluções mais complexas para casos em que as funcionalidades do SharePoint Designer 2010 não são suficientes. Adicionalmente, com o Visual Studio 2010 podemos criar componentes reutilizáveis que depois poderão ser incorporados em soluções através do SharePoint Designer.

Alguns dos casos de uso possibilitados pelo Visual Studio 2010 são:

  • Criar e manipular External Content Types, utilizando o novo template de projecto Business Data Connectivity Model. Este template inclui um conjunto de designers que permite a edição visual do Modelo e respectivos ECTs, e possibilita ainda o desenvolvimento de soluções utilizando código .Net para acesso a virtualmente qualquer fonte de dados externa.
  • Criar componentes reutilizáveis para os BCS utilizando os vários pontos de extensibilidade da API dos BCS, como sejam Code Actions que podem ser utilizadas dentro do Outlook, External Data Parts para utilização em task panes declarativas no Outlook, actividades para workflows e outros.
  • Criar Add-Ins para aplicações Office com suporte para BCS, utilizando o object model dos BCS.
  • Criar workflows à medida que tiram partido de informação em External Lists ou utilizam o object model dos BCS.

Tipos de Solução por Ferramenta

A tabela seguinte ajuda a seleccionar a ferramenta ideal para cada necessidade.

CapacidadeSharePoint Designer 2010Visual Studio 2010
Ligar a…WCF/WS, SQL Server e Assemblies .Net existentesQualquer fonte de dados através de Assemblies .Net
Modelo de desenvolvimentoDescobrir e configurarCriar e publicar
Server para…Modelo simples com interfaces nativas (External Lists, Outlook, SharePoint Workspace, InfoPath Search) e associações simples baseadas em chaves estrangeiras.Modelos complexos com lógica de conectividade à medida para agregação, transformação, segurança, etc.
Interfaces à medida via customizações Office.
Controlos reutilizáveis para servidor e cliente que se ligam a dados externos.
LimitaçõesFonte de dados tem que expor interface com formato suportado.
Não suporta estereótipos avançados (operações em massa).
Não suporto serviços genéricos ou polimórficos.
Apenas associações por chave estrangeira.
 Visual designer apenas funciona para modelos baseados em objectos .Net.
Desenvolvimento e packaging separados para componentes cliente e servidor.

Casos de Uso

Uma das perguntas mais frequentes relacionadas com a utilização de Business Connectivity Services é quais os casos de uso desta tecnologia ou, de outra maneira, quando devo utilizar os BCS. Alguns dos casos de uso mais comuns para a utilização de BCS são:

  • Necessidade de apresentar informação de uma base de dados SQL Server. Utilizando BCS é possível apresentar e, caso seja necessário, modificar a informação utilizando External Lists sem ser preciso desenvolver uma única linha de código à medida. É um back-office instantâneo.
  • Necessidade de complementar os User Profiles dos utilizadores do domínio com informação proveniente do sistema de gestão de Recursos Humanos ou ERP. Tal como já foi falado, os BCS permitem responder a este requisito permitindo configurar um ECT como fonte de dados adicional para a sincronização de perfis do SharePoint.
  • Necessidade de sincronizar contactos que estão armazenados num sistema de negócio ou ERP. Utilizando os BCS é possível definir um ECT que expõe esses contactos através de uma External List e ligá-la ao Outlook onde serão geridos como contactos normais. Este cenário permite ainda que os utilizadores tenham acesso aos contactos mesmo quando estão fora do escritório, em modo offline.
  • Necessidade de apresentar informação proveniente de fontes de dados distintas. Utilizando o conector para assemblies .Net e desenvolvendo um ECT com o Visual Studio 2010, podemos construir cenários de acesso a múltiplas fontes de dados com agregação dos mesmos numa única entidade.
  • Necessidade de indexar e pesquisar informação residente num sistema de negócio ou ERP. Os BCS permitem ao serviço de pesquisa do SharePoint indexar conteúdos expostos através de ECTs e pesquisá-los como se a informação estive armazenada no SharePoint.

Há muitos outros cenários onde os BCS podem ser úteis, por vezes apenas como um dos componentes da solução.

Funcionalidades por Versão do SharePoint

A infraestrutura utilizada pelos Business Connectivity Services está disponível em todas as versões do SharePoint, incluíndo o SharePoint Foundation 2010. No entanto, nem tudo vem incluído na versão gratuita. A tabela abaixo ajuda a clarificar quais as funcionalidades que estão incluídas em cada uma das versões do SharePoint 2010.

FuncionalidadeSharePoint Foundation 2010SharePoint Server 2010 StandardSharePoint Server 2010 Enterprise
BDC Servicexxx
Connector Frameworkxxx
External Listxxx
External Data Columnxxx
Secure Store Servicexx
External Data Searchxx
Profile Pagesxx
Business Data Web Partsx
Integração com Office Clientex

O suporte para Business Connectivity Services em aplicações Office requer o Microsoft Office 2010 Professional Plus, ou superior.

Links Úteis

Aqui ficam alguns links úteis para quem está agora a começar e quer saber mais sobre Business Connectivity Services.

Publicado na edição 28 (PDF) da Revista PROGRAMAR.