Where you do this
Click a WO number on the Work Orders list, or open /login/wo/processWorkOrder.xhtml?id=<id>. The page header reads Work Order: WO-XXXXXX with the type, status and target date alongside.
What you can do here depends on the WO's status:
- DRAFT ā build the routing (add/edit/delete steps), set header fields, run a preflight check, then Release to Floor.
- IN_PROGRESS ā drive each step through its lifecycle, request stock, capture progress, complete or pause.
- COMPLETED / CLOSED / CANCELLED ā read-only audit view.
The action toolbar (top right)
- Release to Floor ā the headline button on a DRAFT. Validates the routing, sets the WO
IN_PROGRESS, and activates all PENDING steps at the lowest priority. - Recalculate Routing ā re-runs the priority-based routing algorithm on the current line set; useful after editing step priorities.
- Check Routing Config ā opens the Preflight dialog (see below) ā surfaces problems that would stop a release.
- Save as Template Copy ā clones the current DRAFT into a new TEMPLATE WO so you can reuse the routing later.
- Cancel Work Order ā full WO cancel. Marks the WO
CANCELLEDand runsonCancel()on every non-terminal step (downstream domain entities ā leave requests, custom-schedule rows, etc. ā clean themselves up). - Copy Tracking Link ā copies the public customer-tracking URL (an AES-encrypted token) to your clipboard.
- Download Report ā PDF summary of the WO.
Progress
Under the toolbar sits a Progress panel ā visual breakdown of how many steps are PENDING, ACTIVE, PAUSED, COMPLETED, etc. Live, refreshes as steps move.
Routing Steps
The heart of the page. A table of every step, sorted by executionPriority. Columns:
| Column | Meaning |
|---|---|
| Priority | Routing slot (lower runs earlier; same number = parallel) |
| Type | The line type ā Local Receipt, Repair Task, Approval, Assembly Task, etc. |
| Description | Free-form note set when the step was added |
| Last Activity | Most recent activity event ā fed by the WO chat narrator |
| Status | PENDING, ACTIVE, PAUSED, AUTO_RETRY, ERROR, COMPLETED, CANCELLED |
| Actions | Per-step buttons ā see below |
What you can do per step
- Process ā opens the step's processing view (e.g. the repair-bench page for a
REPAIR_TASK, the receipt page for aLOCAL_RECEIPT). Available when the step is ACTIVE and you're eligible. - Edit ā only on PENDING steps. Opens the step builder dialog for that line type.
- Delete ā only on PENDING steps. The system rejects deletes on ACTIVE / COMPLETED.
- Pause / Resume ā system pause is automatic when a step is waiting on a child (e.g. a delivery); user pause is allowed on certain task types and asks for a reason.
- Force Complete Step ā admin-only. Bypasses handler validation. A confirm dialog warns you to enter a reason; the override is recorded.
- Reassign Area ā admin-only. For
REPAIR_TASKandASSEMBLY_TASKlines; routes the step to a different area when the original area is unavailable.
Adding a step
Click Add Step above the routing table. The builder dialog asks:
- Step Type ā picks which line type (and therefore which builder form is shown).
- Priority ā its routing slot. The system rejects priorities
ā¤the currently active priority on anIN_PROGRESSWO ā you can only add steps that fall after the current group. - Description ā free text.
- Type-specific fields ā vary per builder. Examples:
- Local Receipt ā expected items table
- Local Shipment ā planned items table
- Courier Booking ā parcels table (Add Parcel button)
- Delivery Request ā a basket of products to fetch from the warehouse
- Sales Replacement ā planned items for the replacement
Click Save Step (or Update Step when editing). Adding a step on a DRAFT just persists; on an IN_PROGRESS WO at a higher priority slot, the step is queued and activates when its priority comes up.
Releasing
- Make sure every step has the right priority and assignee.
- Click Check Routing Config ā the preflight dialog lists any blocking issues (missing assignees, missing assembly area on a BOM component, etc.). Click Fix on a row to jump straight to the offending step or use Re-check after fixing.
- When the preflight is clean, click Release to Floor. The WO flips to
IN_PROGRESS, the lowest-priority steps activate, and the relevant assignees see them in their task queues (My Repair Tasks, My Assembly Tasks, Pending Approvals, etc.).
Activity Log
A second tab next to Routing Steps with the full audit trail ā every state change, comment, material consumed, delivery confirmed, etc. Columns: Time, User, Action, Ref, Description. The same events are also posted to the WO's system-chat conversation.
Recovering a step in ERROR
If a step's onStart() or onComplete() threw, the row turns red and the status is ERROR. Two recovery paths:
- Clear error ā flips ERROR ā ACTIVE so the operator can fix the underlying cause and click Complete again. Does not re-run
onStart(). - Retry from error ā only useful for auto-completing handlers (where the step does its work in
onStart()). Resets to PENDING, re-runsonStart(), and auto-completes if it succeeds.
A STEP_ERROR activity event captures the technical reason in its payload ā visible in the activity log; not shown to the public tracking page (those summaries are filtered).
Tips
- Lines at the same priority run in parallel. Use this to run independent steps concurrently (e.g. a Repair Router that spawns four parallel Repair Tasks).
- A PAUSED step holds its priority slot ā downstream steps will not advance until it resumes or completes.
- Force Complete should be the last resort. Most stuck steps clear with a normal complete or with stock arriving. Use it when a step genuinely can't be completed via its handler (e.g. an external system died) and you want to move on.