Skip to main content

Picking and Task Manager: diagrams

These pages draw picking and the Task Manager from the code. There are sequence diagrams (who calls what, in which order), state diagrams (only where the code proves each arrow) and influence diagrams (this setting changes this decision, and the operator or supervisor then sees this). Every page ends with a table that points to the code.

Scope: the pick task and its life, the pick assignment of a cart, the RF pick screens, the supervisor screens of the Task Manager, and the settings that picking reads. Allocation, cartonization, packing and shipping have their own areas. This area stops where a pick hands its goods on: a pallet closed at its destination, or a cart delivered.

Sequence diagrams​

PageThe question it answers
10 How a pick becomes a taskWhat turns a reserved pick into a task in the pool?
11 How an operator takes a taskHow does pick_dispatch_next choose and assign a task?
12 How a cart is builtHow does a cart get several boxes' tasks and its boxes?
20 RF journey: one pick onto a palletWhich calls does the RF make from the card to the commit?
21 RF journey: stops on a cartHow is a cart route walked, skipped, shorted and rejected?
22 Short pickWhat happens when the operator finds less stock?
23 Drop-off of a palletWhere does a discrete pick wait, and how is the pallet closed?
24 Drop-off of a cartHow is a cart delivered and unloaded?
30 How a held task leaves its operatorWhich doors return, reassign or dissolve, and in which state does the task end?
31 Box fullWhat happens when a box is full, and how is a failed repair recovered?
32 Box damagedHow is a damaged box replaced on a cart?

State diagrams​

PageContent
40 StatusesTask, pick, pick assignment, cart position, box-full exception.

Influence diagrams​

PageThe question it answers
50 Which policy is readWhich picking policy revision does each part of picking read?
51 Cart policy fieldsWhat do Unit, Max Targets, Carrier Required, Quantity, Target, Completion change?
56 Pallet fieldsWhat do Pallet Drop Cell Types and Count an Emptied Location change?
57 Source proof fieldsWhat decides which scans the operator must make at the shelf?
52 Who gets which taskWhich rights, areas, equipment and flags decide who is offered a pick task?
53 Short reasonsWhat does each field and action of a short reason change?
54 SKU and lot settingsWhich SKU, lot and serial settings does picking read?
59 Location and zone settingsWhich location and zone fields does picking read?
58 Delivery locationHow is the destination of a pallet or a cart found?
55 Task settingsWhat do TASK_* settings and the release flags change?

RF screens and API methods used in these pages​

The screen codes and titles are those of the newest seeded revision in crates/libs/wms-lib-sql/sql/rf-screens/.

ScreenTitleAPI method
PICK01Get Pick Workpick_dispatch_next
PKAA, PKAE, PKAELPick by Area, Equipmentnone (the equipment list is read with list_equipment_profile)
PKA00Get Area Workpick_dispatch_next
PICK02Pick Workpick_work_get (prefetch)
PICK03Open Palletpick_drop_open
PICK04, PICK05, PICK06, PICK14, PICK15Confirm Source, Item, Source LPN, Lot, Lot Attributepick_confirm_location, pick_confirm_item, pick_confirm_source_lpn, pick_confirm_internal_lot, pick_confirm_lot_attributes
PICK07Pick Serialspick_confirm_serial
PICK08Confirm Quantitypick_confirm_qty
PICK09Confirm Pickpick_commit
PICK10, PICK10R, PICK10CShort Pick, Short Reason, Confirm Shortpick_short (from PICK10C)
PICK11Reject Pickpick_reject
PICK13, PICK13_OVRClose Pallet, Supervisor Confirmationpick_drop_close, supervisor_override_grant
PICKINSPick Instructionsnone (the acceptance is sent with the commit)
PKA01Scan Carrierpick_assignment_start
PKA02Prepare Carrierpick_assignment_bind_position
PKA09, PKA_OVRDissolve, Supervisor Confirmationpick_assignment_dissolve, supervisor_override_grant
PKA20Next Pickpick_assignment_get (prefetch)
PKA21, PKA21L, PKA21A, PKA22, PKA23Confirm Location, Lot, Lot Attribute, Item, Source LPNthe same pick_confirm_* methods
PKA24, PKA24SConfirm Quantity, Pick Serialspick_confirm_qty, pick_confirm_serial
PKA25, PKA26C, PKA27, PKA28Skip, Confirm Short, Reject Pick, Into Boxpick_assignment_skip, pick_short, pick_reject, pick_commit
PKA30Deliver Carrierpick_assignment_complete
PKA50, PKA51, PKA52Box Full, Box Damaged, Recoverypick_assignment_position_close, pick_assignment_position_replace_container, pick_assignment_position_hand_over

Supervisor screens (Task Manager group) call task_force_release, task_reassign, task_delete_many, pick_assignment_list, pick_assignment_dissolve_supervised, cartonization_exception_list and cartonization_exception_retry.

Reading rules​

  • A box in a diagram is something the code does. A name in code font is a method, a table column, a status or a setting as the code or the screen spells it.
  • An arrow in a state diagram is drawn only when a statement in the code writes that change.
  • A setting appears in an influence diagram only if code reads it. Settings that are stored but not read are listed under "Stored only. It has no effect today." on the page that fits them.

Where it comes from​

WhatSource
RF screens, newest seeded revisionscrates/libs/wms-lib-sql/sql/rf-screens/094_uc_pick.sql, crates/libs/wms-lib-sql/sql/rf-screens/095_uc_pick_assignment.sql, crates/libs/wms-lib-sql/sql/rf-screens/096_uc_pick_route.sql, crates/libs/wms-lib-sql/sql/rf-screens/098_uc_pick_carton_exceptions.sql, crates/libs/wms-lib-sql/sql/rf-screens/101_uc_pick_drop_close.sql, crates/libs/wms-lib-sql/sql/rf-screens/105_uc_pick_source_confirmation.sql, crates/libs/wms-lib-sql/sql/rf-screens/110_uc_pick_aggregated_cart.sql, crates/libs/wms-lib-sql/sql/rf-screens/111_uc_pick_drop_area.sql, crates/libs/wms-lib-sql/sql/rf-screens/112_uc_pick_aggregated_cart_followups.sql, crates/libs/wms-lib-sql/sql/rf-screens/113_rf_inputs_fit_the_server_limits.sql
Pick methods and their classescrates/services/app-server/src/web/rpcs/pick_commands_rpc.rs, crates/services/app-server/src/web/rpcs/pick_assignment_rpc.rs
Task methodscrates/services/app-server/src/web/rpcs/task_commands_rpc.rs, crates/services/app-server/src/web/rpcs/task_rpc.rs
Task Board rowscrates/libs/wms-lib-sql/sql/wms-app/migrations/001_baseline.sql:6153-6215 (view task_board)
Method listdocs-obsidian/user-guide/api/openrpc.json

What is not drawn, and why​

  • Not confirmed by code: sorting, loading and shipping after a pick. A pallet or a cart ends at its destination, and the goods can be handed to the Outbound Flow Router, which waits for Pack at a pack station. What happens at a sort or load step is not part of the picking code. To verify: read crates/libs/wms-outbound/src/flow/ and the packing area.
  • Replenishment. A Replenish task type exists and rights can be granted for it. A search of the Rust code finds no code that creates such a task.
  • Dispatch strategies other than the fixed order. The code has one fixed search order (held task, then the area, then every permitted area). A configurable strategy for the pool is not in code. To verify: read crates/libs/wms-tasks/src/service/candidate.rs.
  • Task status Cancelled. Declared, never written.
  • Pick status Cancelled. Declared, never written.
  • pick_reconciliation_report. A read-only report for Admin, Manager and Supervisor that lists drift between tasks and picks (OrphanTask, MissingTask, DuplicateLiveTask, SourceOutcomeMissing, TaskOutcomeMissing, InvalidTaskState, SourceNotEligible). It changes nothing and is not drawn. Source: crates/libs/wms-outbound/src/picking/queries/reconcile.rs:1-60.