Universal enterprise-wide model
Customer
Care
Fraud
Prevention
Billing
ANTI
pattern
Slide 35
Slide 35 text
Defined language boundaries DDD
Paradigm
Customer
Care
Fraud
Prevention
Billing
API
Slide 36
Slide 36 text
DDD's
"ubiquitous language"
is NOT universal
Slide 37
Slide 37 text
Bounded contexts for models DDD
Paradigm
Customer
Care
Fraud
Prevention
Billing
API
Slide 38
Slide 38 text
2) Strategic
Design
The three pillars of Domain-Driven Design
3) Modeling
in Code
1) Collaborative
Modeling
3) Modeling
in Code
Slide 39
Slide 39 text
Search!
Close!
Jump!
Customer
Care
Fraud
Prevention
Billing
ANTI
pattern
Process controls other services
Slide 40
Slide 40 text
Process automation IMPLEMENTS
non-atomic, asynchronous services
Slide 41
Slide 41 text
Processes implement a service DDD
Paradigm
Customer
Care
Fraud
Prevention
Billing
API
Slide 42
Slide 42 text
Intention revealing interfaces DDD
Paradigm
Billing
API
Slide 43
Slide 43 text
Synchronous interfaces
Billing
Sync
API
Customer
Care
What looks like a
simple, fast and
atomic operation
today, can tomorrow
turn out to be …
ANTI
pattern
Slide 44
Slide 44 text
A long-running, async business operation
Slide 45
Slide 45 text
Asynchronous interfaces
Billing
Async
API
Customer
Care
Feed
Async APIs will NOT
break, if you later need
more than just a
simple, fast, atomic
operation to implement
Slide 46
Slide 46 text
Objects & code inside the process
Do not mix domain objects or
domain code into your process model
• No type safety or code completion!
• Editing code in vendor-specific modelers? Nah.
• Difficult or even impossible to test :-(
• Complex domain objects as JSON ... seriously?
process +
objects +
code
Crediting
ANTI
pattern
Slide 47
Slide 47 text
Processes as aggregates
Model the
process flow in a
visual form
1
DDD
Paradigm
Invoice Dispute Process
Model the
domain objects
in code
2
Invoice Dispute Root Entity
3
Bind them 1:1
and transition
them as an
aggregate
1
1
${root}
Slide 48
Slide 48 text
Chaotic consistency boundaries ANTI
pattern
Update with an
ACID transaction
A
B
Slide 49
Slide 49 text
Defined consistency boundaries DDD
Paradigm
Update with an
ACID transaction
B
A
Aggregates
Strong consistency
Eventual consistency
Slide 50
Slide 50 text
BPMN DDD
Well-designed processes can be seen as aggregates?