1. Accueil
  2. Documents
  3. Documentation développeur
  4. Modules d'abeilles

Modules d'abeilles

Les abeilles

Si vous avez travaillé avec XcooBee, vous savez que le flux de travail XcooBee est organisé autour des abeilles. Les abeilles peuvent travailler seules ou dans les ruches pour accomplir des tâches. Cependant, le paradigme est beaucoup plus extensible. Chaque abeille est un module de micro-service autonome. Ces modules de service peuvent être écrits par tout développeur souhaitant apprendre les modèles de module.

Actuellement, les modules bee peuvent être écrits en JavaScript s'exécutant dans un environnement NodeJS. Nous prenons en charge NodeJS 8.10. Nous travaillons à rendre cela disponible dans C#, Java et Python dans les phases ultérieures de XcooBee.

Une fois votre code terminé et testé, vous pouvez nous soumettre votre référentiel en contactant les développeurs @ xcoobee.com. Ce processus est manuel à ce stade, veuillez donc rester avec nous.

 

Le cycle de vie du module abeille

Votre code agira essentiellement comme un module de nœud indépendant (agent ou plugin) que nous appelons chez XcooBee bee. Les abeilles fonctionnent dans un environnement restreint avec une limitation de temps et d'espace (mémoire et disque). Les abeilles peuvent être exécutées en séquence, auquel cas la séquence des exécutions est appelée trajectoire de vol. Le plan (classe) d'une multitude d'abeilles est appelé Ruche. Les abeilles peuvent communiquer le long du trajet de vol en utilisant le traitement de vol objet de données si nécessaire. Chaque abeille travaille indépendamment sur le fichier d'entrée fourni pour produire un fichier de sortie pour la prochaine abeille à traiter. Le dernier fichier de sortie traité est ce qui est retourné à l'utilisateur ou au destinataire désigné.

Le cycle de vie se compose de trois étapes

  • invocation
  • exécution
  • fermer

invocation

Le système XcooBee invoquera le vol() méthode de votre fichier de code principal pour votre module comme indiqué dans le fichier package.json de votre module. Il utilisera la signature suivante:

vol (services, données, rappel) {}

Pendant l'invocation prestations de service et Les données les arguments sont remplis. Ils vous permettent de lire le fichier d'entrée et d'avoir un aperçu de l'environnement.

exécution

L'étape d'exécution est laissée à votre imagination. Tout ce que vous souhaitez faire avec le fichier d'entrée peut être fait en respectant les restrictions de temps de traitement, de mémoire et d'espace disque. Les limites actuelles sont

  • temps:
    • petite instance: 25s
    • instance moyenne: 140s
    • grande instance: 280 s
  • Mémoire
    • petit: 192 Mo
    • moyen: 1024 Mo
    • grand: 1536 Mo
  • disque: 512 Mo

fermer

Un arrêt ordonné se produit lorsque vous appelez le rappeler() fonction qui vous a été transmise lors de l'invocation à la fin de votre traitement. Vous pouvez l'appeler avec un message d'erreur ou de réussite. En cas d'erreur, le système XcooBee réessayera votre abeille deux fois de plus. Si vous ne terminez pas votre traitement dans le temps alloué à votre instance, il est considéré comme un arrêt non ordonné. Votre processus sera interrompu et XcooBee le traitera comme un rappel d'erreur.

Exemple de rappel de réussite

callback (nul, "message de réussite");

Exemple de rappel d'erreur

callback ("problème survenu avec le fichier", null);

Prestations de service

Chaque abeille lorsqu'elle est invoquée recevra une collection de services et une collection de données pour mener ses opérations. Ceci est passé comme prestations de service argument lors de l'appel de la fonction flight ().

journal (message, type)

Vous pouvez utiliser le journal pour créer des entrées de trace pour votre traitement. Utilisez ce service pour rédiger les commentaires relatifs au traitement des fichiers. Ceci n'est généralement pas affiché à l'utilisateur final mais disponible pour le support XcooBee. où message = chaîne: le message à consigner où type = enum l'un des (info | avertissement | erreur)

writeStream ()

flux d'écriture par défaut Si votre abeille produit une sortie dans le cadre du traitement, vous pouvez l'utiliser par défaut writeStream () pour le diffuser sur disque. Si vous avez besoin d'un nom de fichier spécifique, vous pouvez utiliser le writeStreamManager () pour en créer une comme alternative.

readStream ()

flux de lecture par défaut Ce flux a accès au fichier d'entrée de votre processus.

writeStreamManager (nom de fichier, type)

type: essuyer | bee_output

factory pour ajouter des flux d'écriture si bee a défini l'option. Vous pouvez l'utiliser pour créer plusieurs fichiers sur le disque de traitement. Vous pouvez créer des travaux dans des fichiers de processus ou des fichiers de sortie en fonction de la sélection du type.

timeToRun ()

des informations sur le temps restant avant que l'abeille ne s'arrête. La métrique est en millisecondes.

addParam (clé, valeur)

Ajoutez un paramètre au traitement de vol objet. C'est ainsi que nous pouvons communiquer avec les abeilles en aval sur la trajectoire de vol. Ajouter des données à la structure des paramètres à fournir à la prochaine abeille (modifie le fichier de directive, voir le fichier de directive dans la documentation du développeur).

getNextId ()

Générateur de séquence. Renvoie le prochain entier disponible. Cela commence par 1.

mail (modèle)

Vous pouvez essayer d'envoyer un e-mail à l'utilisateur. Pour ce faire, vous devez connaître la référence du modèle de courrier XcooBee et les valeurs de remplacement. Plus de détails à ce sujet dans le futur. Cela est également soumis aux préférences de notification des utilisateurs.

L'objet de données

Lorsque votre abeille est invoquée, un certain ensemble de données est mis à sa disposition via le Les données argument dans la définition de votre fonction [flight (services, Les données, rappeler)]. Cela permet aux informations de base de circuler vers l'abeille pour le traitement et il a plusieurs sous-clés. Toutes les sous-clés sont facultatives.

Les sous-clés sont: intégrations, user_data, parameters, flightprocessing et env

intégrations

Si l'abeille nécessite des jetons d'accès de la plate-forme XcooBee et que l'utilisateur l'a autorisé, la plate-forme XcooBee remplira ce nœud avec les informations spécifiques nécessaires pour chaque intégration. La structure de l'objet dépendra de l'intégration accédée.

données d'utilisateur

Données de base sur l'utilisateur telles que le nom et XcooBeeId. Celui-ci contiendra également la référence externe de l'utilisateur transmise via userReference élément du fichier de directive abeille.

paramètres

Les paramètres de traitement qui ont été fournis par l'utilisateur pendant le processus d'embauche de l'abeille et écrits dans le fichier de directive abeille.

traitement de vol

C'est un objet de communication partagé par toutes les abeilles. Les abeilles peuvent ajouter des données à l'aide du addParam (clé, valeur) un service. Les abeilles peuvent lire toutes les données enregistrées par les abeilles précédentes (pour un traitement en plusieurs étapes). Ils peuvent écrire de nouvelles données. Les ne peuvent remplacer que leurs propres données (données que cette abeille a écrites).

env

Ce nœud contient des informations d'environnement de base telles que le chemin d'accès aux fichiers de travail et aux fichiers de sortie. Cela peut être utilisé par les programmes pour y placer directement des fichiers. Cependant, ce n'est pas une pratique recommandée.

Construction du module

Un ensemble minimal de règles doit être suivi lorsque vous écrivez un module abeille:

  • vous devez utiliser eslint en suivant généralement l'ensemble de règles AirBnB. Chez XcooBee, nous avons quelques changements qui sont disponibles dans le .eslintrc exemple de fichier dans l'exemple de projet.
  • vous devez avoir une couverture de test pour au moins 80% de votre code
  • Fournissez un graphique SVG qui servira d'identifiant visuel d'abeille.
  • Fournissez le nom de l'abeille et le texte descriptif dans au moins l'une des langues prises en charge par XcooBee.

 

Échantillon d'abeille

Vous pouvez voir un exemple d'implémentation d'une abeille dans ce dépôt public. Ce n'est pas censé être complet ou montrer pleinement tous les éléments de l'API du module bee. Il devrait cependant pouvoir vous aider à démarrer.

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

Tester votre travail

Nous avons un utilitaire de test que vous pouvez inclure dans vos projets pour les exécuter localement et observer et résoudre les problèmes dans l'environnement de développement de votre choix.

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

 

Exigence de révision

Une fois votre code terminé et testé, vous pouvez nous soumettre votre référentiel en contactant les développeurs @ xcoobee.com. Ce processus est manuel à ce stade, veuillez donc rester avec nous.

Module Abeille pour une utilisation générale:

Un grand merci pour votre contribution à la communauté et vos améliorations. Vous devrez publier vos abeilles sous licence MIT ou Apache pour que nous les utilisions. Nous le ferons passer par une analyse en termes de coût d'infrastructure et évaluerons les points de base appropriés à l'utilisation.

Pour un usage privé ou professionnel:

Si vous êtes une organisation commerciale et que vous créez une abeille à usage interne uniquement, il peut y avoir une évaluation des coûts de service. Nous vous contacterons pour discuter de tous les détails restants tels que la portée de votre abeille (qui peut l'utiliser, à quel prix, etc.). Vous devrez également accepter quelques conditions juridiques avant que nous puissions publier l'abeille.

 

 

 

Cet article vous a-t-il été utile ? Oui Non

Comment pouvons-nous aider ?