Tools and Designers

Graphical designer

To get developers started with Event Sourcing (and CQRS) the use of a designer graphically to lay out the aggregates, events and projections and of code generation templates to turn this design into individual classes that implement them is required.

These designers should also output business documentation describing what events are being recorded and what projections are defined over those events.

Each of the designable things: Aggregates, Events and Projections will have their own dialog for setting the properties pertaining to it and the main designer pane will allow rapid navigation between them and also creation of the aggregate hierarchy (if required)

Each of the "designable things" is represented by a model class which can be used to document and in code-generation for the classes that will implement these things.

The top level class for a design is the EventSourcingModel class. This has properties to identify the event sourcing model in use (name, description) and then contains a collection of AggregateModel class that identify the Aggregates (aggregate roots) in use in the system.

Each AggregateModel class has a collection of EventModel class records that detail all of the event types that can occur to that aggregate, along with their properties. It also has a collection of ProjectionModel class that detail the Projections that can be run over that event stream.

The ProjectionModel class has a set of events that it handles (for any given projection does not have to handle every event type - some may have no relevance). For this it has a collection of EventHandledModel class for each event handled and in turn each of these has a collection of EventPropertyOperationModel class that describe what operations the projection performs using the properties of the event to apply to the properties of the projection.

Command line

For script-ability and for users that prefer the command line interface there is a command line syntax for building CQRS models. This operates directly on the .cqrs model file contents.

Code and documentation generation

The graphical tool supports turning the designed CQRS model into source code (VB.Net or C#) by Code Generation and creation of documentation from that same model by Documentation Generation.

Last edited Oct 30, 2015 at 5:04 PM by Merrion, version 8