From fcae64c9358a7804d0d73bb7c164e1537b0a26da Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Sun, 10 Dec 2023 12:15:03 +0100 Subject: [PATCH] Add sample project --- Elsa.sln | 7 ++++ .../Elsa.Samples.AspNet.Heartbeats.csproj | 14 +++++++ .../HeartbeatWorkflow.cs | 25 +++++++++++++ .../Elsa.Samples.AspNet.Heartbeats/Program.cs | 21 +++++++++++ .../Properties/launchSettings.json | 37 +++++++++++++++++++ .../appsettings.Development.json | 9 +++++ .../appsettings.json | 9 +++++ .../Elsa.Samples.AspNet.HelloWorld.csproj | 9 ----- .../Program.cs | 2 +- 9 files changed, 123 insertions(+), 10 deletions(-) create mode 100644 src/samples/aspnet/Elsa.Samples.AspNet.Heartbeats/Elsa.Samples.AspNet.Heartbeats.csproj create mode 100644 src/samples/aspnet/Elsa.Samples.AspNet.Heartbeats/HeartbeatWorkflow.cs create mode 100644 src/samples/aspnet/Elsa.Samples.AspNet.Heartbeats/Program.cs create mode 100644 src/samples/aspnet/Elsa.Samples.AspNet.Heartbeats/Properties/launchSettings.json create mode 100644 src/samples/aspnet/Elsa.Samples.AspNet.Heartbeats/appsettings.Development.json create mode 100644 src/samples/aspnet/Elsa.Samples.AspNet.Heartbeats/appsettings.json diff --git a/Elsa.sln b/Elsa.sln index 40b59dd8e..b591fa14f 100644 --- a/Elsa.sln +++ b/Elsa.sln @@ -285,6 +285,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.MassTransit.RabbitMq", EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.MassTransit.AzureServiceBus", "src\modules\Elsa.MassTransit.AzureServiceBus\Elsa.MassTransit.AzureServiceBus.csproj", "{5B1AF00E-1030-4BBA-9C1A-1DC5AEFDD44A}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AspNet.Heartbeats", "src\samples\aspnet\Elsa.Samples.AspNet.Heartbeats\Elsa.Samples.AspNet.Heartbeats.csproj", "{26888832-DBEA-4B23-8DC2-84478A702CC4}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -715,6 +717,10 @@ Global {5B1AF00E-1030-4BBA-9C1A-1DC5AEFDD44A}.Debug|Any CPU.Build.0 = Debug|Any CPU {5B1AF00E-1030-4BBA-9C1A-1DC5AEFDD44A}.Release|Any CPU.ActiveCfg = Release|Any CPU {5B1AF00E-1030-4BBA-9C1A-1DC5AEFDD44A}.Release|Any CPU.Build.0 = Release|Any CPU + {26888832-DBEA-4B23-8DC2-84478A702CC4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {26888832-DBEA-4B23-8DC2-84478A702CC4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {26888832-DBEA-4B23-8DC2-84478A702CC4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {26888832-DBEA-4B23-8DC2-84478A702CC4}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -846,6 +852,7 @@ Global {790E94F2-5393-47DF-AC52-D9247F5B243A} = {6EF07978-A6D2-40EB-891D-7D70C5F37E76} {169BEA3D-2A81-47EE-A6C1-3F8719EEC1F6} = {DD089B8B-DA73-492A-9010-F772D1C178DA} {5B1AF00E-1030-4BBA-9C1A-1DC5AEFDD44A} = {DD089B8B-DA73-492A-9010-F772D1C178DA} + {26888832-DBEA-4B23-8DC2-84478A702CC4} = {56C2FFB8-EA54-45B5-A095-4A78142EB4B5} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {D4B5CEAA-7D70-4FCB-A68E-B03FBE5E0E5E} diff --git a/src/samples/aspnet/Elsa.Samples.AspNet.Heartbeats/Elsa.Samples.AspNet.Heartbeats.csproj b/src/samples/aspnet/Elsa.Samples.AspNet.Heartbeats/Elsa.Samples.AspNet.Heartbeats.csproj new file mode 100644 index 000000000..d4af01dc7 --- /dev/null +++ b/src/samples/aspnet/Elsa.Samples.AspNet.Heartbeats/Elsa.Samples.AspNet.Heartbeats.csproj @@ -0,0 +1,14 @@ + + + + net8.0 + enable + enable + + + + + + + + diff --git a/src/samples/aspnet/Elsa.Samples.AspNet.Heartbeats/HeartbeatWorkflow.cs b/src/samples/aspnet/Elsa.Samples.AspNet.Heartbeats/HeartbeatWorkflow.cs new file mode 100644 index 000000000..56a7fc462 --- /dev/null +++ b/src/samples/aspnet/Elsa.Samples.AspNet.Heartbeats/HeartbeatWorkflow.cs @@ -0,0 +1,25 @@ +using Elsa.Common.Contracts; +using Elsa.Workflows.Core; +using Elsa.Workflows.Core.Activities; +using Elsa.Workflows.Core.Contracts; +using Timer = Elsa.Scheduling.Activities.Timer; + +namespace Elsa.Samples.AspNet.Heartbeats; + +public class HeartbeatWorkflow : WorkflowBase +{ + protected override void Build(IWorkflowBuilder builder) + { + builder.Root = new Sequence + { + Activities = + { + new Timer(TimeSpan.FromSeconds(5)) + { + CanStartWorkflow = true + }, + new WriteLine(context => $"Heartbeat at {context.GetRequiredService().UtcNow}"), + } + }; + } +} \ No newline at end of file diff --git a/src/samples/aspnet/Elsa.Samples.AspNet.Heartbeats/Program.cs b/src/samples/aspnet/Elsa.Samples.AspNet.Heartbeats/Program.cs new file mode 100644 index 000000000..eb76656c7 --- /dev/null +++ b/src/samples/aspnet/Elsa.Samples.AspNet.Heartbeats/Program.cs @@ -0,0 +1,21 @@ +using Elsa.Extensions; + +var builder = WebApplication.CreateBuilder(args); +var services = builder.Services; + +// Add Elsa services. +services.AddElsa(elsa => elsa + .AddWorkflowsFrom() + + // Enable Elsa HTTP module (for HTTP related activities). + .UseScheduling() +); + +// Configure middleware pipeline. +var app = builder.Build(); + +if (app.Environment.IsDevelopment()) + app.UseDeveloperExceptionPage(); + +// Start accepting requests. +app.Run(); \ No newline at end of file diff --git a/src/samples/aspnet/Elsa.Samples.AspNet.Heartbeats/Properties/launchSettings.json b/src/samples/aspnet/Elsa.Samples.AspNet.Heartbeats/Properties/launchSettings.json new file mode 100644 index 000000000..043a3ee49 --- /dev/null +++ b/src/samples/aspnet/Elsa.Samples.AspNet.Heartbeats/Properties/launchSettings.json @@ -0,0 +1,37 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:1110", + "sslPort": 44381 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "http://localhost:5168", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "https://localhost:7017;http://localhost:5168", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/src/samples/aspnet/Elsa.Samples.AspNet.Heartbeats/appsettings.Development.json b/src/samples/aspnet/Elsa.Samples.AspNet.Heartbeats/appsettings.Development.json new file mode 100644 index 000000000..6cddcf949 --- /dev/null +++ b/src/samples/aspnet/Elsa.Samples.AspNet.Heartbeats/appsettings.Development.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Warning", + "Microsoft.Hosting": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/src/samples/aspnet/Elsa.Samples.AspNet.Heartbeats/appsettings.json b/src/samples/aspnet/Elsa.Samples.AspNet.Heartbeats/appsettings.json new file mode 100644 index 000000000..51c11b243 --- /dev/null +++ b/src/samples/aspnet/Elsa.Samples.AspNet.Heartbeats/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Warning", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/src/samples/aspnet/Elsa.Samples.AspNet.HelloWorld/Elsa.Samples.AspNet.HelloWorld.csproj b/src/samples/aspnet/Elsa.Samples.AspNet.HelloWorld/Elsa.Samples.AspNet.HelloWorld.csproj index b21e8d284..55fae0a8d 100644 --- a/src/samples/aspnet/Elsa.Samples.AspNet.HelloWorld/Elsa.Samples.AspNet.HelloWorld.csproj +++ b/src/samples/aspnet/Elsa.Samples.AspNet.HelloWorld/Elsa.Samples.AspNet.HelloWorld.csproj @@ -9,15 +9,6 @@ - - - - - - - - - diff --git a/src/samples/aspnet/Elsa.Samples.AspNet.WorkflowServer/Program.cs b/src/samples/aspnet/Elsa.Samples.AspNet.WorkflowServer/Program.cs index 34d6bbcfe..3dc0e8e53 100644 --- a/src/samples/aspnet/Elsa.Samples.AspNet.WorkflowServer/Program.cs +++ b/src/samples/aspnet/Elsa.Samples.AspNet.WorkflowServer/Program.cs @@ -43,7 +43,7 @@ builder.Services.AddElsa(elsa => }); // Configure CORS to allow designer app hosted on a different origin to invoke the APIs. -builder.Services.AddCors(cors => cors.AddDefaultPolicy(policy => policy.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod())); +builder.Services.AddCors(cors => cors.AddDefaultPolicy(policy => policy.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod().WithExposedHeaders("*"))); var app = builder.Build();