Domain Core¶
Le Domain Core constitue le cœur métier de CMonChoix Platform.
Il définit les concepts fondamentaux utilisés par toutes les verticales.
Son objectif est de fournir un socle stable, indépendant et réutilisable, capable de supporter l'ensemble des familles produits actuelles et futures.
Sommaire¶
- Présentation
- Pourquoi un Domain Core ?
- Responsabilités
- Ce que le Domain Core contient
- Ce qu'il ne contient pas
- Les modules
- Dépendances autorisées
- Cycle de vie
- Vision long terme
- Voir aussi
Présentation¶
Le Domain Core représente la couche métier centrale de CMonChoix Platform.
Toutes les verticales (Smartphone, Photo, TV, Gaming, etc.) s'appuient sur lui.
Le Domain Core ne connaît aucune verticale.
Il ne contient que des concepts génériques.
Pourquoi un Domain Core ?¶
Avant la Platform, une partie importante de la logique métier était répartie entre :
- le pipeline ;
- les règles spécifiques ;
- les enrichissements ;
- certains traitements runtime.
Cette organisation fonctionnait mais rendait difficile la réutilisation des concepts entre plusieurs familles produits.
Le Domain Core centralise désormais ces concepts.
Objectifs¶
Le Domain Core poursuit plusieurs objectifs.
Mutualiser la logique métier¶
Une règle générique ne doit être écrite qu'une seule fois.
Garantir la cohérence¶
Toutes les verticales manipulent les mêmes concepts.
Isoler les spécialisations¶
Les règles spécifiques restent dans les Vertical Modules.
Faciliter les tests¶
Les composants du Core peuvent être testés indépendamment du runtime.
Responsabilités¶
Le Domain Core est responsable :
- de l'identité canonique ;
- de la résolution des candidats ;
- des projections ;
- du scoring générique ;
- de la qualité ;
- du health ;
- des promotions ;
- des helpers génériques.
Il n'est pas responsable :
- des règles Smartphone ;
- des règles Photo ;
- du frontend ;
- du pipeline ;
- des traitements runtime.
Les modules¶
Le Domain Core est organisé en plusieurs sous-modules.
Domain Core
│
├── Identity
├── Identifiers
├── Candidate
├── Resolver
├── Projection
├── Quality
├── Health
├── Promotions
├── Generic Scoring
├── Helpers
└── Utils
Chaque module possède une responsabilité unique.
Dépendances autorisées¶
Le Domain Core peut dépendre :
- de PHP ;
- des Helpers internes ;
- des Contracts.
Il ne dépend jamais :
- des Vertical Modules ;
- du Pipeline ;
- du Runtime ;
- du Frontend ;
- des Interfaces.
Cycle de vie¶
Le fonctionnement général est le suivant.
Identifiers
│
▼
Candidate
│
▼
Resolver
│
▼
Canonical Identity
│
▼
Projection
Les Vertical Modules enrichissent certaines étapes, mais ne modifient jamais ce cycle.
Vision long terme¶
Le Domain Core doit rester stable malgré l'ajout de nouvelles verticales.
À terme, Smartphone, Photo, TV, Gaming, Printer, Mobility, Toys, Wellness et les futures familles produits devront toutes partager exactement le même Core.
Cette stabilité constitue l'un des principaux objectifs de la Platform.
Voir aussi¶
- Architecture
- Identifier First
- Canonical Identity
- Identity
- Candidate
- Resolver
- Projection