Domain Events and Canonical Message Models

Here are a few givens. First, we have the following Domain Event type:


Assuming that this Domain Event will be published as the payload of the following Message type:


What do you think? Is this the right way, an acceptable way, or utterly the wrong way to publish a Domain Event across the enterprise, or even further, to Internet clients?
Continue Reading →

Implementing Domain-Driven Design Workshop In Colombia


Here I am on a Friday evening in Bogotá, Colombia. This week I taught my Implementing Domain-Driven Design Workshop here. We had a nice group of students, and as usual the class had their eyes opened to what it means to implement with DDD. This was a slightly condensed Workshop, being only two days rather than the normal three. Still, we were able to cover all the material as well as many of the Workshop problems and coding exercises. It is a lot of material to cover in two days, and most student brains were filled to the brim by the time we finished. All of the students were quite pleased after experiencing several strategic and tactical “ah ha!” moments along the way.

Naturally I got some good feedback that I am putting into the slides and code exercises. It was suggested I provide a basic set of components for both Java and .NET developers on which they can work their exercises. I think I will do this, but I also don’t want the next classes to be too heavily focused on architectural mechanisms, but to be more concerned with the resulting domain model and accompanying tests.
Continue Reading →

Guaranteed Anemia with Dozer

Today I was inspired by Scott Hanselman to get my blogging act together. It’s been awhile, maybe nine months or more. It’s way overdue.

I’ve been helping a colleague on a (currently confidential) project for the NYSE. The goal is to introduce Domain-Driven Design in some incremental steps. He posed a few questions today. The discussion starts with this background: “PROJECT_NAME has both service ‘domain’ objects and data ‘domain’ objects (mostly called the same names and they give it the domain namespace, not I). The transport mechanism delivers “service” objects from the UI and other services. When they are ready to be Hibernate persisted they get transformed via Dozer to a data ‘domain’ object. For instance, while some service is dealing with an order object, it is a service ‘order’ object. When the service throws it over the wall to the Repository, the service Dozers it to a data ‘order’ object and shovels it into the queue channel for delivery to the DAL.”
Continue Reading →

Protecting Aggregate Dependencies

On October 17, I presented on Part I of my DDD Effective Aggregate Design essay at the Denver-Boulder DDD Meetup. We had a nice attendance and once again benefited from the use of Quark’s conference room. We had a good turn out with around 20 in attendance.

Even after the essay and presentation, I am concerned that the vital message about true invariants is being missed by some. Of course it is to be expected since anyone who has designed aggregates has faced the various challenges of grasping true business rules that absolutely require transactional consistency.
Continue Reading →

DDD Meetup: Stategic Design with Bounded Contexts and Context Mapping

Tonight Paul Rayner presented on some of DDD’s essential strategic design elements, Bounded Contexts and Context Mapping. This was also the topic of my REST with DDD QCon presentation back in November 2010. Paul is one of Eric’s DDD Immersion instructors, and so he carries a well-rounded understanding into his material. It’s great to have Paul and Randy Stafford as co-organizers with me.
Continue Reading →


Your Cart