Con el reciente lanzamiento de Flogo Enterprise 2.6 (tómese su tiempo para revisar las notas de la versión y conocer todas las novedades que se han lanzado), se ha incluido soporte para GraphQL.
No quiero hacer un artículo completo sobre qué es GraphQL y las ventajas que incluye en comparación con REST y demás. Especialmente cuando hay tantos artículos en Medium sobre ese tema, así que por favor eche un vistazo a los siguientes:

Entonces, en resumen, GraphQL es un protocolo diferente para definir las interfaces de su API con otro enfoque en mente. Así que, veamos cómo podemos incluir este tipo de interfaces en nuestros flujos de Flogo. Vamos a trabajar con el siguiente esquema de GraphQL que va a definir nuestra API

Si esta es la primera vez que ves un esquema de GraphQL, permíteme darte algunas aclaraciones:
- El esquema se divide en tres partes: Consultas, Mutaciones y Modelo
- Las consultas son solicitudes de tipo GET para obtener información. En nuestro caso, tenemos dos consultas currentUser y company.
- Las mutaciones son solicitudes de tipo POST/PUT para modificar información. En nuestro caso, tenemos tres mutaciones: registerUser, registerCompany, asignUser.
- El modelo son los diferentes objetos y tipos con los que interactúan nuestras consultas y mutaciones.
Así que, ahora vamos a hacer el trabajo duro en el entorno de Flogo, y comenzamos creando una nueva aplicación que vamos a llamar GraphQL_Sample_1

Ahora, tenemos una aplicación vacía. Hasta este punto no fue difícil, ¿verdad? Bien, veamos cómo va. Ahora vamos a crear un nuevo flujo, y podemos elegir entre tres opciones:
- Flujo vacío
- Especificación Swagger
- Esquema GraphQL

Así que elegimos la opción del Esquema GraphQL y subimos el archivo y genera un esqueleto de todos los flujos necesarios para soportar esta especificación. Se va a generar un nuevo flujo para cada una de las consultas y cada una de las mutaciones que hemos definido, ya que tenemos dos (2) consultas y tres (3) mutaciones, por lo que cinco (5) flujos en total como puedes ver en la imagen a continuación:

Como puedes ver, los flujos se han generado siguiendo la siguiente convención de nombres:
<TIPO>_<nombre>
Donde <TIPO> puede ser Mutación o Consulta y <nombre> es el nombre que este componente tiene en el Esquema de GraphQL.
Ahora, todo está hecho con respecto a la parte de GraphQL, y solo necesitamos proporcionar contenido a cada uno de los flujos. En este ejemplo, voy a confiar en una base de datos PostgreSQL para almacenar toda la información sobre usuarios y empresas, pero el contenido va a ser muy sencillo.
- Query_currentUser: Este flujo va a solicitar los datos del cliente a PostgreSQL para devolver sus datos y la empresa a la que pertenece. En caso de que no pertenezca a nadie, solo recopilamos los datos del usuario y en caso de que no esté presente, devolvemos un objeto vacío.

- Query_company: Este flujo va a solicitar los datos de la empresa a PostgreSQL para devolverlos y en caso de que no esté presente, devolver un objeto vacío.

- Mutation_registerUser: Este flujo va a insertar un usuario en la base de datos y en caso de que su correo ya exista, va a devolver los datos existentes al consumidor.

- Mutation_registerCompany: Este flujo va a insertar una empresa en la base de datos y en caso de que su nombre ya exista, va a devolver los datos existentes al consumidor.

- Mutation_asignUser: Este flujo va a asignar un usuario a la empresa para hacer eso, va a devolver los datos del usuario basados en su correo electrónico y lo mismo con la empresa y actualizar las actividades de PostgreSQL basadas en esa situación.

Bien, ahora tenemos nuestra aplicación ya construida, veamos cómo podemos probarla y jugar con la API de GraphQL que hemos construido. ¡Así que… es hora del espectáculo!

Primero, vamos a construir la aplicación. Como probablemente sepas, puedes elegir entre diferentes tipos de construcciones: imagen de Docker o paquete basado en el sistema operativo. En mi caso, voy a generar una construcción para Windows para facilitar todo el proceso, pero puedes elegir lo que te parezca mejor.
Para hacer eso, vamos al menú de la aplicación y hacemos clic en Construir y elegimos la opción de Windows:

Y una vez que la construcción se haya completado, vamos a tener un nuevo archivo EXE en nuestra carpeta de Descargas. ¡Sí, así de fácil! Y ahora, ¿cómo lanzarlo? Aún más fácil… solo ejecuta el archivo EXE y… ¡está hecho!

Como puedes ver en la imagen de arriba, estamos escuchando solicitudes en el puerto 7879 en la ruta /graphql. ¡Así que, abramos un cliente de Postman y comencemos a enviar solicitudes!
Y vamos a comenzar con las consultas y para poder devolver datos, he insertado en la base de datos un registro de muestra con el correo test@test.com, así que, si ahora intento recuperarlo, puedo hacer esto:
{
“query” : “query($email: String!) { currentUser( email: $email) { id firstName email } }”,
“variables” : {“email” : “test@test.com” }
}

Solo algunos aspectos destacados sobre nuestra consulta de GraphQL:
- Podemos elegir la cantidad de atributos que la consulta va a recuperar, y esa es la última parte de la consulta, así que si la cambio, veamos qué pasa:
{
“query” : “query($email: String!) { currentUser( email: $email) { id } }”,
“variables” : {“email” : “test@test.com” }
}
Y ahora, solo estamos obteniendo esta salida:




