Aller au contenu

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