Bonus: Dentro la caja negra

El lector se preguntará seguramente: ¿Cómo es que Bizagi Studio usa un conector hecho en node.js si es un software de escritorio para Windows? Una pregunta cuya respuesta no es necesaria saber para el desarrollo de conectores, pero saberla le dará una noción mejor sobre su trabajo.

El tema es un poco más profundo de lo que parece a simple vista, si usted revisara el código fuente de la carpeta de instalación de Bizagi (Usualmente encontrado en Mi C://Equipo/Bizagi) encontrará muchas carpetas, archivos temporales y logs y dependiendo del tipo de instalación de su proyecto sería un proyecto de C# o de Java.

Si nos ubicamos en la carpeta con el nombre temp, ubicada en C://Equipo/Bizagi/tools , encontramos los conectores usados por nuestro proyecto. Cada conector ha recibido una reorganización de sus archivos y le han con dos carpetas adicionales llamads facade y server. Estas ultimas se encargaran de instanciar un servidor e importar de manera dinámica el conector como un módulo de node.js a traves de muchos callbacks y ciertos valores parametrizados por Bizagi Studio..

La línea de tiempo en lo que respecta a la aplicación y el conector es el siguiente:

  1. Bizagi Studio es ejecutado en algún cliente.
  2. En algún momento, Bizagi Studio inicia un servidor de node.js el cual corre en el puerto 16541 del cliente. Este servidor está hecho con el framework de node.js, express.js, tiene algunas rutas configuradas, entre las cuales existe una responsable de controlar la petición que envíe Bizagi Studio cuando ejecute una acción de un conector.
  3. En algún momento, Bizagi ejecutará el conector enviando una petición HTTP (AJAX) con la información en formato JSON.
  4. El servidor recibirá esta petición y mediante una sucesiva serie de llamadas de funciones, el servidor cargará su conector cómo un módulo de javascript externo y ejecutará la función invoke que este exporte.

  5. Finalmente el resultado devuelto por la función invoke de la acción será devuelto a Bizagi.

results matching ""

    No results matching ""