浏览代码

Minor doc updates.

Patrik Fredriksson 17 年前
父节点
当前提交
95d1f5bf3d

+ 6
- 6
dddsample/src/site/apt/architecture.apt 查看文件

8
 
8
 
9
 [images/layers.png]
9
 [images/layers.png]
10
 
10
 
11
-  There are three vertical layers: interfaces, application and domain, each supported by different kinds of infrastructure.
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
 
23
     are interface-independent and can be synchronous or message-driven. This layer is well suited for spanning
23
     are interface-independent and can be synchronous or message-driven. This layer is well suited for spanning
24
     transactions, high-level logging and security.
24
     transactions, high-level logging and security.
25
 
25
 
26
-    The application layer is thin in terms of domain logic - it merely coordinates the domain layer objects
27
-    perform the actual work.
26
+    The application layer is thin in terms of domain logic - it merely coordinates workflow and delegates to the domain
27
+    layer objects to perform the actual work.
28
 
28
 
29
 {Domain}
29
 {Domain}
30
 
30
 
39
 	The core of the business logic, such as determining whether a handling event should be registered and how the delivery of a cargo
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
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
41
 	the domain layer should follow the ubiquitous language, and you should be able to explain to a domain expert
42
-	how this part of the software works by drawing a few simple diagrams and using the actual class- and method names
42
+	how this part of the software works by drawing a few simple diagrams and using the actual class and method names
43
 	of the source code.
43
 	of the source code.
44
 
44
 
45
 {Infrastructure}
45
 {Infrastructure}
46
 
46
 
47
-	In addition to the three vertical layers, there's also the infrastructure. As the the picture shows, it supports
47
+	In addition to the three vertical layers, there is also the infrastructure. As the the picture shows, it supports
48
 	all of the three layers in different ways, facilitating communication between the layers. In simple terms,
48
 	all of the three layers in different ways, facilitating communication between the layers. In simple terms,
49
 	the infrastructure consists of everything that exists independently of our application: external libraries,
49
 	the infrastructure consists of everything that exists independently of our application: external libraries,
50
 	database engine, application server, messaging backend and so on.
50
 	database engine, application server, messaging backend and so on.
53
 	Looking for example at the persistence aspect, the database schema definition, Hibernate configuration and mapping files
53
 	Looking for example at the persistence aspect, the database schema definition, Hibernate configuration and mapping files
54
 	and implementations of the repository interfaces are part of the infrastructure layer.
54
 	and implementations of the repository interfaces are part of the infrastructure layer.
55
 
55
 
56
-	While it can be tricky to give a waterproof definition of what kind of code belongs to the infrastructure layer for any given situation,
56
+	While it can be tricky to give a solid definition of what kind of code belongs to the infrastructure layer for any given situation,
57
 	it should be possible to completely stub out the infrastructure in pure Java unit/scenario tests and still be able to
57
 	it should be possible to completely stub out the infrastructure in pure Java unit/scenario tests and still be able to
58
 	use the domain layer and possibly the application layer to work out the core business problems.
58
 	use the domain layer and possibly the application layer to work out the core business problems.

+ 0
- 1
dddsample/src/site/apt/characterization.apt 查看文件

39
 
39
 
40
     The main reason for not making <<<HandlingEvent>>> part of the cargo aggregate is performance. <<<HandlingEvent>>>s are received from external parties and systems, e.g. warehouse management systems, port handling systems, that call our <<<{{{xref/se/citerus/dddsample/interfaces/handling/ws/HandlingReportServiceImpl.html}HandlingReportService}}>>> webservice implementation. The number of events can be very high and it is important that our webservice can dispatch the remote calls quickly. To be able to support this use case we need to handle the remote webservice calls asynchronously, i.e. we do not want to load the big cargo structure synchronously for each received <<<HandlingEvent>>>. Since all relationships in an aggregate must be handled synchronously we put the <<<HandlingEvent>>> in an aggregate of its own and we are able processes the events quickly and at the same time eliminate dead-locking situations in the system.
40
     The main reason for not making <<<HandlingEvent>>> part of the cargo aggregate is performance. <<<HandlingEvent>>>s are received from external parties and systems, e.g. warehouse management systems, port handling systems, that call our <<<{{{xref/se/citerus/dddsample/interfaces/handling/ws/HandlingReportServiceImpl.html}HandlingReportService}}>>> webservice implementation. The number of events can be very high and it is important that our webservice can dispatch the remote calls quickly. To be able to support this use case we need to handle the remote webservice calls asynchronously, i.e. we do not want to load the big cargo structure synchronously for each received <<<HandlingEvent>>>. Since all relationships in an aggregate must be handled synchronously we put the <<<HandlingEvent>>> in an aggregate of its own and we are able processes the events quickly and at the same time eliminate dead-locking situations in the system.
41
     
41
     
42
-[images/aggregates.gif]
43
 
42
 
44
 {Repositories}
43
 {Repositories}
45
 
44
 

+ 1
- 1
dddsample/src/site/apt/download.apt 查看文件

42
 
42
 
43
     The start page is available at {{http://localhost:8080/dddsample}}, and has links to the various interfaces.
43
     The start page is available at {{http://localhost:8080/dddsample}}, and has links to the various interfaces.
44
 
44
 
45
-	There is a screencast available on the project site that demonstrates how the different interfaces are used.
45
+	There is a {{{screencast.html}screencast}} available on the project site that demonstrates how the different interfaces are used.
46
 
46
 
47
     An RMI registry will be started on port <<<1099>>>, in addition to the Jetty container on port <<<8080>>>, so those ports
47
     An RMI registry will be started on port <<<1099>>>, in addition to the Jetty container on port <<<8080>>>, so those ports
48
     need to be available or you have to reconfigure the application.
48
     need to be available or you have to reconfigure the application.

+ 1
- 1
dddsample/src/site/apt/index.apt 查看文件

48
 Caveats
48
 Caveats
49
 
49
 
50
   	Domain-driven design is a very broad topic, and contains lots of things that are difficult or impossible
50
   	Domain-driven design is a very broad topic, and contains lots of things that are difficult or impossible
51
-    to incorporate into the code base of a sample application, most importantly communication with the domain
51
+    to incorporate into the code base of a sample application. Perhaps most important is communication with the domain
52
     expert, iterative modelling and the discovery of a ubiquitous language. This application is a snapshot in time,
52
     expert, iterative modelling and the discovery of a ubiquitous language. This application is a snapshot in time,
53
     the result of a development effort that you need to imagine has been utilizing domain-driven design,
53
     the result of a development effort that you need to imagine has been utilizing domain-driven design,
54
     to show how one can structure an application around an isolated, rich domain model in a realistic environment.
54
     to show how one can structure an application around an isolated, rich domain model in a realistic environment.

+ 1
- 1
dddsample/src/site/apt/roadmap.apt 查看文件

11
   * Handling voyage delays and intentional rescheduling, how that affects itineraries
11
   * Handling voyage delays and intentional rescheduling, how that affects itineraries
12
 
12
 
13
   * More one the time aspect: timezones for locations and handling events,
13
   * More one the time aspect: timezones for locations and handling events,
14
-    notify on delayed delivery, port to TimeAndMoney or similar date/time framework
14
+    notify on delayed delivery, port to {{{http://timeandmoney.sourceforge.net/}TimeAndMoney}} or similar date/time framework

+ 1
- 1
dddsample/src/site/xdoc/screencast.xml 查看文件

10
   <body>
10
   <body>
11
     <section name="Screencast">
11
     <section name="Screencast">
12
       <p>
12
       <p>
13
-        Here's a 10 minute screencast that shows the different interfaces in action.
13
+        Here is a 10 minute screencast that shows the different interfaces in action.
14
       </p>
14
       </p>
15
       <object width="425" height="344">
15
       <object width="425" height="344">
16
         <param name="movie" value="http://www.youtube.com/v/eA8xgdtqqs8&amp;hl=en&amp;fs=1"></param>
16
         <param name="movie" value="http://www.youtube.com/v/eA8xgdtqqs8&amp;hl=en&amp;fs=1"></param>