Logic Components
Logic components are pieces of software that contain the business logic of your application. They are organized semantically by domain or functionality and serve as the orchestration layer between controllers and adapters.
Purpose
Logic components:
Implement business rules and domain logic
Orchestrate operations across multiple adapters
Encapsulate complex workflows
Remain independent of transport layer (HTTP, WebSocket) concerns
Can be thoroughly unit tested without I/O dependencies
Location
Logic components SHOULD be placed under the src/logic or src/components directory, organized by domain:
src/
└── logic/
├── users/
├── content/
├── permissions/
└── notifications/Characteristics
1. Adapter Consumption
Logic components are the primary consumers of adapters. They use adapters to interact with external resources while focusing on business rules.
2. Business Rules
Logic components enforce business rules and validation:
3. Workflow Orchestration
Logic components coordinate complex multi-step operations:
Best Practices
1. Single Responsibility
Each logic component should focus on one domain or bounded context:
2. Dependency Injection
Always inject dependencies through the components parameter:
3. Error Handling
Throw meaningful domain errors that controllers can catch and handle:
4. Pure Business Logic
Keep logic components free from transport layer concerns:
Testing Logic Components
Logic components should be thoroughly unit tested. See the Testing Services (WKC) documentation for details.
Coming Soon
This section will be expanded with:
Detailed examples of domain-driven logic components
Patterns for handling complex workflows
Guidelines for organizing large domain logic
Integration with event systems
Caching strategies
Transaction management patterns
Last updated