diff --git a/Elsa.sln b/Elsa.sln index fa3c447a3..a5537c516 100644 --- a/Elsa.sln +++ b/Elsa.sln @@ -238,6 +238,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.UnitTests", "test\unit EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "unit", "unit", "{E1378A53-424A-4E50-9D03-71DB9F7EE57C}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.InvokeWorkflowFromController", "src\samples\aspnet\Elsa.Samples.InvokeWorkflowFromController\Elsa.Samples.InvokeWorkflowFromController.csproj", "{346A3A87-A839-499A-A143-3D267A951905}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -568,6 +570,10 @@ Global {F822DE2F-A91D-416E-BF4A-A6C466C1BF0A}.Debug|Any CPU.Build.0 = Debug|Any CPU {F822DE2F-A91D-416E-BF4A-A6C466C1BF0A}.Release|Any CPU.ActiveCfg = Release|Any CPU {F822DE2F-A91D-416E-BF4A-A6C466C1BF0A}.Release|Any CPU.Build.0 = Release|Any CPU + {346A3A87-A839-499A-A143-3D267A951905}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {346A3A87-A839-499A-A143-3D267A951905}.Debug|Any CPU.Build.0 = Debug|Any CPU + {346A3A87-A839-499A-A143-3D267A951905}.Release|Any CPU.ActiveCfg = Release|Any CPU + {346A3A87-A839-499A-A143-3D267A951905}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -681,6 +687,7 @@ Global {DB42A8DA-06CA-4402-9C87-8F7F055AB37E} = {FC9F520F-BA51-4AD2-BFEE-EF787798E734} {E1378A53-424A-4E50-9D03-71DB9F7EE57C} = {AB1AE008-6FD6-414C-8E88-D735F42E1FA6} {F822DE2F-A91D-416E-BF4A-A6C466C1BF0A} = {E1378A53-424A-4E50-9D03-71DB9F7EE57C} + {346A3A87-A839-499A-A143-3D267A951905} = {22E75696-6FE9-436A-9097-EE21C603F818} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {8B0975FD-7050-48B0-88C5-48C33378E158} diff --git a/src/samples/aspnet/Elsa.Samples.InvokeWorkflowFromController/Controllers/LaunchController.cs b/src/samples/aspnet/Elsa.Samples.InvokeWorkflowFromController/Controllers/LaunchController.cs new file mode 100644 index 000000000..3d5fa2a9e --- /dev/null +++ b/src/samples/aspnet/Elsa.Samples.InvokeWorkflowFromController/Controllers/LaunchController.cs @@ -0,0 +1,28 @@ +using System.Threading.Tasks; +using Elsa.Samples.InvokeWorkflowFromController.Workflows; +using Elsa.Services; +using Microsoft.AspNetCore.Mvc; + +namespace Elsa.Samples.InvokeWorkflowFromController.Controllers +{ + [ApiController] + [Route("launch")] + public class LaunchController : Controller + { + private readonly IWorkflowRunner _workflowRunner; + + public LaunchController(IWorkflowRunner workflowRunner) + { + _workflowRunner = workflowRunner; + } + + [HttpGet] + public async Task Launch() + { + await _workflowRunner.RunWorkflowAsync(); + + // Returning empty (the workflow will write an HTTP response). + return new EmptyResult(); + } + } +} \ No newline at end of file diff --git a/src/samples/aspnet/Elsa.Samples.InvokeWorkflowFromController/Elsa.Samples.InvokeWorkflowFromController.csproj b/src/samples/aspnet/Elsa.Samples.InvokeWorkflowFromController/Elsa.Samples.InvokeWorkflowFromController.csproj new file mode 100644 index 000000000..30563aa3f --- /dev/null +++ b/src/samples/aspnet/Elsa.Samples.InvokeWorkflowFromController/Elsa.Samples.InvokeWorkflowFromController.csproj @@ -0,0 +1,12 @@ + + + + net5.0 + false + + + + + + + diff --git a/src/samples/aspnet/Elsa.Samples.InvokeWorkflowFromController/Program.cs b/src/samples/aspnet/Elsa.Samples.InvokeWorkflowFromController/Program.cs new file mode 100644 index 000000000..9e53bd785 --- /dev/null +++ b/src/samples/aspnet/Elsa.Samples.InvokeWorkflowFromController/Program.cs @@ -0,0 +1,14 @@ +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Hosting; + +namespace Elsa.Samples.InvokeWorkflowFromController +{ + public class Program + { + public static void Main(string[] args) => CreateHostBuilder(args).Build().Run(); + + public static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup(); }); + } +} \ No newline at end of file diff --git a/src/samples/aspnet/Elsa.Samples.InvokeWorkflowFromController/Properties/launchSettings.json b/src/samples/aspnet/Elsa.Samples.InvokeWorkflowFromController/Properties/launchSettings.json new file mode 100644 index 000000000..2f080ebe7 --- /dev/null +++ b/src/samples/aspnet/Elsa.Samples.InvokeWorkflowFromController/Properties/launchSettings.json @@ -0,0 +1,27 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:62744/", + "sslPort": 44336 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "Elsa.Samples.HelloWorldHttp": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:5001;http://localhost:5000" + } + } +} \ No newline at end of file diff --git a/src/samples/aspnet/Elsa.Samples.InvokeWorkflowFromController/Startup.cs b/src/samples/aspnet/Elsa.Samples.InvokeWorkflowFromController/Startup.cs new file mode 100644 index 000000000..28931757c --- /dev/null +++ b/src/samples/aspnet/Elsa.Samples.InvokeWorkflowFromController/Startup.cs @@ -0,0 +1,26 @@ +using Elsa.Samples.InvokeWorkflowFromController.Workflows; +using Microsoft.AspNetCore.Builder; +using Microsoft.Extensions.DependencyInjection; + +namespace Elsa.Samples.InvokeWorkflowFromController +{ + public class Startup + { + public void ConfigureServices(IServiceCollection services) + { + services.AddControllers(); + + services + .AddElsa(options => options + .AddHttpActivities() + .AddWorkflow()); + } + + public void Configure(IApplicationBuilder app) + { + app.UseRouting(); + app.UseEndpoints(endpoints => endpoints.MapControllers()); + app.UseWelcomePage(); + } + } +} \ No newline at end of file diff --git a/src/samples/aspnet/Elsa.Samples.InvokeWorkflowFromController/Workflows/RocketWorkflow.cs b/src/samples/aspnet/Elsa.Samples.InvokeWorkflowFromController/Workflows/RocketWorkflow.cs new file mode 100644 index 000000000..28766f09c --- /dev/null +++ b/src/samples/aspnet/Elsa.Samples.InvokeWorkflowFromController/Workflows/RocketWorkflow.cs @@ -0,0 +1,21 @@ +using System.Net; +using Elsa.Activities.Http; +using Elsa.Builders; + +namespace Elsa.Samples.InvokeWorkflowFromController.Workflows +{ + /// + /// A workflow that takes us to the moon. + /// + public class RocketWorkflow : IWorkflow + { + public void Build(IWorkflowBuilder builder) + { + builder + .WriteHttpResponse(activity => activity + .WithStatusCode(HttpStatusCode.OK) + .WithContentType("text/plain") + .WithContent("We're going to the moon!")); + } + } +} \ No newline at end of file diff --git a/src/samples/aspnet/Elsa.Samples.InvokeWorkflowFromController/invoke-controller.http b/src/samples/aspnet/Elsa.Samples.InvokeWorkflowFromController/invoke-controller.http new file mode 100644 index 000000000..80740e719 --- /dev/null +++ b/src/samples/aspnet/Elsa.Samples.InvokeWorkflowFromController/invoke-controller.http @@ -0,0 +1 @@ +GET http://localhost:5000/launch \ No newline at end of file