Skip to content

Releases: elsa-workflows/elsa-core

Elsa 2.4.1 πŸ”₯

20 Jan 17:06
Compare
Choose a tag to compare

What's New

  • .NET 6 Support is finally here! The core libraries target .NET Core 3.1, .NET 5.0 and .NET 6.0.
  • Designer activities are a little bit more compact, allowing for more activities to fit on the screen.

What's Improved

  • Azure Service Bus Send activity received a new option to have it send the message after the workflow gets suspended. This allows you to send a message, and listen for a response immediately after.
  • JSON serialization + JavaScript + Liquid roundtripping should work much better.

What's Fixed

  • An issue with retrieving intellisense data has been fixed (#2648)
  • Do not force Browsable of sub activity to be false if not defined. (#2652)
  • Fix YesSQL migration step
  • WriteHttpResponse activity no longer uses type name serialization. Instead, it writes clean JSON (when applicable)

Elsa 2.4.0 🍭

26 Dec 21:12
6185718
Compare
Choose a tag to compare

BREAKING CHANGES ⚠️

The WorkflowInstances table received a new column: DefinitionVersionId.
This is a required field, which means that running the updated DB migrations will fail when run while the table has existing records.

If you do not wish to first delete the contents of this table, make sure to create a backup first (which you should do at all times before applying an updated migration).

The value of the DefinitionVersionId needs to be taken from the WorkflowDefinitions table's Id field.

New Features ✨

  • Retention settings (auto-delete completed workflow instances)
  • Run workflow from designer (Requires new Elsa.WorkflowTesting.Api package and update Startup with services.AddWorkflowTestingServices() and app.MapWorkflowTestHub - see Elsa.Samples.Workflow for an example)
  • Configure automatic layout direction. Default is top to bottom, but can now be configured from the UI to left to right, right to left and bottom to top (#2619)
  • FileSystemWatcher activities
  • Configure HTTP Endpoint activity with authentication settings (require authenticated requests and ASP.NET Core policy requirements)
  • Configure Send HTTP Request activity with desired response content formatter (plus the ability to add your own by implementing IHttpResponseContentReader)
  • Added RabbitMQ activities (#2547)

Improvements 🍏

  • Added designer legend with quick hints about certain designer operations such as how to delete connections and change connection between activities.
  • Performance improvement (noticeable when there are many workflow definitions in the system)
  • Trim Azure Service Bus queue name at 50 characters (ASB returns error when queue name limit of 50 characters is exceeded)
  • Ability to select multiple workflow instances from multiple pages.
  • Add variables tab to instance view (#2442)
  • Add base64 encoding JS functions
  • Add getActivityId JS function
  • Increase dashboard extensibility. All menu items and routes are now customizable by plugins
  • Disable buggy copy & paste. To be re-implemented (possibly as part of Elsa 3 designer back-port)
  • Add support for bitflag list items (#1654)
  • Add intellisense support for dynamic HttpEndpoint output (#2526)
  • Update appveyor to push debug symbols
  • Use strongly-typed arrays for typescript definitions (#2584)

Fixes πŸ› οΈ

  • Publish correct event (WorkflowInstanceCancelled) (#1560)
  • Fix YesSQL provider for bookmarks (#1604)
  • Fix for oracle persistence provider - in order to use data more than 2000 char we have to use NCLOB ,in oracle we have to explicitly say the column is NCLOB otherwise it would be considered Nvarchar(2000) (#2450)
  • Dynamic Activity Outcomes from activity property descriptor (#2473)
  • fixed semaphore locking for azureservicebus activities (#2494)
  • Fix ClearTimer activity (#2429)
  • Replace Dictionary with ConcurrentDictionary (#2503)
  • Update workflow launchpad to prevent duplicate correlated workflow instances
  • Prevent activities with [Browsable(false)] from being included (#2411)
  • Accessing Output via Liquid (#2509)
  • Various JSON serialization fixes and improvements
  • Many other bug fixes

This release was made possible thanks to generous contributions from members from the community.

A Big Thank You to everyone who raised issues and contributed amazing features & fixes! This release is awesome because of all of youπŸ™πŸ»

Elsa 2.3 ✨

23 Sep 11:33
Compare
Choose a tag to compare

Here's what's new!

  • Extensible Workflow Execution Log: activities can now include custom data that becomes visible in the Workflow Journal.
  • File Activities: activities that deal with reading & writing files from the local disk.
  • Send HTTP Request activity improvements: you can now select what content parser to use to parse the response of the request. Also, the set of parsers is extensible, which means you can write your own.
  • RPA Web activities: a set of activities to automate UI testing in the browser.
  • Significantly reduced number of DB commits during workflow execution: before this improvement, activity executing log entries were persisted as they were created. This was changed such that workflow execution log entries are collected and flushed to the database when the workflow instance is saved as well.
  • Fixed that the workflow designer would sometimes not render properly and a full refresh was required.
  • Infinite Loop detection & handling: To prevent server CPUs from melting down when you (accidentally) implement a workflow with an infinite "tight" loop (a loop with no suspension points), the workflow engine will introduce a "cool down" of a configurable amount of time for a configurable amount of loop detection events.
  • Workflow instances can now be cancelled from the dashboard.
  • You can now publish/unpublish workflow definitions from the Workflow Definitions overview page. Before, you had to go into a workflow definiton and handle publish/unpublish from there.
  • Many issues, ranging from small to large, have been fixed.

A Big Thank You to everyone who contributed to this new release candidate!

Elsa 2.2.1 πŸ› οΈ

05 Aug 06:51
Compare
Choose a tag to compare

Fixes

  • Fix serialization issue when using WriteHttpResponse from code.
  • Fix incorrect scope eviction
  • Fix RunWorkflow resumption when child completes synchronously (#1347)
  • Fix ExecuteWorkflowInstanceRequestConsumer (doubly wrapped WorkflowInput)

Improvements

  • Improve type conversion error message

Elsa 2.2 🎈

02 Aug 11:32
Compare
Choose a tag to compare

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.

Elsa 2.1.1

23 Sep 11:30
Compare
Choose a tag to compare

Hotfix for HttpEndpointMiddleware

Fixes that subpath no longer matched any workflows.

Elsa 2.1 ✨

14 Jul 17:01
Compare
Choose a tag to compare

The 2.1 release turned out to be much bigger than anticipated and contains many a great enhancements and fixes, but also includes a number of breaking changes, so please take caution when upgrading your production environment and create backups!

What's New

  • Add support for dynamic outcome provider - Closes #873 - 16c93e1
  • Implement support for activity property ordering - Closes #884 - 0f8a0e9
  • Add Conductor project and SendCommand activity - 589cab5
  • Add State activity to model finite state machines - 24e378e
  • Add capability to use MessageModel as the input of the Azure Service Bus Sender - f28c9a8
  • Add radio list control - Closes #1062 - c3df363
  • Multi targeting netcoreapp3.1, netstandard2.1 and net5.0 - 8e254b1
  • Implement pluggable storage for activity input and output properties - 332741d
  • Implement support for HTTP file download for SendHttpRequest and WriteHttpResponse - ebaeabb
  • Implement Blob Storage Workflow Provider - 618f4e8
  • Add support for email attachments - 97a9619
  • Webhook Management - a8b4c7c
  • Expose HTTP client creation events Closes #1164 - f50674a
  • Workflow priority queues - 40b53b2

What's Changed

  • Switch to MIT license - 76f19a9
  • BREAKING Update OutcomeResult to NOT auto-connect to Done connections - eb37886
  • Rename ActivityPropertyAttribute to ActivityInputAttribute - 58af0c7
  • Remove activity state from execution log to prevent large record sizes - ec172d9, 7f6c555
  • Move Dispatch and Execute API endpoints to Workflows resource - c2c9e9c
  • Increase default code editor height - d1c73d5
  • HTTP endpoint handling a single workflow - 8f9431d
  • HTTP endpoint respond with 500 for faulted workflow - ef6f441
  • Refactor quartz job scheduler into async background service - 8e97f7a
  • Update switch-plugin to support ANY activity type - Closes #1240
  • Remove redundant Trigger parameter from workflow selection - cbfb21c

What's Fixed

General

  • Update WriteHttpResponse to include configurable charset - Fixes #450 - 36061c6
  • Update WriteHttpResponse activity's ResponseHeaders property's UI hint to MultiLine - a8f6cf3
  • Fix race condition between finding bookmarks and indexing workflows - 93e80b5
  • Acquire lock on correlation ID when dispatching new workflows - 97df3b7
  • Fix potential race condition to Quartz scheduler causing duplicate scheduler error - b4f83f4
  • Fix default value issue with HttpEnpoint - 6e26677
  • Fix distributed deadlock - 2d12b5c
  • Add SendHttpRequest designer plugin - Fixes #1069 - 6e92b6c
  • Enable content headers for SendHttpRequest - Fixes #1078 - ee898ac
  • Fix WorkflowLaunchpad correlation locking - 26bf218
  • Implement scoped naming for composite activity children - Fixes #1071 - a33cb1b
  • Add support for JSON array responses - Fixes #1076 - 5ff1ce7
  • Handle conversion of numeric value to enum and JToken values to strong types - Fixes #1088 - 4f9f56f
  • Fix CachingWorkflowRegistry to use cached workflow blueprints - 6e2601e
  • State sets default value if get doesn't find it - fe96757
  • Fix double scheduling of activities - 189883e
  • Fix workflow variable access - Fixes #1209 - e427a27
  • Fix workflow resumption when using ActivityExecuted and WorkflowPassCompleted strategies - Fixes #1182 - c005852
  • Use string instead of Uri to hold request path - See #1070 - a24b1ac
  • Fix Redirect behavior - See https://stackoverflow.com/questions/68217426/elsa-workflows-redirect-http-action-behavior
  • Normalize signal names (ignore case) - 88bc022
  • Fix Finish output serialization recursion - 7452d16
  • Fix Join activity not blocking when using WaitAll mode - f65cf6b
  • Add client plugin for RunWorkflow to support dynamic outcomes - 505c00a
  • Fix that workflows blocked on a signal could not be resumed with just correlation ID - 0850f0a
  • Fix StartupTask DI registration - 5ae4609
  • Fix HttpEndpointMiddleware to return 404 when workflow not found - Fixes #1253 - 2635115
  • Fix CompositeActivityBlueprint initialization - e3120e9
  • Reset IsLatest also for not published workflows on PublishAsync - a42df38

Workflow Expressions

  • Add JS functions to access activity properties - 7f420f4
  • Increase javascript intellisense coverage - d033b56
  • Fix liquid engine to handle JObject and JValue resolution - d195dfc

MongoDB

  • BREAKING: Update MongoDB provider with support for object derivatives - Fixes #552 - 45b0f84
  • Fix Variables serialization for MongoDB provider - da8d12b
  • Fix Type serialization for MongoDB provider - abc4e53

Entity Framework Core

  • Fix MySql does not support the EF Core concept of schemas - 34556e9
  • Fix EFCore.BulkExtensions does not support MySQL - 3b1ccd4

Dashboard / Designer

  • Apply auto-scroll on exception details - f5b688a
  • Fix issue with SwitchHandler and Switch display on workflow blueprint viewer when using expressions that cannot be evaluated - 68e5be0
  • Uncheck "check all" after bulk delete - Fixes #1057 - 88a5c61
  • Improve workflow journal details - 7958ecf
  • Optimize workflow definitions loading - 6f8990d
  • Fix JS error when using workflow instance list view in standalone mode - Fixes #1235 - dd55189
  • Prevent display text from pushing settings button out of view - Fixes #1227 - dbb91a8

See also the 2.1 Milestone for a set of issues that went into this release.

Elsa 2.0 πŸ₯³

26 May 11:39
Compare
Choose a tag to compare

What's New

  • Brand new designer with pan & zoom support and auto-layout
  • Improved Workflow Builder API for Coded Workflows
  • Coded Workflows visualization thanks to auto-layout
  • Distributed Server / Multi Node support
  • Elsa Server API Endpoints
  • Clean separation between Elsa Server and Elsa Dashboard
  • Composite Activities
  • Activity Editors with Intellisense support powered by Monaco Editor
  • Workflow Context Support
  • New activities

What's Fixed

  • Serialization issues have been fixed
  • Temporal activities such as Timer, Cron and StartAt now work reliably by relying on providers such as Quartz.NET and Hangfire
  • Workflow Execution Log is now stored separate from Workflow Instance
  • Many other issues too numerous to list here :)

For a full list of changes, fixes and improvements, checkout the Elsa 2.0 Milestone on GitHub.

Elsa 2.0 RC3

24 May 18:20
Compare
Choose a tag to compare
Elsa 2.0 RC3 Pre-release
Pre-release
2.0-rc3

Fix component tests

Elsa 2.0 RC2

17 May 17:59
Compare
Choose a tag to compare
Elsa 2.0 RC2 Pre-release
Pre-release
2.0-rc2

Update version to RC2