SharePoint 4 Developers

Guia de referência adicional em desenvolvimento .NET / SharePoint

Business Connectivity Services – Parte II

Aprenda sobre o Business Connectivity Services e como desenvolver soluções utilizando o SharePoint Designer 2010 e Visual Studio 2010 através da criação de External Content Types via Database (Parte II).

Oi pessoal,

Este post é a continuação da série sobre o Business Connectivity Services, focado em desenvolvimento. Nessa abordagem veremos como criar ECTs via Database.

Acesso a Dados Externos

Para todos os exemplos, considere a utilização da tabela Contact, que é necessária ser criada pois nos servirá de tabela base para exemplificação:

Code Snippet
  1. CREATE TABLE [dbo].[Contact](
  2.     [ContactID] [int] IDENTITY(1,1) NOT NULL,
  3.     [CompanyName] [nvarchar](100) NULL,
  4.     [ContactName] [nvarchar](70) NOT NULL,
  5.     [ContactTitle] [nvarchar](10) NULL,
  6.     [Address] [nvarchar](100) NULL,
  7.     [Email] [nvarchar](100) NOT NULL,
  8.     [City] [nvarchar](15) NULL,
  9.     [Region] [nvarchar](15) NULL,
  10.     [PostalCode] [nvarchar](10) NULL,
  11.     [Country] [nvarchar](15) NULL,
  12.     [Phone] [nvarchar](24) NOT NULL,
  13.     [Fax] [nvarchar](24) NULL,
  14.     
  15.     CONSTRAINT [PK_Contact] PRIMARY KEY (
  16.     [ContactID] ASC
  17.     )
  18. )

Faça a criação dessa tabela no SQL Server, pois com base nela é que criaremos os ECTs. Não entrarei em detalhes de como realizar essa tarefa, pois não é o propósito deste post, porém disponibilizarei links de apoio (favor verificar nas referências desse post).

Criação de ECTs via Database

Para a criação de ECTs via database só necessitamos da utilização do SPD2010 e nada mais.

Esse tipo de abordagem é aplicado em ambientes que:

  • Estejam dentro da mesma rede, onde o acesso a databases pode ser feito diretamente pelo SPD2010;
  • Não há necessidade de criação de regras de negócio, pois as operações disponibilizadas serão de um simples CRUD;
  • Seu banco de dados seja SQL Server (isso mesmo, apenas SQL Server);

Caso você tenha esse cenário, essa demonstração é a mais fácil e simples de ser implementada.

Trabalhando com o SharePoint Designer 2010

Inicie o SPD2010 (pelo SharePoint 2010 ou abra diretamente a ferramenta) e dentro da barra de Navegação lateral esquerda acesse External Content Types. Crie um novo ECT e defina suas propriedades conforme a Figura 1:

Figura 1 Figura 1 - Criação de um ECT

OBS: As propriedades Office Item Type e Offline Sync for External List determinam o tipo de mapeamento de objetos no Office 2010 e se a opção de sincronização estará disponível para External Lists respectivamente. Atente-se às áreas de seleção em vermelho que dão seqüência às etapas de criação, podendo essas serem numeradas para indicar os passos corretos na tela de configuração.

Clicando na área em vermelho para o mapeamento do ECT, a tela da Figura 2 será exibida:

Figura 2 Figura 2 - Criação de uma nova conexão

Adicione uma nova conexão (1) ao seu banco de dados SQL Server pela seleção do tipo do External Data Source (2). Defina então os parâmetros de conexão conforme a Figura 3:

Figura 3 Figura 3 - Detalhes da conexão

Nesse caso o SQL Server utilizará o login do usuário logado no SharePoint para exibir os dados. Prossiga com a operação e localize a tabela Contact. Para criarmos um CRUD devemos selecionar a opção do menu de contexto (botão direito) Create All Operations conforme a Figura 4:

Figura 4Figura 4 - Criação de todas as operações de um CRUD

OBS: Nesse exemplo estamos trabalhando com um CRUD e temos todas as operações disponíveis, mas se você optar pela criação de algumas operações apenas, é necessário que (no mínimo) as operações Read Item e Read List sejam criadas. Do contrário você não conseguirá criar um External List, que representa uma Lista do SharePoint que exibe os dados externos.

Uma tela do tipo modal é exibida no momento da seleção das operações. Nessa tela definiremos os parâmetros para as operações de nosso CRUD, conforme Figura 5:

Figura 5Figura 5 - Tela de configuração dos parâmetros do CRUD

Basicamente precisamos configurar as propriedades das colunas da tabela Contact, determinando o identificador, nomes para exibição, campos obrigatórios e o mapeamento das propriedades do Office (Outlook). Todas essas definições estão disponíveis nas Tabelas 1 e 2.

Data Source Element

.NET Type

Map to Identifier

Identifier

Field

Display Name

Foreign Identifier

ContactID

System.Int32

TRUE

ContactID

ContactID

ID

 

CompanyName

System.String

FALSE

 

CompanyName

Company Name

 

ContactName

System.String

FALSE

 

ContactName

Contact Name

 

ContactTitle

System.String

FALSE

 

ContactTitle

Contact Title

 

Address

System.String

FALSE

 

Address

Address

 

Email

System.String

FALSE

 

Email

E-mail

 

City

System.String

FALSE

 

City

City

 

Region

System.String

FALSE

 

Region

Region

 

PostalCode

System.String

FALSE

 

PostalCode

Postal Code

 

Country

System.String

FALSE

 

Country

Country

 

Phone

System.String

FALSE

 

Phone

Phone

 

Fax

System.String

FALSE

 

Fax

Fax

 
Tabela 1 - Parâmetros do CRUD

Data Source Element

Required

Read-Only

Office Property

Show In Picker

Timestamp Field

ContactID

FALSE

TRUE

Custom Property

FALSE

FALSE

CompanyName

FALSE

FALSE

Company Name (CompanyName)

FALSE

FALSE

ContactName

TRUE

FALSE

Full Name (FullName)

FALSE

FALSE

ContactTitle

FALSE

FALSE

Title (Title)

FALSE

FALSE

Address

FALSE

FALSE

Business Address (BusinessAddress)

FALSE

FALSE

Email

TRUE

FALSE

Email 1 Address (Email1Address)

FALSE

FALSE

City

FALSE

FALSE

Business Address City (BusinessAddressCity)

FALSE

FALSE

Region

FALSE

FALSE

Business Address State (BusinessAddressState)

FALSE

FALSE

PostalCode

FALSE

FALSE

Business Address Postal Code (BusinessAddressPostalCode)

FALSE

FALSE

Country

FALSE

FALSE

Business Address Country/Region (BusinessAddressCountry)

FALSE

FALSE

Phone

TRUE

FALSE

Business Telephone Number (BusinessTelephoneNumber)

FALSE

FALSE

Fax

FALSE

FALSE

Business Fax Number (BusinessFaxNumber)

FALSE

FALSE

Tabela 2 - Parâmetros do CRUD (Continuação)

OBS: Os campos na cor cinza possuem dois significados na utilização das Tabelas 1 e 2:

  • Os campos não podem ser editados; ou
  • Ignore a configuração dos campos pois ela não se aplica ao cenário;

O campo Data Source Element é a referência utilizada em ambas as tabelas.

Uma vez que todas as colunas foram definidas, salve o ECT (1) e observe as operações criadas (2), as quais podem ser editadas a qualquer momento, conforme Figura 6:

Figura 6Figura 6 - Salvando o ECT

Nesse momento já é possível a criação de uma External List que fará a interface visual com os dados externos no SharePoint 2010. Na mesma tela de External Content Types, visualize o menu de contexto (botão direito) e selecione a opção External List. Nomeie para Contacts, conforme Figura 7:

Figura 7 Figura 7 - Criação de um External List

Desse ponto em diante precisamos apenas testar a External List para ver seu funcionamento.

Testando a External List

Essa é a etapa final da criação de ECTs em que testaremos as External Lists para ver se as operações do CRUD estão disponíveis. Acesse o site do SharePoint em que a External List Contacts foi criada. Abra-a e adicione um novo item. Observe que as definições das colunas são exibidas conforme Figura 8:

Figura 8 Figura 8 - Adição de um novo item na Lista Contacts

Logo após a adição do novo item verifique se o mesmo encontra-se disponível em sua tabela no banco de dados. Está lá, correto? Esse é o comportamento esperado após a adição do novo item, mas não é só isso, as outras operações de CRUD devem estar ativas na Lista Contacts, conforme a Figura 9:

Figura 9Figura 9 - Conferindo o funcionamento do CRUD

Execute as demais operações e verifique no banco de dados seu comportamento.

Nesse post exploramos o SharePoint Designer 2010 na criação de ECTs, porém nos próximos posts da série utilizaremos o Visual Studio 2010 como ferramenta adicional. No próximo post veremos como criar ECTs via Web Service. Até a próxima!

Referências:
http://msdn.microsoft.com/en-us/library/ee556826(v=office.14).aspx
http://msdn.microsoft.com/pt-br/library/ms186378(v=SQL.105).aspx

[]’s

Marcel Medina

Clique aqui para ler o mesmo conteúdo em Inglês.

Business Connectivity Services – Parte I

Aprenda sobre o Business Connectivity Services e como desenvolver soluções utilizando o SharePoint Designer 2010 e Visual Studio 2010 através da criação de External Content Types. (Parte I)

Oi pessoal, tudo bem?

Nesses últimos meses trabalhei bastante com o novo BCS do SharePoint 2010 para integração de dados e agora vou relatar um pouco dos conceitos envolvidos e minhas experiências a partir de exemplos em diferentes lições. Aqui inicio uma série de posts relacionados ao assunto e esse é o primeiro. Trata-se de um conteúdo completo focado ao desenvolvimento, que é o propósito deste blog. Espero que gostem!

Nessa abordagem entenderemos o que é o BCS, sua arquitetura e componentes.

Business Connectivity Services

Você já pensou ou teve a necessidade de integrar dados de origens diferentes em um sistema unificado? Saiba que isso é possível no SharePoint 2010 graças ao Business Connectivity Services (BCS).

Por padrão a plataforma do SharePoint 2010 disponibiliza features Out-of-the-box (OOTB) nativas do BCS para exibição, manipulação e pesquisa de dados, e com a utilização das ferramentas SharePoint Designer 2010 e/ou Visual Studio 2010 podemos criar soluções para o BCS que façam integração de dados e serviços.

A versão anterior do BCS chamada de Business Data Catalog no MOSS 2007 também permitia a conexão à fontes de dados externos, porém a criação dessas soluções era difícil devido à falta de ferramentas de design. Apesar de ser relativamente simples de criar aplicações read-only, aplicações que persistiam dados já eram bem difíceis de serem criadas. Agora essas restrições são facilmente contornadas pela utilização das novas ferramentas SPD2010 e VS2010.

Pela reutilização de um conceito aplicado no agrupamento de metadados chamado Content Types, o BCS cria um mapeamento chamado External Content Types, devido à criação de um mapeamento de metadados externos, do qual falaremos mais adiante.

OBS: Muitas empresas já entenderam que o SharePoint pode ser utilizado como um Portal de Integração e estão estendendo seus sistemas internos (ERP, CRM, etc) com soluções customizadas e soluções OOTB. Isso vem ocorrendo desde a versão do Business Data Catalog disponível na versão do MOSS 2007.

Arquitetura

Vejamos os blocos e componentes que compõe o diagrama abaixo, que nos traz uma visão do funcionamento do BCS, confome Figura 1:

arquitetura680

Figura 1 - Arquitetura do BCS

Conforme podemos perceber na Figura 1, cada bloco foi enumerado para explicação de seus componentes:

Bloco 1 – Fontes de Dados Externos

Esse bloco exibe o suporte oferecido a diferentes tipos de fontes de dados externos, através da conexão por:

Databases

Por padrão as conexões diretas via database são realizadas utilizando o SQL Server.

Web / WCF Services

O suporte é oferecido a ambos Web Services (*.asmx) e WCF Services (*.svc).

Assemblies .NET

A conexão a diferentes bancos de dados (Oracle, MySql, etc) só é possível através da criação de assemblies .NET customizados para essa tarefa.

Custom Data Sources

Através da utilização de Custom Connectors é possível a conexão a diferentes tipos de Data Sources. Ex: Dados em XML e Texto.

Bloco 2 – SharePoint Site

Esse bloco é responsável pela conexão às fontes de dados externos, permitindo que operações do tipo Create, Read, Update, Delete, and Query (CRUDQ) sejam realizadas. Vejamos alguns de seus componentes:

BDC Metadata Store

Pertencente à camada de serviços, é responsável pelo armazenamento de External Content Types, que descrevem como conectar às fontes de dados externos.

Secure Store Service (SSS)

Trata-se de um local seguro do SharePoint 2010 para armazenamento de credenciais. Substitui o Single Sign On do MOSS 2007. Utilizado pelo BCS para armazenar as credenciais de fontes de dados externos e mapeá-las a uma identidade (ou um grupo de identidades).

External Content Type (ECT)

Determina o schema do conjunto de dados externos que mapeia, recursos de acesso a dados e seu comportamento dentro das aplicações Office e SharePoint.

BDC Server Runtime

Esse componente sabe como realizar a conexão à fonte de dados externos utilizando-se dos ECTs para essa tarefa.

Search, Workflow, Web Parts

O BCS oferece suporte à utilização de features OOTB que o SharePoint 2010 disponibiliza. Dentre eles suporte a pesquisas, workflows e Web Parts.

External List

Lista criada a partir de um ECT para exibição no SharePoint Site.

Conectores

Os conectores são responsáveis pela interface entre o BDC Runtime e o acesso a dados externos.

Bloco 3 – Office Client

Tanto aplicações criadas (Add-ins / Custom code) para o Office 2010, como os produtos Microsoft Outlook 2010 e Microsoft SharePoint Workspace 2010 podem manipular dados externos de maneira eficiente. Vejamos o funcionamento dos seguintes componentes:

Cache

Durante os momentos em que a aplicação está online, o SQL Compact entra em ação por armazenar dados temporariamente, o que garante que mesmo a aplicação estando offline o conteúdo seja exibido.

Offline Operations

As operações de leitura e escrita realizadas em cache são persistidas quando a aplicação volta a ficar online.

BDC Client Runtime

Esse componente é responsável pela sincronização dos dados externos, que são realizados de maneira consistente da seguinte maneira:

  • Em modo online faz a conexão do cliente diretamente à fonte de dados externos. Pelo Sync uma cópia dos ECTs são enviados ao cliente, o que permite o acesso direto.
  • Em modo offline persiste os dados em cache para posterior sincronização.

Office Add-in / Custom Code

O deploy via ClickOnce de pacotes VSTO permite que aplicações sejam disponibilizadas rapidamente pela utilização de smart-clients.

Bloco 4 – Ferramentas

As novas versões das ferramentas abaixo possibilitam a criação de diversas soluções, devido ao novo conjunto de features que elas oferecem.

SharePoint Designer 2010

Possibilita a criação de ECTs e External Lists sem a necessidade de criação de código customizado, o que permite a rápida criação de soluções utilizando seus recursos OOTB.

Visual Studio 2010

Nos casos em que as soluções criadas pelo SPD 2010 não satisfaçam as necessidades de negócio, podemos utilizar o VS 2010 para desenvolvimentos avançados via código.

External Content Types

O BCS utiliza External Content Types como principal objeto para o mapeamento dos dados externos. Você já ouviu falar de Content Types no SharePoint? Por definição Content Types são coleções de metadados, que na prática são utilizados como agrupadores de Site Columns no SharePoint. Internamente os Content Types armazenam o schema de seus metadados em XML, que servem para identificar seus tipos de dados. Ex: String, boolean, number, etc.

Um ECT faz a extensão desse conceito, vejamos a Figura 2 que mostra a utilização dos ECTs:

ect680

Figura 2 - Utilização de um ECT

Como vimos na Figura 2, além de armazenar o schema de seus metadados, um ECT disponibiliza recursos de acesso a dados a uma fonte de dados externos e também disponibiliza meios para integração dentro do Office e SharePoint, que são disponibilizados através de entidades e métodos. Por fim esse objeto é armazenado no BDC Metadata Store que contém todos os ECTs (conforme já descrito na Arquitetura).

Essa foi uma introdução teórica, considero esse entendimento fundamental para a explicação das demonstrações dos próximos posts. A propósito, no próximo post veremos como criar ECTs. Aguardem!

Referências:
http://msdn.microsoft.com/en-us/library/ee556826(v=office.14).aspx
http://msdn.microsoft.com/en-us/library/ee557898(v=office.14).aspx
http://msdn.microsoft.com/en-us/library/ee557790(v=office.14).aspx
http://msdn.microsoft.com/en-us/library/ee554916(v=office.14).aspx

[]’s

Marcel Medina

Clique aqui para ler o mesmo conteúdo em Inglês.