Skip to content

Conversation

@bartelink
Copy link
Collaborator

@bartelink bartelink commented Nov 29, 2019

The eqxfc template hosts aggregates based on some patterns relevant to Fulfilment Centers. The goal is more to illustrate techniques of unit, integration testing and decoupling than necessarily to represent the exact business logic one might need.

This PR (originally developed in jet/equinox#181) illustrates an approach to deal with long-lived streams without having them actually be infinite, which involves:

  1. a LocationEpoch that maintains a rolling balance
  • each successor deterministically has the balance carried forward written as the first event of the stream
  • there's a Closed event, after which no writers are permitted to write
  1. a LocationSeries aggregate which holds a pointer to verified active epoch (competing readers/writers read this optimistically on a cached basis; in the event that they're behind, they'll compete to log the successful commencement of a new epoch, which cannot happen before the CarriedForward event for the successor epoch has been committed)
  2. an Inventory.Transaction aggregate that fulfills two purposes
  • holds state pertaining to in-flight work
  • the events mark staging points in the flow
  1. a set of coordinated streams: a) InventorySeries b) InventoryEpoch, which are used to (idempotently) record the conclusion of each transfer/adjustment on a global summary stream
  2. an Inventory.Process.Service which is a Process Manager that orchestrates the work involved in the transactions

7. a Watchdog service that listens for stalled transactions, using the Inventory.Process.Service to drive a given flow to a conclusion if it has been determined to be stalled (open for 10s but not completed) /equinox-shipping bears a more complete version than that which existed here; the Drive member will remain here as a placeholder, but there's plenty interesting stuff in here without throwing yet another concept into the mix

See #50 for a simplified edition which removes the LocationSeries and CarriedForward concepts in order to make it easier to inspect the mechanism

@bartelink bartelink force-pushed the master branch 2 times, most recently from fe578fe to d1bd9da Compare December 7, 2019 09:20
@bartelink bartelink force-pushed the add-fc branch 2 times, most recently from 7c606dd to 5d69f03 Compare December 7, 2019 09:25
@bartelink bartelink force-pushed the add-fc branch 2 times, most recently from 32e2cdd to 6b328de Compare December 7, 2019 12:31
@bartelink bartelink force-pushed the add-fc branch 2 times, most recently from b1913ed to 2bb7ee3 Compare January 28, 2020 11:07
@bartelink bartelink changed the title Add Fulfilment Center template Add Inventory management template Jan 28, 2020
@bartelink bartelink force-pushed the master branch 3 times, most recently from acee782 to e1e5aa6 Compare February 10, 2020 07:12
@bartelink bartelink force-pushed the add-fc branch 5 times, most recently from 4025bb0 to 65c0b3c Compare February 18, 2020 08:56
@bartelink bartelink force-pushed the add-fc branch 2 times, most recently from c68d2e6 to 8503ac5 Compare February 19, 2020 09:57
- [`eqxweb`](equinox-web/README.md) - Boilerplate for an ASP .NET Core 2 Web App, with an associated storage-independent Domain project using [Equinox](https://github.com/jet/equinox).
- [`eqxwebcs`](equinox-web-csharp/README.md) - Boilerplate for an ASP .NET Core 2 Web App, with an associated storage-independent Domain project using [Equinox](https://github.com/jet/equinox), _ported to C#_.
- [`eqxtestbed`](equinox-testbed/README.md) - Host that allows running back-to-back benchmarks when prototyping models using [Equinox](https://github.com/jet/equinox), using different stores and/or store configuration parameters.
<a name="eqxFc"></a>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this HTML anchor tag a side effect from an IDE or something?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nope, just so I can link to a section within the readme, i.e. github.com/jet/equinox#eqxfc - changelog.md uses it also to provide an alias thats better than default generated ones

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants