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:
- 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".
- É 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.
- 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.
- 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:
- Crie um novo aplicativo Web ASP.NET vazio
- Adicione um Modelo de Dados de Entidade ADO.NET
- Adicione um serviço de dados WCF
- 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