Files
mcp-wms-wiki/wiki_old_13-05-2026/sources/archives/LIM-84 LOT2.2 [PICKING] Séquençage des tâches de picking TK PS.md
T
2026-05-20 09:41:27 +02:00

3.0 KiB
Raw Blame History

Séquençage TK → PS — Notes de conception

Contexte

Process de séquençage des tâches de picking (TK) vers les postes de sortie (PS), déclenché sur les événements du cycle de vie des ordres de sortie (OS).


Historique des solutions envisagées

Solution 1 — Process isolé sur finalisation des tâches d'OS

Principe :

  1. Process déclenché à la finalisation de la création des tâches d'un OS

  2. Séquençage des tâches via OS.Line.CstAtt

  3. OS marqué comme traité via OS.CstAtt = true

Problème : Pas assez dynamique en cas de recréation de tâches suite à des imprévus dans le WMS.


Solution 2 — Calcul dans le workflow stacker_crane

Principe : Intégrer le tri directement dans le WF Galileo_StackerCraneSearch_PR / StackerCrane_SortTasks_PR, avec recalcul complet du pool de tâches à chaque exécution. Supprime le besoin de OS.Line.CstAtt et OS.CstAtt

Problème : Wallah cest compliqué

.Where(t=>t.CustomAttribute <= t.OutboundOrder.SelectMany(o=>o.Tasks).Where(ot.ProcessType == XXX)).OrderBy(ot=>ot.CustomAttribute).FirstOrDefault()))


Solution 3 — Solution 1 transformée en job

Principe : Reprendre le process de la solution 1 sous forme de job planifié, en excluant les tâches de picking en cours.

Problème : Pas assez réactif par rapport à la cadence de recherche d'ordre des TK.


Solution 4 — Process événementiel (retenu)

Principe : Reprendre la solution 1 et la déclencher sur deux événements :

  • TaskCreatedEvent

    • Vérifier que la tâche est de type picking et que l'OS associé est au statut Released

    • Si oui :

      1. Passer OS.CstAtt = false pour bloquer la prise en charge par stacker_crane

      2. Récupérer l'ensemble des tâches de l'OS

      3. Filtrer sur les tâches en attente (exclure les tâches en cours)

      4. Appliquer l'algorithme de séquençage (cf. section suivante)

      5. Repasser OS.CstAtt = true

  • OutboundOrderReleasedEvent

    • Passer OS.CstAtt = false pour bloquer la prise en charge par stacker_crane

      • Peut arriver si OS arrêté puis relancé
    • Appliquer directement l'algorithme de séquençage sur les tâches

    • Passer OS.CstAtt = true

Avantages :

  • Plus simple à développer

  • Isolée et découplée

  • Flexible et réactive


Algorithme de séquençage (TK → PS)

  • Si la table TP est vide → priorité à la tâche de picking négatif (1 palette)

  • Vérification de la capacité PK/BUFFER (déjà custom https://easywmsfrance.atlassian.net/browse/LIM-61 — à modifier) :

    • Prendre en compte les palettes sources ayant des tâches de picking pour plusieurs PK
      (ex. : une palette peut enchaîner PK1 → ES_5 → PK2)
  • Paramètre MAX_NB_BUFFER_PK : nombre de buffers disponibles par PK — valeur par défaut : 3