From 78eebe67ee27ff6a2334422a55d0f1c9af5fab5c Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Sat, 15 Feb 2025 11:54:18 +0100 Subject: [PATCH] Add `ElsaWorkflowInstanceStore` and workflow instance indexing Introduced `ElsaWorkflowInstanceStore` for managing workflow instances, including querying, saving, updating, and deleting. Added associated index provider and schema changes for indexing workflow instances, enabling efficient data retrieval. Updated startup and manifest files to register these new functionalities. --- .../WorkflowInstanceStoreExtensions.cs | 2 +- .../Filters/WorkflowInstanceFilter.cs | 2 +- .../Models/WorkflowInstanceSummary.cs | 37 +++++++++---------- 3 files changed, 20 insertions(+), 21 deletions(-) diff --git a/src/modules/Elsa.Workflows.Management/Extensions/WorkflowInstanceStoreExtensions.cs b/src/modules/Elsa.Workflows.Management/Extensions/WorkflowInstanceStoreExtensions.cs index f41d0325d..d26e07ea4 100644 --- a/src/modules/Elsa.Workflows.Management/Extensions/WorkflowInstanceStoreExtensions.cs +++ b/src/modules/Elsa.Workflows.Management/Extensions/WorkflowInstanceStoreExtensions.cs @@ -15,6 +15,6 @@ public static class WorkflowInstanceStoreExtensions /// public static async ValueTask FindAsync(this IWorkflowInstanceStore store, string id, CancellationToken cancellationToken = default) { - return await store.FindAsync(new WorkflowInstanceFilter{ Id = id }, cancellationToken); + return await store.FindAsync(new() { Id = id }, cancellationToken); } } \ No newline at end of file diff --git a/src/modules/Elsa.Workflows.Management/Filters/WorkflowInstanceFilter.cs b/src/modules/Elsa.Workflows.Management/Filters/WorkflowInstanceFilter.cs index f279df52a..15deb1e41 100644 --- a/src/modules/Elsa.Workflows.Management/Filters/WorkflowInstanceFilter.cs +++ b/src/modules/Elsa.Workflows.Management/Filters/WorkflowInstanceFilter.cs @@ -134,7 +134,7 @@ public class WorkflowInstanceFilter if (TimestampFilters != null) { - foreach (TimestampFilter timestampFilter in TimestampFilters) + foreach (var timestampFilter in TimestampFilters) { var column = timestampFilter.Column; var timestamp = timestampFilter.Timestamp; diff --git a/src/modules/Elsa.Workflows.Management/Models/WorkflowInstanceSummary.cs b/src/modules/Elsa.Workflows.Management/Models/WorkflowInstanceSummary.cs index 97346b24b..ef673127a 100644 --- a/src/modules/Elsa.Workflows.Management/Models/WorkflowInstanceSummary.cs +++ b/src/modules/Elsa.Workflows.Management/Models/WorkflowInstanceSummary.cs @@ -33,32 +33,31 @@ public class WorkflowInstanceSummary /// /// Returns a summary view of the specified . /// - public static Expression> FromInstanceExpression() - => workflowInstance => new WorkflowInstanceSummary - { - Id = workflowInstance.Id, - DefinitionId = workflowInstance.DefinitionId, - DefinitionVersionId = workflowInstance.DefinitionVersionId, - Version = workflowInstance.Version, - Status = workflowInstance.Status, - SubStatus = workflowInstance.SubStatus, - CorrelationId = workflowInstance.CorrelationId, - Name = workflowInstance.Name, - IncidentCount = workflowInstance.IncidentCount, - CreatedAt = workflowInstance.CreatedAt, - UpdatedAt = workflowInstance.UpdatedAt, - FinishedAt = workflowInstance.FinishedAt - }; + public static Expression> FromInstanceExpression() => workflowInstance => new() + { + Id = workflowInstance.Id, + DefinitionId = workflowInstance.DefinitionId, + DefinitionVersionId = workflowInstance.DefinitionVersionId, + Version = workflowInstance.Version, + Status = workflowInstance.Status, + SubStatus = workflowInstance.SubStatus, + CorrelationId = workflowInstance.CorrelationId, + Name = workflowInstance.Name, + IncidentCount = workflowInstance.IncidentCount, + CreatedAt = workflowInstance.CreatedAt, + UpdatedAt = workflowInstance.UpdatedAt, + FinishedAt = workflowInstance.FinishedAt + }; /// The ID of the workflow instance. - public string Id { get; set; } = default!; + public string Id { get; set; } = null!; /// The ID of the workflow definition. - public string DefinitionId { get; set; } = default!; + public string DefinitionId { get; set; } = null!; /// The version ID of the workflow definition. - public string DefinitionVersionId { get; set; } = default!; + public string DefinitionVersionId { get; set; } = null!; /// The version of the workflow definition. public int Version { get; set; }