Add API support for querying workflow instances by correlation ID

This commit is contained in:
Sipke Schoorstra 2021-07-24 13:24:25 +02:00
parent d1c57aaba0
commit 11de05173e
2 changed files with 5 additions and 0 deletions

View file

@ -7,6 +7,7 @@ namespace Elsa.Persistence.Specifications.WorkflowInstances
{
public static ISpecification<WorkflowInstance> WithWorkflowDefinition(this ISpecification<WorkflowInstance> specification, string workflowDefinitionId) => specification.And(new WorkflowDefinitionIdSpecification(workflowDefinitionId));
public static ISpecification<WorkflowInstance> WithWorkflowName(this ISpecification<WorkflowInstance> specification, string name) => specification.And(new WorkflowInstanceNameMatchSpecification(name));
public static ISpecification<WorkflowInstance> WithCorrelationId(this ISpecification<WorkflowInstance> specification, string correlationId) => specification.And(new CorrelationIdSpecification<WorkflowInstance>(correlationId));
public static ISpecification<WorkflowInstance> WithContextId(this ISpecification<WorkflowInstance> specification, string contextType, string contextId) => specification.And(new WorkflowInstanceContextIdMatchSpecification(contextType, contextId));
public static ISpecification<WorkflowInstance> WithContextId(this ISpecification<WorkflowInstance> specification, Type contextType, string contextId) => specification.And(new WorkflowInstanceContextIdMatchSpecification(contextType, contextId));
public static ISpecification<WorkflowInstance> WithContextId<TContextType>(this ISpecification<WorkflowInstance> specification, string contextId) => specification.And(new WorkflowInstanceContextIdMatchSpecification(typeof(TContextType), contextId));

View file

@ -46,6 +46,7 @@ namespace Elsa.Server.Api.Endpoints.WorkflowInstances
public async Task<ActionResult<PagedList<WorkflowInstanceSummaryModel>>> 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);