* Refactor workflow dispatch and instance creation process
This update splits the process of dispatching a workflow into two steps: Initialization and Execution. Now, first, a new workflow instance is created and saved with the input parameters. Second, the new workflow instance is dispatched for execution. This process ensures that the size of the message dispatched does not exceed acceptable limits and enhances workflow dispatch efficiency. It also helps avoid data loss in case of premature process termination or failure in the initial stages of execution.
* Change default workflow substatus to 'Pending'
The code changes involve modifying the default WorkflowSubStatus from 'Executing' to 'Pending'. This minor adjustment is implemented to represent a more accurate initial state of a new workflow instance in the WorkflowManagement module in Elsa.
* Add support for existing workflow instances in WorkflowInstance grain
The change extends the WorkflowInstance grain to include an IWorkflowInstanceStore to support workflows that already exist. Additionally, the CreateWorkflowHostAsync method is enhanced to rebuild a workflow host if the instance already exists.
* Simplify XML comments format
* Refactor comments in `StartWorkflowHostParams` class
Removed unnecessary comment tags in the `StartWorkflowHostParams` class for better readability and simplicity. Also, unused lines of code from the `IWorkflowRuntime` interface have been commented out to enhance clarity and cleanliness in the codebase.
* Remove unnecessary comment in MassTransitWorkflowDispatcher
The obsolete comment about attaching a version header to the message was removed from 'MassTransitWorkflowDispatcher.cs'. This comment was no longer relevant as the dispatcher no longer performs the action described.
* Fixed issue where updated and finished date where not set when cancelling a workflow
* Single instance cancellation
* Updated bulk cancellation to allow multiple options
* Fixed counting of bulk cancellation
* Added proto actor implementation for batch cancellation
* Moved bulk cancellation method to separate service
---------
Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
* Removed duplicate entries
* Prevented workflows and activities from starting when the parent workflow is being cancelled
* Added cancellation to execution contexts
* Added store for workflow execution contexts
* Added cancellation to workflowRuntime
* Removed calling BookmarkPersistedHandler when persisting bookmarks.
* Added endpoint for bulk cancelling tasks
* Added tests for cancelling workflows
* Prevented cancelling the cancellation process since it could have unwanted effects
---------
Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
The AutoComplete option has been added to the workflow bookmarks, which determines whether the activity should automatically be completed if no callback is specified. This change improves the flexibility of bookmark creation and impacts various workflow elements and procedures. The corresponding adjustments have been made at functions where bookmarks are used or created.
* Initial version of BulkDispatchWorkflow
* Update comments
* Refactor options models for running workflows and add Properties
* Fix resumption
* Add ability to provide arguments when evaluating expressions
* Update args syntax for JS
* Fix ProtoActor Runtime Properties mapping
* Use default constructor
* Provide completed workflow instance ID as input to BulkDispatchWorkflows
* Implement ChildFaulted port
* Switch to Publish to make Memory service bus work
* Update input evaluation and activity output retrieval
Refined the input evaluation process to only consider inputs with AutoEvaluate set to true. Added a comment to clarify the purpose of the GetActivitiesWithOutputs method. Removed the unnecessary check for AutoEvaluate from the EvaluateInputPropertyAsync method.
* 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