github elsa-workflows/elsa-core 2.2.0
Elsa 2.2 🎈

latest releases: 3.1.3, 3.1.2, 3.1.1...
2 years ago

BREAKING CHANGES ⚠️

  • When hosting the Elsa Studio components, you are now required to host and the main component to host as its child, e.g. . See the code snippet in the documentation for an example.
  • When hosting the Elsa Studio components, please make sure to update the stylesheet to the tailwind.css file is replaced with the following path: /_content/Elsa.Designer.Components.Web/elsa-workflows-studio/elsa-workflows-studio.css. See the code snippet in the documentation for an example.
  • Workflow input is now wrapper with a new type called WorkflowInput - this change was necessary to implement resumable workflows that didn't finalize their burst of completion (e.g. due to sudden node shutdown) where input was involved. Originally, input was stored in-memory. This change allows input to be persisted. #1302

What's New

  • You can now host Elsa Studio on a subpath. For example: https://localhost:5001/elsa/studio by setting the base-path attribute on <elsa-studio-root> to e.g. /elsa/studio. See [this project](https://github.com/elsa-workflows/elsa-core/tree/master/src/samples/dashboard/aspnetcore/ElsaDashboard.Samples.AspNetCore.SubPath) for an example. Note: there is currently a limitation due to conflicting routes with Elsa API endpoints. The limitation is that you need to make sure the base path consists of at least two segments (e.g. elsa/studio). This will be fixed once we update the Elsa API Endpoints routes by prefixing them with e.g. api`.
  • When writing custom activity type providers, you can now hide properties from the activity editor UI by setting ActivityInputDescriptor.IsBrowsable to false.
  • New Elsa API endpoint to query workflows by correlation ID.
  • New periodFromNow JS function to compute the period between to Instant objects. #1066

What's Improved

  • Better designer extensibility. See Extending Elsa Studio with Plugins for more details.
  • The designer now starts at the top-center of the workflow. This is especially helpful for larger workflows. This awesome update was contributed by @tomy2105 ! #1297
  • Designer-critical properties: this has to do with a change where originally Elsa would evaluate all property expressions when e.g. displaying a workflow instance or blueprint. When an expression referenced some context that is not present during evaluation, exceptions would be thrown (and caught). This has been changed in such a way that Elsa no longer tries to evaluate properties, but instead simply display the expression. However, some activity properties MUST be evaluated in order for the designer to display properly. An example of this is where the activity has a property that is used to determine what outcomes to display (e.g. the Cases property of the Switch activity). Such properties should not depend on external context and when marked as designer-critical will be evaluated.
  • The designer now always displays the activity type underneath the display name. This helps identifying the type of activity when using custom display names. #1131
  • Instead of creating one queue per message type, Elsa now reuses the same queue for a small number of "low-traffic" events such as Workflow Definition Published, Retracted, Saved, etc. #1317
  • The Send Email activity now supports sending streams in addition to byte arrays as file attachments. How convenient! :D
  • You can now control the default workflow storage provider for custom activity properties as well as hiding this option altogether. This is useful for properties of which it is unlikely to be wise to persist these properties as part of the Workflow Instance. For example, Streams should probably always be stored in memory only or in blob storage. #1254
  • When returning an object from a JS expression, the object is converted to an ExandoObject. This will now be automatically converted to the desired destination type.
  • When clicking signal URLs, originally the user would see a JSON response. Now you can implement a MediatR notification handler to control the HTTP response. For example, if there were no matching workflows found (meaning the signal is no longer valid), you can write back a response (e.g. a redirect) that displays a friendly message to the user.

What's Fixed

  • Under certain circumstances, the default value of an activity property would not be returned.
  • The designer no longer breaks when a given activity type no longer exists, even if the workflow still references this activity type.
  • MassTransit activities weren't triggering the workflow. Thank you @ckeller81 ! #1332 #1333
  • Rebus activities weren't triggering the workflow. Thank you @sebguischr ! #1325

In addition to the above list, many more smaller issues have been resolved as well.

Don't miss a new elsa-core release

NewReleases is sending notifications on new releases.