màj wiki avec retour MES lot-5 AD
This commit is contained in:
+95
@@ -0,0 +1,95 @@
|
||||
# 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 c’est 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](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**
|
||||
Reference in New Issue
Block a user