This section explains the status transitions relevant for delivery processing. Understanding the status transitions is a prerequisite to effectively use the Delivery Monitor and Delivery Analyze functionality.
Processing a delivery will lead to status transitions on each of the following levels:
Delivery Status | Description | End state for the delivery? |
---|---|---|
ACCEPTED | Delivery is accepted when the data is available in the HSTGIN and ready to be loaded to the CFPL | No |
BLOCKED | CRUD Interface is blocked when a batch is started | No |
CANCELLED | The delivery is cancelled by the operator. This can happen in every step when an entity update is FAILED | Yes |
CANCELLING | Graceful ending of all running tasks before Delivery is set to Cancelled | No |
LOADED | Data is available in TSTGIN | No |
PERSISTED | Data load to the CFPL is finished | Yes |
PERSISTED WITH VIOLATED CONSTRAINTS | Data load to the CFPL is finished and violated constraints exists that did not exceed the threshold value | Yes |
PERSISTING | Data load from the GDAL to the CFPL is possible only for GDAL deliveries | No |
RECEIVED | Delivery is created | No |
REFUSED | Data validation failed, the constraint treshold was exceeded for at least one item | Yes |
REJECTED | Delivery is rejected | Yes |
VALIDATED | The data validation succeeded, data can be loaded to the HSTGIN | No |
EXPORTED | The file-export is completed (only for export deliveries) | Yes |
Interface Status | Description |
---|---|
PROCESSING | The interface is currently updating |
IDLE | The interface is marked for processing but is waiting for an available slot or waiting for the previous layer to be finished |
COMPLETED | The updating of the interface succeeded |
Entity Status | Description |
---|---|
FAILED | Entity update failed |
IDLE | The entity is marked for processing but is waiting for an available slot or waiting for dependent updates |
PROCESSING | Entity is currently being updated |
SCHEDULED | The entity is marked for processing |
SUCCEEDED | Entity update succeeded |
stateDiagram-v2
classDef notMoving fill:white
[*] --> Received : New delivery
Received --> Rejected ::: notMoving : Reject delivery
Rejected --> [*] : End state reached
Received --> Loaded : Technical staging successfully loaded
Validated --> Refused ::: notMoving : Error threshold exceeded
Refused --> [*] : End state reached
Loaded --> Validated : Validation completed
Validated --> Accepted : Validation successfully loaded
Accepted --> Persisted ::: notMoving : Central facts loaded
Loaded --> Cancelling
Validated --> Cancelling
Accepted --> Cancelling
Cancelling --> Cancelled ::: notMoving
Cancelled --> [*] : End state reached
Persisted --> [*] : End state reached
stateDiagram-V2
classDef notMoving fill:white
[*] --> Persisting : New Delivery
[*] --> Blocked : New Delivery
Persisting --> Persisted ::: notMoving : Set persisted
Blocked --> Persisting
Persisting --> Blocked
Persisted --> [*] : End state reached
stateDiagram-V2
classDef notMoving fill:white
[*] --> Received : Delivery created
Received --> Cancelling : When Cancel button used
Cancelling --> Cancelled ::: notMoving : Graceful ending of running tasks
Received --> Exported ::: notMoving : all tasks successfully completed
Exported --> [*] : End state reached
Cancelled --> [*] : End state reached
stateDiagram-v2
classDef notMoving fill:white
[*] --> Idle : New Delivery
Idle --> Processing : EntityUpdate set to processing
Processing --> Completed ::: notMoving : All EntityUpdates succeeded
Completed --> [*] : End state reached
stateDiagram-v2
classDef notMoving fill:white
[*] --> Idle : New Delivery
Idle --> Scheduled : Dependent predecessor entityUpdates succeeded
Scheduled --> Processing : Processing slot available
Processing --> Failed : Error
Failed --> Scheduled : Retry
Processing --> Completed ::: notMoving : Data loaded
Completed --> [*] : End state reached
{info} If you forget to import your new model but do start a Delivery, the Delivery will 'hang' on the last table. It will keep communicating it is running, but it is not. Only way to fix this is to change the Accepted status to a Failed status manually with sql.
Interacting with the i-refactory is based on API services. For Deliveries the following API's are available ( example scripts can be found in i-refactory-engine\example\restful\ ) :
API | Example script | Description |
---|---|---|
acmDatalog.activeLogicalStaging DeliveryEntityUpdateFromExternalSource | handleTechnicalStagingLoad.js | Determine all entity updates for a delivery and set the entity updates to Succeeded |
acmDatalog.activeDeliveryEntityUpdate | handleTechnicalStagingLoad.js | Determine all entity updates for a delivery and set the entity updates to Succeeded |
acmDatalog.activeDeliveryEntityUpdate | getActiveDeliveryEntityUpdateInfo.js | Get the states for all entity updates for a delivery |
acmDatadel.activeDelivery | getActiveDeliveryInfo.js | Get all active deliveries |