* Update packages.yml for version 3.0.1
The packages.yml workflow file has been updated to target the v3.0.1 branch instead of main. The version also has been updated from 3.0.0 to 3.0.1 in the version prediction logic. Hotfix tags usage has been removed.
* Update git branch for commit verification in workflow
The Github workflow's step for verifying commits' existence has been updated. Instead of searching in the 'origin/main' branch, the workflow now checks in the 'origin/v3.0.1' branch. This modification ensures compatibility and consistency with the version being used.
* Update Elsa.Studio package versions
The Elsa.Studio and Elsa.Studio.Login.BlazorWasm packages in the Elsa.ServerAndStudio.Web and Elsa.Studio.Web projects have been updated from version 3.0.0-preview.177 to the stable version 3.0.0. This is to ensure we're using the stable and reliable versions of these packages in our projects.
* Add background execution to activities and update HTTP requests
Significantly enhanced the capabilities of background execution of activities. Included a change in activity type of "SendHttpRequest" from 'Task' to 'Action'. Introduced new classes for handling outcomes of context in background execution. Made some necessary adjustments to HTTP Request Task to handle sending HTTP requests from a background task. Updated several middleware classes to align with these modifications.
* Add background execution handling to activity context
This commit adds the ability to manage the background execution state directly within the activity execution context. This includes adding methods to set and verify the background execution state, and modifying the existing code to use these new methods. A method for handling activity scheduling during background execution has also been started, but its implementation is not finished yet. The HTTP Request activities were updated accordingly to reflect these changes.
* Add scheduling function for background activities
This commit achieves two main goals. Firstly, it introduces two new classes called ScheduledActivity and ScheduledActivityOptions to store scheduled activities' information. Secondly, it modifies how activities are executed in the background by capturing the scheduling information as a serializable format and storing it in the workflow execution context properties dictionary. This change allows the workflow execution context to resume the activity execution context.
* Refactor HTTP request handling by removing SendHttpRequestTask
SendHttpRequestTask was deleted and its functionality was merged into SendHttpRequestBase. This consolidation led to the addition of StatusCode and ResponseHeaders output fields in SendHttpRequestBase. Another change includes the update in FlowSendHttpRequest to indicate that it's no longer deprecated. Also, HttpHeaders class was extended to accommodate HttpResponseHeaders objects. The consolidation was done to streamline the HTTP request handling process.
* Update GitHub Actions workflow for new release
The GitHub Actions workflow configuration has been updated to target the '3.0.1' branch instead of 'main'. Furthermore, the preview version set in the workflow has been updated to '3.0.1-preview', changing from the previous '3.0.0-preview'.
* Update branch verification in GitHub workflow
The GitHub workflow configuration has been updated to verify that the commit exists in the branch 'origin/3.0.1' instead of 'origin/main'. This is done during the automated package generation process.
* New options to control retry logic for transient failures (#4750)
* Add an option to control the number of automatic retries for transient failures.
* Add SleepDurationProvider option for ElsaClientBuilderOptions
---------
Co-authored-by: admin <admin@admin.com>
* Add IExecuteWorkflowApi interface and refine retry policy configuration
A new interface, IExecuteWorkflowApi, was created to handle execution and dispatch of workflow definitions. This breaks down functionalities previously present in IWorkflowDefinitionsApi. Also, the retry policy configuration for HTTP requests has been refactored. Instead of hardcoding retry settings, now a delegate method can be optionally passed to customize the behavior. This makes it more flexible and shifts the responsibility of configuring retry policies to the client.
* Add option for synchronous broadcast in WorkflowInbox
This update introduces a new option to control synchronicity when broadcasting messages in the WorkflowInbox. The 'BroadcastWorkflowInboxMessageOptions' class allows the developer to specify whether the broadcasting will occur synchronously or asynchronously. The update also includes a new Endpoint and Workflow for demonstration and testing of this functionality.
* Update FastEndpoints packages to version 5.21.2
The current commit updates the version of all FastEndpoints packages from 5.20.1.7-beta to 5.21.2 in the 'Elsa.Api.Common' project. This ensures we are using the most recent stable release of these packages.
#4747
* Add decimal check in PolymorphicObjectConverter
In the PolymorphicObjectConverter class, the check for primitive types and specific object types was updated to include decimal.
Fixes#4714
* Refactor Dapper workflow and update migrations
Modified the store service to optimize the SaveManyAsync method by converting input to list only once. Also, enhanced deletion query in the store service to enable usage of different primary keys. Made changes in the Dapper migrations, replacing "NodeId" with "ActivityNodeId".
* Update workflow to use main branch and version 3.1.0
The workflow has been updated to work with updates on the 'main' branch rather than the 'v3.0.1' branch. Also, the version number for the 'VERSION' variable in preview mode has been updated to 3.1.0 from 3.0.1.
* Remove unnecessary Elsa Server activities
Deleted sample files: DataSourceActivity, MyEndpoint, and MyEventWorkflow from the Elsa Server Web bundle as part of our ongoing codebase optimization strategy. These files were no longer required and their removal simplifies our code structure.
* Update package workflow to reference v3.0.1
The GitHub actions workflow has been updated to pull from branch v3.0.1 instead of main. This change affects the commit verification and version setting steps, now using version 3.0.1-preview in the workflow process.
* Update Elsa.Studio packages to version 3.0.1-preview.196
This commit involves updating the versions of `Elsa.Studio`, `Elsa.Studio.Core.BlazorWasm`, and `Elsa.Studio.Login.BlazorWasm` packages in `Elsa.ServerAndStudio.Web.csproj` and `ElsaStudioWebAssembly.csproj` files to 3.0.1-preview.196. This update will incorporate the new changes and improvements included in this newer version.
* Update Elsa.Studio package versions
The Elsa.Studio and Elsa.Studio.Login.BlazorWasm package versions have been updated in the Elsa.Studio.Web project. Both package versions have been upgraded from 3.0.0 to 3.0.1-preview.196.
* Remove unused Workflow models and simplify AddStorageDriver method
The commit removes BackgroundExecutionOutcome and BackgroundExecutionResult models from Elsa.Workflows.Core, as they are no longer in use. Additionally, it simplifies the AddStorageDriver extension method in ModuleExtensions.cs, now it directly adds the service as an implementation of the IStorageDriver interface.
* Remove unnecessary dependencies in DefaultBackgroundActivityInvoker
Dependencies on IBookmarksPersister and IWorkflowStateExtractor have been removed in the DefaultBackgroundActivityInvoker.cs file. Additionally, an unused `using` statement for Elsa.Workflows.Helpers has been eliminated. This commit aims to declutter the code and increase its maintainability by eliminating unnecessary dependencies.
---------
Co-authored-by: Night Wu <lofrank@outlook.com>
Co-authored-by: admin <admin@admin.com>
* 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>
* Implement Alteration types and engine
* Implement Alteration APIs
* Refactor activity work item with support for activity input
* Serialize scheduled activities as part of workflow state
* Add signal to schedule child activity
* Implement stores for plans and jobs
* Add EF Core provider
* Add Retry endpoint
* Keep root context as always active. The root context is the workflow execution context and contains persistent variable state
* Regenerate EF Core migrations
* Handle orphaned activity execution contexts
* Refactor workflow execution factory
* Enable configuring Jint from Program
* Update ModifyVariable alteration with support for type deserialization
* Use ShortGuid for identity
* Cleanup WorkflowServer host
When deserialization dails due to the target type not being deserializable, return a JsonObject instead. This enable e.g. ActivityExecutionLogRecord to store JSON information for ActivityState, which does not need to be reconstructed into the original type. An improvement could be considered to store activity execution log record activity state in a non-polymorphic structure in the first place.
* 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
* Implemented MongoDb
* Use main entity models in mongodb
* Fixed object serialization issue
* Fixed issues caused by duplicate collection names
* Optimized count query
* Fixed the issues after merge
* Revert "Fixed the issues after merge"
This reverts commit 5568af60cfc107b8ee68fd4c89fbb02946f8a6a3.
* Use expression helper to solve mongodb query issue
* Handle null values during deserialization
* Moved MongoDb project to persistence folder
* Did some refactor and added type serializer for variable fix
* Modularize mongodb indices creation
* Fixed the build
* Implement variable serializer
* Update SQLite migrations
---------
Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
* Update activity names and descriptions
* Rename JS functions
* Make endpoint class internal
* Pre-create workflow instance ID when dispatching workflows
* Incremental work on context activity
* Add extensions to get and set context params
* Update polymorphic converter to handle objects serialized to primitives
* Add convenience factory methods for SetWorkflowContextParameter activity
* Add API endpoint to list available provider types
* Implement workflow context provider selection property panel
* Update context provider picker to be based on selected providers
* Make SendEmail support different types of input for To, Cc and Bcc fields
* Fix EF Core WorkflowDefinitionStore to use polymorphic serialization for metadata
* Add JS support for getting workflow contexts
* Add Installed Features endpoint
* Update polymorphic object converter to skip start array
* Update activity execution middleware to handle background execution
* Fix sample program to include activity middleware for contexts
* Comments and cleanup
* 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
* Implemented Id property for variable for memory reference
* Removed debugger
* Fixed the issue with memory block reference of variable
* Fixed infinite recursive calling issue
* Handle variables with ID already containing
* Update JS variable getters based on declared variables
* Prevent Export from including composite roots
* Update JS evaluator with support for reading and writing variables in scope
* Fix polymorphic converter with support for arrays
---------
Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
* Incremental work
* Enable control over when to include full compositie root
* Cleanup
* Update WorkflowDefinitionActivity
* Implement input as variables
* Delete unused class
* Remove less common types
* Rename ExpandoObject to JSON
* Implement variable scoping
* Remove parent/child relationship from MemoryRegister
* Add support for sending input to "trigger event" endpoint
* Add support for configuring input storage driver
* Remove unused namespace imports
* Auto-register activity types when running a workflow
* Fix missing variables from containers