Utilizando OData e ECTs no SharePoint 2013

Artigo original publicado na sexta-feira, 7 de dezembro de 2012

Uma ótima melhoria no SharePoint 2013 relativa a BCS (Serviços Corporativos de Conectividade) é que o SharePoint pode consumir OData em aplicativos BDC (Catálogo de Dados Corporativos). Porém, observei algumas lacunas recentemente ao realizar esse processo, então decidi abordá-las aqui, caso alguém tenha problemas semelhantes. Para começar, recomendo a utilização deste documento para guiá-lo pelos conceitos básicos da criação de um aplicativo para OData: https://msdn.microsoft.com/en-us/library/sharepoint/jj163967.aspx. A principal conclusão dele é que NÃO é possível criar um aplicativo BDC no SharePoint Designer que se conecte a uma origem OData. Para isso, é necessário criar um ECT (tipo de conteúdo externo) utilizando uma ferramenta como o Visual Studio.

O documento do link acima detalha o processo de criação do ECT. Ele mostra como usar os ECTs em um aplicativo do SharePoint e implantá-lo desse modo, mas NÃO mostra o que você deve fazer caso deseje adicioná-lo ao catálogo BDC, de modo que possa ser usado em vários conjuntos de sites. É aí que entra este post. A primeira coisa que se deve ter em mente é que, quando você executa o processo descrito no artigo acima, ocorrerá a criação de um ECT para cada entidade (como uma tabela). Isso é importante porque é utilizado um nome compartilhado no arquivo ECT, que evitará o upload de mais de um arquivo ao catálogo BDC. Para usar cada uma dessas entidades no SharePoint, você deve proceder da seguinte maneira:

  1. No Visual Studio, clique com o botão direito no arquivo ECT e selecione Abrir com... Em seguida, selecione Editor (Texto) de XML. Na parte superior do documento, no elemento Model, você verá um atributo Name. O valor deve ser exclusivo entre todos os ECTs carregados no BDC. Por isso, altere cada nome para um valor descritivo da entidade, como "Tabela de Clientes".
  2. É possível (mas não obrigatório) alterar o Namespace do elemento Entity, que está cerca de 20 linhas para baixo no documento. Eu alterei o meu de modo que ficasse consistente com o nome do modelo, mas é apenas uma etapa opcional, não obrigatória.
  3. Após fazer as alterações e salvar o arquivo, carregue o arquivo .ect diretamente no BDC. Basta usar as opções padrão (é um modelo) e clicar no botão OK, e você estará pronto para prosseguir.
  4. Após importar os modelos, não se esqueça de conceder permissões para utilizá-los; sem isso, o processo é inútil.

Um último comentário digno de nota: por padrão, não há pontos de extremidade de metadados OData para elementos como bancos de dados SQL, armazenamento de tabela do Azure, etc. Por sorte, a adição deles no SQL é relativamente simples. Resumidamente:

  1. Crie um novo aplicativo Web ASP.NET vazio
  2. Adicione um Modelo de Dados de Entidade ADO.NET
  3. Adicione um serviço de dados WCF
  4. No serviço de dados WCF, você deve definir o tipo no construtor de classes. Inicialmente, isso pode causar um pouco de confusão. O que você deve fazer é procurar um arquivo (que deve estar na pasta App_Code) com um nome parecido com myDataConnection.Context.tt. Se você o expandir, verá uma classe myDataConnection.Context.cs. Abra-a para visualizar duas informações necessárias para o serviço de dados WCF: 1) o nome da classe, que você usará como tipo do construtor de classes do serviço de dados WCF; 2) Os nomes das entidades com suporte, implementadas como propriedades get; set;. Você também precisará dos nomes das entidades no serviço de dados WCF, pois é necessário, no mínimo, criar "SetEntitySetAccessRules" para cada entidade que deseja expor. Esse processo é explicado com mais detalhes nos comentários, quando você adiciona um serviço de dados WCF. Estou apenas tentando mostrar como proceder para encontrar o nome da entidade que deverá ser usado ao criar uma dessas regras.

 

Esta é uma postagem de blog traduzida. Consulte o artigo original em Using OData and ECTs in SharePoint 2013