From dac4610ac88d62e90b7cce99f9e4c7f776e053e2 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Tue, 8 Dec 2020 22:23:52 +0100 Subject: [PATCH] Incremental work on dashboard + API --- src/clients/Elsa.Client/ElsaClient.cs | 8 +- src/clients/Elsa.Client/IElsaClient.cs | 1 + .../Services/IWorkflowInstanceApi.cs | 16 ++ .../WorkflowInstanceManagerExtensions.cs | 11 +- .../{ => WorkflowDefinitions}/Designer.razor | 6 +- .../Designer.razor.cs | 2 +- .../List.razor} | 6 +- .../List.razor.cs} | 4 +- .../Pages/WorkflowInstances/List.razor | 211 ++++++++++++++++++ .../Pages/WorkflowInstances/List.razor.cs | 18 ++ .../List.razor} | 4 +- .../List.razor.cs} | 4 +- .../Pages/WorkflowRegistry/Viewer.razor | 16 ++ .../Pages/WorkflowRegistry/Viewer.razor.cs | 53 +++++ .../ApplicationBuilderExtensions.cs | 7 +- .../Extensions/ServiceCollectionExtensions.cs | 2 + .../Rpc/WorkflowInstanceService.cs | 19 ++ .../Rpc/IWorkflowInstanceService.cs | 14 ++ .../GetByDefinitionAndVersion.cs | 1 + .../WorkflowDefinitions/GetByVersionId.cs | 1 + .../Endpoints/WorkflowDefinitions/List.cs | 1 + .../Endpoints/WorkflowDefinitions/Save.cs | 1 + .../Endpoints/WorkflowInstances/Get.cs | 44 ++++ .../Endpoints/WorkflowInstances/List.cs | 42 ++++ .../Endpoints/WorkflowInstances/Models.cs | 4 + .../Endpoints/WorkflowRegistry/Get.cs | 50 +++++ .../Endpoints/WorkflowRegistry/List.cs | 10 +- .../Extensions/ServiceCollectionExtensions.cs | 1 + .../Examples/WorkflowBlueprintModelExample.cs | 43 ++++ .../WorkflowBlueprintModelPagedListExample.cs | 16 ++ .../WorkflowDefinitionExample.cs | 6 +- .../WorkflowDefinitionPagedListExample.cs | 2 +- 32 files changed, 595 insertions(+), 29 deletions(-) create mode 100644 src/clients/Elsa.Client/Services/IWorkflowInstanceApi.cs rename src/dashboards/blazor/ElsaDashboard.Application/Pages/{ => WorkflowDefinitions}/Designer.razor (85%) rename src/dashboards/blazor/ElsaDashboard.Application/Pages/{ => WorkflowDefinitions}/Designer.razor.cs (98%) rename src/dashboards/blazor/ElsaDashboard.Application/Pages/{WorkflowDefinitions.razor => WorkflowDefinitions/List.razor} (96%) rename src/dashboards/blazor/ElsaDashboard.Application/Pages/{WorkflowDefinitions.razor.cs => WorkflowDefinitions/List.razor.cs} (85%) create mode 100644 src/dashboards/blazor/ElsaDashboard.Application/Pages/WorkflowInstances/List.razor create mode 100644 src/dashboards/blazor/ElsaDashboard.Application/Pages/WorkflowInstances/List.razor.cs rename src/dashboards/blazor/ElsaDashboard.Application/Pages/{WorkflowRegistry.razor => WorkflowRegistry/List.razor} (98%) rename src/dashboards/blazor/ElsaDashboard.Application/Pages/{WorkflowRegistry.razor.cs => WorkflowRegistry/List.razor.cs} (85%) create mode 100644 src/dashboards/blazor/ElsaDashboard.Application/Pages/WorkflowRegistry/Viewer.razor create mode 100644 src/dashboards/blazor/ElsaDashboard.Application/Pages/WorkflowRegistry/Viewer.razor.cs create mode 100644 src/dashboards/blazor/ElsaDashboard.Backend/Rpc/WorkflowInstanceService.cs create mode 100644 src/dashboards/blazor/ElsaDashboard.Shared/Rpc/IWorkflowInstanceService.cs create mode 100644 src/server/Elsa.Server.Api/Endpoints/WorkflowInstances/Get.cs create mode 100644 src/server/Elsa.Server.Api/Endpoints/WorkflowInstances/List.cs create mode 100644 src/server/Elsa.Server.Api/Endpoints/WorkflowInstances/Models.cs create mode 100644 src/server/Elsa.Server.Api/Endpoints/WorkflowRegistry/Get.cs create mode 100644 src/server/Elsa.Server.Api/Swagger/Examples/WorkflowBlueprintModelExample.cs create mode 100644 src/server/Elsa.Server.Api/Swagger/Examples/WorkflowBlueprintModelPagedListExample.cs rename src/server/Elsa.Server.Api/Swagger/{ => Examples}/WorkflowDefinitionExample.cs (92%) rename src/server/Elsa.Server.Api/Swagger/{ => Examples}/WorkflowDefinitionPagedListExample.cs (92%) diff --git a/src/clients/Elsa.Client/ElsaClient.cs b/src/clients/Elsa.Client/ElsaClient.cs index 200a9fcc1..490b7c60f 100644 --- a/src/clients/Elsa.Client/ElsaClient.cs +++ b/src/clients/Elsa.Client/ElsaClient.cs @@ -4,15 +4,17 @@ namespace Elsa.Client { public class ElsaClient : IElsaClient { - public ElsaClient(IActivitiesApi activitiesApi, IWorkflowDefinitionsApi workflowDefinitionsApi, IWorkflowRegistryApi workflowRegistry) + public ElsaClient(IActivitiesApi activities, IWorkflowDefinitionsApi workflowDefinitions, IWorkflowRegistryApi workflowRegistry, IWorkflowInstanceApi workflowInstances) { - Activities = activitiesApi; - WorkflowDefinitions = workflowDefinitionsApi; + Activities = activities; + WorkflowDefinitions = workflowDefinitions; WorkflowRegistry = workflowRegistry; + WorkflowInstances = workflowInstances; } public IActivitiesApi Activities { get; } public IWorkflowDefinitionsApi WorkflowDefinitions { get; } public IWorkflowRegistryApi WorkflowRegistry { get; } + public IWorkflowInstanceApi WorkflowInstances { get; } } } \ No newline at end of file diff --git a/src/clients/Elsa.Client/IElsaClient.cs b/src/clients/Elsa.Client/IElsaClient.cs index 0e2b975a7..d0c3e2289 100644 --- a/src/clients/Elsa.Client/IElsaClient.cs +++ b/src/clients/Elsa.Client/IElsaClient.cs @@ -7,5 +7,6 @@ namespace Elsa.Client IActivitiesApi Activities { get; } IWorkflowDefinitionsApi WorkflowDefinitions { get; } IWorkflowRegistryApi WorkflowRegistry { get; } + IWorkflowInstanceApi WorkflowInstances { get; } } } \ No newline at end of file diff --git a/src/clients/Elsa.Client/Services/IWorkflowInstanceApi.cs b/src/clients/Elsa.Client/Services/IWorkflowInstanceApi.cs new file mode 100644 index 000000000..db24814be --- /dev/null +++ b/src/clients/Elsa.Client/Services/IWorkflowInstanceApi.cs @@ -0,0 +1,16 @@ +using System.Threading; +using System.Threading.Tasks; +using Elsa.Client.Models; +using Refit; + +namespace Elsa.Client.Services +{ + public interface IWorkflowInstanceApi + { + [Get("/v1/workflow-instance/{id}")] + Task GetByIdAsync(string id, CancellationToken cancellationToken = default); + + [Get("/v1/workflow-instance")] + Task> ListAsync(int? page = default, int? pageSize = default, CancellationToken cancellationToken = default); + } +} \ No newline at end of file diff --git a/src/core/Elsa.Core/Extensions/WorkflowInstanceManagerExtensions.cs b/src/core/Elsa.Core/Extensions/WorkflowInstanceManagerExtensions.cs index bf9240399..6366107e9 100644 --- a/src/core/Elsa.Core/Extensions/WorkflowInstanceManagerExtensions.cs +++ b/src/core/Elsa.Core/Extensions/WorkflowInstanceManagerExtensions.cs @@ -21,7 +21,16 @@ namespace Elsa.Extensions WorkflowStatus status, CancellationToken cancellationToken = default) => await manager.Query(x => x.CorrelationId == correlationId && x.WorkflowStatus == status).FirstOrDefaultAsync(); - + + public static async Task CountAsync(this IWorkflowInstanceManager manager, CancellationToken cancellationToken = default) => await manager.Query().CountAsync(); + + public static async Task> ListAsync( + this IWorkflowInstanceManager manager, + int page, + int pageSize, + CancellationToken cancellationToken = default) => + await manager.Query().Skip(page * pageSize).Take(pageSize).ListAsync(); + public static async Task> ListByCorrelationIdAsync( this IWorkflowInstanceManager manager, string correlationId, diff --git a/src/dashboards/blazor/ElsaDashboard.Application/Pages/Designer.razor b/src/dashboards/blazor/ElsaDashboard.Application/Pages/WorkflowDefinitions/Designer.razor similarity index 85% rename from src/dashboards/blazor/ElsaDashboard.Application/Pages/Designer.razor rename to src/dashboards/blazor/ElsaDashboard.Application/Pages/WorkflowDefinitions/Designer.razor index 7fc8fbb97..b0b6dc662 100644 --- a/src/dashboards/blazor/ElsaDashboard.Application/Pages/Designer.razor +++ b/src/dashboards/blazor/ElsaDashboard.Application/Pages/WorkflowDefinitions/Designer.razor @@ -1,9 +1,9 @@ -@page "/workflows/designer" -@page "/workflows/{workflowDefinitionId}/designer" +@page "/workflow-definitions/designer" +@page "/workflow-definitions/{workflowDefinitionId}/designer"

- Workflow Editor + Workflow Definition Editor

diff --git a/src/dashboards/blazor/ElsaDashboard.Application/Pages/Designer.razor.cs b/src/dashboards/blazor/ElsaDashboard.Application/Pages/WorkflowDefinitions/Designer.razor.cs similarity index 98% rename from src/dashboards/blazor/ElsaDashboard.Application/Pages/Designer.razor.cs rename to src/dashboards/blazor/ElsaDashboard.Application/Pages/WorkflowDefinitions/Designer.razor.cs index 533c70a80..9c2d7b115 100644 --- a/src/dashboards/blazor/ElsaDashboard.Application/Pages/Designer.razor.cs +++ b/src/dashboards/blazor/ElsaDashboard.Application/Pages/WorkflowDefinitions/Designer.razor.cs @@ -8,7 +8,7 @@ using ElsaDashboard.Application.Services; using ElsaDashboard.Shared.Rpc; using Microsoft.AspNetCore.Components; -namespace ElsaDashboard.Application.Pages +namespace ElsaDashboard.Application.Pages.WorkflowDefinitions { partial class Designer { diff --git a/src/dashboards/blazor/ElsaDashboard.Application/Pages/WorkflowDefinitions.razor b/src/dashboards/blazor/ElsaDashboard.Application/Pages/WorkflowDefinitions/List.razor similarity index 96% rename from src/dashboards/blazor/ElsaDashboard.Application/Pages/WorkflowDefinitions.razor rename to src/dashboards/blazor/ElsaDashboard.Application/Pages/WorkflowDefinitions/List.razor index ca1989cdd..e20e1082f 100644 --- a/src/dashboards/blazor/ElsaDashboard.Application/Pages/WorkflowDefinitions.razor +++ b/src/dashboards/blazor/ElsaDashboard.Application/Pages/WorkflowDefinitions/List.razor @@ -8,7 +8,7 @@
- + Create @@ -115,7 +115,7 @@ @@ -154,7 +154,7 @@ class="z-10 mx-3 origin-top-right absolute right-7 top-0 w-48 mt-1 rounded-md shadow-lg">