Aller au contenu
Filtrer les règles par style d’implémentation

Choisir un style ​

Chaque bounded context choisit un style d’implémentation pour sa logique métier, et le déclare (CTX-14). Le style décide quelles règles s’appliquent, quels dossiers existent et qui peut importer quoi.

La décision ​

Partir du type du subdomain dans la context map :

SubdomainStylePourquoi
Core : ce qui distingue l’entrepriseModèle tactiqueDes règles riches qui changent souvent : les aggregates gardent les invariants en un seul endroit
Supporting : nécessaire et propre à l’entreprise, sans la distinguerTransaction scriptsUne logique mince : une procédure par use case coûte moins cher, et reste assez claire
Generic : résolu de la même façon partoutTransaction scripts, ou un produitPeu de logique propre : souvent, mieux vaut l’acheter ou l’encapsuler

Une ADR peut déroger à ce choix par défaut : un bounded context supporting aux règles riches peut prendre le style tactique, et un nouveau bounded context core peut démarrer en scripts le temps de l’explorer.

Ce qui change avec le style ​

Transaction scriptsModèle tactique
Dossiersapplication, driving, driven, publicdomain, application, driving, driven, public
Règles métierDans le script de chaque use caseDans les aggregates, les entities et les value objects
Base de donnéesPrisma dans le script, à travers le Unit of WorkDes repositories derrière des ports, Prisma dans driven/prisma
TransactionOuverte par le scriptOuverte par le use case
RefusDes valeurs ResultDes valeurs Result
Règles qui s’appliquentBadge Transaction script ou Les deux stylesBadge Tactique ou Les deux styles

Tout le reste est commun : la conception stratégique, le contrat publié, l’intégration entre bounded contexts, HTTP, le nommage et les tests.

Le déclarer ​

Chaque application liste ses bounded contexts et leur style dans architecture.json, à sa racine :

json
{
  "contexts": {
    "payments": "tactical",
    "notifications": "transaction-script",
    "legacy": "big-ball-of-mud"
  }
}

Une big ball of mud se déclare aussi, avec la valeur big-ball-of-mud. Ce n’est pas un troisième style : elle n’a pas de couches, et on la contient au lieu de la modéliser (MAP-04).

@alveolus/claude-rules le lit pour donner à Claude Code les règles du style de chaque bounded context, et pour contenir chaque big ball of mud.

Changer de style ​

Un bounded context dépasse ses scripts quand les mêmes règles commencent à se répéter de l’un à l’autre (TXS-08). Il passe alors au style tactique en entier, avec une ADR, et sa déclaration change en dernier. Un bounded context ne mélange jamais les deux styles.