Removed ICompressionStrategyResolver interface and file, and added ICompressionCodec and ICompressionCodecResolver interface. Updated relevant classes for the new interface. Specifically, added Zstd class under Compression as a new compression method. Also modified WorkflowInstanceStore.cs, None.cs, EFCoreWorkflowInstanceStore.cs, GZip.cs, and ActivityExecutionLogStore.cs for uniform compression terminology.
This update adds a compression feature for workflow state data to reduce storage needs. A compression strategy resolver, None and GZip strategies have been implemented. Migration scripts were also updated, and a superfluous file(s) were removed.
Implemented a functionality to serialize workflow definitions. This involved modifying the WorkflowSerializer service and the WorkflowDefinitionMapper. Furthermore, a new endpoint (`/export-dynamic-workflow`) for exporting serialized dynamic workflows was created. The changes aim to provide better workflow management and improve application capabilities.
This commit introduces a workflow registry for dynamically creating and registering workflows. It also includes a typed workflow materializer and extends existing services to support the new functionality. Changes are made across multiple files to integrate these new components and enhance the overall workflow functionalities.
* 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>
This commit refactors how expression descriptors are created and retrieved across Elsa project. The asynchronous methods have been simplified to synchronous ones removing unnecessary `ValueTask` returns. Additionally, `IExpressionDescriptorRegistryPopulator` has been removed resulting in less complexity and better performance.
* 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
* Implement Incident Strategy interface and resolver
* Add ActivityIncident model
* Add IncidentCount and Incidents properties and update migrations
* Expose incident strategies API endpoint
* Update API client with Incident Strategy models
* Replace Fault with Incidents
* Register fault status when any children have faulted
* Map incident count
* Remove unnecessary AlreadyCompleted result
* Ensure next activities are scheduled only if activity completed normally
* Incident roundtrip and fix workflow instance realtime updates
* Remove unused variable
* Add integration tests
* Use NoTracking for EF Core
* Use Activity ID as Node ID for modern tooling
* Fix DispatchWorkflow activity
* Update tests and remove redundant ToolVersion
* Update activity names and descriptions
* Rename JS functions
* Make endpoint class internal
* Pre-create workflow instance ID when dispatching workflows
* Update consuming workflows when the composite activity published
* Display auto-update option and notifications in designer
* Update consuming workflows with a separate api call
* Display notification only if there are consuming workflows found
---------
Co-authored-by: Gürkan Güran <gguran@interfirst.com>
Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
* 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
* Import publish execute integration test
* Update test
* Extracted import logic into WorkflowDefinitionImporter
* Removed the WorkflowDefinitionRequest model and done a model rename
---------
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
* Add array support for input/output arguments
* Add alias support for nullable types
* Refactor workflow definition store API
* Fix array and ui hint setting of input/output definition
* Refactor workflow instance store API
* Add XML comments
* Refactor trigger and bookmark store API
* Various additions and tweaks
* Fix WriteHttpResponse when no content type provided
* Bump designer version
* Return when sending response
* Remove faulty validation