The VLINGO/LATTICE component provides tooling for reactive Domain-Driven Design projects that are highly concurrent. The tools of the component include compute grid, actor caching, spaces, cross-node cluster messaging, publish-subscribe, CQRS, and Event Sourcing support.
Feature | Description |
Supports three styles of persistence, including Object, Stateful, and Sourced. ​ Command-Query Responsibility Segregation uses two models per Bounded Context (application or service), the Command Model and the Query Model, otherwise known as the Read Model and the Write Model, respectively. | |
​CQRS​ | Understanding the Command-Query Responsibility Segregation pattern. |
​Grid​ | Provides an API for distributed computations and data processing across multiple nodes in a cluster. Supports distributed parallel processing by sending computational execution requests to actors on any node in a cluster with the potential to receive results in return. |
​Exchange​ | Provides an abstraction over Publish-Subscribe messaging exchanges or topics. This is a means to publish messages to exchanges/topics inside or outside your current application/service, and to subscribe to such messages. Provides translators from internal to external message types, and from external to internal message types. |
​Processes​ | Long-running processes that manage complex, coarse-grained, business transactions, must be managed through every step until completion. These tools assist in managing such processes whether by means of object persistence, stateful command models, or sourced with commands. |
​Projections​ | How to project state, Domain Events, and other Source types into a CQRS Query Model. |
​Routers​ | Use message-driven command routing to handlers that are responsible for modifying the domain model, which may be segregated as a Command Model. |
The following types are defined in the VLINGO/LATTICE component and commonly used with domain-driven designed services.
Type | Descriptio |
| A abstract type used to model a record of fact about an important business occurrence in the domain model |
| A abstract type used to model a record of fact about an important business occurrence in the domain model and that has an identity associated with it, which can be used for correlation |
| An abstract type used to create an Event Sourced entity that is backed by a persistent Journal |
| An abstract type used to model a record of an imperative directive to carry out a business operation |
| An abstract type used to create an Command Sourced entity |
| An abstract type used to model an entity that is backed by object-relational persistence |
| An abstract type used to model an entity that is backed by Key-Value persistence |
| An interface implemented by a component that orchestrates the steps necessary to complete a composite task |
| An interface implemented by a component that serves to project Command Model state onto the Query Model |
| An interface used to abstract the Command Model data projected onto the Query Model |
| An abstraction over Publish-Subscribe messaging exchanges and topics |
| A means of asynchronous message-driven command routing to handlers that are responsible for modifying the domain model |
These types are discussed in detail throughout the subsections of this chapter.
​