@phuc1403/musketeer 0.8.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/INSTALLATION.md +52 -52
- package/README.md +49 -49
- package/bin/musketeer.js +168 -168
- package/manifest.json +333 -301
- package/package.json +48 -48
- package/src/dotnet-scaffold-copier.js +79 -79
- package/src/provisioner/detect.js +93 -93
- package/src/self-update.js +77 -77
- package/template/.claude/agents/code-reviewer.md +182 -166
- package/template/.claude/agents/git-manager.md +18 -18
- package/template/.claude/agents/hallmark-auditor.md +78 -78
- package/template/.claude/agents/researcher.md +33 -33
- package/template/.claude/hooks/block-unsafe-adr-title.cjs +85 -85
- package/template/.claude/hooks/git-skill-reminder.cjs +53 -0
- package/template/.claude/hooks/init-adr-dir.cjs +173 -173
- package/template/.claude/hooks/inject-adr-flags.cjs +94 -94
- package/template/.claude/hooks/lib/adr/command-scan.cjs +115 -115
- package/template/.claude/hooks/lib/characteristics/checker.cjs +357 -357
- package/template/.claude/hooks/lib/colors.cjs +180 -122
- package/template/.claude/hooks/lib/git-info-cache.cjs +191 -191
- package/template/.claude/hooks/lib/transcript-parser.cjs +300 -277
- package/template/.claude/hooks/sync-adr-toc.cjs +146 -146
- package/template/.claude/hooks/{usage-context-awareness.cjs → usage-quota-cache-refresh.cjs} +166 -166
- package/template/.claude/hooks/validate-characteristics-hook.cjs +66 -66
- package/template/.claude/hooks/validate-cml-hook.js +145 -145
- package/template/.claude/skills/adr-writer/SKILL.md +48 -48
- package/template/.claude/skills/adr-writer/references/adr-example.md +35 -35
- package/template/.claude/skills/architecture-characteristic-writer/SKILL.md +215 -215
- package/template/.claude/skills/architecture-characteristic-writer/assets/worksheet-template.md +29 -29
- package/template/.claude/skills/architecture-characteristic-writer/references/characteristics-catalog.md +40 -40
- package/template/.claude/skills/architecture-characteristic-writer/scripts/ranking-table.cjs +171 -171
- package/template/.claude/skills/code-review/SKILL.md +201 -54
- package/template/.claude/skills/code-review/references/checklist-workflow.md +96 -0
- package/template/.claude/skills/code-review/references/checklists/api.md +52 -52
- package/template/.claude/skills/code-review/references/checklists/base.md +100 -100
- package/template/.claude/skills/code-review/references/checklists/web-app.md +54 -54
- package/template/.claude/skills/code-review/references/code-review-reception.md +113 -0
- package/template/.claude/skills/code-review/references/codebase-scan-workflow.md +30 -0
- package/template/.claude/skills/code-review/references/edge-case-scouting.md +119 -0
- package/template/.claude/skills/code-review/references/input-mode-resolution.md +135 -0
- package/template/.claude/skills/code-review/references/parallel-review-workflow.md +76 -0
- package/template/.claude/skills/code-review/references/requesting-code-review.md +116 -0
- package/template/.claude/skills/code-review/references/spec-compliance-review.md +43 -0
- package/template/.claude/skills/code-review/references/task-management-reviews.md +140 -0
- package/template/.claude/skills/code-review/references/verification-before-completion.md +139 -0
- package/template/.claude/skills/context-map/SKILL.md +80 -80
- package/template/.claude/skills/context-map/example.cml +106 -106
- package/template/.claude/skills/context-map/reference/Bounded Context/Bounded Context.md +40 -40
- package/template/.claude/skills/context-map/reference/Bounded Context/businessModel.md +5 -5
- package/template/.claude/skills/context-map/reference/Bounded Context/domainVisionStatement.md +2 -2
- package/template/.claude/skills/context-map/reference/Bounded Context/evolution.md +5 -5
- package/template/.claude/skills/context-map/reference/Bounded Context/implementationTechnology.md +1 -1
- package/template/.claude/skills/context-map/reference/Bounded Context/implements.md +1 -1
- package/template/.claude/skills/context-map/reference/Bounded Context/knowledgeLevel.md +4 -4
- package/template/.claude/skills/context-map/reference/Bounded Context/realizes.md +9 -9
- package/template/.claude/skills/context-map/reference/Bounded Context/refines.md +10 -10
- package/template/.claude/skills/context-map/reference/Bounded Context/responsibilities.md +26 -26
- package/template/.claude/skills/context-map/reference/Bounded Context/type.md +23 -23
- package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Anticorruption Layer.md +5 -5
- package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Bounded Context Relationship.md +12 -12
- package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Conformist.md +5 -5
- package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Customer-Supplier (C-S).md +22 -22
- package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Open Host Service.md +4 -4
- package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Partnership (P).md +13 -13
- package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Published Language.md +4 -4
- package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Shared Kernel (SK).md +12 -12
- package/template/.claude/skills/context-map/reference/Context Map.md +62 -62
- package/template/.claude/skills/context-map/reference/Domain/Domain.md +30 -30
- package/template/.claude/skills/context-map/reference/Domain/supports.md +33 -33
- package/template/.claude/skills/context-map/reference/Domain/type.md +3 -3
- package/template/.claude/skills/context-map/reference/Semantic Rules.md +32 -32
- package/template/.claude/skills/git/SKILL.md +131 -115
- package/template/.claude/skills/git/references/branch-management.md +88 -88
- package/template/.claude/skills/git/references/commit-standards.md +46 -46
- package/template/.claude/skills/git/references/context-efficiency.md +54 -0
- package/template/.claude/skills/git/references/gh-cli-guide.md +109 -109
- package/template/.claude/skills/git/references/safety-protocols.md +69 -69
- package/template/.claude/skills/git/references/workflow-commit.md +58 -58
- package/template/.claude/skills/git/references/workflow-merge-pr.md +136 -0
- package/template/.claude/skills/git/references/workflow-merge.md +48 -48
- package/template/.claude/skills/git/references/workflow-pr.md +58 -58
- package/template/.claude/skills/git/references/workflow-push.md +52 -52
- package/template/.claude/skills/hallmark/SKILL.md +552 -552
- package/template/.claude/skills/hallmark/references/anti-patterns.md +412 -412
- package/template/.claude/skills/hallmark/references/assets.md +406 -406
- package/template/.claude/skills/hallmark/references/color.md +95 -95
- package/template/.claude/skills/hallmark/references/component-cookbook.md +256 -256
- package/template/.claude/skills/hallmark/references/components/c1-outlined-chip.md +12 -12
- package/template/.claude/skills/hallmark/references/components/c2-inline-form-as-cta.md +16 -16
- package/template/.claude/skills/hallmark/references/components/c3-typographic-link.md +8 -8
- package/template/.claude/skills/hallmark/references/components/c4-sticky-bottom-bar.md +16 -16
- package/template/.claude/skills/hallmark/references/components/f1-bento-grid.md +20 -20
- package/template/.claude/skills/hallmark/references/components/f2-sticky-scroll-stack.md +20 -20
- package/template/.claude/skills/hallmark/references/components/f3-tabular-spec-sheet.md +11 -11
- package/template/.claude/skills/hallmark/references/components/f4-step-sequence.md +11 -11
- package/template/.claude/skills/hallmark/references/components/f5-annotated-screenshot.md +11 -11
- package/template/.claude/skills/hallmark/references/components/f6-product-card-grid.md +41 -41
- package/template/.claude/skills/hallmark/references/components/ft1-mast-headed.md +13 -13
- package/template/.claude/skills/hallmark/references/components/ft2-inline-rule-single-line.md +10 -10
- package/template/.claude/skills/hallmark/references/components/ft3-index-style-category-list.md +12 -12
- package/template/.claude/skills/hallmark/references/components/ft4-dense-typographic.md +10 -10
- package/template/.claude/skills/hallmark/references/components/ft5-statement.md +21 -21
- package/template/.claude/skills/hallmark/references/components/ft6-letter-close.md +19 -19
- package/template/.claude/skills/hallmark/references/components/ft7-newsletter-first.md +27 -27
- package/template/.claude/skills/hallmark/references/components/ft8-marquee-scroll.md +25 -25
- package/template/.claude/skills/hallmark/references/components/h1-marquee.md +15 -15
- package/template/.claude/skills/hallmark/references/components/h2-split-diptych.md +15 -15
- package/template/.claude/skills/hallmark/references/components/h3-quote-led.md +11 -11
- package/template/.claude/skills/hallmark/references/components/h4-stat-led.md +14 -14
- package/template/.claude/skills/hallmark/references/components/h5-letter-hero.md +11 -11
- package/template/.claude/skills/hallmark/references/components/h6-photographic-fold.md +16 -16
- package/template/.claude/skills/hallmark/references/components/h7-demo-video-clipped-by-viewport-edge.md +27 -27
- package/template/.claude/skills/hallmark/references/components/h8-mockup-split-browser-framed.md +23 -23
- package/template/.claude/skills/hallmark/references/components/h9-custom-illustration-centerpiece.md +27 -27
- package/template/.claude/skills/hallmark/references/components/n1-wordmark-2-links.md +12 -12
- package/template/.claude/skills/hallmark/references/components/n10-floating-on-scroll-morph.md +19 -19
- package/template/.claude/skills/hallmark/references/components/n2-floating-chip.md +14 -14
- package/template/.claude/skills/hallmark/references/components/n3-side-rail.md +14 -14
- package/template/.claude/skills/hallmark/references/components/n4-hidden-behind-k.md +9 -9
- package/template/.claude/skills/hallmark/references/components/n5-floating-pill.md +28 -28
- package/template/.claude/skills/hallmark/references/components/n6-newspaper-masthead.md +24 -24
- package/template/.claude/skills/hallmark/references/components/n7-brutal-slab.md +22 -22
- package/template/.claude/skills/hallmark/references/components/n8-terminal-command.md +21 -21
- package/template/.claude/skills/hallmark/references/components/n9-edge-aligned-minimal.md +17 -17
- package/template/.claude/skills/hallmark/references/components/s1-left-margin-numbered.md +15 -15
- package/template/.claude/skills/hallmark/references/components/s2-hanging.md +13 -13
- package/template/.claude/skills/hallmark/references/components/s3-sticky-pinned.md +19 -19
- package/template/.claude/skills/hallmark/references/components/s4-inline-no-break.md +11 -11
- package/template/.claude/skills/hallmark/references/components/s5-bottom-anchored.md +13 -13
- package/template/.claude/skills/hallmark/references/components/t1-pull-quote-with-marginalia.md +12 -12
- package/template/.claude/skills/hallmark/references/components/t2-logo-wall-hairline.md +19 -19
- package/template/.claude/skills/hallmark/references/components/t3-single-huge-quote.md +11 -11
- package/template/.claude/skills/hallmark/references/components/t4-numbered-stat-strip.md +14 -14
- package/template/.claude/skills/hallmark/references/contract.md +24 -24
- package/template/.claude/skills/hallmark/references/copy.md +182 -182
- package/template/.claude/skills/hallmark/references/custom-craft.md +626 -626
- package/template/.claude/skills/hallmark/references/custom-theme.md +329 -329
- package/template/.claude/skills/hallmark/references/design-md.md +116 -116
- package/template/.claude/skills/hallmark/references/export-formats.md +328 -328
- package/template/.claude/skills/hallmark/references/floating-nav.md +89 -89
- package/template/.claude/skills/hallmark/references/genres/atmospheric.md +65 -65
- package/template/.claude/skills/hallmark/references/genres/editorial.md +70 -70
- package/template/.claude/skills/hallmark/references/genres/modern-minimal.md +67 -67
- package/template/.claude/skills/hallmark/references/genres/playful.md +65 -65
- package/template/.claude/skills/hallmark/references/hero-enrichment.md +474 -474
- package/template/.claude/skills/hallmark/references/imagery-kit.md +170 -170
- package/template/.claude/skills/hallmark/references/interaction-and-states.md +207 -207
- package/template/.claude/skills/hallmark/references/layout-and-space.md +111 -111
- package/template/.claude/skills/hallmark/references/macrostructures/01-bento-grid.md +35 -35
- package/template/.claude/skills/hallmark/references/macrostructures/02-long-document.md +34 -34
- package/template/.claude/skills/hallmark/references/macrostructures/03-marquee-hero.md +31 -31
- package/template/.claude/skills/hallmark/references/macrostructures/04-stat-led.md +32 -32
- package/template/.claude/skills/hallmark/references/macrostructures/05-workbench.md +32 -32
- package/template/.claude/skills/hallmark/references/macrostructures/06-conversational-faq.md +33 -33
- package/template/.claude/skills/hallmark/references/macrostructures/07-manifesto.md +32 -32
- package/template/.claude/skills/hallmark/references/macrostructures/08-photographic.md +34 -34
- package/template/.claude/skills/hallmark/references/macrostructures/09-quote-led.md +32 -32
- package/template/.claude/skills/hallmark/references/macrostructures/10-specimen.md +32 -32
- package/template/.claude/skills/hallmark/references/macrostructures/11-catalogue.md +23 -23
- package/template/.claude/skills/hallmark/references/macrostructures/12-letter.md +23 -23
- package/template/.claude/skills/hallmark/references/macrostructures/13-index-first.md +23 -23
- package/template/.claude/skills/hallmark/references/macrostructures/14-narrative-workflow.md +23 -23
- package/template/.claude/skills/hallmark/references/macrostructures/15-split-studio.md +23 -23
- package/template/.claude/skills/hallmark/references/macrostructures/16-feature-stack.md +23 -23
- package/template/.claude/skills/hallmark/references/macrostructures/17-type-specimen.md +23 -23
- package/template/.claude/skills/hallmark/references/macrostructures/18-portfolio-grid.md +23 -23
- package/template/.claude/skills/hallmark/references/macrostructures/19-map-diagram.md +23 -23
- package/template/.claude/skills/hallmark/references/macrostructures/20-ecosystem-index.md +23 -23
- package/template/.claude/skills/hallmark/references/macrostructures/21-component-playground.md +23 -23
- package/template/.claude/skills/hallmark/references/macrostructures.md +89 -89
- package/template/.claude/skills/hallmark/references/microinteractions.md +260 -260
- package/template/.claude/skills/hallmark/references/motion.md +109 -109
- package/template/.claude/skills/hallmark/references/preview-examples.md +49 -49
- package/template/.claude/skills/hallmark/references/responsive.md +138 -138
- package/template/.claude/skills/hallmark/references/slop-test.md +205 -205
- package/template/.claude/skills/hallmark/references/structure.md +164 -164
- package/template/.claude/skills/hallmark/references/study.md +511 -511
- package/template/.claude/skills/hallmark/references/typography.md +243 -243
- package/template/.claude/skills/hallmark/references/verbs/audit.md +25 -25
- package/template/.claude/skills/hallmark/references/verbs/redesign.md +269 -269
- package/template/.claude/skills/hallmark-loop/SKILL.md +105 -105
- package/template/.claude/skills/hallmark-loop/references/auditor-call.md +60 -60
- package/template/.claude/skills/hallmark-loop/references/capture.md +78 -78
- package/template/.claude/skills/hallmark-loop/references/loop-control.md +79 -79
- package/template/.claude/skills/handoff/SKILL.md +15 -15
- package/template/.claude/skills/knowledge-crunching/SKILL.md +94 -94
- package/template/.claude/skills/research/SKILL.md +69 -69
- package/template/.claude/skills/skill-creator/LICENSE.txt +201 -201
- package/template/.claude/skills/skill-creator/SKILL.md +154 -149
- package/template/.claude/skills/skill-creator/agents/analyzer.md +274 -274
- package/template/.claude/skills/skill-creator/agents/comparator.md +202 -202
- package/template/.claude/skills/skill-creator/agents/grader.md +223 -223
- package/template/.claude/skills/skill-creator/assets/eval_review.html +146 -146
- package/template/.claude/skills/skill-creator/eval-viewer/generate_review.py +471 -471
- package/template/.claude/skills/skill-creator/eval-viewer/viewer.html +1325 -1325
- package/template/.claude/skills/skill-creator/references/benchmark-optimization-guide.md +86 -86
- package/template/.claude/skills/skill-creator/references/distribution-guide.md +79 -79
- package/template/.claude/skills/skill-creator/references/eval-infrastructure-guide.md +129 -129
- package/template/.claude/skills/skill-creator/references/eval-schemas.md +121 -121
- package/template/.claude/skills/skill-creator/references/mcp-skills-integration.md +71 -71
- package/template/.claude/skills/skill-creator/references/metadata-quality-criteria.md +94 -94
- package/template/.claude/skills/skill-creator/references/plugin-marketplace-hosting.md +104 -104
- package/template/.claude/skills/skill-creator/references/plugin-marketplace-overview.md +89 -89
- package/template/.claude/skills/skill-creator/references/plugin-marketplace-schema.md +93 -93
- package/template/.claude/skills/skill-creator/references/plugin-marketplace-sources.md +103 -103
- package/template/.claude/skills/skill-creator/references/plugin-marketplace-troubleshooting.md +76 -76
- package/template/.claude/skills/skill-creator/references/script-quality-criteria.md +106 -106
- package/template/.claude/skills/skill-creator/references/skill-anatomy-and-requirements.md +77 -77
- package/template/.claude/skills/skill-creator/references/skill-creation-workflow.md +152 -151
- package/template/.claude/skills/skill-creator/references/skill-design-patterns.md +75 -75
- package/template/.claude/skills/skill-creator/references/skillmark-benchmark-criteria.md +102 -102
- package/template/.claude/skills/skill-creator/references/structure-organization-criteria.md +114 -114
- package/template/.claude/skills/skill-creator/references/testing-and-iteration.md +78 -78
- package/template/.claude/skills/skill-creator/references/token-efficiency-criteria.md +74 -74
- package/template/.claude/skills/skill-creator/references/troubleshooting-guide.md +81 -81
- package/template/.claude/skills/skill-creator/references/validation-checklist.md +83 -83
- package/template/.claude/skills/skill-creator/references/writing-effective-instructions.md +88 -88
- package/template/.claude/skills/skill-creator/references/yaml-frontmatter-reference.md +92 -92
- package/template/.claude/skills/skill-creator/scripts/aggregate_benchmark.py +401 -401
- package/template/.claude/skills/skill-creator/scripts/encoding_utils.py +36 -36
- package/template/.claude/skills/skill-creator/scripts/generate_report.py +326 -326
- package/template/.claude/skills/skill-creator/scripts/improve_description.py +248 -248
- package/template/.claude/skills/skill-creator/scripts/init_skill.py +360 -360
- package/template/.claude/skills/skill-creator/scripts/package_skill.py +143 -143
- package/template/.claude/skills/skill-creator/scripts/quick_validate.py +110 -110
- package/template/.claude/skills/skill-creator/scripts/run_eval.py +310 -310
- package/template/.claude/skills/skill-creator/scripts/run_loop.py +332 -332
- package/template/.claude/skills/skill-creator/scripts/utils.py +47 -47
- package/template/.claude/skills/tdd/SKILL.md +142 -142
- package/template/.claude/skills/tdd/deep-modules.md +15 -15
- package/template/.claude/skills/tdd/interface-design.md +31 -31
- package/template/.claude/skills/tdd/mocking.md +59 -59
- package/template/.claude/skills/tdd/refactoring.md +10 -10
- package/template/.claude/skills/tdd/tests.md +61 -61
- package/template/.claude/statusline.cjs +0 -0
- package/template/.claude/skills/code-review/references/adversarial-review.md +0 -223
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
If your bounded context is of the type TEAM, you can specify which bounded context the team implements by using the `realizes` keyword. The following example illustrates this:
|
|
2
|
-
|
|
3
|
-
```cml
|
|
4
|
-
BoundedContext CustomersBackofficeTeam implements CustomerManagementDomain realizes CustomerManagementContext {
|
|
5
|
-
type = TEAM
|
|
6
|
-
domainVisionStatement = "This team is responsible for implementing ..."
|
|
7
|
-
}
|
|
8
|
-
```
|
|
9
|
-
|
|
1
|
+
If your bounded context is of the type TEAM, you can specify which bounded context the team implements by using the `realizes` keyword. The following example illustrates this:
|
|
2
|
+
|
|
3
|
+
```cml
|
|
4
|
+
BoundedContext CustomersBackofficeTeam implements CustomerManagementDomain realizes CustomerManagementContext {
|
|
5
|
+
type = TEAM
|
|
6
|
+
domainVisionStatement = "This team is responsible for implementing ..."
|
|
7
|
+
}
|
|
8
|
+
```
|
|
9
|
+
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
The `refines` keyword allows you to create some kind of an inheritance hierarchy in case one bounded context can be seen as a refinement of another bounded context.
|
|
2
|
-
However, note that this is only a modeling information and generators do not recursively resolve the domain model (Aggregates, etc.) of refined bounded contexts.
|
|
3
|
-
|
|
4
|
-
```cml
|
|
5
|
-
BoundedContext ContextMapperTool refines StrategicDomainDrivenDesignContext {
|
|
6
|
-
type FEATURE
|
|
7
|
-
domainVisionStatement "Context Mapper provides a formal way to model strategic DDD Context Maps."
|
|
8
|
-
implementationTechnology "Java, Eclipse"
|
|
9
|
-
}
|
|
10
|
-
```
|
|
1
|
+
The `refines` keyword allows you to create some kind of an inheritance hierarchy in case one bounded context can be seen as a refinement of another bounded context.
|
|
2
|
+
However, note that this is only a modeling information and generators do not recursively resolve the domain model (Aggregates, etc.) of refined bounded contexts.
|
|
3
|
+
|
|
4
|
+
```cml
|
|
5
|
+
BoundedContext ContextMapperTool refines StrategicDomainDrivenDesignContext {
|
|
6
|
+
type FEATURE
|
|
7
|
+
domainVisionStatement "Context Mapper provides a formal way to model strategic DDD Context Maps."
|
|
8
|
+
implementationTechnology "Java, Eclipse"
|
|
9
|
+
}
|
|
10
|
+
```
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
With the `responsibilities` keyword you are allowed to specify the responsibilities of the bounded context, according to the DDD Responsibility Layers pattern.
|
|
2
|
-
|
|
3
|
-
Can be used on [[Domain-Driven Design/Context Map/Bounded Context/Bounded Context|Bounded Context]]s and [[Aggregate]]s to specify their responsibilities.
|
|
4
|
-
|
|
5
|
-
```cml
|
|
6
|
-
BoundedContext CustomerManagementContext implements CustomerManagementDomain {
|
|
7
|
-
type = FEATURE
|
|
8
|
-
domainVisionStatement = "The customer management context is responsible for ..."
|
|
9
|
-
implementationTechnology = "Java, JEE Application"
|
|
10
|
-
responsibilities = "Customers", "Addresses"
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
Aggregate Customers {
|
|
14
|
-
responsibilities = "Customers", "Addresses"
|
|
15
|
-
|
|
16
|
-
Entity Customer {
|
|
17
|
-
aggregateRoot
|
|
18
|
-
|
|
19
|
-
- SocialInsuranceNumber sin
|
|
20
|
-
String firstname
|
|
21
|
-
String lastname
|
|
22
|
-
- List<Address> addresses
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
```
|
|
26
|
-
|
|
1
|
+
With the `responsibilities` keyword you are allowed to specify the responsibilities of the bounded context, according to the DDD Responsibility Layers pattern.
|
|
2
|
+
|
|
3
|
+
Can be used on [[Domain-Driven Design/Context Map/Bounded Context/Bounded Context|Bounded Context]]s and [[Aggregate]]s to specify their responsibilities.
|
|
4
|
+
|
|
5
|
+
```cml
|
|
6
|
+
BoundedContext CustomerManagementContext implements CustomerManagementDomain {
|
|
7
|
+
type = FEATURE
|
|
8
|
+
domainVisionStatement = "The customer management context is responsible for ..."
|
|
9
|
+
implementationTechnology = "Java, JEE Application"
|
|
10
|
+
responsibilities = "Customers", "Addresses"
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
Aggregate Customers {
|
|
14
|
+
responsibilities = "Customers", "Addresses"
|
|
15
|
+
|
|
16
|
+
Entity Customer {
|
|
17
|
+
aggregateRoot
|
|
18
|
+
|
|
19
|
+
- SocialInsuranceNumber sin
|
|
20
|
+
String firstname
|
|
21
|
+
String lastname
|
|
22
|
+
- List<Address> addresses
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
# Bounded Context Type
|
|
2
|
-
|
|
3
|
-
The `type` provides an indicator for which reason a bounded context may have been evolved. It further allows you to specify from which viewpoint you describe your bounded contexts.
|
|
4
|
-
|
|
5
|
-
- `FEATURE`: analysis or early design abstractions, taking a functional scenario view
|
|
6
|
-
- For example, everything that is related to customer management in an insurance scenario: create customer, update customer, update customer address, etc.
|
|
7
|
-
- `APPLICATION`: represent more elaborated, logical designs and implementation views
|
|
8
|
-
- For example: a self-service frontend application for the customers, a backend system to manage the customers and contract, etc.
|
|
9
|
-
- An application typically encompasses multiple functional features. In a (micro-)service-oriented architecture, each (micro-)service can be seen as an application.
|
|
10
|
-
- `SYSTEM`: contexts add a more physical, process- and deployment-oriented view
|
|
11
|
-
- Examples for systems: a single page application for the frontend, a Spring Boot application that realizes the domain logic, an Oracle database that holds the data, etc.
|
|
12
|
-
- An application typically consists of multiple systems.
|
|
13
|
-
- `TEAM`: allows you to specify which team is implementing which bounded contexts
|
|
14
|
-
- For example: multiple teams work on different parts of the software: customer frontend team, customer backend\_ team, contracts team, etc.
|
|
15
|
-
|
|
16
|
-
## Example: The "Returns" Domain
|
|
17
|
-
|
|
18
|
-
1. Feature Context: We identify "Return Eligibility." This is purely a business concept: rules checking if an item is within the 30-day window and undamaged. It doesn't imply a server or a database yet.
|
|
19
|
-
2. Application Context: We design the "Returns Service." This is a deployable logical unit (a Microservice) that handles eligibility, printing labels, and refund triggering. It encapsulates the "Return Eligibility" feature.
|
|
20
|
-
3. System Context: When deploying, the "Returns Service" is actually split into two physical pieces:
|
|
21
|
-
- "Returns Backend API" (Spring Boot container).
|
|
22
|
-
- "Returns Dashboard" (React SPA for warehouse workers). These are two separate SYSTEM contexts.
|
|
23
|
-
1. Team Context: All of the above is owned by "Team After-Sales", a squad of 6 developers.
|
|
1
|
+
# Bounded Context Type
|
|
2
|
+
|
|
3
|
+
The `type` provides an indicator for which reason a bounded context may have been evolved. It further allows you to specify from which viewpoint you describe your bounded contexts.
|
|
4
|
+
|
|
5
|
+
- `FEATURE`: analysis or early design abstractions, taking a functional scenario view
|
|
6
|
+
- For example, everything that is related to customer management in an insurance scenario: create customer, update customer, update customer address, etc.
|
|
7
|
+
- `APPLICATION`: represent more elaborated, logical designs and implementation views
|
|
8
|
+
- For example: a self-service frontend application for the customers, a backend system to manage the customers and contract, etc.
|
|
9
|
+
- An application typically encompasses multiple functional features. In a (micro-)service-oriented architecture, each (micro-)service can be seen as an application.
|
|
10
|
+
- `SYSTEM`: contexts add a more physical, process- and deployment-oriented view
|
|
11
|
+
- Examples for systems: a single page application for the frontend, a Spring Boot application that realizes the domain logic, an Oracle database that holds the data, etc.
|
|
12
|
+
- An application typically consists of multiple systems.
|
|
13
|
+
- `TEAM`: allows you to specify which team is implementing which bounded contexts
|
|
14
|
+
- For example: multiple teams work on different parts of the software: customer frontend team, customer backend\_ team, contracts team, etc.
|
|
15
|
+
|
|
16
|
+
## Example: The "Returns" Domain
|
|
17
|
+
|
|
18
|
+
1. Feature Context: We identify "Return Eligibility." This is purely a business concept: rules checking if an item is within the 30-day window and undamaged. It doesn't imply a server or a database yet.
|
|
19
|
+
2. Application Context: We design the "Returns Service." This is a deployable logical unit (a Microservice) that handles eligibility, printing labels, and refund triggering. It encapsulates the "Return Eligibility" feature.
|
|
20
|
+
3. System Context: When deploying, the "Returns Service" is actually split into two physical pieces:
|
|
21
|
+
- "Returns Backend API" (Spring Boot container).
|
|
22
|
+
- "Returns Dashboard" (React SPA for warehouse workers). These are two separate SYSTEM contexts.
|
|
23
|
+
1. Team Context: All of the above is owned by "Team After-Sales", a squad of 6 developers.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
```cml
|
|
2
|
-
DebtCollection [D,ACL]<-[U,OHS,PL] PrintingContext {
|
|
3
|
-
implementationTechnology = "SOAP"
|
|
4
|
-
}
|
|
5
|
-
```
|
|
1
|
+
```cml
|
|
2
|
+
DebtCollection [D,ACL]<-[U,OHS,PL] PrintingContext {
|
|
3
|
+
implementationTechnology = "SOAP"
|
|
4
|
+
}
|
|
5
|
+
```
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
symmetric relationships
|
|
2
|
-
- [[Partnership (P)]]
|
|
3
|
-
- [[Shared Kernel (SK)]]
|
|
4
|
-
asymmetric relationships
|
|
5
|
-
- Upstream-Downstream (generic)
|
|
6
|
-
- [[Customer-Supplier (C-S)]], a special form of an Upstream-Downstream relationship
|
|
7
|
-
|
|
8
|
-
```cml
|
|
9
|
-
CargoBookingContext [D]<-[U] LocationContext
|
|
10
|
-
|
|
11
|
-
// A colon at the end assigns a relationship a name
|
|
12
|
-
LocationContext Upstream-Downstream CargoBookingContext : CargoLocationRelationship
|
|
1
|
+
symmetric relationships
|
|
2
|
+
- [[Partnership (P)]]
|
|
3
|
+
- [[Shared Kernel (SK)]]
|
|
4
|
+
asymmetric relationships
|
|
5
|
+
- Upstream-Downstream (generic)
|
|
6
|
+
- [[Customer-Supplier (C-S)]], a special form of an Upstream-Downstream relationship
|
|
7
|
+
|
|
8
|
+
```cml
|
|
9
|
+
CargoBookingContext [D]<-[U] LocationContext
|
|
10
|
+
|
|
11
|
+
// A colon at the end assigns a relationship a name
|
|
12
|
+
LocationContext Upstream-Downstream CargoBookingContext : CargoLocationRelationship
|
|
13
13
|
```
|
package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Conformist.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
```cml
|
|
2
|
-
PolicyManagementContext [D,CF]<-[U,OHS,PL] CustomerManagementContext {
|
|
3
|
-
implementationTechnology = "RESTful HTTP"
|
|
4
|
-
}
|
|
5
|
-
```
|
|
1
|
+
```cml
|
|
2
|
+
PolicyManagementContext [D,CF]<-[U,OHS,PL] CustomerManagementContext {
|
|
3
|
+
implementationTechnology = "RESTful HTTP"
|
|
4
|
+
}
|
|
5
|
+
```
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
The customer-supplier relationship is a special case of a upstream-downstream relationship
|
|
2
|
-
|
|
3
|
-
A customer-supplier relationship is an upstream-downstream relationship where the downstream priorities factor into upstream planning.
|
|
4
|
-
The upstream team may succeed interdependently of the fate of the downstream team and therefore the needs of the downstream have to be addressed by the upstream. They interact as customer and supplier.
|
|
5
|
-
|
|
6
|
-
```cml
|
|
7
|
-
CustomerSelfServiceContext [D,C]<-[U,S] CustomerManagementContext
|
|
8
|
-
|
|
9
|
-
CustomerSelfServiceContext Customer-Supplier CustomerManagementContext
|
|
10
|
-
|
|
11
|
-
CustomerSelfServiceContext [C]<-[S] CustomerManagementContext
|
|
12
|
-
|
|
13
|
-
CustomerSelfServiceContext [D,C,ACL]<-[U,S,PL] CustomerManagementContext : Customer_Frontend_Backend_Relationship { // Relationship name is optional
|
|
14
|
-
implementationTechnology = "RESTful HTTP"
|
|
15
|
-
|
|
16
|
-
CustomerSelfServiceContext[ACL] Customer-Supplier [PL]CustomerManagementContext
|
|
17
|
-
}
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
The [[Conformist]] pattern is not applicable in a Customer/Supplier relationship.
|
|
21
|
-
The [[Open Host Service]] pattern is not applicable in a Customer/Supplier relationship.
|
|
22
|
-
The [[Anticorruption Layer]] pattern can be used in a Customer/Supplier relationship, but this leads to contradictions with the original pattern definition according to our understanding.
|
|
1
|
+
The customer-supplier relationship is a special case of a upstream-downstream relationship
|
|
2
|
+
|
|
3
|
+
A customer-supplier relationship is an upstream-downstream relationship where the downstream priorities factor into upstream planning.
|
|
4
|
+
The upstream team may succeed interdependently of the fate of the downstream team and therefore the needs of the downstream have to be addressed by the upstream. They interact as customer and supplier.
|
|
5
|
+
|
|
6
|
+
```cml
|
|
7
|
+
CustomerSelfServiceContext [D,C]<-[U,S] CustomerManagementContext
|
|
8
|
+
|
|
9
|
+
CustomerSelfServiceContext Customer-Supplier CustomerManagementContext
|
|
10
|
+
|
|
11
|
+
CustomerSelfServiceContext [C]<-[S] CustomerManagementContext
|
|
12
|
+
|
|
13
|
+
CustomerSelfServiceContext [D,C,ACL]<-[U,S,PL] CustomerManagementContext : Customer_Frontend_Backend_Relationship { // Relationship name is optional
|
|
14
|
+
implementationTechnology = "RESTful HTTP"
|
|
15
|
+
|
|
16
|
+
CustomerSelfServiceContext[ACL] Customer-Supplier [PL]CustomerManagementContext
|
|
17
|
+
}
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
The [[Conformist]] pattern is not applicable in a Customer/Supplier relationship.
|
|
21
|
+
The [[Open Host Service]] pattern is not applicable in a Customer/Supplier relationship.
|
|
22
|
+
The [[Anticorruption Layer]] pattern can be used in a Customer/Supplier relationship, but this leads to contradictions with the original pattern definition according to our understanding.
|
|
23
23
|
The usage of Anticorruption Layer in a Customer/Supplier relationship produces a Warning only.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
```cml
|
|
2
|
-
PrintingContext [U,OHS]->[D,ACL] PolicyManagementContext {
|
|
3
|
-
implementationTechnology = "SOAP"
|
|
4
|
-
}
|
|
1
|
+
```cml
|
|
2
|
+
PrintingContext [U,OHS]->[D,ACL] PolicyManagementContext {
|
|
3
|
+
implementationTechnology = "SOAP"
|
|
4
|
+
}
|
|
5
5
|
```
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
```cml
|
|
2
|
-
ContractsContext [P]<->[P] ClaimsContext {
|
|
3
|
-
implementationTechnology = "Messaging"
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
ContractsContext Partnership ClaimsContext {
|
|
7
|
-
implementationTechnology = "Messaging"
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
// With a colon it is possible (optionally) to add a relationship name to the specification
|
|
11
|
-
ContractsContext [P]<->[P] ClaimsContext : ContractClaimRelationship {
|
|
12
|
-
implementationTechnology = "Messaging"
|
|
13
|
-
}
|
|
1
|
+
```cml
|
|
2
|
+
ContractsContext [P]<->[P] ClaimsContext {
|
|
3
|
+
implementationTechnology = "Messaging"
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
ContractsContext Partnership ClaimsContext {
|
|
7
|
+
implementationTechnology = "Messaging"
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// With a colon it is possible (optionally) to add a relationship name to the specification
|
|
11
|
+
ContractsContext [P]<->[P] ClaimsContext : ContractClaimRelationship {
|
|
12
|
+
implementationTechnology = "Messaging"
|
|
13
|
+
}
|
|
14
14
|
```
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
```cml
|
|
2
|
-
PolicyManagementContext [D,CF]<-[U,OHS,PL] CustomerManagementContext {
|
|
3
|
-
implementationTechnology = "RESTful HTTP"
|
|
4
|
-
}
|
|
1
|
+
```cml
|
|
2
|
+
PolicyManagementContext [D,CF]<-[U,OHS,PL] CustomerManagementContext {
|
|
3
|
+
implementationTechnology = "RESTful HTTP"
|
|
4
|
+
}
|
|
5
5
|
```
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
```cml
|
|
2
|
-
CargoBookingContext [SK]<->[SK] VoyagePlanningContext {
|
|
3
|
-
implementationTechnology = "Java Library"
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
argoBookingContext Shared-Kernel VoyagePlanningContext {
|
|
7
|
-
implementationTechnology = "Java Library"
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
CargoBookingContext Shared-Kernel VoyagePlanningContext : BookingVoyageRelationship {
|
|
11
|
-
implementationTechnology = "Java Library"
|
|
12
|
-
}
|
|
1
|
+
```cml
|
|
2
|
+
CargoBookingContext [SK]<->[SK] VoyagePlanningContext {
|
|
3
|
+
implementationTechnology = "Java Library"
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
argoBookingContext Shared-Kernel VoyagePlanningContext {
|
|
7
|
+
implementationTechnology = "Java Library"
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
CargoBookingContext Shared-Kernel VoyagePlanningContext : BookingVoyageRelationship {
|
|
11
|
+
implementationTechnology = "Java Library"
|
|
12
|
+
}
|
|
13
13
|
```
|
|
@@ -1,63 +1,63 @@
|
|
|
1
|
-
A context map contains bounded contexts and defines their relationships.
|
|
2
|
-
|
|
3
|
-
```cml
|
|
4
|
-
ContextMap DDDSampleContextMap {
|
|
5
|
-
type SYSTEM_LANDSCAPE
|
|
6
|
-
state AS_IS
|
|
7
|
-
// type = SYSTEM_LANDSCAPE
|
|
8
|
-
// state = AS_IS
|
|
9
|
-
|
|
10
|
-
contains CargoBookingContext, VoyagePlanningContext, LocationContext
|
|
11
|
-
// contains CargoBookingContext
|
|
12
|
-
// contains VoyagePlanningContext
|
|
13
|
-
// contains LocationContext
|
|
14
|
-
|
|
15
|
-
CargoBookingContext [SK]<->[SK] VoyagePlanningContext
|
|
16
|
-
}
|
|
17
|
-
```
|
|
18
|
-
A context map can be of one of the following `type`s:
|
|
19
|
-
- `SYSTEM_LANDSCAPE` represents the default type of context map in which the bounded contexts represent software systems (or applications).
|
|
20
|
-
- `ORGANIZATIONAL` map (or ‘team map’) illustrates the relationships between teams.
|
|
21
|
-
|
|
22
|
-
The `state` expressing whether the given context map represents the current or a desired state:
|
|
23
|
-
- `AS_IS`: Current State
|
|
24
|
-
- `TO_BE`: Desired State
|
|
25
|
-
[[Bounded Context Relationship]]
|
|
26
|
-
# Relationship Roles
|
|
27
|
-
You can further specify the relationship roles such as Open Host Service (OHS) or Anti-Corruption Layer (ACL) within the brackets. Roles must always be specified behind the U (upstream) and the D (downstream) if they are not omitted.
|
|
28
|
-
|
|
29
|
-
```cml
|
|
30
|
-
VoyagePlanningContext [D,ACL]<-[U,OHS,PL] LocationContext
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
Upstream roles:
|
|
34
|
-
- Open Host Service (OHS)
|
|
35
|
-
- Published Language (PL)
|
|
36
|
-
The patterns OHS and PL can only be implemented by the upstream context in an upstream-downstream relationship. The upstream context always provides and exposes a certain functionality. The downstream context uses and consumes this services and does not expose parts of his/her own domain model. If this was the case and the upstream used this functionality, the definition that the upstream is independent of the downstream would be contradicted.
|
|
37
|
-
|
|
38
|
-
Downstream roles:
|
|
39
|
-
- Conformist (CF)
|
|
40
|
-
- Anticorruption Layer (ACL).
|
|
41
|
-
# Relationship Attributes
|
|
42
|
-
`implementationTechnology`: Within the body of the declaration, it is possible to specify the implementation technology used to realize this relationship:
|
|
43
|
-
|
|
44
|
-
`downstreamRights`: defines which governance rights, and therefore which influence, the downstream has on the upstream within the specified relationship:
|
|
45
|
-
The possible governance rights values are:
|
|
46
|
-
- INFLUENCER
|
|
47
|
-
- OPINION_LEADER
|
|
48
|
-
- VETO_RIGHT
|
|
49
|
-
- DECISION_MAKER
|
|
50
|
-
- MONOPOLIST
|
|
51
|
-
|
|
52
|
-
`exposedAggregates`: offers the possibility to declare which Aggregates of the upstream bounded context are exposed in order to realize this relationship. The attribute takes a comma-separated list of references to Aggregates. The referenced Aggregates must be part of the upstream context of the relationship.
|
|
53
|
-
|
|
54
|
-
```cml
|
|
55
|
-
VoyagePlanningContext [D,ACL]<-[U,OHS,PL] LocationContext {
|
|
56
|
-
implementationTechnology = "RESTful HTTP"
|
|
57
|
-
downstreamRights = VETO_RIGHT
|
|
58
|
-
exposedAggregates = Customers, Addresses
|
|
59
|
-
}
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
[[Bounded Context]]
|
|
1
|
+
A context map contains bounded contexts and defines their relationships.
|
|
2
|
+
|
|
3
|
+
```cml
|
|
4
|
+
ContextMap DDDSampleContextMap {
|
|
5
|
+
type SYSTEM_LANDSCAPE
|
|
6
|
+
state AS_IS
|
|
7
|
+
// type = SYSTEM_LANDSCAPE
|
|
8
|
+
// state = AS_IS
|
|
9
|
+
|
|
10
|
+
contains CargoBookingContext, VoyagePlanningContext, LocationContext
|
|
11
|
+
// contains CargoBookingContext
|
|
12
|
+
// contains VoyagePlanningContext
|
|
13
|
+
// contains LocationContext
|
|
14
|
+
|
|
15
|
+
CargoBookingContext [SK]<->[SK] VoyagePlanningContext
|
|
16
|
+
}
|
|
17
|
+
```
|
|
18
|
+
A context map can be of one of the following `type`s:
|
|
19
|
+
- `SYSTEM_LANDSCAPE` represents the default type of context map in which the bounded contexts represent software systems (or applications).
|
|
20
|
+
- `ORGANIZATIONAL` map (or ‘team map’) illustrates the relationships between teams.
|
|
21
|
+
|
|
22
|
+
The `state` expressing whether the given context map represents the current or a desired state:
|
|
23
|
+
- `AS_IS`: Current State
|
|
24
|
+
- `TO_BE`: Desired State
|
|
25
|
+
[[Bounded Context Relationship]]
|
|
26
|
+
# Relationship Roles
|
|
27
|
+
You can further specify the relationship roles such as Open Host Service (OHS) or Anti-Corruption Layer (ACL) within the brackets. Roles must always be specified behind the U (upstream) and the D (downstream) if they are not omitted.
|
|
28
|
+
|
|
29
|
+
```cml
|
|
30
|
+
VoyagePlanningContext [D,ACL]<-[U,OHS,PL] LocationContext
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Upstream roles:
|
|
34
|
+
- Open Host Service (OHS)
|
|
35
|
+
- Published Language (PL)
|
|
36
|
+
The patterns OHS and PL can only be implemented by the upstream context in an upstream-downstream relationship. The upstream context always provides and exposes a certain functionality. The downstream context uses and consumes this services and does not expose parts of his/her own domain model. If this was the case and the upstream used this functionality, the definition that the upstream is independent of the downstream would be contradicted.
|
|
37
|
+
|
|
38
|
+
Downstream roles:
|
|
39
|
+
- Conformist (CF)
|
|
40
|
+
- Anticorruption Layer (ACL).
|
|
41
|
+
# Relationship Attributes
|
|
42
|
+
`implementationTechnology`: Within the body of the declaration, it is possible to specify the implementation technology used to realize this relationship:
|
|
43
|
+
|
|
44
|
+
`downstreamRights`: defines which governance rights, and therefore which influence, the downstream has on the upstream within the specified relationship:
|
|
45
|
+
The possible governance rights values are:
|
|
46
|
+
- INFLUENCER
|
|
47
|
+
- OPINION_LEADER
|
|
48
|
+
- VETO_RIGHT
|
|
49
|
+
- DECISION_MAKER
|
|
50
|
+
- MONOPOLIST
|
|
51
|
+
|
|
52
|
+
`exposedAggregates`: offers the possibility to declare which Aggregates of the upstream bounded context are exposed in order to realize this relationship. The attribute takes a comma-separated list of references to Aggregates. The referenced Aggregates must be part of the upstream context of the relationship.
|
|
53
|
+
|
|
54
|
+
```cml
|
|
55
|
+
VoyagePlanningContext [D,ACL]<-[U,OHS,PL] LocationContext {
|
|
56
|
+
implementationTechnology = "RESTful HTTP"
|
|
57
|
+
downstreamRights = VETO_RIGHT
|
|
58
|
+
exposedAggregates = Customers, Addresses
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
[[Bounded Context]]
|
|
63
63
|
[[Semantic Rules]]
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
Domains are defined on the root level of a CML file.
|
|
2
|
-
They provide a container to specify all subdomains which are then referenced on a bounded context with the `implements` keyword.
|
|
3
|
-
A bounded context can also implement the compete domain.
|
|
4
|
-
|
|
5
|
-
```cml
|
|
6
|
-
/* Syntax example: Domain and Subdomains */
|
|
7
|
-
Domain Insurance {
|
|
8
|
-
domainVisionStatement = "Insurance domain vision statement ..."
|
|
9
|
-
|
|
10
|
-
Subdomain CustomerManagementDomain {
|
|
11
|
-
type = CORE_DOMAIN
|
|
12
|
-
domainVisionStatement = "Subdomain managing everything customer-related."
|
|
13
|
-
|
|
14
|
-
Entity Customer {
|
|
15
|
-
String firstname
|
|
16
|
-
String familyname
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/* Add more entities ... */
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
Subdomain ContractManagementDomain {}
|
|
23
|
-
|
|
24
|
-
/* Add more subdomains ... */
|
|
25
|
-
}
|
|
26
|
-
```
|
|
27
|
-
[[domainVisionStatement]]
|
|
28
|
-
[[Domain-Driven Design/Context Map/Domain/type|type]]
|
|
29
|
-
[[supports]]
|
|
30
|
-
|
|
1
|
+
Domains are defined on the root level of a CML file.
|
|
2
|
+
They provide a container to specify all subdomains which are then referenced on a bounded context with the `implements` keyword.
|
|
3
|
+
A bounded context can also implement the compete domain.
|
|
4
|
+
|
|
5
|
+
```cml
|
|
6
|
+
/* Syntax example: Domain and Subdomains */
|
|
7
|
+
Domain Insurance {
|
|
8
|
+
domainVisionStatement = "Insurance domain vision statement ..."
|
|
9
|
+
|
|
10
|
+
Subdomain CustomerManagementDomain {
|
|
11
|
+
type = CORE_DOMAIN
|
|
12
|
+
domainVisionStatement = "Subdomain managing everything customer-related."
|
|
13
|
+
|
|
14
|
+
Entity Customer {
|
|
15
|
+
String firstname
|
|
16
|
+
String familyname
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/* Add more entities ... */
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
Subdomain ContractManagementDomain {}
|
|
23
|
+
|
|
24
|
+
/* Add more subdomains ... */
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
[[domainVisionStatement]]
|
|
28
|
+
[[Domain-Driven Design/Context Map/Domain/type|type]]
|
|
29
|
+
[[supports]]
|
|
30
|
+
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
The `supports` keyword specifies which user requirements a Subdomain implements.
|
|
2
|
-
|
|
3
|
-
```cml
|
|
4
|
-
/* Syntax example for Subdomain that supports specific user requirements: */
|
|
5
|
-
Domain Insurance {
|
|
6
|
-
domainVisionStatement = "Insurance domain vision statement ..."
|
|
7
|
-
|
|
8
|
-
Subdomain CustomerManagementDomain supports CreateCustomers, CreateCustomerAddresses {
|
|
9
|
-
type = CORE_DOMAIN
|
|
10
|
-
domainVisionStatement = "Subdomain managing everything customer-related."
|
|
11
|
-
|
|
12
|
-
Entity Customer {
|
|
13
|
-
String firstname
|
|
14
|
-
String familyname
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
UserStory CreateCustomers {
|
|
21
|
-
As an "Insurance Employee"
|
|
22
|
-
I want to "create" a "Customer" with its "firstname", "lastname"
|
|
23
|
-
so that "I am able to manage the customers data and offer them insurance contracts."
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
UserStory CreateCustomerAddresses {
|
|
27
|
-
As an "Insurance Employee"
|
|
28
|
-
I want to "create" an "Address" for a "Customer"
|
|
29
|
-
I want to "update" an "Address" for a "Customer"
|
|
30
|
-
so that "I am able to manage the customers addresses."
|
|
31
|
-
}
|
|
32
|
-
```
|
|
33
|
-
|
|
1
|
+
The `supports` keyword specifies which user requirements a Subdomain implements.
|
|
2
|
+
|
|
3
|
+
```cml
|
|
4
|
+
/* Syntax example for Subdomain that supports specific user requirements: */
|
|
5
|
+
Domain Insurance {
|
|
6
|
+
domainVisionStatement = "Insurance domain vision statement ..."
|
|
7
|
+
|
|
8
|
+
Subdomain CustomerManagementDomain supports CreateCustomers, CreateCustomerAddresses {
|
|
9
|
+
type = CORE_DOMAIN
|
|
10
|
+
domainVisionStatement = "Subdomain managing everything customer-related."
|
|
11
|
+
|
|
12
|
+
Entity Customer {
|
|
13
|
+
String firstname
|
|
14
|
+
String familyname
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
UserStory CreateCustomers {
|
|
21
|
+
As an "Insurance Employee"
|
|
22
|
+
I want to "create" a "Customer" with its "firstname", "lastname"
|
|
23
|
+
so that "I am able to manage the customers data and offer them insurance contracts."
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
UserStory CreateCustomerAddresses {
|
|
27
|
+
As an "Insurance Employee"
|
|
28
|
+
I want to "create" an "Address" for a "Customer"
|
|
29
|
+
I want to "update" an "Address" for a "Customer"
|
|
30
|
+
so that "I am able to manage the customers addresses."
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
34
|
[[UserStory]]
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
CORE_DOMAIN
|
|
2
|
-
SUPPORTING_DOMAIN
|
|
3
|
-
GENERIC_SUBDOMAIN
|
|
1
|
+
CORE_DOMAIN
|
|
2
|
+
SUPPORTING_DOMAIN
|
|
3
|
+
GENERIC_SUBDOMAIN
|