danielgerlag / workflow-core

Lightweight workflow engine for .NET Standard
MIT License
5.39k stars 1.2k forks source link

[Question] Impact of WorkflowRegistry storing all definitions in memory. #1207

Open Julian-Robinson opened 1 year ago

Julian-Robinson commented 1 year ago

Hi team

We're evaluating whether Workflow-Core is suitable option for us as a workflow engine to drive an end user automation feature to allow our users to create their own simple automation steps (eg, when x happens, then do y then z). Our approach so far is that when a user sets up a workflow, we create and register a workflow definition to represent it and it seems to be working. But with this model, there will likely be many thousand Workflow Definitions as users set up their own automation rules.

One thing we've noticed is in the WorkflowRegistry implementation (below) it loads all definitions on startup and stores them in a concurrent dictionary in memory. We're wondering whether there may be a ceiling we hit here if we have a lot of definitions.

https://github.com/danielgerlag/workflow-core/blob/ab97ce9c24670b7f9810e8d0da94141fe771c41a/src/WorkflowCore/Services/WorkflowRegistry.cs#L11-L35

So I guess my questions are:

Thanks, and we really appreciate your time looking over this.

danielgerlag commented 1 year ago

You could create an alternative implementation of IWorkflowRegistry that persists to a datastore and swap it out with the in-memory one.