peter_backlund пре 17 година
родитељ
комит
eac5d00a8c

+ 14
- 10
dddsample/src/site/apt/architecture.apt Прегледај датотеку

@@ -10,14 +10,14 @@ Architecture
10 10
 
11 11
   There are three vertical layers: interfaces, application and domain, each supported by different kinds of infrastructure.
12 12
 
13
-* Interfaces
13
+{Interfaces}
14 14
 
15
-	This layer holds everythng that interacts with other systems, such as web services, RMI interfaces
15
+	This layer holds everything that interacts with other systems, such as web services, RMI interfaces
16 16
 	or web applications, and batch processing frontends. It handles interpretation, validation and translation
17 17
 	of incoming data. It also handles serialization of outgoing data, such as HTML or XML across HTTP to
18 18
 	web browsers or web service clients, or DTO classes and distributed facade interfaces for remote Java clients.
19 19
 
20
-* Application
20
+{Application}
21 21
 
22 22
     The application layer is responsible for defining the use cases of the application, operations that can
23 23
     are interface-independent and can be synchronous or message-driven. This layer is well suited for spanning
@@ -26,19 +26,23 @@ Architecture
26 26
     The application layer is thin in terms of domain logic - it merely coordinates the domain layer objects
27 27
     perform the actual work.
28 28
 
29
-* Domain
29
+{Domain}
30 30
 
31 31
 	The domain layer is the heart of the software, and this is where the interesting stuff happens.
32 32
 	There is one package per aggregate, and to each aggregate belongs entities, value objects, domain events,
33
-	a repository interface and sometimes factories. The aggregate roots are Cargo, HandlingEvent, Location and Voyage.
34
-
35
-	Everything about determining whether a handling event should be registered and how the delivery of a cargo
36
-	is affected by handling and belongs in here. The structure and naming of aggregates, classes and methods in
37
-	should follow the ubiquitous language, and you should be able to explain to a domain expert
33
+	a repository interface and sometimes factories. The aggregate roots are
34
+	<<<{{{xref/se/citerus/dddsample/domain/model/cargo/Cargo.html}Cargo}}>>>,
35
+	<<<{{{xref/se/citerus/dddsample/domain/model/handling/HandlingEvent.html}HandlingEvent}}>>>, 
36
+	<<<{{{xref/se/citerus/dddsample/domain/model/location/Location.html}Location}}>>> and
37
+	<<<{{{xref/se/citerus/dddsample/domain/model/voyage/Voyage.html}Voyage}}>>>.
38
+
39
+	The core of the business logic, such as determining whether a handling event should be registered and how the delivery of a cargo
40
+	is affected by handling, belongs in here. The structure and naming of aggregates, classes and methods in
41
+	the domain layer should follow the ubiquitous language, and you should be able to explain to a domain expert
38 42
 	how this part of the software works by drawing a few simple diagrams and using the actual class- and method names
39 43
 	of the source code.
40 44
 
41
-* Infrastructure
45
+{Infrastructure}
42 46
 
43 47
 	In addition to the three vertical layers, there's also the infrastructure. As the the picture shows, it supports
44 48
 	all of the three layers in different ways, facilitating communication between the layers. In simple terms,

+ 5
- 3
dddsample/src/site/apt/characterization.apt Прегледај датотеку

@@ -76,11 +76,13 @@ Characterization
76 76
     The application services in the sample application are responsible for driving workflow and coordinating
77 77
     transaction management (by use of the declarative transaction management support in Spring).
78 78
     They also provide a high-level abstraction for clients to use when interacting with the domain.
79
-    These services are typically designed to support specific use cases or fulfill technical requirements (web services, etc).
79
+    These services are typically designed to define or support specific use cases.
80
+    See <<<{{{xref/se/citerus/dddsample/application/impl/BookingServiceImpl.html}BookingService}}>>> or
81
+	<<<{{{xref/se/citerus/dddsample/application/impl/HandlingEventServiceImpl.html}HandlingEventService}}>>>.
80 82
 
81 83
     In some situations, e.g. when dealing with graphs of lazy-loaded
82 84
     domain objects or when passing services' return values over network boundaries, the services are wrapped in facades.
83 85
     The facades handle ORM session management issues and/or convert the domain objects to more portable
84 86
     {{{http://martinfowler.com/eaaCatalog/dataTransferObject.html}Data Transfer Objects}}) that can be tailored
85
-    to specific use cases.
86
-    See <<<{{{xref/se/citerus/dddsample/interfaces/booking/facade/internal/BookingServiceFacadeImpl.html}BookingServiceFacadeImpl}}>>> for an example.
87
+    to specific use cases. In that case, we consider the DTO-serializing facade part of the {{{architecture.html#Interfaces}interfaces layer}}.
88
+    See <<<{{{xref/se/citerus/dddsample/interfaces/booking/facade/internal/BookingServiceFacadeImpl.html}BookingServiceFacade}}>>> for an example.

+ 10
- 0
dddsample/src/site/apt/index.apt Прегледај датотеку

@@ -13,6 +13,16 @@
13 13
   implementation of the building block patterns as well as illustrate the
14 14
   impact of aggregates and bounded contexts.
15 15
 
16
+News
17
+
18
+  * 2009-03-25: New public release: <<1.1.0>>. See {{{changelog.html}changelog}} for details.
19
+
20
+  * 2009-03-09: Sample application tutorial at the {{{http://qconlondon.com/london-2009/}QCon conference}} in London.
21
+
22
+  * 2009-01-27: Sample application tutorial at the {{{http://www.jfokus.se/jfokus/}JFokus conference}} in Stockholm.
23
+
24
+  * 2008-09-15: First public release: <<1.0>>.
25
+
16 26
 Purpose
17 27
 
18 28
   * A how-to example for implementing a typical DDD application