Skip to main content

Hotel

A hotel group checkout example can be found on the project's github. Its main goal is to show how to implement a process manager in EquinoxJS by composing deciders, services and reactions.

This example matters because it demonstrates that EquinoxJS can handle the kind of cross-aggregate workflow many libraries solve by introducing a dedicated workflow abstraction. Here, the same result is achieved by composing the core primitives directly.

The example is intentionally interesting because it crosses aggregate boundaries without introducing a separate workflow framework. The GroupCheckout aggregate maintains process state, Flow.nextAction derives the next step from that state, and the reactor host wakes the process up from the store's change feed.

The README explains the operational considerations in detail, including how the reactor deals with feed lag and how the process manager composes with domain services.

Components

What It Demonstrates

  • A process manager built from ordinary EquinoxJS primitives
  • How folded aggregate state can be projected into a Flow action
  • How a reaction host drives cross-stream work from the store's change feed
  • How to keep domain logic in services and deciders rather than transport or workflow infrastructure
  • That the library's "not a framework" stance still covers real workflow use cases

Tech used

  • EquinoxJS
  • variant for creating DUs
  • immer for updating state using mutable code
  • AWS CDK to deploy the DynamoStore stack