# BC Scheduling

De nombreux processus et événements dans les différents BCs de la plateforme Mojaloop Switch nécessitent une fonctionnalité permettant de déclencher des actions à des moments précis ou selon un calendrier défini. Afin de prendre en charge ce besoin de manière centralisée et d’éviter d’implémenter cette fonctionnalité dans chaque BC, un seul BC dédié à la planification sera introduit et mis en œuvre sur la plateforme Switch.

Pour planifier un processus ou un événement, un BC Client soumet une demande au Scheduling BC pour créer un rappel destiné à être déclenché à un horaire précis ou selon une récurrence. Le Scheduling BC maintient un registre de tous les rappels reçus et, lorsque le moment fixé arrive, il envoie une notification du rappel au BC Client concerné.

De plus, le Scheduling BC fournira également des services au Switch pour permettre aux BC Clients et aux administrateurs du Switch de gérer les rappels.

# Termes

Le(s) terme(s) suivant(s) sont utilisés dans ce BC :

Terme Description
BC Client Tout autre BC utilisant les services du Scheduling BC

# Cas d’Utilisation

L’état des cas d’utilisation (UC) pour le Scheduling BC est le suivant :

UCs Disponibles UCs Prévus
Cas d'utilisation Description Cas d'utilisation Description
Créer un rappel Le BC Client demande la création d’un rappel Requête de rappel du client Le BC Client interroge ses propres rappels
Supprimer un rappel Le BC Client demande la suppression d’un rappel Requête de rappel de l’administrateur L’administrateur de la plateforme interroge tous les rappels
Déclenchement du rappel Le Scheduling BC exécute le déclenchement du rappel lorsque le moment est venu
Mettre à jour un rappel Non fourni. Solution recommandée : supprimer et créer un nouveau Rappel

# Créer un rappel

# Description

Ce flux permet au Switch de traiter les demandes autorisées des BC Clients pour créer des rappels.

# Diagramme de flux

Créer un rappel

# Déclenchement du rappel

# Description

Ce flux permet au Switch de traiter les rappels envoyés du Scheduling BC à un BC Client pour exécuter une tâche, ou simplement comme rappel.

# Diagramme de flux

Déclenchement du rappel

# Suppression d’un rappel (récurrent)

# Description

Ce flux permet au Switch de gérer les messages des BC Clients autorisés au Scheduling BC pour supprimer un Rappel. Si le Scheduling BC ne parvient pas à traiter l’instruction, il envoie un message d’alerte au Notifications BC.

# Diagramme de flux

Suppression d’un rappel récurrent

# Notes

# Créer un Rappel – Données requises

La demande de Création de Rappel doit inclure les données suivantes :

Donnée Description
Identifiant nom/id
Définition Cron récurrent ?, intervalle de temps ?
Transport de Déclenchement Callback HTTP/Événement ; URL de Callback ou Sujet d'Événement
Payload Spécial opaque pour le Scheduling BC
Conditions de récupération nouvelle tentative, replanification, abandon, abandon
Alertes notification, journalisation en cas d’exception
Actions registre des processus BC automatisables/planifiables

# BC Scheduling – Exigences

Le Scheduling BC doit répondre aux exigences suivantes :

  • Les rappels ne doivent être déclenchés qu’une seule fois

  • Le BC doit conserver l’historique des Rappels déclenchés

  • Le BC doit garder l’historique des actions de Création/Lecture/Suppression

    • Les mises à jour seront facilitées via les actions Suppression/Création, comme indiqué dans la liste des UCs disponibles
  • Lots de tâches (Job batches)

  • Offrir plusieurs options d’interface (gRPC, REST, HTTP, etc.)

  • Les rappels doivent être déclenchés avec un callback HTTP, pas un appel gRPC, ou vers un sujet spécifique

  • Il ne doit pas avoir la capacité de traiter de la logique externe au Scheduling BC lui-même

  • Utiliser exclusivement les horodatages UTC basés sur Linux pour éviter les problèmes de synchronisation

Remarque : Il est supposé que le système sous-jacent maintiendra une heure parfaite.

# BC Scheduling – Exigences en suspens

Les exigences d’accès pour le Scheduling BC restent à définir.

# BC Scheduling – Exceptions

  • Instructions malformées
    • Date/heure invalide, y compris des heures dans le passé
    • BC ou commande invalide
  • Échec d’exécution (identifié via le callback)
  • Autorité insuffisante du BC Client pour réaliser l’opération CRD
  • Échec du traitement/exécution du Rappel

# Questions

Certaines questions sont apparues lors des sessions d’architecture de référence. Jugées utiles pour le plus grand nombre, elles sont incluses ci-dessous :

  • Après que la tâche planifiée a été initiée, le Scheduling BC reste-t-il responsable du suivi de sa progression ?

    • Réponse : Non. Lorsque le rappel est dû, il est communiqué au BC Client selon la méthode prévue, et la responsabilité du rappel est alors transférée au BC Client.
  • Est-ce le BC Client ou la personne qui a planifié le Rappel qui est noté comme « Utilisateur » par le Scheduling BC ? En d’autres termes, quel ID est inscrit dans la piste d’audit (audit trail) ?

    • Réponse : Cela doit être déterminé par le BC Client, selon l’action qu’il entreprend à la réception du rappel.