Files
mcp-wms-wiki/wiki/limagrain/03-picking/.fuse_hidden0000003300000012
T
2026-05-20 09:41:27 +02:00

212 lines
8.6 KiB
Plaintext

---
title: "Mega Job — Assignation des tâches aux PK"
tags: [picking, job, assignation, agv, workflow]
status: draft
standard_ref: concepts/picking.md
jira_refs: [LIM-70, LIM-74, LIM-75, LIM-80]
confluence_refs: []
sources: ["LIM-70 LOT1.3 [AGV][JOB] MEGA JOB - assignation d'ordre par priorité de process par PK.md", "LIM-80 LOT2.1 2 Mini Job Assignation des postes PK aux commandes.md"]
last_updated: 2026-05-12
author: Arthur
---
# Mega Job — Assignation des tâches aux PK
> **Résumé** : job unique « chef d'orchestre » qui analyse les postes de
> travail éligibles et leur assigne des tâches de mouvement selon les
> modes autorisés et leur priorité. Évite la concurrence entre
> mini-jobs indépendants.
> **Standard EasyWMS** : → voir [Picking](../../concepts/picking.md),
> [Stations & Routes](../../concepts/stations.md)
> Ce qui suit documente les **spécificités Limagrain** par rapport au
> standard.
## Contexte projet
Chez Limagrain, les postes de travail (PK) sont polyvalents : réception,
picking, regroupement, échantillonnage, re certification. Plusieurs
flux différents génèrent des tâches de mouvement vers les PK. Sans
orchestration centralisée, ces flux se feraient concurrence.
Le Mega Job est un **job unique** avec une entête qui analyse l'ensemble
des supports concernés et, selon leur emplacement d'origine et leurs
caractéristiques, délègue à des **sous-workflows** dédiés.
## Éligibilité d'un PK
Pour qu'un poste soit éligible à une nouvelle assignation, **toutes** les
conditions suivantes doivent être remplies :
- **Aucun ordre de sortie** assigné au PK (écran Menu > Contrôle >
Affectation des postes de prélèvements)
- **Aucune tâche de mouvement** ayant pour destination ce PK
- **Aucune palette** présente sur un des sous-emplacements du PK
- **Le poste est ouvert** (mode actif)
- **Le paramètre MODES_PKxx existe et n'est pas vide** — sinon le PK
est ignoré
Si un PK ne remplit pas ces conditions, le job le saute et passe au
suivant.
## Logique principale
```mermaid
flowchart TD
A[Début du job] --> B[Lister les PK ouverts]
B --> C{PK éligible ?}
C -- Non --> D[PK suivant]
C -- Oui --> E[Lire MODES_PKxx]
E --> F{Paramètre existe et non vide ?}
F -- Non --> D
F -- Oui --> G[Trier les modes par priorité]
G --> H[Exécuter sous-WF du mode priorité 1]
H --> I{Tâche assignée ?}
I -- Oui --> D
I -- Non --> J[Exécuter sous-WF du mode priorité 2]
J --> K{Tâche assignée ?}
K -- Oui --> D
K -- Non --> L[... mode suivant ...]
L --> D
D --> M{Autres PK ?}
M -- Oui --> C
M -- Non --> N[Fin du job]
```
Pour chaque PK éligible :
1. Le WMS récupère le paramètre `MODES_PKxx` (x = numéro du poste)
2. Les modes sont triés par priorité croissante
3. Le sous-workflow du mode de priorité la plus haute est exécuté
4. Si le sous-WF a assigné une tâche → passage au PK suivant
5. Sinon → exécution du sous-WF du mode suivant dans l'ordre de priorité
6. Si aucun sous-WF n'a rien assigné → le PK reste en attente
## Gestion des Big-Bags
Le paramètre `PK_BIGBAG` définit quels PK autorisent la présence de
big-bags (physiquement : P5 et P6 avec palan).
- Les ordres contenant des supports big-bag sont **interdits** sur les
PK qui ne les autorisent pas
- Ces ordres sont **prioritaires** (en respectant le séquençage des
process en première priorité) sur les PK qui les autorisent
## Sous-workflows
Le Mega Job délègue la création effective des tâches à des sous-workflows
spécialisés :
| Sous-WF | Ticket | Process | Page wiki |
|---------|--------|---------|-----------|
| Mini Job images de quai → PK | [LIM-74](https://easywmsfrance.atlassian.net/browse/LIM-74) | Réception fournisseur / intersite / retour client (depuis images de quai) | [Job réception PK](../05-agv/job-reception-pk.md) |
| Mini Job PS → PK | [LIM-75](https://easywmsfrance.atlassian.net/browse/LIM-75) | _(tâche à écrire)_ | — |
| Mini Job assignation commandes → PK | [LIM-80](https://easywmsfrance.atlassian.net/browse/LIM-80) | Assignation des ordres de sortie (commandes) aux PK pour picking | Voir section ci-dessous |
Chaque sous-workflow retourne une information au WF principal indiquant
s'il a assigné quelque chose ou non.
## Mini Job — Assignation commandes aux PK (LIM-80)
Ce sous-workflow est appelé par le Mega Job quand le mode **Picking** est
actif sur un PK. Il assigne un ordre de sortie (commande) au poste.
### Éligibilité du PK pour une commande
Le PK peut recevoir une commande si **toutes** les conditions sont
remplies :
- Le PK **autorise la préparation de commande** (mode Picking actif)
- Le PK **n'a pas de commande déjà assignée**
- Le PK **est vide** (aucune palette présente)
- Le PK **n'a aucune tâche en direction de celui-ci**
### Choix de la commande
```mermaid
flowchart TD
A[PK éligible en mode Picking] --> B{Commande Messagerie\ndisponible ?}
B -- Oui --> C{PK_TRANSPORTEUR_MESSAGERIE\ncontient une valeur ?}
C -- Non --> D[Assigner 1ère Messagerie\net enregistrer PK dans param]
C -- Oui --> E{Valeur = ce PK ?}
E -- Oui --> F[Assigner prochaine Messagerie\ndu même transporteur]
F --> G{Commande trouvée ?}
G -- Non --> H[Vider le paramètre]
E -- Non --> I[Ignorer les Messagerie\nde ce transporteur]
I --> J[Chercher autre commande]
B -- Non --> J
H --> J
J --> K[Assignation standard\npar tournée / numéro d'arrêt]
```
#### Commandes Messagerie (prioritaires)
Les commandes de **classe Messagerie** sont expédiées le jour même et
sont donc **prioritaires** sur les autres commandes.
**Affinité transporteur ↔ PK** : une fois qu'un PK est choisi pour une
commande Messagerie, **toutes les commandes Messagerie du même
transporteur** doivent être assignées au même PK. Le mécanisme repose
sur un paramètre par transporteur :
- `PK_TRANSPORTEUR_MESSAGERIE` : contient le code du PK assigné
- Si le paramètre contient une valeur correspondant au PK analysé →
assigner la prochaine commande Messagerie de ce transporteur
- Si la valeur correspond à un **autre PK** → ignorer toutes les
Messagerie de ce transporteur pour ce PK
- Si le PK a le paramètre mais qu'**aucune commande** Messagerie de ce
transporteur n'est trouvable → **vider le paramètre**
- Si le paramètre contient le nom du PK → le PK ne peut assigner **que**
des Messagerie de ce transporteur (exclusivité tant que le
paramètre est actif)
#### Autres commandes (standard)
Le processus standard est utilisé : assignation d'une commande à une
table de préparation et un PK, en respectant l'ordre de la **tournée**
(numéro d'arrêt croissant — plus petit numéro d'arrêt en premier).
## Paramètres
| Paramètre | Description | Valeur par défaut |
|-----------|-------------|-------------------|
| MODES_PKxx | Modes autorisés + priorité pour le PK xx (un par PK, renseigné via la vassist — voir [Stations picking](stations-picking.md)) | _(vide)_ |
| PK_BIGBAG | PK autorisant les big-bags | _(à définir — P5, P6)_ |
| PK_TRANSPORTEUR_MESSAGERIE | Code PK assigné au transporteur Messagerie en cours (un paramètre par transporteur) | _(vide)_ |
## Points d'attention
> **À reprendre par @Michael** : l'entête du job doit checker tous les
> PK en attente de tâche, vérifier leurs modes autorisés et la séquence
> de priorité pour entrer dans le sous-WF nécessaire.
- Le job standard `Task_GenerateMovementJob_PR` gère le passage
"en attente" → "créé" ; le Mega Job ne remplace pas ce mécanisme
mais crée les tâches en amont
- Un PK fermé n'est jamais éligible — le job le vérifie dès la première
condition
## Questions ouvertes
- [ ] Fréquence d'exécution du Mega Job à définir (@Michael)
- [ ] Sous-WF pour regroupement, échantillonnage : tickets à créer ?
- [ ] Interaction entre PK_BIGBAG et les modes : si P5 est en mode
regroupement, accepte-t-il quand même les big-bags en réception ?
## Historique des modifications
| Date | Auteur | Modification |
|------|--------|--------------|
| 2026-05-12 | Arthur | Création initiale depuis LIM-70 |
| 2026-05-12 | Arthur | Ajout sous-WF assignation commandes (LIM-80) |
## Références
| Source | Type | Date |
|--------|------|------|
| [LIM-70](https://easywmsfrance.atlassian.net/browse/LIM-70) | Ticket Jira | 2026 |
| [LIM-74](https://easywmsfrance.atlassian.net/browse/LIM-74) | Ticket Jira | 2026 |
| [LIM-75](https://easywmsfrance.atlassian.net/browse/LIM-75) | Ticket Jira | 2026 |
| [LIM-69](https://easywmsfrance.atlassian.net/browse/LIM-69) | Ticket Jira (modes PK) | 2026 |
| [LIM-80](https://easywmsfrance.atlassian.net/browse/LIM-80) | Ticket Jira (assignation commandes PK) | 2026 |