Files
mcp-wms-wiki/wiki/limagrain/03-picking/job-assignation-pk.md
T
arthur 7496aafe64 lint(limagrain): corrections completes Phase 1+2
- Bloquants: mermaid 03-picking/_index reconstitue (archive 11-05), 13 liens vers pages squelette retires, 2 liens recibles (anoxie, application-dictionary)
- Conventions: 910 em dashes -> tirets simples, 145 checklists -> puces question, 13 questions resolues barrees
- Liens: 9 ancres reparees (slugs GitHub)
- Delta: 12 standard_ref remappes, blocs Standard EasyWMS + sections References ajoutes, front matter complete
- Glossaire: 15 termes standard deplaces en section rappel avec renvoi
- Rapport: limagrain/_lint_report.md (Phase 1 + Phase 2 + re-scan final)
- Inclut les pages des sessions precedentes non commitees + CLAUDE.md et consume.log en l'etat
2026-07-20 12:56:42 +02:00

20 KiB

title, tags, status, standard_ref, jira_refs, confluence_refs, sources, last_updated, author
title tags status standard_ref jira_refs confluence_refs sources last_updated author
Mega Job - Assignation des tâches aux PK
picking
job
assignation
agv
workflow
draft concepts/picking.md
LIM-70
LIM-74
LIM-75
LIM-80
LIM-82
LIM-106
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
Jira LIM-106 (lecture directe 2026-07-20)
2026-07-20 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, Stations & Routes Ce qui suit documente les spécificités Limagrain par rapport au standard.

Contexte projet

Statut (LIM-70) : dev terminé, en préprod / attente déploiement pour test. Deux revues de code validées : la première le 03/04/2026, la seconde le 29/06/2026 après ajout de la condition « OS en Releasing » et du contrôle CstAtt06 sur l'éligibilité.

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 (table de préparation associée comprise)
  • Aucun conteneur de réception assigné au PK via son CstAtt06 (le CstAtt06 porte le code du picking lié à un conteneur de réception) - contrôle ajouté le 26/06/2026
  • 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.

Le contrôle CstAtt06 confirme l'usage de cet attribut côté réception (conteneur ↔ poste de picking lié, cf. LIM-67) - voir le point de conflit d'usage dans questions ouvertes.

Condition de sortie globale - OS en Releasing

Avant toute assignation, le job vérifie qu'aucun ordre de sortie (OS) n'est au statut Releasing (query CST_AnyOutboundOrderReleasingStatus).

Si au moins un OS est en Releasing → le job sort immédiatement sans essayer aucun mode (réception, picking, recertif…).

Motif : lors de la libération d'un lot de commandes, le WMS les libère dans un ordre quelconque (pas forcément par priorité). Assigner pendant le release risquerait de placer une commande peu prioritaire au détriment d'une commande plus prioritaire libérée quelques secondes plus tard - ou de lancer une réception sur un PK en priorité picking.

Logique principale

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

Éléments AD (LIM-70)

Élément AD Type Rôle
CST_PickingStationAssignment_Job Workflow + Job Job orchestrateur : vérifie les modes autorisés des PK et tente d'assigner un ordre selon les priorités définies pour la station (LIM-69). Intervalle : 5 secondes.
CST_PickingStations_AvailableForAssignation Query Récupère les PK disponibles pour une nouvelle assignation : poste ouvert, sans conteneur ni tâche vers sa position (ni sa table de préparation), sans ordre assigné, et sans conteneur de réception assigné via CstAtt06.
CST_AnyOutboundOrderReleasingStatus Query Indique s'il existe au moins un OS au statut Releasing → condition de sortie globale du job.

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 Réception fournisseur / intersite / retour client (depuis images de quai) Job réception PK
Mini Job PS → PK LIM-75 AnnuléLIM-82 PS (picking station) → PK. Détail reporté à LIM-82 (à écrire sur LIM-82)
Mini Job assignation commandes → PK LIM-80 Assignation des ordres de sortie (commandes) aux PK pour picking Voir section ci-dessous
Mini Job assignation recertification → PK LIM-106 Assignation des OS de classe RECERTIFICATION aux PK + création des tâches d'acheminement (conteneurs d'expédition → PK) et de chargement au quai recertification 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)

Statut (LIM-80) : dev terminé, en cours de test client (pré-production). Revue de code validée le 26/06/2026.

Ce sous-workflow est le mode Picking du Mega Job. Il est appelé quand le mode Picking est actif sur un PK éligible et assigne un ordre de sortie (OS) au poste.

En standard EasyWMS, l'assignation des commandes aux PK est gérée par le workflow OutboundOrder_AssignPKMP_ByWarehouse_WF, déclenché par des subscriptions événementielles (ouverture de station, changement de mode de travail, etc.). Chez Limagrain ce déclenchement événementiel est désactivé (8 subscriptions passées en Disabled, cf. tableau plus bas) : c'est le Mega Job qui orchestre l'assignation lorsqu'un PK est éligible en mode Picking.

Éligibilité du PK

L'éligibilité du PK est entièrement vérifiée par le Mega Job (cf. section Éligibilité d'un PK ci-dessus) avant l'appel de ce mini job. Le mini job ne refait pas ces contrôles : il reçoit un PK déjà qualifié en mode Picking.

OS concernés

Tous les OS au statut Release ayant du stock assigné avec du picking à réaliser sont concernés, quel que soit leur type (commande client, messagerie palette, messagerie carton), sauf la recertification (OutboundClassCode == RECERTIFICATION).

Le PK ayant déjà été choisi par le Mega Job, le mini job assigne l'OS sur ce PK (contrairement au standard, pas de recalcul de routage ni de choix de PK).

Choix de la commande - critères de tri

L'OS le mieux assignable est sélectionné par la query CST_OutboundOrder_BestPendingAssignment_ForPK (OS Released, hors classe RECERTIFICATION, sans assignation existante, disposant de supports de picking). Les OS candidats sont triés dans cet ordre (arbitrage Justine du 19/06/2026) :

  1. Priorité de l'OS - définie par l'ERP dans le SOR/RUT
  2. Tâches de shipping - un OS déjà en cours de shipping passe en priorité, pour finir la commande en cours
  3. Date de libération - la plus ancienne en premier

Le premier jet (revue de code du 05/06/2026) triait par priorité → nombre de conteneurs de picking (décroissant) → date de libération. Le tri a été revu le 19/06/2026 : le critère « OS déjà en cours de shipping » remonte au-dessus du nombre de conteneurs, pour ne pas laisser une commande à moitié préparée.

Priorité Messagerie : il n'y a pas de priorisation custom côté WMS pour les commandes Messagerie. C'est SAP qui gère leur priorité en amont via la priorité du SOR (une Messagerie à expédier le jour même reçoit une priorité plus haute). Le paramètre PK_TRANSPORTEUR_MESSAGERIE envisagé initialement n'a pas été implémenté. ⚠️ À confirmer côté client (cf. questions ouvertes).

Création des tâches de picking

Après l'assignation, les tâches de picking sont créées (sortie des palettes source du TK vers le PS/PK). Elles alimentent le séquençage TK → PS (LIM-84).

Éléments AD (LIM-80)

Élément AD Type Rôle
CST_PickingStationAssignment_Picking_PR Workflow Mode Picking du Mega Job : récupère le meilleur OS assignable et crée l'assignation PK.
CST_OutboundOrder_BestPendingAssignment_ForPK Query Meilleur OS assignable (Released, hors RECERTIFICATION, sans assignation, avec supports de picking), trié priorité → tâches de shipping → date de libération.

Le workflow orchestrateur CST_PickingStationAssignment_Job (déjà décrit dans Éléments AD (LIM-70)) a été enrichi de l'appel de ce mini job d'assignation picking.

Subscriptions désactivées

Le déclenchement événementiel standard de OutboundOrder_AssignPKMP_ByWarehouse_WF est neutralisé (le Mega Job prend le relai). Les 8 subscriptions suivantes sont passées en Disabled :

Subscription Event
PickingStationOpenedStationEvent_OutboundOrder_AssignPKMP_ByWarehouse Ouverture d'un PK
PickingStationChangeWorkModeEvent_OutboundOrder_AssignPKMP_ByWarehouse Changement mode de travail PK
PickingStationChangedMaxOutboundOrdersEvent_OutboundOrder_AssignPKMP_ByWarehouse Changement max OS sur PK
MpStationChangeWorkModeEvent_OutboundOrder_AssignPKMP_ByWarehouse Changement mode de travail MP
MpStationAssignedModeEvent_OutboundOrder_AssignPKMP_ByWarehouse_WF Mode assigné à MP
DockStationChangeWorkModeEvent_OutboundOrder_AssignPKMP_ByWarehouse Changement mode de travail Dock
OrderAssignDeletedEvent Suppression d'une assignation de PK
OutboundOrderAssignedRouteEvent_OutboundOrder_AssingPKMP_ByWarehouse Assignation d'un OS à une route

Mini Job - Assignation recertification aux PK (LIM-106)

Statut (LIM-106) : dev terminé, en attente de déploiement pour test (livré en préprod le 03/06/2026). Revue de code Maxime le 29/06/2026 (ajustements ci-dessous).

Ce sous-workflow est le mode Recertification du Mega Job. Il est le pendant du mini job picking (LIM-80), mais pour les OS de classe RECERTIFICATION - que LIM-80 exclut justement de l'assignation picking standard. Le process de poste associé est décrit dans Recertification - Workstation au PK.

Assignation du PK

Le meilleur OS recertification en attente est sélectionné par la query CST_OutboundOrder_Recertification_BestPendingAssignment_ForPK et assigné au PK éligible. Les candidats sont triés dans cet ordre :

  1. Priorité de l'OS
  2. Date de libération - la plus ancienne en premier

Création des tâches

Les palettes à acheminer au poste sont des conteneurs d'expédition. Le process de création des tâches d'expédition standard est donc intercepté : Outbound_CreateShippingContainersTasks_PR filtre les OS de classe RECERTIFICATION et redirige vers le sous-WF custom CST_Outbound_Recertification_CreateShippingContainersTasks_PR, qui récupère le PK assigné à l'OS et crée les tâches de mouvement des conteneurs vers ce PK.

À l'arrivée du conteneur au PK (Container_MovedEventHandler_PK_PR), une tâche de chargement vers le quai de recertification est créée. La tâche de mouvement est marquée ProcessType = "recertification" (Container_MovedEvent_PR_V1) et porte le flag CstAtt02 = Recertification (affiché « Recertification » dans la vue des tâches TaskVList) - voir Catalogue AD customs - CstAtt Tâche.

CstAtt de recertification : 01 → 02. Le premier jet (revue Vincent 03/06) posait le flag sur le CstAtt01 de la tâche ; il a été déplacé sur le CstAtt02 (Maxime 26/06/2026), le CstAtt01 étant réservé au numéro de séquence picking (LIM-84).

Annulation des tâches

Si le conteneur d'expédition est supprimé (ShippingContainerDeletedEvent), la souscription CST_ShippingContainerDeleted_CancelRecertificationTask appelle CST_Container_CancelRecertificationTasks qui annule les tâches de mouvement de recertification associées au conteneur.

Garde-fous (revue Maxime 29/06/2026)

  • Pas de tâche générée si le conteneur porte déjà une tâche, ou si le support est sur l'AGV.
  • Blocage de la génération de tâche si aucun quai n'est assigné à l'OS de type RECERTIFICATION (erreur dans l'ordre de sortie).

Éléments AD (LIM-106)

Élément AD Type Rôle
CST_PickingStationAssignment_Recertification_PR Workflow Mode Recertification du Mega Job : sélectionne le meilleur OS recertification en attente et crée l'assignation PK.
CST_Outbound_Recertification_CreateShippingContainersTasks_PR Workflow Récupère le PK assigné à l'OS et crée les tâches de mouvement des conteneurs d'expédition vers le PK.
Outbound_CreateShippingContainersTasks_PR Workflow Modifié : filtre les OS de classe RECERTIFICATION et redirige vers le sous-WF custom de création de tâches.
Outbound_GetOutboundOrderShippingContainersAndPsGroup_PR Workflow Modifié : remonte le code de classe et la priorité de l'OS.
Container_MovedEvent_PR_V1 Workflow Modifié : positionne ProcessType = "recertification" sur la tâche si l'OS est de classe recertification.
Container_MovedEventHandler_PK_PR Workflow Modifié : crée une tâche de chargement vers le quai de recertification quand un conteneur termine une tâche de mouvement d'un OS recertification.
CST_Container_CancelRecertificationTasks Workflow Récupère et annule les tâches de recertification d'un conteneur (appelé par la souscription).
CST_OutboundOrder_Recertification_BestPendingAssignment_ForPK Query Meilleur OS recertification assignable à un PK (tri priorité → date de libération).
CST_OutboundOrderLineDetails_ByRecertificationContainer Query Détails de ligne d'OS pour un conteneur d'un OS recertification.
CST_RecertificationTasks_ByContainer Query Tâches de recertification associées à un conteneur.
CST_ShippingContainerDeleted_CancelRecertificationTask Subscription Sur ShippingContainerDeletedEvent, appelle CST_Container_CancelRecertificationTasks.
TaskVList Vue Ajout du CstAtt02 (flag « tâche de recertification »).
CST_Task_CustomAttribute1 Ressource i18n Libellé FR/EN « Recertification » de la colonne CstAtt tâche.

Points d'attention

⚠️ Le Mega Job est le chef d'orchestre du picking : il distribue le travail aux PK en fonction des modes configurés par PK.

⚠️ Priorité Messagerie gérée par SAP via la priorité du SOR - pas de custom WMS (PK_TRANSPORTEUR_MESSAGERIE non implémenté).

⚠️ L'éligibilité PK vérifie plusieurs conditions (poste ouvert, pas de commande, vide, pas de tâche en cours, pas de conteneur réception lié via CstAtt06, MODES_PKxx non vide).

⚠️ Le job sort globalement si au moins un OS est en Releasing (pas d'assignation pendant une libération de commandes).

Questions ouvertes

  • Fréquence du Mega Job - toutes les N secondes ou événementiel ?Résolu (LIM-70) : job périodique, intervalle 5 secondes.
  • Sous-WF regroupement et échantillonnage - quand les documenter ? (@Arthur)
  • Interaction PK_BIGBAG et modes de travail - un PK en mode Big-Bag peut-il aussi traiter du picking normal ? (@Nicolas)
  • Confirmer côté client que SAP gère la priorité des commandes Messagerie dans le SOR - PK_TRANSPORTEUR_MESSAGERIE abandonné (LIM-80) (@Arthur → Nicolas/Olivier) → voir questions ouvertes

Historique des modifications

Date Auteur Modification
2026-05-12 Arthur Création initiale depuis LIM-70 (Mega Job)
2026-05-12 Arthur Ajout sous-WF assignation commandes (LIM-80) : Messagerie prioritaire, affinité transporteur/PK
2026-05-13 Arthur Restauration sections tronquées (Messagerie détail, commandes standard, points d'attention, questions, historique, références)
2026-07-17 Arthur Relecture commentaires LIM-70 : section Éléments AD (CST_PickingStationAssignment_Job intervalle 5s, CST_PickingStations_AvailableForAssignation, CST_AnyOutboundOrderReleasingStatus), condition de sortie globale « OS en Releasing », contrôle éligibilité CstAtt06, statut préprod + 2 revues de code, résolution question fréquence (5s)
2026-07-17 Arthur LIM-75 (Mini Job PS → PK) confirmé Annulé → repris par LIM-82 : table sous-workflows annotée
2026-07-17 Arthur Relecture revue de code LIM-80 (préprod, validée 26/06) : refonte section mini job assignation (query CST_OutboundOrder_BestPendingAssignment_ForPK, WF CST_PickingStationAssignment_Picking_PR, 8 subscriptions désactivées, OS hors RECERTIFICATION) ; tri final priorité → tâches de shipping → date de libération (arbitrage Justine 19/06) ; abandon PK_TRANSPORTEUR_MESSAGERIE, priorité Messagerie gérée par SAP/SOR
2026-07-20 Arthur LIM-106 (lecture directe, attente déploiement test) : nouvelle section « Mini Job assignation recertification aux PK » (assignation OS RECERTIFICATION triée priorité → date de libération, création tâches de mouvement conteneurs d'expédition → PK + tâche chargement quai recertification, annulation sur suppression conteneur, garde-fous Maxime 29/06, flag CstAtt02 tâche déplacé du 01) ; ligne ajoutée à la table des sous-workflows

Références

Source Type Date
LIM-70 Ticket Jira (Mega Job, 7 commentaires) 2026-04 → 2026-06
LIM-80 Ticket Jira (assignation OS aux PK, 6 commentaires, préprod) 2026-06
LIM-74 Ticket Jira (Mini Job réception PK) 2026
LIM-75 Ticket Jira (Mini Job PS → PK, Annulé → LIM-82) 2026
LIM-82 Ticket Jira (Mini Job PS → PK, reprise) 2026
LIM-106 Ticket Jira (Mini Job assignation recertification aux PK, 3 commentaires, attente déploiement test) 2026-06