What's Changed
Trigger Indexing
A major change was introduced that changes the way how workflow triggers are indexed.
Originally, ALL workflow blueprints would be loaded into memory during application startup, after which the triggers were being indexed.
This however poses a serious startup performance issue when the system contains more than a few hundred workflow definitions. Some users reported a startup time of around 15 seconds when testing with a set of around 1500 workflow definitions.
Elsa needs to be able to handle any number of workflow definitions, so loading these into memory is not a good idea.
To fix this, a change was necessary.
Instead of indexing triggers from workflow definitions (typically stored in the database) during startup, you can now configure Elsa to skip this step and instead rely on indexing of triggers as workflow definitions get published:
services
.AddElsa(elsa => elsa
// Optionally opt-out of indexing workflows stored in the database.
// These will be indexed when published/unpublished/deleted, so no need to do it during startup.
// Unless you have existing workflow definitions in the DB for which no triggers have yet been created.
.ExcludeWorkflowProviderFromStartupIndexing<DatabaseWorkflowProvider>()
)
In addition, workflow triggers are no longer stored in memory. Instead, they are stored in the database.
If you are using the EF Core persistence provider and are maintaining your own migrations, then please take a look at the changed schema (see new migrations in the repo).
What's New
** UserTask **
A new service called IUserTaskService
was added to the user task module that simplifies querying the system for available user actions for a given workflow instance or all available user tasks.
This is helpful when you e.g. need to render a list of workflow instances with available actions.
What's Improved
- Designer updated to use Tailwind CSS 3
- Workflow Registry HTTP endpoint no longer returns child activities of composite activities, improving performance in the designer (e1d42e8)
- Persist workflow after status change and before executing. This prevents an issue where the app or container might crash and the workflow is still in e.g. the Suspended state, which are never resumed automatically (7c1da5b)
- Adding convenience Extension Methods for setting properties on Rebus Activities, following the 'with*' naming convention (#2712) (Adding convenience Extension Methods for setting properties on Rebus Activities, following the 'with*' naming convention (#2712))