Ferramentas de Integração do Pipefy
OBJETIVO
Descrever o processo de análise e indicar a melhor alternativa para implantação da USER STORY “Estudar uma forma de acompanhar as demandas solicitadas pelos clientes registradas no pipefy.”.
JUSTIFICATIVA
Após reunião de alinhamento do time com a gerência, identificou-se a necessidade de disponibilizar as informações presentes no pipefy para os cliente, permitindo a estes acompanhar o status de desenvolvimento das atividades planejadas e consequentemente, fornecendo uma maior transparência entre as partes envolvidas. Foi identificada a necessidade da realização de um estudo prévio da funcionalidades hoje presentes na ferramenta, para que seja identificada uma abordagem que atendam a demanda .
RESULTADOS ESPERADOS
- Lista contendo os dados que são disponibilizados pela ferramenta e que atendam a demanda.
- Maneiras das quais é possível obter esses dados.
- Relatório de viabilidade técnica com indicação de qual a melhor abordagem de utilização (se existir).
ENVOLVIDOS
- Baymax (B.I. Team)
GLOSSÁRIO
- API - Interface de Programação de Aplicações é o conjunto de rotinas e padrões estabelecidos por um software para a utilização de suas funcionalidades.
- PIPEFY - ferramenta de controle de demandas e fluxo de trabalho atualmente utilizada pela SETIC.
PREMISSAS
- O Pipefy é a solução oficial adotada pela SETIC, sendo qualquer alteração nesse sentido além do escopo deste estudo.
- Convém disponibilizar aos clientes as informações necessárias em uma ferramenta externa ao Pipefy.
GRAPHQL
DEFINIÇÃO
GraphQL é uma sintaxe que descreve uma maneira de solicitar dados. Ele é geralmente utilizado para entregar dados, do servidor para o cliente. O GraphQL tem três principais características:
- Ele permite que o cliente especifique exatamente os dados que ele quer.
- Torna mais fácil agregar dados de várias fontes.
- Usa um sistema de tipos para descrever os dados.
Com o GraphQL, o usuário pode fazer uma única chamada para buscar todas as informações que precisa. Diferente do que acontece na arquitetura REST, que é necessário fazer várias requisições para buscar as mesmas informações.
Figura 1 - Exemplo de consulta utilizando GraphQL.
ZAPIER
DEFINIÇÃO
O Zapier é uma ferramenta de automação que permite a integração entre diversos serviços, incluindo o Pipefy. A ferramenta integra, de maneira segura, os pipes à outros aplicativos como Google Sheets, Slack, Evernote, Git Hub e muitos outros.
A ferramenta é recomendada pela própria equipe do Pipefy, porém sua utilização de maneira gratuita é restritiva, sendo necessário um investimento financeiro para melhor aproveitamento da mesma.
Figura 2 - Tabela de precificação da ferramenta Zapier.
PROPOSTAS
A seguir são descritas duas abordagens possíveis para a implantação, utilizando o GraphQl e o Zapier.
1. UTILIZAÇÃO DO GRAPHQL
- AÇÕES ASSOCIADAS
- Alinhamento com a Gerência identificando as necessidades
- Definição de quais atributos serão utilizados
- Estudo para definir qual abordagem para implantar a solução
- Implantação da solução
- COMPLEXIDADE - depende do alinhamento.
- EXEMPLO - a partir da ferramenta disponível pelo Pipefy é possível realizar consultas de acordo com os atributos fornecidos pela documentação. As consultas realizadas estão dispostas na figura 2, a seguir.
Figura 3 - Exemplo de Utilização do GraphQl que atenda a demanda. Foi identificado o card, a time responsável, o status atual e quando ocorreu a movimentação.
Para a utilização por ferramentas externas é necessário montar a requisição “POST”. A seguir, um exemplo dessa requisição em Javascript e em Python.
var data = null;
var xhr = new XMLHttpRequest();
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://api.pipefy.com/graphql");
xhr.setRequestHeader('Authorization', 'Bearer ' + "TOKEN_FORNECIDO")
xhr.setRequestHeader("content-type", "Content-Type");
xhr.send(data);
Exemplo de requisição em Javascript.
import requests
url = "https://api.pipefy.com/graphql"
headers = {"content-type": "application/json",'Authorization': 'Bearer ' + "TOKEN_FORNECIDO"}
response = requests.request("POST", url, headers=headers)
print(response.text)
Exemplo de requisição em Python.
2. UTILIZAÇÃO DO ZAPIER
- AÇÕES ASSOCIADAS
- Alinhamento com a Gerência identificando as necessidades
- Definição de qual a aplicação será integrada
- Alinhamento para definir como a aplicação será disponibilizada aos clientes
- COMPLEXIDADE - baixa
- EXEMPLO - devido as restrições de usuário não foi possível disponibilizar um exemplo.
IMPEDIMENTOS E POSSÍVEIS IMPEDIMENTOS
- Após análise da documentação, não foram identificadas informações referentes ao número de consultas permitidas. Uma limitação no número de consultas pode impactar na usabilidade da solução.
- Não foi possível testar o número de requisições devido a indisponibilidade de um usuário para esse tipo de teste. A utilização dos usuários de produção para este teste pode acarretar em bloqueios para o mesmo.
CONCLUSÃO
Após análise pelos integrantes do time, foi identificado que a utilização do GRAPHQL embora mais trabalhosa, permite uma maior flexibilidade de utilização. O time então opta pela utilização desta ferramenta, sendo destacado que não foi possível validar se o número de requisições permitidos será capaz de atender as necessidades. O time indica que novos estudos sejam realizados para que essas questões sejam sanadas antes do desenvolvimento da solução.
REFERÊNCIAS
- Pipefy Docs - https://developers.pipefy.com/reference
- Pipefy API - https://api-docs.pipefy.com/reference
- Artigo sobre GraphQl - https://medium.com/trainingcenter/graphql-os-dados-no-formato-requisitado-964f5555d467
- GraphQl Docs - https://graphql.org/learn/queries/