segunda-feira, 21 de outubro de 2019

Flow e Project Online: enviando uma Solicitação HTTP ao SharePoint

Olá pessoal –

Para fechar o terceiro post da série sobre os gatilhos e conectores nativos do Project Online e Flow, vamos falar hoje sobre a ação Enviar uma solicitação HTTP ao SharePoint. Como vimos nos dois posts anteriores (post1 e post2) o Microsoft Flow possui gatilhos e ações nativas atreladas ao Microsoft Project Online –  entretanto, podemos dizer que infelizmente esses gatilhos e conectores nativos do Flow possuem certas limitações em relação aos recursos disponíveis para as possíveis automações que queiramos configurar.

Para superar essas limitações, uma excelente alternativa é utilizar a ação Enviar uma solicitação HTTP ao SharePoint, que permite a execução de operações básicas como leitura e obtenção de dados de uma interface REST fornecida pelo SharePoint. Como sabemos, o Project Online é baseado em uma estrutura de sites do SharePoint, o que permite que esta ação seja utilizada para que seja possível automatizar as ações no Microsoft Flow. Uma das maiores vantagens da utilização desta ação no contexto do Project Online é que podemos criar consultas para obter praticamente qualquer dado do banco de dados do Project Online, incluindo campos nativos e também campos personalizados. Caso você queira conhecer em mais detalhes as operações básicas usando os pontos de extremidades REST do SharePoint, você pode visitar esse excelente artigo técnico no site da Microsoft.

Temos uma infinidade de casos de uso que poderiam ser utilizados para obtenção dos dados via interface REST: poderíamos criar uma recorrência para coletar informações sobre projetos com problemas, enviando então um e-mail de notificação para um grupo específico; ou poderíamos capturar as informações dos projetos periodicamente, para criar uma análise de tendência; poderíamos também coletar os dados de um projeto recém criado e então gerar um documento (Business Case) automaticamente.... enfim, os cenários e as possibilidades são inúmeras, e eu tenho falado bastante sobre isso no meu canal do YouTube.

Para utilizar a ação na prática, vamos ao Microsoft Flow para construir um exemplo do zero. Selecione uma recorrência como disparador, e então escolha a ação Enviar uma solicitação HTTP ao SharePoint:


A janela contendo as configurações da ação será apresentada:


Em endereço do site, clique no drop-down para selecionar a URL do seu ambiente do Project Online. Caso não a encontre, você também poderá digitá-la, como nesse exemplo: https://<suaempresa>.sharepoint.com/sites/pwa.

O método a ser utilizado será GET, pois desejamos ler/obter os dados do banco de dados do Project Online.

Em Uri poderemos definir a string/consulta que será utilizada para determinar quais os campos a serem obtidos, e também para que seja possível filtrar os projetos. Neste exemplo, estou utilizando a seguinte string:

/_api/ProjectData/[en-us]/Projects()?$Select=ProjectId,ProjectName,ProjectOwnerName,ProjectPercentCompleted&$Filter=ProjectType ne 7

A ideia é obter alguns campos nativos do Project Online (Id do Projeto, Nome do Projeto, Proprietário e Percentual Concluído), filtrando para que o projeto do tipo 7 não seja incluído na consulta. A boa notícia é que você pode incluir campos personalizados existentes no seu ambiente na consulta caso seja necessário.

Em Cabeçalhos nós não estamos definindo um padrão de colunas que devem eventualment ser utilizadas, por isso o resultado/expressão application/json;odata=nometadata:


Como iremos utilizar os resultados da ação nas próximas ações do nosso Flow, é interessante renomear a ação atual para algo mais simples. Eu gosto bastante de usar a expressão GetProjects nesse contexto:


Uma vez construída a ação, você pode rodar o Flow para visualizar os resultados obtidos e validar que tudo está funcionando conforme esperado:


Uma vez validada a ação de obtenção dos dados, você poderá configurar os passos seguintes com os resultados, de acordo com os seus requisitos de negócio – por exemplo, poderia criar uma tabela HTML para melhor estruturar a lista de projetos obtidos. Como você está obtendo dados via extremidade REST, o ideal é não utilizar os resultados obtidos através da função de Conteúdo Dinâmico; pelo contrário, utilize uma Expressão para que seja possível se referenciar aos valores e resultados da ação anterior, utilizando a expressão body('GetProjects')[ 'Value '):


Os resultados poderão ser observados ao rodar o flow:


E a partir daí você poderia estabelecer mais filtros, obter mais campos e então definir as ações seguintes para  configurar a automatização do seu processo, conforme necessário.


Nenhum comentário:

Postar um comentário