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 😉.