harvest library

Harvest event store and CQRS API

Classes

AggregateRoot
The root of an object tree (aggregate)
ApplicationCommand
Application commands are not part of the CQRS event chain (and are thus not handled by ordinary command handlers). They serve the same purpose within the application as ordinary commands (to signal that something should be done). [...]
ApplicationEvent
Application events are not part of the CQRS event chain (and thus not persisted). They serve the same purpose within the application as ordinary events (to signal that something has happend). [...]
CallbackCompleted
Mixin for messages that are completed manually by their subscribers
DomainCommand
Commands represents a serialized method call and are created by the application. Commands are usually written in the imperative tense and cannot be persisted as they can have possible side effects [...]
DomainEvent
Events that can be stored, ususally named in the past tense as they describe a event that has taken place
DomainRepository<T extends AggregateRoot>
Repository that stores and retrieves domain objects (aggregates) by their events.
EventSourcedEntity
Event sourced entity that is part of a aggregate (but not the root) [...]
EventStore
Facade for creating and accessing EventStreams
EventStream
Track a series of events and commit them to durable storage
Guid
Wrap external Uuid library into own class, until Dart provides its own official implementation
Identifiable
Marker interface than can optionally be put on models to ensure they can be saved in the model repository.
MemoryEventStore
Memory backed event store
MemoryModelRepository<T extends Identifiable>
Memory backed model repository
Message
Message
MessageBus
Message bus for registrering and routing Message's to their MessageHandler
MessageCoordinator
Coordinate delivery of messages to listeners so we can notify completers of their delivery
MessageStream
Stream that notifies MessageStreamSubscription when new subscriptions are added for messages of type messageType
MessageStreamController
Wrapper for creating and accessing the Sink and Streams used to handle messages of type messageType
MessageStreamSink
Sink that notifies MessageCoordinator when messages of type messageType are dispatched
MessageStreamSubscription
ModelRepository<T>
Repository for working with read-models
Process
Processes are used to model long running business processes where multiple steps (commands) needs to be executed in sequence. The actual work done in the process is performed by the commands executed in each step, thus a step should effectivly not contain any business logic but only dispatch commands to carry out the actual work. [...]
ProcessManager
Create and manage life cycle of long running processes
ProcessPrototype
Reusable description of a process that can be run repeatedly
StatusCallback
Generic callback to communicate success or failure
Step
A step in a business process (see Process) responsible carrying out a atomic piece of work. Steps have the responsibility of [...]
WorkItem<T extends Step>
WorkLog<T extends Step>
Log of the work executed by a step

Functions

typeNameOf(Object obj) String

Typedefs

AggregateBuilder(Guid aggregateId) AggregateRoot
Function that returns a bare aggregate root for the supplied aggregateId
ChangeHandler(DomainEvent event) → dynamic
ContentEnricher(Message message) → dynamic
Function responsible for enriching a Message with extra data, such as session tokens before its fired
MessageEnricher(Message message) → dynamic
Called automatically by MessageBus prior to dispatching messages to MessageHandler's. Allows us to augment a Message with missing information such as session id, user information etc.
MessageErrorHandler(Object object) → void
Function invoked when a message subscriber fails
MessageHandler(Message message) → dynamic
Function executed when a message is fired on the MessageBus
ProcessCreator(MessageBus messageBus) Process
Create processes running on messageBus
StepCreator() Step
Used by Process to creating Step's each time they are needed to perform work or compensate

Exceptions / Errors

ConcurrencyError
Optimistic concurrency conflict between multiple writers.