From 11de05173e050a62ae16fa4f16b3b6d36c67907d Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Sat, 24 Jul 2021 13:24:25 +0200 Subject: [PATCH] Add API support for querying workflow instances by correlation ID --- .../WorkflowInstanceSpecificationExtensions.cs | 1 + .../Elsa.Server.Api/Endpoints/WorkflowInstances/List.cs | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/src/core/Elsa.Core/Persistence/Specifications/WorkflowInstances/WorkflowInstanceSpecificationExtensions.cs b/src/core/Elsa.Core/Persistence/Specifications/WorkflowInstances/WorkflowInstanceSpecificationExtensions.cs index 0324a3338..d358372ca 100644 --- a/src/core/Elsa.Core/Persistence/Specifications/WorkflowInstances/WorkflowInstanceSpecificationExtensions.cs +++ b/src/core/Elsa.Core/Persistence/Specifications/WorkflowInstances/WorkflowInstanceSpecificationExtensions.cs @@ -7,6 +7,7 @@ namespace Elsa.Persistence.Specifications.WorkflowInstances { public static ISpecification WithWorkflowDefinition(this ISpecification specification, string workflowDefinitionId) => specification.And(new WorkflowDefinitionIdSpecification(workflowDefinitionId)); public static ISpecification WithWorkflowName(this ISpecification specification, string name) => specification.And(new WorkflowInstanceNameMatchSpecification(name)); + public static ISpecification WithCorrelationId(this ISpecification specification, string correlationId) => specification.And(new CorrelationIdSpecification(correlationId)); public static ISpecification WithContextId(this ISpecification specification, string contextType, string contextId) => specification.And(new WorkflowInstanceContextIdMatchSpecification(contextType, contextId)); public static ISpecification WithContextId(this ISpecification specification, Type contextType, string contextId) => specification.And(new WorkflowInstanceContextIdMatchSpecification(contextType, contextId)); public static ISpecification WithContextId(this ISpecification specification, string contextId) => specification.And(new WorkflowInstanceContextIdMatchSpecification(typeof(TContextType), contextId)); diff --git a/src/server/Elsa.Server.Api/Endpoints/WorkflowInstances/List.cs b/src/server/Elsa.Server.Api/Endpoints/WorkflowInstances/List.cs index b11f0d6ca..6eee5bae6 100644 --- a/src/server/Elsa.Server.Api/Endpoints/WorkflowInstances/List.cs +++ b/src/server/Elsa.Server.Api/Endpoints/WorkflowInstances/List.cs @@ -46,6 +46,7 @@ namespace Elsa.Server.Api.Endpoints.WorkflowInstances public async Task>> Handle( [FromQuery(Name = "workflow")] string? workflowDefinitionId = default, [FromQuery(Name = "status")] WorkflowStatus? workflowStatus = default, + [FromQuery] string? correlationId = default, [FromQuery] OrderBy? orderBy = default, [FromQuery] string? searchTerm = default, int page = 0, @@ -57,6 +58,9 @@ namespace Elsa.Server.Api.Endpoints.WorkflowInstances if (!string.IsNullOrWhiteSpace(workflowDefinitionId)) specification = specification.WithWorkflowDefinition(workflowDefinitionId); + + if (!string.IsNullOrWhiteSpace(correlationId)) + specification = specification.WithCorrelationId(correlationId); if (workflowStatus != null) specification = specification.WithStatus(workflowStatus.Value);