terça-feira, 6 de abril de 2021

Filtrando as tarefas de um projeto via Power Automate

 Olá pessoal –

No final de Março/2021 publiquei um post para explicar como é possível filtrar um projeto pelo seu ID no Power Automate. Logo depois de efetuar a publicação do post surgiu uma nova necessidade com um dos clientes com os quais eu trabalho, que acho que vale a pena compartilhar por aqui. Vou procurar explicar com um pouco mais de detalhes:

--- um cliente gostaria que, logo após a criação de um novo projeto, seus marcos fossem obtidos e sincronizados com um sistema externo, que era utilizado por uma área específica da organização para fins de controle.

É importante destacar que nesse post não pretendo explicar como os dados exportados foram adicionados ao sistema externo. Ao invés disso, meu objetivo aqui será detalhar como é possível criar uma ação no Power Automate que utilize o parâmetro do ID do projeto (GUID) para filtrar as tarefas daquele cronograma especificamente. Antes de começar, é importante apenas deixar claro que, no contexto desse cliente, todos os novos projetos criados possuíam um modelo de cronograma associado, ou seja, quando da criação de um novo projeto toda a estrutura básica de tarefas já estaria pronta. Feitos os devidos disclaimers, vamos lá.

O primeiro passo é iniciar o gatilho do flow usando a opção ‘When a new project is created’. Em seguida, paralisamos o fluxo por 2 minutos para garantir que todas as ações de criação do projeto tenham sido processadas pela fila do Project Online. Por fim, uma ação ‘Send an HTTP request to SharePoint’ foi adicionada para que seja possível obter a lista de tarefas:


Após especificar o endereço do PWA e manter o método padrão GET, é preciso determinar que as tarefas a serem obtidas devem ser oriundas do projeto que acabou de ser criado. Se você já está familiarizado com as strings para obter dados da API do Project Online (OData), já deve saber que o ponto final da entidade tarefas pode ser consultado da seguinte maneira (neste exemplo estamos filtrando os marcos do cronograma e obtendo o seu ID, nome e data de término):

/_api/ProjectData/Tasks()?$Select=TaskId,TaskName,TaskFinishDate&$Filter=TaskIsMilestone eq true

Porém, como filtrar as tarefas para que sejam apenas obtidas as tarefas do projeto criado? A resposta é que a API OData é flexível o suficiente para permitir a inclusão de um parâmetro adicional (Projects), que permite a aplicação do filtro desejado. Ficaria assim:

/_api/ProjectData/Projects(guid'[ProjectId] ')/Tasks()?$Select=TaskId,TaskName,TaskFinishDate&$Filter=TaskIsMilestone eq true


Aplicando esta técnica apenas as tarefas necessárias do projeto em vigor serão obtidas, e assim será possível prosseguir com as ações futuras de acordo com as necessidades de negócio.

Espero que ajude e até a próxima 😉.



Nenhum comentário:

Postar um comentário