1. Casa
  2. Docs
  3. Documentación del desarrollador
  4. Módulos de abeja

Módulos de abeja

Abejas

Si trabajó con XcooBee, sabía que el flujo de trabajo de XcooBee está organizado en torno a las abejas. Las abejas pueden trabajar solas o en colmenas para realizar tareas. Sin embargo, el paradigma es mucho más extensible. Cada Bee es un módulo de microservicio autónomo. Estos módulos de servicio pueden ser escritos por cualquier desarrollador dispuesto a aprender los patrones del módulo.

Actualmente, los módulos de abeja se pueden escribir en JavaScript ejecutándose en un entorno NodeJS. Apoyamos NodeJS 8.10. Estamos trabajando para que esto esté disponible en C#, Java y Python en fases posteriores de XcooBee.

Después de que su código esté completo y probado, puede enviarnos su repositorio poniéndose en contacto con developers @ xcoobee.com. Este proceso es manual en este momento, así que tengan paciencia con nosotros.

 

El ciclo de vida del módulo de abeja

En esencia, su código actuará como un módulo de nodo independiente (agente o complemento) al que en XcooBee nos referimos como bee. Las abejas se ejecutan en un entorno restringido con limitaciones de tiempo y espacio (memoria y disco). Las abejas pueden ejecutarse en secuencia, en cuyo caso la secuencia de ejecuciones se conoce como trayectoria de vuelo. El plano (clase) de una multitud de abejas se conoce como Colmena. Las abejas pueden comunicarse a lo largo de la ruta de vuelo utilizando el procesamiento de vuelo objeto de datos si es necesario. Cada abeja trabaja independientemente en el archivo de entrada provisto para producir un archivo de salida para que la próxima abeja procese. El último archivo de salida procesado es el que se devuelve al usuario o al destinatario designado.

El ciclo de vida consta de tres pasos.

  • invocación
  • ejecución
  • apagar

invocación

El sistema XcooBee invocará el vuelo() método de su archivo de código primario para su módulo como se indica en el archivo package.json de su módulo. Utilizará la siguiente firma:

vuelo (servicios, datos, devolución de llamada) {}

Durante la invocación servicios y datos Los argumentos se rellenan. Le permiten leer el archivo de entrada y obtener información sobre el entorno.

ejecución

El paso de ejecución se deja a tu imaginación. Cualquier cosa que desee hacer con el archivo de entrada se puede hacer dado que se mantiene dentro de las restricciones de tiempo de procesamiento, memoria y espacio en disco. Los límites actuales son

  • hora:
    • pequeña instancia: 25 años
    • instancia media: 140s
    • gran instancia: 280
  • memoria
    • pequeño: 192 MB
    • medio: 1024 MB
    • grande: 1536 MB
  • disco: 512 MB

apagar

Se produce un apagado ordenado cuando llama al llamar de vuelta() función que se le pasó durante la invocación al final de su procesamiento. Puede llamarlo con un mensaje de error o de éxito. En caso de error, el sistema XcooBee volverá a intentar su abeja dos veces más. Si no completa su procesamiento en el tiempo asignado para su instancia, se considera un cierre desordenado. Su proceso finalizará y XcooBee lo manejará como una devolución de llamada de error.

Ejemplo de devolución de llamada exitosa

devolución de llamada (nulo, "mensaje de éxito");

Ejemplo de devolución de llamada de error

devolución de llamada ("problema con el archivo", nulo);

Servicios

Cuando se invoque a cada abeja, se le pasará una colección de servicios y una colección de datos para llevar a cabo sus operaciones. Esto se pasa como servicios argumento durante la invocación de la función flight ().

log (mensaje, tipo)

Puede usar el registro para crear entradas de rastreo para su procesamiento. Use este servicio para escribir comentarios relacionados con el procesamiento de archivos. Esto generalmente no se muestra al usuario final, pero está disponible para el soporte de XcooBee. donde mensaje = cadena: el mensaje que se registrará donde tipo = enumeración uno de (información | advertencia | error)

writeStream ()

flujo de escritura predeterminado Si su abeja produce salida como parte del procesamiento, puede usar esto como predeterminado writeStream () para transmitirlo al disco. Si necesita un nombre de archivo específico, puede usar el writeStreamManager () para crear uno como alternativa.

readStream ()

flujo de lectura predeterminado Este flujo tiene acceso al archivo de entrada para su proceso.

writeStreamManager (nombre de archivo, tipo)

tipo: wip | salida de abeja

fábrica para agregar secuencias de escritura si bee tiene la opción establecida. Puede usar esto para crear múltiples archivos en el disco de procesamiento. Puede crear trabajo en archivos de proceso o archivos de salida en función de la selección de tipo.

Hora de correr()

información sobre cuánto tiempo queda antes de que la abeja se apague. La métrica está en milisegundos.

addParam (clave, valor)

Agregar un parámetro a la procesamiento de vuelo objeto. Así es como podemos comunicarnos con las abejas río abajo en la ruta de vuelo. Agregue datos a la estructura de parámetros que se proporcionarán a la próxima abeja (cambia el archivo de directiva, consulte el archivo de directiva en la documentación del desarrollador).

getNextId ()

Generador de secuencia. Devolverá el siguiente entero disponible. Esto comienza con 1.

correo (plantilla)

Puede intentar enviar un correo electrónico al usuario. Para hacerlo, deberá conocer la referencia de la plantilla de correo XcooBee y los valores de reemplazo. Más detalles para esto en el futuro. Esto también está sujeto a las preferencias de notificación de los usuarios.

El objeto de datos

Cuando se invoca su abeja, se le proporciona un determinado conjunto de datos a través de datos argumento en su definición de función [vuelo (servicios, datos, llamar de vuelta)]. Esto permite que la información básica fluya hacia la abeja para su procesamiento y tiene varias subclaves. Todas las subclaves son opcionales.

Las subclaves son: integraciones, user_data, parámetros, flightprocessing y env

integraciones

Si la abeja requiere tokens de acceso desde la plataforma XcooBee y el usuario la ha autorizado, la plataforma XcooBee completará este nodo con información específica necesaria para cada integración. La estructura del objeto dependerá de la integración a la que se acceda.

datos del usuario

Datos básicos sobre el usuario, como nombre y XcooBeeId. Esto también contendrá la referencia externa del usuario pasada a través de userReference elemento del archivo de directiva de abejas.

parámetros

Los parámetros de procesamiento proporcionados por el usuario durante el proceso de contratación de la abeja y escritos en el archivo de directiva de la abeja.

procesamiento de vuelo

Este es un objeto de comunicación compartido por todas las abejas. Las abejas pueden agregar datos usando el addParam (clave, valor) Servicio. Las abejas pueden leer todos los datos guardados por abejas anteriores (para el procesamiento de varios pasos). Pueden escribir nuevos datos. El solo puede anular sus propios datos (datos que esta abeja ha escrito).

env

Este nodo contiene información básica del entorno, como la ruta a los archivos de trabajo y los archivos de salida. Los programas pueden usarlo para colocar directamente archivos en ellos. Sin embargo, esto no es una práctica recomendada.

Construcción del módulo

Se debe seguir un conjunto mínimo de reglas al escribir un módulo de abeja:

  • debería usar eslint generalmente siguiendo el conjunto de reglas de AirBnB. En XcooBee tenemos algunos cambios que están disponibles en el .eslintrc archivo de ejemplo en el proyecto de ejemplo.
  • debe tener cobertura de prueba para al menos 80% de su código
  • Proporcione un gráfico SVG que actuará como su identificador visual de abeja.
  • Proporcione el nombre de la abeja y el texto descriptivo en al menos uno de los idiomas admitidos para XcooBee.

 

Abeja de muestra

Puede ver una implementación de muestra de una abeja en este repositorio público. Esto no pretende ser completo o mostrar todos los elementos de la API del módulo de abeja. Sin embargo, debería poder ayudarlo a comenzar.

https://github.com/XcooBee/test-bee-simple

Probar tu trabajo

Tenemos una utilidad de prueba que puede incluir en sus proyectos para ejecutarlos localmente y observar y solucionar problemas en el entorno de desarrollo de su elección.

https://github.com/XcooBee/bee-test-utility

 

Requisito de revisión

Después de que su código esté completo y probado, puede enviarnos su repositorio poniéndose en contacto con developers @ xcoobee.com. Este proceso es manual en este momento, así que tengan paciencia con nosotros.

Módulo Bee para uso general:

Muchas gracias por contribuir a la comunidad y hacer mejoras. Tendrá que publicar sus abejas bajo licencia MIT o Apache para que podamos usarlo. Lo analizaremos en términos de costo de infraestructura y evaluaremos los puntos básicos apropiados para el uso.

Para uso privado o corporativo:

Si usted es una organización empresarial y está creando una abeja solo para uso interno, puede haber una evaluación de costos de servicio. Nos pondremos en contacto para discutir todos los detalles restantes, como el alcance de su abeja (quién puede usarla, a qué costo, etc.). También deberá aceptar algunos términos legales antes de que podamos publicar la abeja.

 

 

 

¿Te ayudó este artículo? si No

¿Cómo podemos ayudar?