Commit graph

5010 commits

Author SHA1 Message Date
Sipke Schoorstra a835eb82ed
Remove message retry configuration in DispatchWorkflowRequestConsumer.
This ensures a workflow is not executed multiple times in case of an unhandled exception.
2025-03-17 10:14:05 +01:00
Sipke Schoorstra a04aaf69e8
Merge pull request #6503 from KnibbsyMan/feat/sql-injection-prevention
FEAT - Automatic SQL Expression Parameterization
2025-03-17 10:05:22 +01:00
Sipke Schoorstra 40a6d3ea8d
Merge pull request #6498 from truthz03/feature/AddJobRunnerWorkerCountSetting
Allow to configure JobRunner worker count
2025-03-17 10:04:14 +01:00
Thomas Trummer 84191f149d Use IOptions<MediatorOptions> to get workerCount for BackgroundCommandSenderHostedService, BackgroundEventPublisherHostedService and JobRunnerHostedService 2025-03-17 08:45:34 +01:00
Sipke Schoorstra 714d8b6f3d
Merge pull request #6501 from elsa-workflows/bug/faulting-executing
Refactor activity execution state handling with IDisposable
2025-03-17 08:40:46 +01:00
Sipke Schoorstra 80d7c1c256
Handle null values explicitly for varbinary columns
Added explicit handling for null values in varbinary columns by applying a `CAST(NULL AS varbinary(max))` operation. This ensures proper value insertion and avoids potential type errors. Cleaned up unnecessary comments and minor whitespace inconsistencies for improved readability.
2025-03-16 22:36:09 +01:00
Matt 95b67ea002 Updates error handling to allow null values to be passed to the query. Errors are now thrown for when no matching properties are found. 2025-03-16 16:42:32 +00:00
Matt 5f43966233 BaseSqlClient code tidy. 2025-03-16 00:59:53 +00:00
Matt 24da6ab288 Simplify SqlEvaluator implementation and tidy code. 2025-03-16 00:44:35 +00:00
Matt d3dc6f3597 Updated the SqlEvaluator to work with {{ }} rather than @ for expression. Supporting updates also added. 2025-03-15 22:06:08 +00:00
Sipke Schoorstra fe65476bf2
Add WorkflowExecutionState to manage execution context state
Introduce `WorkflowExecutionState` to encapsulate execution state changes for workflows. This ensures proper handling of execution flags during the lifetime of the state object and resets them upon disposal.
2025-03-15 20:03:22 +01:00
Sipke Schoorstra ba08d97b38
Refactor activity execution state handling with IDisposable
Introduce `EnterExecution` method to manage activity execution state using a `using` block for cleaner and safer resource handling. Removed manual flags for tracking execution state, streamlining workflow logic and improving maintainability.
2025-03-15 20:01:02 +01:00
Matt d8b6eda93f Simplify SQL client implementations to reduce repetitive code. 2025-03-15 01:51:42 +00:00
Matt a4e6e75e55 Adds SQL injection prevention with the use of parameters in the SqlEvaluator. 2025-03-15 01:26:11 +00:00
Sipke Schoorstra 62da3c8618
Merge pull request #6491 from Green7/dapper-fix-delete-without-filter
Correct the issue with DeleteAsync not executing due to a premature p…
2025-03-14 23:07:26 +01:00
Sipke Schoorstra ac7428da0b
Merge pull request #6497 from truthz03/feature/6400
#6400 Add ClearProvider again to ActivityRegistry
2025-03-14 23:06:22 +01:00
Sipke Schoorstra d8208d2fe7
Merge pull request #6495 from elsa-workflows/enh/explicit-deterministic-variable-id
Refactor variable initialization for clarity and consistency
2025-03-14 23:05:35 +01:00
Sipke Schoorstra 146791f72a
Merge pull request #6475 from KnibbsyMan/feat/sql-enhancements
Enhancement - Additional SQL Activity Features
2025-03-14 23:04:50 +01:00
Sipke Schoorstra 094291b673
Merge branch 'main' into enh/workflowinstance-name 2025-03-14 23:03:33 +01:00
Thomas Trummer 84be58fceb Allow to configure JobRunner worker count 2025-03-14 10:14:47 +01:00
Thomas Trummer 90d8949661 #6400 Add ClearProvider again to ActivityRegistry 2025-03-14 10:13:02 +01:00
Thomas Trummer 996b831886 #6400 Add ClearProvider again to ActivityRegistry 2025-03-14 09:49:52 +01:00
Sipke Schoorstra 3be1220c4d
Refactor CountdownWorkflow tests
Updated CountdownWorkflowTests to simplify BookmarkFilter instantiation and restored active CountdownWorkflow logic.
2025-03-13 21:20:46 +01:00
Sipke Schoorstra 923e9d335d
Refactor variable initialization for clarity and consistency
Updated variable constructors across the codebase to use explicit names and initial values where applicable. Deprecated old constructor overloads and added new methods and overloads for better flexibility and readability. Minor cleanup includes replacing `default` keywords with `null` and streamlining code syntax.
2025-03-13 21:05:28 +01:00
Matt 2ff6df44c8
Merge branch 'elsa-workflows:main' into feat/sql-enhancements 2025-03-13 19:46:07 +00:00
Matt e43074755e
Merge branch 'elsa-workflows:main' into feat/datetime-picker 2025-03-13 19:21:39 +00:00
Matt 016600b838 Adds Support For New DateTimePicker UI Component And Re-Orders the InputUIHints. 2025-03-13 19:13:16 +00:00
Sipke Schoorstra ff60c4c461
Add SQL Server connection string to appsettings.json
This change introduces a connection string for SQL Server to the configuration file. It enables the application to connect to a SQL Server database for data persistence and retrieval.
2025-03-13 11:55:07 +01:00
Sipke Schoorstra e3e298984f
Refactor Variable class and add WithId method
Replaced `default` with `null` to improve readability and clarify initialization. Added a `WithId` method to allow assigning an ID to `Variable` instances for enhanced configurability. These changes improve usability and maintain consistency in the codebase.
2025-03-13 11:54:46 +01:00
Sipke Schoorstra 882ea8cf57
Refactor variable merging logic in ActivityExecutionContext
Replaced LINQ-based logic with a dictionary approach to merge variables. This ensures that variables are consistently merged by either name or ID when name is absent. It improves code clarity and handles edge cases more robustly.
2025-03-13 11:54:28 +01:00
Matt 819738d4d4
Merge branch 'elsa-workflows:main' into feat/sql-enhancements 2025-03-12 17:26:08 +00:00
Green7 8f964a682a Correct the issue with DeleteAsync not executing due to a premature parameter check
The DeleteAsync method was terminating prematurely because the presence of query parameters was checked before filters were applied. As a result, the deletion queries never executed since the query parameters were always empty before applying the filters.
2025-03-12 17:20:31 +01:00
Marius Vasile Vușcan 1ea83aff14
Removed optional purge 2025-03-12 13:58:38 +02:00
Marius Vasile Vușcan c2161d057a
Added missing functionalities from main as part of the blueberry merge 2025-03-12 13:34:57 +02:00
Sipke Schoorstra 414d18ee80
Refactor YugabyteDB connection configuration.
Removed unnecessary `With()` method in `UsePostgreSql` for YugabyteDB. This simplifies the configuration and ensures consistency across database providers.
2025-03-11 14:23:18 +01:00
Marius Vasile Vușcan 3007344236
Merge branch 'refs/heads/main' into blueberry
# Conflicts:
#	Directory.Packages.props
2025-03-11 12:41:07 +02:00
Sipke Schoorstra 5be82dd9ab
Add support for Citus and YugabyteDB integration
Introduced Docker Compose configurations for Citus and YugabyteDB clusters and updated connection strings in `appsettings.json`. Modified `Program.cs` to enable Entity Framework Core support for both databases and updated the `SqlDatabaseProvider` enum accordingly. Adjusted the Docker Compose setup and bumped `Yarp.ReverseProxy` package version.
2025-03-11 11:19:59 +01:00
Marius Vasile Vușcan 2d26b21774
Fixed from the master merge 2025-03-10 15:52:10 +02:00
Marius Vasile Vușcan c4048fad4d
Merge branch 'refs/heads/main' into blueberry
# Conflicts:
#	.github/workflows/packages.yml
#	Directory.Packages.props
#	samples/aspnet/Elsa.Samples.AspNet.EntityFrameworkCore.PostgresSql/Elsa.Samples.AspNet.EntityFrameworkCore.PostgresSql.csproj
#	src/Directory.Build.props
#	src/apps/Elsa.Server.LoadBalancer/Elsa.Server.LoadBalancer.csproj
#	src/apps/Elsa.ServerAndStudio.Web/Elsa.ServerAndStudio.Web.csproj
#	src/apps/Elsa.Studio.Web/Elsa.Studio.Web.csproj
#	src/apps/ElsaStudioWebAssembly/ElsaStudioWebAssembly.csproj
#	src/bundles/Elsa.Server.Web/Elsa.Server.Web.csproj
#	src/clients/Elsa.Api.Client/Elsa.Api.Client.csproj
#	src/clients/Elsa.Api.Client/Extensions/DependencyInjectionExtensions.cs
#	src/clients/Elsa.Api.Client/Resources/Alterations/Models/AlterationPlan.cs
#	src/clients/Elsa.Api.Client/Resources/Alterations/Models/AlterationPlanParams.cs
#	src/clients/Elsa.Api.Client/Resources/Alterations/Models/AlterationWorkflowInstanceFilter.cs
#	src/clients/Elsa.Api.Client/Resources/Alterations/Responses/RunRequest.cs
#	src/modules/Elsa.Common/Elsa.Common.csproj
#	src/modules/Elsa.Dapper/Elsa.Dapper.csproj
#	src/modules/Elsa.Expressions/Elsa.Expressions.csproj
#	src/modules/Elsa.Http/Activities/SendHttpRequestBase.cs
#	src/modules/Elsa.Http/Elsa.Http.csproj
#	src/modules/Elsa.MassTransit.AzureServiceBus/Handlers/RemoveOrphanedSubscriptions.cs
#	src/modules/Elsa.MassTransit/Services/MassTransitWorkflowDispatcher.cs
#	src/modules/Elsa.ProtoActor/Mappers/WorkflowExecutionResultMapper.cs
#	src/modules/Elsa.ProtoActor/Proto/Shared.proto
#	src/modules/Elsa.ProtoActor/Proto/WorkflowInstance.Messages.proto
#	src/modules/Elsa.Quartz.EntityFrameworkCore.PostgreSql/Elsa.Quartz.EntityFrameworkCore.PostgreSql.csproj
#	src/modules/Elsa.Quartz/Elsa.Quartz.csproj
#	src/modules/Elsa.Workflows.Core/Contexts/StorageDriverContext.cs
#	src/modules/Elsa.Workflows.Runtime.ProtoActor/Extensions/ProtoOutputExtensions.cs
#	src/modules/Elsa.Workflows.Runtime/Activities/ExecuteWorkflow.cs
#	src/modules/Elsa.Workflows.Runtime/Features/WorkflowRuntimeFeature.cs
#	src/modules/Elsa.Workflows.Runtime/Handlers/ResumeExecuteWorkflowActivity.cs
#	src/modules/Elsa.Workflows.Runtime/HostedServices/WorkflowInboxCleanupHostedService.cs
#	src/modules/Elsa.Workflows.Runtime/Services/DefaultWorkflowRuntime.cs
#	test/component/Elsa.Workflows.ComponentTests/Scenarios/ExecuteWorkflows/ExecuteWorkflowsTests.cs
#	test/component/Elsa.Workflows.ComponentTests/Scenarios/ExecuteWorkflows/Workflows/MainWorkflow.cs
#	test/component/Elsa.Workflows.ComponentTests/Scenarios/ExecuteWorkflows/Workflows/SubroutineWorkflow.cs
#	test/integration/Elsa.Workflows.IntegrationTests/Scenarios/WorkflowCancellation/ProtoActorTests.cs
2025-03-10 15:13:26 +02:00
Sipke Schoorstra 82a1ae0126
Merge pull request #6481 from KnibbsyMan/bug/editor-autocomplete-issue
Bug - Update Scripting Activities To Resolve Auto Complete Issues
2025-03-10 08:58:03 +01:00
Sipke Schoorstra 7caaad5a8f
Merge pull request #6480 from bobhauser/6479-fix-flowjoin-waitany-with-backward-connection
Fixes issue with FlowJoin(WaitAny) where activities can be executed multiple times
2025-03-10 08:56:41 +01:00
Sipke Schoorstra 8dca671ae2
Merge pull request #6478 from elsa-workflows/bug/composite-activity-serialization
Fix serialization of composite activities
2025-03-10 08:54:42 +01:00
Sipke Schoorstra 744fdf6283
Merge pull request #6476 from elsa-workflows/enh/dynamic-variables
Add support for passing initial variables
2025-03-10 08:54:31 +01:00
Sipke Schoorstra 540365db70
Merge pull request #6467 from MatthijsKrempel/feature/configfix
Harmonized launchSettings to be inline with appSettings
2025-03-10 08:51:20 +01:00
Matt 13bc8eef8a Update scripting activities to set the DefaultSyntax to allow autocomplete to work correctly with new PR. 2025-03-09 19:47:46 +00:00
Bob Hauser 6a42857f22 Fixes issue with FlowJoin(WaitAny) where activities can be executed multiple times 2025-03-08 19:59:55 -05:00
Sipke Schoorstra d19fc6e976
Enable optional OpenTelemetry tracing configuration.
Added a feature flag (`useOtel`) to conditionally enable OpenTelemetry tracing. This allows developers to toggle tracing for debugging or testing without affecting the default behavior.
2025-03-08 22:03:13 +01:00
Sipke Schoorstra 1d7fd81b3e
Fix serialization of composite activities
Fixes that composite activities' Root property (by means of the `JsonIgnoreCompositeRootConverterFactory`) does not get serialized, just like the `WorkflowDefinitionActivity`.

Composite activities added to a workflow should not include their children when being serialized.
2025-03-08 21:50:43 +01:00
Sipke Schoorstra 66123a7dc8
Add support for passing initial variables
Introduce the ability to pass variables into workflow invocations. Updates include adding variables to workflow execution options, requests, and scheduling logic. This enhancement allows dynamic variable management during workflow execution and instance creation.
2025-03-08 11:47:58 +01:00
Sipke Schoorstra cebf60de35
Add SetDynamicVariable method to support dynamic variable creation
This new method enables adding dynamic variables to the appropriate variable container if no predefined variable exists. It ensures flexibility in handling variables within the activity execution context while maintaining logical consistency. Minor formatting adjustments were also applied to improve code readability.
2025-03-08 11:08:21 +01:00