Process Types
Understanding the different process types and their allowed origins and destinations.
Overview
Process Types define the different kinds of inventory operations and movements that can be performed within the warehouse system. Each process type has specific rules about valid origins and destinations.
Available Process Types
BATCH_PROCESS
Description: Large-scale batch operations for bulk inventory movements
| Allowed Origins | Allowed Destinations |
|---|---|
| EXTERNAL | ACTIVE, SCRAP, RESERVED |
Use Cases: Receiving large shipments, bulk transfers from external sources
PICKING_PROCESS
Description: Order fulfillment and picking operations
| Allowed Origins | Allowed Destinations |
|---|---|
| ACTIVE, RESERVED | PICKING |
Use Cases: Moving items to picking areas for order preparation
PACKING_PROCESS
Description: Packaging operations for order completion
| Allowed Origins | Allowed Destinations |
|---|---|
| PICKING | PACKING |
Use Cases: Moving picked items to packing stations
PARCEL_PROCESS
Description: Parcel handling and shipping operations
| Allowed Origins | Allowed Destinations |
|---|---|
| PACKING | EXTERNAL |
Use Cases: Shipping packed orders to customers
INTERNAL_TRANSFER
Description: Internal warehouse movements and reorganization
| Allowed Origins | Allowed Destinations |
|---|---|
| ACTIVE, RESERVED, SCRAP, PUFFER | ACTIVE, RESERVED, SCRAP, PUFFER |
Use Cases: Reorganizing inventory, location changes, status updates
QUALITY_CONTROL
Description: Quality inspection and quarantine operations
| Allowed Origins | Allowed Destinations |
|---|---|
| ACTIVE, EXTERNAL | SCRAP, ACTIVE |
Use Cases: Quality inspections, defect management, quarantine
Storage Place Definitions
| Storage Place | Description | Storage Class | Parcel Support |
|---|---|---|---|
| ACTIVE | Available inventory ready for picking | ActiveStorageUnit | ❌ |
| RESERVED | Inventory allocated for specific orders | ReservedStorageUnit | ❌ |
| SCRAP | Damaged or unusable inventory | ScrapStorageUnit | ❌ |
| PUFFER | Temporary holding area for processing | PufferStorageUnit | ❌ |
| PICKING | Items being prepared for orders | PickingUnit | ✅ |
| PACKING | Items being packaged for shipment | PackingUnit | ✅ |
| EXTERNAL | External sources/destinations | N/A | ✅ |
Process Flow Examples
Standard Order Fulfillment Flow
EXTERNAL → ACTIVE → RESERVED → PICKING → PACKING → EXTERNAL
1. BATCH_PROCESS: Receive inventory (EXTERNAL → ACTIVE)
2. INTERNAL_TRANSFER: Reserve for order (ACTIVE → RESERVED)
3. PICKING_PROCESS: Move to picking (RESERVED → PICKING)
4. PACKING_PROCESS: Move to packing (PICKING → PACKING)
5. PARCEL_PROCESS: Ship to customer (PACKING → EXTERNAL)
Quality Control Flow
EXTERNAL → PUFFER → ACTIVE or SCRAP
1. BATCH_PROCESS: Receive for inspection (EXTERNAL → PUFFER)
2. QUALITY_CONTROL: Pass inspection (PUFFER → ACTIVE)
OR
QUALITY_CONTROL: Fail inspection (PUFFER → SCRAP)
Damage Management Flow
ACTIVE → SCRAP
1. QUALITY_CONTROL: Identify damage (ACTIVE → SCRAP)
Business Rules
Origin/Destination Validation
- Each process type has strict rules about valid origin and destination combinations
- The system validates these rules before allowing any movement
- Invalid combinations result in validation errors
- Business logic enforcement prevents data integrity issues
Parcel Support
- Only PICKING, PACKING, and EXTERNAL storage places support parcel operations
- Parcel methods are required when destination supports parcels
- Parcel details include customer information and shipping data
- Parcel tracking is integrated with external courier services
Decision Tree Integration
- Process types determine which decision tree steps are executed
- Different validation rules apply based on process type
- Automated routing based on process requirements
- Error handling specific to process contexts
Implementation Details
Enum Definition
Process types are defined in the ProcessTypeEnum class with static methods for validation:
ProcessTypeEnum::getAllowedOrigins('BATCH_PROCESS')
// Returns: ['EXTERNAL']
ProcessTypeEnum::getAllowedDestinations('BATCH_PROCESS')
// Returns: ['ACTIVE', 'SCRAP', 'RESERVED']
ProcessTypeEnum::isValidTransition('BATCH_PROCESS', 'EXTERNAL', 'ACTIVE')
// Returns: true
Decision Tree Steps
Each process type has associated decision tree steps that handle specific business logic:
CheckProcessType- Validates the process typeCheckProcessAllowedToManipulateTables- Validates origin/destinationCheckWarehouseIntegrity- Ensures data consistency- Process-specific steps for detailed validation
Error Handling
Business Logic Errors
Error responses may be returned for business rule violations such as invalid process types, invalid origin/destination combinations, or missing parcel information. Exact error formats not verified from controller code.