Alterations
An alteration represents a change that can be applied to a given workflow instance.
Using alterations, you can change the state of a running workflow instance without republishing the workflow definition. In release/3.8.0, Elsa exposes alterations through server APIs and Elsa Studio.
For the task-oriented path through immediate execution, filtered plans, Studio, durability, and retry operations, start with Alter a Running Workflow Instance.
What Elsa ships in release/3.8.0
Enabling UseAlterations() adds:
the built-in
Elsa.Alterations.ExecuteAlterationPlansystem workflow used to execute submitted plansREST endpoints under
/alterationsin-memory alteration plan and job stores by default
an in-memory background dispatcher for alteration jobs by default
The write endpoints shown on this page require the run:alterations permission. Reading stored plan and job status uses read:alterations.
When to use alterations
Use alterations when you need to correct or steer existing workflow instances. Typical examples include:
updating a variable on a live instance
scheduling an activity so a stalled workflow can continue
canceling a workflow or a specific running activity
migrating a running instance to a specific version of the same definition
Alteration Types
Elsa Workflows supports the following alteration types:
Cancel: Cancels the entire workflow instance.
CancelActivity: Cancels a specific running activity instance, or all running instances of an activity ID.
ScheduleActivity: Schedules an activity for execution by activity ID or activity instance ID.
ModifyVariable: Modifies a workflow variable by variable ID.
Migrate: Migrates a workflow instance to a specific version of the same workflow definition.
Two execution modes
Elsa supports two ways to execute alterations:
Submit an alteration plan when you want Elsa to select target instances from a filter and process them asynchronously in the background.
Apply alterations immediately when you already know the workflow instance IDs and want the results in the current request.
Use these pages for each mode:
Which mode fits which job
You already know the exact workflow instance IDs and need the response now
POST /alterations/run or IAlterationRunner
You need Elsa to find matching workflow instances from filters and process them in the background
alteration plans
You need to retry faulted activities for known workflow instances
GET or POST /alterations/workflows/retry
You want designers or operators to stage alterations for one running instance visually and inspect resulting plans later
Elsa Studio alterations module
Elsa Studio
Elsa Studio in release/3.8.0 includes an alterations module. When the backend Alterations feature is enabled, Studio shows an Alterable instances page and adds Alter actions for running workflow instances.
Studio exposes:
an Alterations top-level menu with Instances and Plans views
an Alterable instances page that lists non-system running workflow instances
an alteration designer for staging the five built-in alteration types against an instance
plan details pages that show plan status, generated jobs, and per-job logs
quick Alter actions from workflow-instance screens
Studio creates plan submissions from a selected workflow instance. For cross-instance bulk operations, use alteration plans and their filter-based API, then use Studio's Plans view to inspect the resulting jobs and logs.
Persistence and dispatch options
By default, Alterations uses in-memory stores and an in-memory background dispatcher. That is fine for local development, but plans and jobs are not durable across process restarts.
For durable or multi-node deployments, configure persistence for alteration plans and jobs:
MongoDB persistence is available from elsa-extensions:
elsa-extensions also provides a MassTransit-backed dispatcher for background alteration jobs:
Use the MassTransit dispatcher when alteration jobs should survive node boundaries or be processed by worker nodes connected through MassTransit. The dispatcher replaces the default in-memory background queue for alteration jobs only; it does not change how the immediate /alterations/run endpoint executes.
Operational notes
Submitted plans create one alteration job per matched workflow instance.
If a submitted plan matches no instances, Elsa still stores the plan but generates no jobs.
/alterations/rundispatches successful workflow instances that still have scheduled work after the alterations finish.IAlterationRunnerby itself does not dispatch scheduled work; pair it withIAlteredWorkflowDispatcherwhen you call the service directly.The retry endpoint schedules faulted activities by creating
ScheduleActivityalterations and then dispatching the targeted workflow instances.
Last updated