View on GitHub
Clean Architecture Toolkit for .NET
Clean Architecture Toolkit is a clean, modular architecture foundation for .NET applications.
It embraces SOLID principles and focuses on maintainability, testability, and scalability through clear boundaries and pluggable design.

|   HOME   |   MODULE OVERVIEW   |   DEMO   |

Plans for Cat.FluentWorkflows

Future work in the existing Cat.FluentWorkflows module: suspend and resume, and maybe parallel branches.
Status: not started. Cat.FluentWorkflows itself exists. This plan collects what we know. The open questions need an answer before the build.

Contents

The idea

Today a workflow runs from the first step to the last in one go, in memory. Two things are missing for longer processes.

Suspend and resume. A step says “stop here, continue when the answer arrives”. The engine reports a suspended workflow, and a later call picks it up at the saved position. The saga work needs this. It is generic, so it also allows a pause and resume in tests.

Parallel branches. Some processes wait for two answers at once, such as payment and stock. The engine has no way to run branches side by side.

The suspend change must live in the engine, because a new module cannot stop the recursion of the parent containers in a way that can be resumed. The storage, correlation and messaging around it do not belong here. They are planned in Cat.Sagas.

What we already know

From the saga plan (Cat.Sagas.md):

From the module:

From the demo:

Decisions and open questions

Decided

Topic Decision
Home of suspend and resume The engine, Cat.FluentWorkflows. Storage and messaging go in a separate module. See Cat.Sagas.md.

Open

Questions before building

  1. Do suspend and resume ship before the saga module, as the saga plan proposes?
  2. Are parallel branches in the first version or out?
  3. How should a changed workflow behave for stored instances?
  4. Do we keep the activity source name Cat.FluentWorkFlows?
  5. Which steps and containers must support suspend in the first version?