2 votes

Comment représenter un diagramme d'activités avec plusieurs tâches planifiées en arrière-plan ?

J'aimerais savoir quelle est la bonne façon de visualiser les tâches d'arrière-plan qui s'exécutent selon un calendrier contrôlé par un service d'ordonnancement ?

À mon avis, la bonne méthode consiste à avoir une action représentant la programmation elle-même, suivie d'un nœud de bifurcation qui divise le flux pour chacun des travaux programmés.

enter image description here

Exemple. Selon un calendrier, le service X est censé collecter chaque jour des données à partir d'une API, et selon un autre calendrier, le service Y est censé agréger les données collectées.

J'ai essayé de rechercher d'anciens thèmes et de trouver un diagramme représentant une activité similaire.

1voto

Christophe Points 5220

C'est ce qu'indique votre schéma actuel :

  • le planificateur fait d'abord quelque chose (par exemple, il identifie les travaux à lancer)
  • transmet ensuite le contrôle en parallèle à tous les travaux qu'il souhaite lancer
  • aucun autre travail n'est programmé après que l'ordonnanceur a terminé sa tâche
  • le premier travail qui se termine interrompt tous les autres.

Le fonctionnement devrait être le suivant :

  • le planificateur est d'abord mis en place
  • Ensuite, le programme lance l'ordonnanceur réel, qui fonctionnera en parallèle avec les tâches programmées.
  • les tâches planifiées peuvent se terminer (flux de fin, c'est-à-dire un cercle avec un X à l'intérieur) sans que tout soit terminé
  • l'activité ne s'arrête (flux final) que lorsque l'ordonnanceur a terminé.

Il convient de noter que les spécifications UML ne précisent pas comment le parallélisme est mis en œuvre. Il en va de même pour votre ordonnanceur : qu'il s'agisse d'un véritable parallélisme utilisant des unités centrales multithread ou des unités centrales multiples, ou qu'il s'agisse d'un découpage temporel dans lequel certaines interruptions sont utilisées pour passer d'une tâche à l'autre alors qu'elles sont exécutées en réalité par petits morceaux séquentiels, n'est pas pertinent pour cette modélisation.

Les défis restants sont les suivants :

  • l'ordonnanceur pourrait lancer des travaux supplémentaires. Une façon de le faire pourrait être de revenir à lui-même et à un nouveau travail.
  • le planificateur pourrait lancer un nombre variable de travaux en parallèle. Une meilleure façon de le représenter est d'utiliser un «parallel» région en expansion avec l'entrée correspondant à l'objet de la tâche, et les actions qui consomment les tâches en les exécutant.
  • si l'ordonnanceur fonctionne en parallèle avec la région d'expansion, on peut également imaginer que l'ordonnanceur fournit à tout moment des données supplémentaires (nouvelles tâches à traiter).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X