Commit graph

25 commits

Author SHA1 Message Date
Sipke Schoorstra e5ba9a8a9d Refactor scheduling and system clock configurations
Moved specific services from Scoped to Singleton in SchedulingFeature and SystemClockFeature for better performance and consistency. Refactored DefaultWorkflowScheduler to use a constructor with an IScheduler parameter and removed redundant private field. Removed attribute RequiresUnreferencedCode in WorkflowManagementFeature.
2024-07-18 16:00:49 +02:00
Sipke Schoorstra f52c163fe0 Refactor logging instances in DefaultTriggerScheduler.cs
This commit changes the reference to the logger instance in the DefaultTriggerScheduler class. It corrects the reference from a private instance to the correct instance 'logger'. Moreover, the string formatting of the second logger warning message has been updated for standardization.
2024-06-07 14:01:14 +02:00
Raymond den Haan dc355413ce Fix Sonar maintainability issues
Improved logging
Added missing comments
2024-06-07 14:01:14 +02:00
Sipke Schoorstra 038d29b792 Refactor code to fix incorrect logger reference
In the DefaultTriggerScheduler.cs file, a wrong reference to _logger was corrected. It caused issues during attempts to log a warning when the 'cronExpression' parameter is empty. Now the correct local logger object is used.
2024-05-31 16:46:03 +02:00
Sipke Schoorstra efbfe8ea9a Add validation for empty cron expression
This commit adds validation for cron expressions in the DefaultTriggerScheduler class. The system now checks if the cron expression provided is empty and issues a warning if that's the case. This prevents attempts to schedule triggers with an empty cron expression, which would fail.
2024-05-31 14:41:08 +02:00
Sipke Schoorstra 411151d748
Refactor DefaultTriggerScheduler and handle past StartAt triggers (#5463)
The `DefaultTriggerScheduler` received a significant refactoring, with the injection of the `ISystemClock` service and a modification of several method calls. Additionally, a check is included to avoid scheduling `StartAt` triggers if their execution time is in the past. For these triggers, an information message is logged and scheduling is skipped.
2024-05-29 10:34:44 +02:00
platschlena 4fe04469ec
catching the exception preventing the server from starting successfully when an incorrect cron format is entered (#4917)
Co-authored-by: Lena Pletschacher <lp@nuvotex.de>
2024-02-09 19:37:06 +01:00
jdevillard 9175322774
Add a more generic UIHandler to customize how inputAttributes can be handle by UI (#4688)
* add a more generic UIHandler to customize how inputAttributes can be handle by the ui

* Add IPropertyUIHandlerResolver and update PropertyUIHandlerResolver

Introduced a new interface, IPropertyUIHandlerResolver, to resolve UI options for a property. Refactored PropertyUIHandlerResolver to implement this interface and removed the unnecessary partial class structure. Also, cleaned up some unnecessary usings in various files for better code organization.

* Refactor variable name and description in InputDescriptor

The 'uISpecifications' variable in the InputDescriptor model is renamed to 'uiSpecifications' for better readability. Additionally, the associated comment was revised to explain that the dictionary is used by the UI.

* "Refactor codebase for improved organization and cleaner architecture"

The codebase has been significantly refactored, moving several classes to more appropriate namespaces for improved organization and cleaner architecture. This includes shifting UI hint handlers, activities, and memory-related components, amongst others. The changes should improve code readability and maintainability, but as this is a broad refactoring effort, thorough regression testing is advised.

* Add CheckList UIHint with associated handler and provider

This update introduces a new UIHint called CheckList to the Elsa.Workflows.Core. This includes the necessary handler and provider classes. The handler is registered in the WorkflowsFeature.cs, and the CheckList UIHint key has been added to the InputUIHints.cs. Various associated files have been created in both the Elsa.Api.Client and Elsa.Workflows.Core project to support this new UIHint.

---------

Co-authored-by: Jérémie DEVILLARD <jdevillard@users.noreply.github.com>
Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
2023-12-26 18:56:29 +01:00
Sipke Schoorstra c9ca4a121d
Workflow Inbox (#4292)
* Initial implementation of workflow inbox, submission and delivery

* Implement persistence providers

* Update EF Core migrations

* Rename Services to Stores in Dapper module

* Use default serializer for primitive arrays

* Update MongoDB provider to map BookmarkId to be primary key

* Implement MongoDB provider for activity execution logs

* Use EF Core by default

* Fix private JSON constructor logic
2023-08-06 17:03:36 +02:00
Sipke Schoorstra 8652843f48 Implement schedule deletion when workflow instances are deleted 2023-07-20 11:57:20 +02:00
Sipke Schoorstra 72f4461ca3 Implement cascading deletion 2023-07-20 00:05:43 +02:00
Ray 282ef24446
Cleanup schedulers (#4160)
* Cleanup DefaultTriggerScheduler

Remove unnecessary list variable.
Remove unnecessary ToLists.

* Cleanup DefaultBookmarkScheduler

Remove unnecessary list variable.
Remove unnecessary ToLists.
2023-06-23 18:38:57 +02:00
Ray d84a1fece2
UnscheduleCron triggers (#4149)
The Cron triggers were not unscheduled, this resulted in multiple executions upon publishing and unpublishing of workflows.
2023-06-22 11:50:43 +02:00
Sipke Schoorstra 81b893c32b
Fix timer issues (#3938)
* Fix Timer activities getting stuck at creating bookmark when triggered

* Recreate timer schedules based on triggers when application starts
2023-04-21 12:12:28 +02:00
Sipke Schoorstra c3ed7e7865
Improve JSON serializationfor workflow state (#3913)
* Incremental work on WorkflowStateSerializer

* Update Flow HTTP Request activity to default to Done outcome

* Fix reference handling

* Fix polymorphic object converter

* Add comments

* Add support for registering type alias during DI setup via options

* Fix trigger and bookmark payload persistence

* Update sample model

* Add support for custom dictionary types

* Split general serializer options provider into focused serializer services

* Formatting

* Update migrations
2023-04-17 00:11:58 +02:00
Sipke Schoorstra d3d6b02d98
Cron activities (#3900)
* Add XML comments to Mediator module

* Add cron activity and services

* Implement activity descriptor modifiers and fix CRON cleanup
2023-04-12 21:10:07 +02:00
Sipke Schoorstra 83449f0508
Update Hangfire integration (#3898)
* Add Hangfire support for workflow scheduler

* Fix scheduled job cleanup

* Fix duplicate handler invocation

* Default scheduler fixes
2023-04-12 15:10:44 +02:00
Sipke Schoorstra 56b284c230
Quartz.NET integration (#3887)
* update Quartz.NET module

* Small cleanup

* Fix Timer activity
2023-04-11 20:17:15 +02:00
Sipke Schoorstra 7a09944732
Refactor scheduling and background activity execution (#3884)
* Refactor background activity execution

* Refactor scheduler

* Remove Jobs module

* Add XML comments
2023-04-09 23:35:32 +02:00
Sipke Schoorstra 1a713b4619
Rename "services" to "contracts" and "implementations" to "services" (#3758) 2023-03-03 22:47:23 +01:00
Sipke Schoorstra 6947f45693 Remove unused namespaces 2022-11-13 12:45:34 +01:00
Sipke Schoorstra 4b0af64cee
Exportable & importable workflow state + execution (#3317)
* Incremental work on externalizing workflow state execution

* Finish resumable WriteHttpResponse
2022-10-04 11:57:01 +02:00
Sipke Schoorstra b3bae39bfe
Default Runtime & Persistence (#3287)
* Delete DefaultWorkflowInvoker.cs

* Incremental work

* Refactor runtime

* Implement workflow state store + bookmark store

* Cleanup

* Update migrations

* Move store abstractions to management and runtime projects

* Consolidate persistence providers into single package

* Generate migrations

* Regenerate migrations

* Fix DI of memory stores

* Update migrations

* Refactor definition reference due to unserializable record

* Update web server bundle to use EF core by default

* Update Bookmark.cs

Fixes System Text Json deserialization
2022-09-04 17:04:14 +02:00
Sipke Schoorstra e2ffafc736
Refactor proto actor runtime with snapshot support (#3283)
* Initial working grain

* Incremental work on actor bookmark management & resuming wokflows

* Upgrade Proto Actor package references

* Fix lifetime of actors

* Implement bookmark and resumption

* Update Program.cs

* Update bookmark event publishing

* Refactor proto actor features API

* Implement snapshotting

* Update snapshotting

* Add in-memory provider and use it by default

* Update server bundle to use proto actor sqlite persistence by default
2022-09-02 13:18:53 +02:00
Sipke Schoorstra fccf4737e2
V3 modular configuration (#3070)
* Restructuring (WIP)

* Fix warnings

* Move DSL to modules

* Update namespaces

* Make design factory base reusable

* Update service registrations

* Remove unused namespaces and rename ElsaDbContext

* Incremental work on migrations

* Generate WorkflowsDbContext SQLite migrations

* Rename ServiceCollectionExtensions

* Update DbContextOptionsBuilderExtensions.cs

* Restructure

* Configuration refactorings (WIP)

* Incremental work on configurator API

* Incremental work on configuration API

* Incremental work on configuration API

* Fix workflow runtime options

* Move standard stream providers

* Implement configurator dependencies

* Cleanup configurator API

* Update configurator dependencies

* Cleanup

* Update Label API endpoints

* Fix eager configuration issue
2022-05-26 12:47:31 +02:00