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