Commit graph

162 commits

Author SHA1 Message Date
Sipke Schoorstra f14278f2dc Fix YesSQL provider for bookmarks
Fixes #1604
2021-10-06 21:47:23 +02:00
Sipke Schoorstra 0232e47f4d Backwards compatibility for older workflow instances 2021-10-05 17:36:15 +02:00
axeleron007 f9923b5ca1 Intermediate commit to the PR requests 2021-09-29 12:36:32 +03:00
axeleron007 8e1144435e SignalRConnectionId and IsTest flag are removed from blueprint classes 2021-09-27 15:40:19 +03:00
axeleron007 08235ce8d4 Merge branch 'master' into manual_workflow_trigger 2021-09-14 15:19:10 +03:00
axeleron007 14c7582a32 Workflow Execution development 2021-09-13 18:29:40 +03:00
Andrey Mishurinsky ef37f87514
Disable workflow (#1336)
* Publish/Subscribe events added to WorkflowSettings and WorkflowRegistry

* Workflow Registry re-indexed and cache refreshed on workflow disable/enable

* IsDisabled property added to WorkflowBlueprintSummary to display disabled status in the UI

* MySql, PostgreSql and SqlServer persistence added to Workflow Settings

* Validation for disabled workflow in Workflow Resumer

* WorkflowSettings configuration added to the appsettings.json

* Workflow Settings added to Elsa.Server.Host startup collection

* IWorkflowSettingsProvider implemented

* Update README.md

* Elsa-Workflow-Settings and Elsa-Webhooks separate modules added and decoupled from Elsa Web

* Delete unused Client projects

* LoadWorkflowSettingsDisabledHandler changes

* FeatureProvider removed, Webhooks plugin merged to Webhooks Feature Plugin

* Update Webhooks and Settings plugin

Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
2021-09-02 16:20:10 +02:00
Sipke Schoorstra fc954d9968 Improve error messages
Closes #1425
2021-08-31 16:09:04 +02:00
Sipke Schoorstra f7a63b80c5 Reduce number of DB commits during workflow execution 2021-08-23 11:57:50 +02:00
Sipke Schoorstra 42e95033cf
BREAKING: Persistable input (#1302)
* Implement resuming Idle workflows + persistable input

* Refactor workflow input model

* Re-enable tests
2021-07-22 22:13:33 +02:00
Sipke Schoorstra e890c685e1 Improve Finish activity for sending output back to parent
This update automatically resolves the output reference (if any) and passes that to the parent instead of the output reference
2021-07-11 12:10:16 +02:00
Sipke Schoorstra c00585241e Fix workflow resumption when using ActivityExecuted and WorkflowPassCompleted strategies
Fixes #1182
2021-07-03 22:01:33 +02:00
Sipke Schoorstra a3fd1a31af Implement workflow priority channels 2021-06-28 22:38:05 +02:00
Sipke Schoorstra 6050c99c23 Resolve warnings 2021-06-19 11:41:02 +02:00
Sipke Schoorstra f67140f7e2 Cleanup 2021-06-14 14:10:03 +02:00
Sipke Schoorstra 9ec82d9293 Refactor Output handling 2021-06-14 14:10:03 +02:00
Sipke Schoorstra 1db05d3b0b Update models and UI to support configurable activity output storage 2021-06-14 14:10:03 +02:00
Sipke Schoorstra 332741d54f Implement pluggable storage for activity input and output properties 2021-06-14 14:10:03 +02:00
Sipke Schoorstra 6a49f7a991 Stash input output storage 2021-06-14 14:10:03 +02:00
Sipke Schoorstra 757a2f566f Refactor activity state serialization to support property types typed as object 2021-06-07 22:04:36 +02:00
Sipke Schoorstra ea40ad1121 More correlation fixes 2021-06-07 15:21:36 +02:00
Sipke Schoorstra 58af0c7ca0 Rename ActivityPropertyAttribute to ActivityInputAttribute 2021-05-30 12:51:58 +02:00
Sipke Schoorstra 68e5be0159 Fix issue with SwitchHandler and Switch display on workflow blueprint viewer when using expressions that cannot be evaluated 2021-05-28 20:21:45 +02:00
Sipke Schoorstra 3f4bbed7b6 Update XML comments on VersionOptions 2021-05-25 13:34:53 +02:00
Sipke Schoorstra e724d6030a Incremental work on workflow journal UI 2021-05-20 11:05:52 +02:00
Sipke Schoorstra e95e43bf36 Improve workflow signaling 2021-05-15 21:21:47 +02:00
Sipke Schoorstra 2ec915dabe Merge branch 'feature/elsa-2.0'
# Conflicts:
#	.gitignore
#	Dockerfile
#	Nuget.Config
#	README.md
#	Samples.sln
#	appveyor.yml
#	docker-compose.yaml
#	src/activities/Elsa.Activities.ControlFlow/Activities/ForEach.cs
#	src/activities/Elsa.Activities.ControlFlow/Activities/IfElse.cs
#	src/activities/Elsa.Activities.ControlFlow/Activities/Join.cs
#	src/activities/Elsa.Activities.ControlFlow/Activities/Switch.cs
#	src/activities/Elsa.Activities.ControlFlow/Activities/While.cs
#	src/activities/Elsa.Activities.ControlFlow/icon.png
#	src/activities/Elsa.Activities.Dropbox/Extensions/ServiceCollectionExtensions.cs
#	src/activities/Elsa.Activities.Dropbox/icon.png
#	src/activities/Elsa.Activities.Email/Activities/SendEmail.cs
#	src/activities/Elsa.Activities.Email/icon.png
#	src/activities/Elsa.Activities.Http/Activities/ReceiveHttpRequest.cs
#	src/activities/Elsa.Activities.Http/Activities/Redirect.cs
#	src/activities/Elsa.Activities.Http/Activities/SendHttpRequest.cs
#	src/activities/Elsa.Activities.Http/Activities/WriteHttpResponse.cs
#	src/activities/Elsa.Activities.Http/RequestHandlers/Handlers/TriggerRequestHandler.cs
#	src/activities/Elsa.Activities.Http/icon.png
#	src/activities/Elsa.Activities.MassTransit/Activities/CancelScheduledSendMassTransitMessage.cs
#	src/activities/Elsa.Activities.MassTransit/Activities/MassTransitBusActivity.cs
#	src/activities/Elsa.Activities.MassTransit/Activities/ReceiveMassTransitMessage.cs
#	src/activities/Elsa.Activities.MassTransit/Extensions/ServiceCollectionExtensions.cs
#	src/activities/Elsa.Activities.MassTransit/icon.png
#	src/activities/Elsa.Activities.Reflection/Activities/ExecuteFunction.cs
#	src/activities/Elsa.Activities.Reflection/icon.png
#	src/activities/Elsa.Activities.Timers/Activities/CronEvent.cs
#	src/activities/Elsa.Activities.Timers/Activities/TimerEvent.cs
#	src/activities/Elsa.Activities.Timers/Elsa.Activities.Timers.csproj
#	src/activities/Elsa.Activities.Timers/icon.png
#	src/activities/Elsa.Activities.UserTask/Activities/UserTask.cs
#	src/activities/Elsa.Activities.UserTask/icon.png
#	src/activities/Elsa.Activities.Workflows/Activities/Finish.cs
#	src/activities/Elsa.Activities.Workflows/Activities/TriggerWorkflow.cs
#	src/activities/Elsa.Activities.Workflows/icon.png
#	src/core/Elsa.Abstractions/Converters/TypeNameHandlingConverter.cs
#	src/core/Elsa.Abstractions/Exceptions/WorkflowException.cs
#	src/core/Elsa.Abstractions/Models/ActivityDefinition.cs
#	src/core/Elsa.Abstractions/Models/BlockingActivity.cs
#	src/core/Elsa.Abstractions/Models/Variables.cs
#	src/core/Elsa.Abstractions/Models/WorkflowFault.cs
#	src/core/Elsa.Abstractions/Models/WorkflowInstance.cs
#	src/core/Elsa.Abstractions/Services/ActivityBase.cs
#	src/core/Elsa.Abstractions/Services/IWorkflowEventHandler.cs
#	src/core/Elsa.Abstractions/Services/Models/Workflow.cs
#	src/core/Elsa.Abstractions/Services/Models/WorkflowExecutionContext.cs
#	src/core/Elsa.Abstractions/Services/Models/WorkflowFault.cs
#	src/core/Elsa.Abstractions/Services/WorkflowEventHandlerBase.cs
#	src/core/Elsa.Abstractions/icon.png
#	src/core/Elsa.Core/Expressions/WorkflowExpressionEvaluator.cs
#	src/core/Elsa.Core/Extensions/AutoMapperServiceCollectionExtensions.cs
#	src/core/Elsa.Core/Extensions/ElsaServiceCollectionExtensions.cs
#	src/core/Elsa.Core/Mapping/WorkflowDefinitionProfile.cs
#	src/core/Elsa.Core/Persistence/Memory/MemoryWorkflowInstanceStore.cs
#	src/core/Elsa.Core/Results/FaultWorkflowResult.cs
#	src/core/Elsa.Core/Runtime/StartupRunnerHostedService.cs
#	src/core/Elsa.Core/Services/WorkflowInvoker.cs
#	src/core/Elsa.Core/Services/WorkflowPublisher.cs
#	src/core/Elsa.Core/WorkflowBuilders/ActivityBuilder.cs
#	src/core/Elsa.Core/icon.png
#	src/core/Elsa/icon.png
#	src/dashboard/Elsa.Dashboard.Web/Elsa.Dashboard.Web.csproj
#	src/dashboard/Elsa.Dashboard.Web/Startup.cs
#	src/dashboard/Elsa.Dashboard.Web/icon.png
#	src/dashboard/Elsa.Dashboard/ActionFilters/NotifierFilter.cs
#	src/dashboard/Elsa.Dashboard/Areas/Elsa/Views/Shared/UserMenuItems.cshtml
#	src/dashboard/Elsa.Dashboard/Areas/Elsa/Views/Shared/WorkflowDefinitionEditor.cshtml
#	src/dashboard/Elsa.Dashboard/Areas/Elsa/Views/_ViewImports.cshtml
#	src/dashboard/Elsa.Dashboard/Conventions/ElsaConvention.cs
#	src/dashboard/Elsa.Dashboard/Elsa.Dashboard.csproj
#	src/dashboard/Elsa.Dashboard/Extensions/DashboardServiceCollectionExtensions.cs
#	src/dashboard/Elsa.Dashboard/icon.png
#	src/dashboard/Elsa.WorkflowDesigner/Elsa.WorkflowDesigner.csproj
#	src/dashboard/Elsa.WorkflowDesigner/ViewComponents/WorkflowDesignerViewComponent.cs
#	src/dashboard/Elsa.WorkflowDesigner/icon.png
#	src/persistence/Elsa.Persistence.DocumentDb/DocumentDbStorage.cs
#	src/persistence/Elsa.Persistence.DocumentDb/DocumentDbStorageOptions.cs
#	src/persistence/Elsa.Persistence.DocumentDb/Documents/WorkflowDefinitionVersionDocument.cs
#	src/persistence/Elsa.Persistence.DocumentDb/Documents/WorkflowInstanceDocument.cs
#	src/persistence/Elsa.Persistence.DocumentDb/Elsa.Persistence.DocumentDb.csproj
#	src/persistence/Elsa.Persistence.DocumentDb/Extensions/DateTimeExtensions.cs
#	src/persistence/Elsa.Persistence.DocumentDb/Extensions/DocumentClientExtensions.cs
#	src/persistence/Elsa.Persistence.DocumentDb/Extensions/QueryableExtensions.cs
#	src/persistence/Elsa.Persistence.DocumentDb/Extensions/ServiceConfigurationExtensions.cs
#	src/persistence/Elsa.Persistence.DocumentDb/Mapping/DocumentProfile.cs
#	src/persistence/Elsa.Persistence.DocumentDb/Services/CosmosDbWorkflowDefinitionStore.cs
#	src/persistence/Elsa.Persistence.DocumentDb/Services/CosmosDbWorkflowInstanceStore.cs
#	src/persistence/Elsa.Persistence.DocumentDb/icon.png
#	src/persistence/Elsa.Persistence.EntityFrameworkCore/CustomSchema/CustomSchemaOptionsExtensionInfo.cs
#	src/persistence/Elsa.Persistence.EntityFrameworkCore/DbContexts/ElsaContext.cs
#	src/persistence/Elsa.Persistence.EntityFrameworkCore/DbContexts/MySqlContext.cs
#	src/persistence/Elsa.Persistence.EntityFrameworkCore/DbContexts/MySqlContextFactory.cs
#	src/persistence/Elsa.Persistence.EntityFrameworkCore/DbContexts/PostgreSqlContext.cs
#	src/persistence/Elsa.Persistence.EntityFrameworkCore/DbContexts/SqlServerContext.cs
#	src/persistence/Elsa.Persistence.EntityFrameworkCore/DbContexts/SqliteContext.cs
#	src/persistence/Elsa.Persistence.EntityFrameworkCore/Elsa.Persistence.EntityFrameworkCore.csproj
#	src/persistence/Elsa.Persistence.EntityFrameworkCore/Entities/WorkflowInstanceEntity.cs
#	src/persistence/Elsa.Persistence.EntityFrameworkCore/Extensions/EFCoreServiceCollectionExtensions.cs
#	src/persistence/Elsa.Persistence.EntityFrameworkCore/Mapping/EntitiesProfile.cs
#	src/persistence/Elsa.Persistence.EntityFrameworkCore/Migrations/MySql/MySqlContextModelSnapshot.cs
#	src/persistence/Elsa.Persistence.EntityFrameworkCore/Migrations/PostgreSql/20201027192219_Update02.Designer.cs
#	src/persistence/Elsa.Persistence.EntityFrameworkCore/Migrations/PostgreSql/PostgreSqlContextModelSnapshot.cs
#	src/persistence/Elsa.Persistence.EntityFrameworkCore/Migrations/SqlServer/SqlServerContextModelSnapshot.cs
#	src/persistence/Elsa.Persistence.EntityFrameworkCore/Migrations/Sqlite/20201029094740_Create.Designer.cs
#	src/persistence/Elsa.Persistence.EntityFrameworkCore/Migrations/Sqlite/20201029094740_Create.cs
#	src/persistence/Elsa.Persistence.EntityFrameworkCore/Migrations/Sqlite/SqliteContextModelSnapshot.cs
#	src/persistence/Elsa.Persistence.EntityFrameworkCore/Services/EntityFrameworkCoreWorkflowDefinitionStore.cs
#	src/persistence/Elsa.Persistence.EntityFrameworkCore/Services/EntityFrameworkCoreWorkflowInstanceStore.cs
#	src/persistence/Elsa.Persistence.EntityFrameworkCore/icon.png
#	src/persistence/Elsa.Persistence.MongoDb/Extensions/ServiceCollectionExtensions.cs
#	src/persistence/Elsa.Persistence.MongoDb/icon.png
#	src/persistence/Elsa.Persistence.YesSql/Documents/WorkflowInstanceDocument.cs
#	src/persistence/Elsa.Persistence.YesSql/Extensions/YesSqlServiceCollectionExtensions.cs
#	src/persistence/Elsa.Persistence.YesSql/Mapping/DocumentProfile.cs
#	src/persistence/Elsa.Persistence.YesSql/Services/YesSqlWorkflowDefinitionStore.cs
#	src/persistence/Elsa.Persistence.YesSql/Services/YesSqlWorkflowInstanceStore.cs
#	src/persistence/Elsa.Persistence.YesSql/StartupTasks/InitializeStoreTask.cs
#	src/persistence/Elsa.Persistence.YesSql/icon.png
#	src/samples/README.md
#	src/samples/Sample04/Activities/ArithmeticOperation.cs
#	src/samples/Sample04/Activities/Divide.cs
#	src/samples/Sample04/Activities/Multiply.cs
#	src/samples/Sample04/Activities/Subtract.cs
#	src/samples/Sample04/Activities/Sum.cs
#	src/samples/Sample04/Program.cs
#	src/samples/Sample05/Sample05.csproj
#	src/samples/Sample07/Startup.cs
#	src/samples/Sample08/Sample08.csproj
#	src/samples/Sample08/Startup.cs
#	src/samples/Sample12/Program.cs
#	src/samples/Sample14/ElsaContextFactory.cs
#	src/samples/Sample14/Program.cs
#	src/samples/Sample14/Sample14.csproj
#	src/samples/Sample18/Program.cs
#	src/samples/Sample18/Sample18.csproj
#	src/samples/Sample19/Sample19.csproj
#	src/samples/Sample20/Workflows/SplitObjectWorkflow.cs
#	src/samples/Sample21/Sample21.csproj
#	src/samples/Sample21/Startup.cs
#	src/samples/Sample21/Workflows/CartTrackingWorkflow.cs
#	src/samples/Sample21/appsettings.json
#	src/samples/Sample22/Program.cs
#	src/samples/Sample22/Sample22.csproj
#	src/samples/Sample23/ElsaContextFactory.cs
#	src/samples/Sample23/HelloWorldWorkflow.cs
#	src/samples/Sample23/Migrations/Sqlite/20201027194619_Create.Designer.cs
#	src/samples/Sample23/Migrations/Sqlite/20201027194619_Create.cs
#	src/samples/Sample23/Migrations/Sqlite/ElsaContextModelSnapshot.cs
#	src/samples/Sample23/Program.cs
#	src/samples/Sample23/Sample23.csproj
#	src/samples/Sample24/Sample24.csproj
#	src/scripting/Elsa.Scripting.JavaScript/Converters/TruncatingNumberJsonConverter.cs
#	src/scripting/Elsa.Scripting.JavaScript/Handlers/CommonJavaScriptEngineHandler.cs
#	src/scripting/Elsa.Scripting.JavaScript/Services/JavaScriptExpressionEvaluator.cs
#	src/scripting/Elsa.Scripting.JavaScript/icon.png
#	src/scripting/Elsa.Scripting.Liquid/Handlers/CommonLiquidContextHandler.cs
#	src/scripting/Elsa.Scripting.Liquid/Services/LiquidExpressionEvaluator.cs
#	src/scripting/Elsa.Scripting.Liquid/icon.png
2021-05-04 10:53:55 +02:00
Sipke Schoorstra 576a0e50e8 Add Tag property 2021-04-26 10:09:46 +02:00
Sipke Schoorstra 33250c9bbd Add EventName property to ActivityExecutionLogRecord (replacing Message property) 2021-04-20 10:31:35 +02:00
Sipke Schoorstra 4fcfaf61f9 Update Workflow ctor to read variables from definition 2021-04-12 10:19:26 +02:00
Sipke Schoorstra 35248ef43f Require explicit syntax for getting expression 2021-04-04 15:37:28 +02:00
Sipke Schoorstra 6996d41376 Incremental work on property editor modes 2021-04-04 15:37:28 +02:00
Sipke Schoorstra 0c15c94ea7
Telnyx Activities (#768)
* Fix liquid syntax for accessing activity output

* Initial scaffolding of Telnyx module + API changes

* Make Telnyx Notification activity blocking

* Implement Telnyx correlation

* Post workflow suspension tasks improvements

* Add Telnyx activities

* Add HangupCall and TransferCall activities

* Call activity improvements
2021-03-17 13:07:14 +01:00
Craig Fowler 5c927501d0 PR rework #728 - Default persistence behavior
This reworks the way that the default behavior is selected, in line
with comments.  The changes to the enum are reverted, and the
three places which create a workflow definition are now altered to
explicitly choose WorkflowBurst

This includes a change to the TS enum definition - update to match
its C# counterpart.
2021-03-10 20:08:53 +00:00
Craig Fowler 8751bead5a WIP #728 - Make WorkflowBurst default behaviour
In the comments to #728 it was suggested that
WorkflowBurst persistence behaviour was a more
sane default.
2021-03-09 19:57:45 +00:00
Sipke Schoorstra 62352e27ac Remove IsEnabled flag 2021-03-08 15:14:02 +01:00
Sipke Schoorstra dc95276abb Update SendEmail activity property UI hints 2021-03-06 09:40:49 +01:00
Sipke Schoorstra 6eadac5736 Improve javascript engine 2021-03-04 17:45:59 +01:00
Sipke Schoorstra a14f7cc267
Expressions editor (#695)
* A functioning monaco editor

* Incremental work on intellisense

* Add Workflow Context Options settings to designer

* Rudimentary work on variables
2021-03-02 09:00:51 +01:00
Sipke Schoorstra 046cf53b06
Add WorkflowExecutionBurstStarting event to allow for persisting status changes before executing activities that potentially take a long time to finish (#666)
* Add WorkflowExecutionBurstStarting event to allow for persisting status changes before executing activities that potentially take a long time to finish

* Also persist workflow instance when burst is starting and behavior set to WorkflowPassCompleted
2021-02-25 15:43:12 +01:00
Craig Fowler b583c7f1a9
Resolves #485 - Add PurgeVariables functionality (#654)
* Trivial - Add VS Code workspace

* Trivial - Add VSCode build task & extra ignore

On GNU/Linux, auto-generated .directory
files should be ignored.

* WIP #485 - Boilerplate for unit test project

* WIP #485 - Add test coverage (Remove/RemoveAll)

* WIP #485 - Implement RemoveAll

* Remove redundant logic, covered by IDictionary

Per the following, the contract for a generic IDictionary,
the Remove method already deals with non-existent keys.

  https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.idictionary-2.remove?view=net-5.0#System_Collections_Generic_IDictionary_2_Remove__0_

* Resolve #485 - Add PurgeVariables methods

These are convenience methods upon ActivityExecutionContext
and WorkflowExecutionContext, consistent with their current APIs.

Also in this commit are tests for those simple methods.
There's a bit of test-scaffold as well included, such as:
* Autofixture Xunit2 integration
* New project for unit tests
* Customize attribute for avoiding crashes on Autofixture recursion
* Reusable specimen builder for creating IServiceProvider which
  resolves services from Autofixture
* Custonize attribute for a parameter to use that ^^ specimen builder
2021-02-24 14:29:03 +01:00
Sipke Schoorstra 15f1411838
Add support for scoped variables (#647) 2021-02-20 12:45:16 +01:00
Sipke Schoorstra 86980a752e
Designer web component (#636)
* Activity picker dialog

* Activity picker

* Activity editor

* Activity property fields

* Blazor bindings for Elsa designer

* Only index triggers from published & enabled workflow definitions

* Handle case of null workflow blueprint not found

* Add check for zero duration and general scheduler exceptions

* Don't rethrow expression evaluation failure

* Workflow definition settings editor modal

* Integration between stencil and blazor 🎉

* Fix expression type conversion

* Add publish button and restructure components

* Fix up workflow definition ID vs workflow definition version ID

* Update EF Core migrations

* Fix Workflow Publisher

* Fix version display

* Add Import menu item
2021-02-16 09:55:13 +01:00
Sipke Schoorstra 663dc47c89
Stash (#629) 2021-02-13 10:31:34 +01:00
Sipke Schoorstra d0113605f3
Retry faulted workflow from dashboard (#607)
* Cleanup ClientApp assets

* Update favicons

* Implement Retry from dashboard option
2021-02-02 12:15:09 +01:00
Sipke Schoorstra 59cdcdad6c Log inner exceptions 2021-02-01 16:14:45 +01:00
Sipke Schoorstra 2c7b20846a Fix Stack serialization 2021-01-31 12:49:06 +01:00
Sipke Schoorstra 7cfe24ba94
Implement revival of faulted workflow (#595)
* Initial version of workflow reviver

* Fix DI things

* Rename workflow builder parameter to `builder`

* Update EF Core stores to use short-lived db contexts

* Update serializer to use new settings to reset ID seed

* Write fault details

* Add faulty workflows sample project

* Switch to free & open source Z.EntityFramework.Plus.EFCore

* Add content type header

* Fix call to virtual OnSaving/OnLoading

* Fix retry
2021-01-30 12:47:50 +01:00
Sipke Schoorstra 59189bd330
Revise trigger API (#593)
* Update triggers

* Fix service registrations

* Add support for startup task ordering

* Add missing Rebus Activities project

* Handle indexing of many workflow instances

* Update sample

* Separate bookmarks from start triggers

* Add trigger API

* Fix queue worker

* Delete sqlite temp files
2021-01-29 16:16:45 +01:00
Sipke Schoorstra 2a64cc1473 Add continue running workflow startup task 2021-01-19 20:17:14 +01:00