sequenceDiagram
participant Client as Model Client
participant Model as Model Instance
participant Events as Event System
participant Cache as Cache Layer
participant DB as Database
participant Queue as Queue System
participant Relations as Relationship Loader
participant Observer as Model Observer
%% Model Creation
Client->>Model: Create Model
activate Model
Model->>Events: Dispatch Creating Event
activate Events
Events->>Observer: Handle Creating
Observer-->>Events: Continue
Events-->>Model: Proceed
deactivate Events
%% Database Operation
Model->>DB: Insert Record
activate DB
DB-->>Model: Record Created
deactivate DB
%% Post Creation
Model->>Events: Dispatch Created Event
activate Events
Events->>Observer: Handle Created
Observer-->>Events: Continue
Events->>Queue: Queue Events
Queue-->>Events: Queued
Events-->>Model: Complete
deactivate Events
Model-->>Client: Model Instance
deactivate Model
%% Model Retrieval
Client->>Model: Find Model
activate Model
Model->>Cache: Check Cache
activate Cache
alt Cache Hit
Cache-->>Model: Return Cached
else Cache Miss
Cache-->>Model: Not Found
Model->>DB: Query Database
activate DB
DB-->>Model: Record Found
deactivate DB
Model->>Cache: Store in Cache
Cache-->>Model: Cached
end
deactivate Cache
%% Relationship Loading
Model->>Relations: Load Relations
activate Relations
Relations->>DB: Query Relations
activate DB
DB-->>Relations: Related Records
deactivate DB
Relations-->>Model: Relations Loaded
deactivate Relations
Model-->>Client: Complete Model
deactivate Model
%% Model Update
Client->>Model: Update Model
activate Model
Model->>Events: Dispatch Updating Event
activate Events
Events->>Observer: Handle Updating
Observer-->>Events: Continue
Events-->>Model: Proceed
deactivate Events
Model->>DB: Update Record
activate DB
DB-->>Model: Record Updated
deactivate DB
Model->>Cache: Invalidate Cache
activate Cache
Cache-->>Model: Cache Cleared
deactivate Cache
Model->>Events: Dispatch Updated Event
activate Events
Events->>Observer: Handle Updated
Observer-->>Events: Continue
Events->>Queue: Queue Events
Queue-->>Events: Queued
Events-->>Model: Complete
deactivate Events
Model-->>Client: Updated Model
deactivate Model
%% Model Deletion
Client->>Model: Delete Model
activate Model
Model->>Events: Dispatch Deleting Event
activate Events
Events->>Observer: Handle Deleting
Observer-->>Events: Continue
Events-->>Model: Proceed
deactivate Events
Model->>DB: Delete Record
activate DB
DB-->>Model: Record Deleted
deactivate DB
Model->>Cache: Clear Cache
activate Cache
Cache-->>Model: Cache Cleared
deactivate Cache
Model->>Events: Dispatch Deleted Event
activate Events
Events->>Observer: Handle Deleted
Observer-->>Events: Continue
Events->>Queue: Queue Events
Queue-->>Events: Queued
Events-->>Model: Complete
deactivate Events
Model-->>Client: Deletion Confirmed
deactivate Model
%% Style Definitions
style Client fill:#f9f,stroke:#333,stroke-width:2px
style Model fill:#bbf,stroke:#333,stroke-width:2px
style Events fill:#bfb,stroke:#333,stroke-width:2px
style Cache fill:#fbb,stroke:#333,stroke-width:2px
style DB fill:#fbb,stroke:#333,stroke-width:2px
style Queue fill:#bfb,stroke:#333,stroke-width:2px
style Relations fill:#bbf,stroke:#333,stroke-width:2px
style Observer fill:#bfb,stroke:#333,stroke-width:2px
%% Notes
Note over Model: Model Lifecycle
Note over Events: Event Handling
Note over Cache: Cache Management
Note over DB: Data Persistence
Note over Queue: Async Processing
Note over Relations: Relationship Management
Note over Observer: Lifecycle Hooks
%% Model States
Note over Model: States:
1. Creating/Created
2. Retrieving/Retrieved
3. Updating/Updated
4. Deleting/Deleted
%% Event Types
Note over Events: Events:
1. Model Events
2. Relation Events
3. Cache Events
4. Queue Events
%% Cache Strategy
Note over Cache: Strategy:
1. Read Through
2. Write Behind
3. Cache Invalidation
%% Observer Points
Note over Observer: Hooks:
1. Before Events
2. After Events
3. Around Events