All Projects → work-capital → workflow

work-capital / workflow

Licence: MIT license
Functional CQRS Eventsourcing Engine

Programming Languages

elixir
2628 projects

Projects that are alternatives of or similar to workflow

Bifrost
This is the stable release of Dolittle till its out of alpha->beta stages
Stars: ✭ 111 (+404.55%)
Mutual labels:  cqrs, eventstore, event-sourcing, eventsourcing
Eventstore
The stream database optimised for event sourcing
Stars: ✭ 4,395 (+19877.27%)
Mutual labels:  cqrs, eventstore, event-sourcing, eventsourcing
Eventflow.example
DDD+CQRS+Event-sourcing examples using EventFlow following CQRS-ES architecture. It is configured with RabbitMQ, MongoDB(Snapshot store), PostgreSQL(Read store), EventStore(GES). It's targeted to .Net Core 2.2 and include docker compose file.
Stars: ✭ 131 (+495.45%)
Mutual labels:  cqrs, eventstore, event-sourcing, eventsourcing
eventuous
Minimalistic Event Sourcing library for .NET
Stars: ✭ 236 (+972.73%)
Mutual labels:  cqrs, eventstore, event-sourcing, eventsourcing
Ultimate Backend
Multi tenant SaaS starter kit with cqrs graphql microservice architecture, apollo federation, event source and authentication
Stars: ✭ 978 (+4345.45%)
Mutual labels:  cqrs, eventstore, event-sourcing
Eventhorizon
CQRS/ES toolkit for Go
Stars: ✭ 961 (+4268.18%)
Mutual labels:  cqrs, event-sourcing, eventsourcing
Cqrs
cqrs framework in go
Stars: ✭ 179 (+713.64%)
Mutual labels:  cqrs, eventstore, event-sourcing
Commanded
Use Commanded to build Elixir CQRS/ES applications
Stars: ✭ 1,280 (+5718.18%)
Mutual labels:  cqrs, eventstore, event-sourcing
Event Sourcing Castanha
An Event Sourcing service template with DDD, TDD and SOLID. It has High Cohesion and Loose Coupling, it's a good start for your next Microservice application.
Stars: ✭ 68 (+209.09%)
Mutual labels:  cqrs, eventstore, event-sourcing
Extreme
Elixir Adapter for EventStore
Stars: ✭ 110 (+400%)
Mutual labels:  cqrs, eventstore, event-sourcing
Eshoponcontainersddd
Fork of dotnet-architecture/eShopOnContainers in full DDD/CQRS design using my own patterns
Stars: ✭ 126 (+472.73%)
Mutual labels:  cqrs, eventstore, eventsourcing
Todomvc Ddd Cqrs Eventsourcing
Implementation of basic Todo app via tastejs/todomvc in C#/Typescript with eventsourcing, cqrs, and domain driven design
Stars: ✭ 134 (+509.09%)
Mutual labels:  cqrs, eventstore, eventsourcing
Eventsourcing
A library for event sourcing in Python.
Stars: ✭ 760 (+3354.55%)
Mutual labels:  cqrs, event-sourcing, eventsourcing
Eventstore
Event store using PostgreSQL for persistence
Stars: ✭ 729 (+3213.64%)
Mutual labels:  cqrs, eventstore, event-sourcing
Go Cqrs All
All-in-one collection for Go CQRS / ES / DDD examples
Stars: ✭ 39 (+77.27%)
Mutual labels:  cqrs, event-sourcing, eventsourcing
Equinoxproject
Full ASP.NET Core 5 application with DDD, CQRS and Event Sourcing concepts
Stars: ✭ 5,120 (+23172.73%)
Mutual labels:  cqrs, eventstore, event-sourcing
Nestjs Cqrs Starter
NestJS CQRS Microservices Starter Project
Stars: ✭ 80 (+263.64%)
Mutual labels:  cqrs, eventstore, event-sourcing
Sequent
CQRS & event sourcing framework for Ruby
Stars: ✭ 400 (+1718.18%)
Mutual labels:  cqrs, eventstore, eventsourcing
Netcoremicroservicessample
Sample using micro services in .NET Core 3.1 Focusing on clean code
Stars: ✭ 403 (+1731.82%)
Mutual labels:  cqrs, event-sourcing, eventsourcing
Eventflow
Async/await first CQRS+ES and DDD framework for .NET
Stars: ✭ 1,932 (+8681.82%)
Mutual labels:  cqrs, eventstore, eventsourcing

CQRS Eventsourcing Workflow Engine

Join the chat at https://gitter.im/cqrs-engine/Lobby

IMPORTANT

Only the data structures are working, for testing and collecting feedbacks. We believe that at the begining of December 2016, the framework will be usable.

Pure functions data structures

In the folder engine > types you will find the data structures, so you can write your pure functions over them, under the "side effects" dimension.

  1. A pure function is given one or more input parameters.
  2. Its result is based solely off of those parameters and its algorithm. The algorithm will not be based on any hidden state in the class or object it’s contained in.
  3. It won’t mutate the parameters it’s given.
  4. It won’t mutate the state of its class or object.
  5. It doesn’t perform any I/O operations, such as reading from disk, writing to disk, prompting for input, or reading input.

Motivation

As aggregates listen for commands, process managers listen for events (sometimes commands also), and as aggregates emmits events, process managers dispatch commands.

  • pure functional data structures for aggregates and process managers
  • use monads (monadex) to simulate different business scenarios
  • one abstraction to implement side-effects
  • multiple data-stores
  • plugable message queue for publishing events
  • one gen_server implementation for aggregates and process managers
  • automatic process-manager creation based on correlation-ids (as suggested by Greg Young)
  • easy use of FSM on process managers

Develop

mix test.watch

Send events from the prompt:

iex -S mix
TODO: add example

Eventstore

Run a docker instance in your machine. If you have mac, ask the sys-admin to start it in a linux server on you LAN or WAN. Access the web gui in http://localhost:2113 . User: admin, pass: changeit

docker run --name eventstore-node -it -p 2113:2113 -p 1113:1113 eventstore/eventstore

Resources

Below you can see several resources I researched before writing this lib. Special thanks for Ben Smith, where many ideas were copied from commanded library.

  • burmajam for sharing the very well written extreme driver to connect to Eventstore.
  • slashdotdash for sharing the CQRS framework, where many parts of the code here are from his framework.
  • cqrs-erlang - A memory model using standard spawn functions CQRS in erlang.
  • gen-aggregate - Macro for the aggregate structure, using buffers.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].