diff --git a/Elsa.sln b/Elsa.sln index 57df1387b..f500e29f7 100644 --- a/Elsa.sln +++ b/Elsa.sln @@ -222,6 +222,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Activities.Rebus", "sr EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.UserTaskConsole", "src\samples\console\Elsa.Samples.UserTaskConsole\Elsa.Samples.UserTaskConsole.csproj", "{9BF25FEF-B667-4BB0-882D-6911B9F5B3C7}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ForEachLoopConsole", "src\samples\console\Elsa.Samples.ForEachLoopConsole\Elsa.Samples.ForEachLoopConsole.csproj", "{43EC7BEE-35C5-4B70-AC39-C89696710310}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -532,6 +534,10 @@ Global {9BF25FEF-B667-4BB0-882D-6911B9F5B3C7}.Debug|Any CPU.Build.0 = Debug|Any CPU {9BF25FEF-B667-4BB0-882D-6911B9F5B3C7}.Release|Any CPU.ActiveCfg = Release|Any CPU {9BF25FEF-B667-4BB0-882D-6911B9F5B3C7}.Release|Any CPU.Build.0 = Release|Any CPU + {43EC7BEE-35C5-4B70-AC39-C89696710310}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {43EC7BEE-35C5-4B70-AC39-C89696710310}.Debug|Any CPU.Build.0 = Debug|Any CPU + {43EC7BEE-35C5-4B70-AC39-C89696710310}.Release|Any CPU.ActiveCfg = Release|Any CPU + {43EC7BEE-35C5-4B70-AC39-C89696710310}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -636,6 +642,7 @@ Global {76BF833E-3CAE-4402-99F1-B3BFD90622E4} = {E42743A0-FBDD-4150-9D53-6000496D9B87} {9CBD9317-FD12-4BB9-A17D-CE7FA6B12DD8} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180} {9BF25FEF-B667-4BB0-882D-6911B9F5B3C7} = {FC9F520F-BA51-4AD2-BFEE-EF787798E734} + {43EC7BEE-35C5-4B70-AC39-C89696710310} = {FC9F520F-BA51-4AD2-BFEE-EF787798E734} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {8B0975FD-7050-48B0-88C5-48C33378E158} diff --git a/src/samples/console/Elsa.Samples.ForEachLoopConsole/Elsa.Samples.ForEachLoopConsole.csproj b/src/samples/console/Elsa.Samples.ForEachLoopConsole/Elsa.Samples.ForEachLoopConsole.csproj new file mode 100644 index 000000000..1d890858d --- /dev/null +++ b/src/samples/console/Elsa.Samples.ForEachLoopConsole/Elsa.Samples.ForEachLoopConsole.csproj @@ -0,0 +1,17 @@ + + + + Exe + net5.0 + false + + + + + + + + + + + diff --git a/src/samples/console/Elsa.Samples.ForEachLoopConsole/ForEachLoopWorkflow.cs b/src/samples/console/Elsa.Samples.ForEachLoopConsole/ForEachLoopWorkflow.cs new file mode 100644 index 000000000..88f28c166 --- /dev/null +++ b/src/samples/console/Elsa.Samples.ForEachLoopConsole/ForEachLoopWorkflow.cs @@ -0,0 +1,25 @@ +using System; +using System.Globalization; +using System.Linq; +using Elsa.Activities.Console; +using Elsa.Activities.ControlFlow; +using Elsa.Activities.Primitives; +using Elsa.Builders; + +namespace Elsa.Samples.ForEachLoopConsole +{ + /// + /// This workflow prompts the user to enter an integer start value, then iterates back from that value to 0. + /// The workflow also demonstrates retrieving runtime values such as user input. + /// + public class ForEachLoopWorkflow : IWorkflow + { + public void Build(IWorkflowBuilder builder) + { + builder + .WriteLine("Enumerating all months of the year:") + .ForEach(DateTimeFormatInfo.CurrentInfo!.MonthNames.Cast().ToList, iterate => iterate.WriteLine(context => context.GetInput())) + .WriteLine("Done."); + } + } +} \ No newline at end of file diff --git a/src/samples/console/Elsa.Samples.ForEachLoopConsole/Program.cs b/src/samples/console/Elsa.Samples.ForEachLoopConsole/Program.cs new file mode 100644 index 000000000..df3772e1b --- /dev/null +++ b/src/samples/console/Elsa.Samples.ForEachLoopConsole/Program.cs @@ -0,0 +1,32 @@ +using System.Threading.Tasks; +using Elsa.Services; +using Microsoft.Extensions.DependencyInjection; + +namespace Elsa.Samples.ForEachLoopConsole +{ + /// + /// Demonstrates a workflow with a For looping construct. + /// + static class Program + { + private static async Task Main() + { + // Create a service container with Elsa services. + var services = new ServiceCollection() + .AddElsa(options => options + .AddConsoleActivities() + .AddWorkflow()) + .BuildServiceProvider(); + + // Run startup actions (not needed when registering Elsa with a Host). + var startupRunner = services.GetRequiredService(); + await startupRunner.StartupAsync(); + + // Get a workflow runner. + var workflowRunner = services.GetRequiredService(); + + // Execute the workflow. + await workflowRunner.RunWorkflowAsync(); + } + } +} \ No newline at end of file diff --git a/src/samples/console/Elsa.Samples.ForLoopConsole/LoopingWorkflow.cs b/src/samples/console/Elsa.Samples.ForLoopConsole/ForLoopWorkflow.cs similarity index 96% rename from src/samples/console/Elsa.Samples.ForLoopConsole/LoopingWorkflow.cs rename to src/samples/console/Elsa.Samples.ForLoopConsole/ForLoopWorkflow.cs index b4e143e71..655f4fc90 100644 --- a/src/samples/console/Elsa.Samples.ForLoopConsole/LoopingWorkflow.cs +++ b/src/samples/console/Elsa.Samples.ForLoopConsole/ForLoopWorkflow.cs @@ -10,7 +10,7 @@ namespace Elsa.Samples.ForLoopConsole /// This workflow prompts the user to enter an integer start value, then iterates back from that value to 0. /// The workflow also demonstrates retrieving runtime values such as user input. /// - public class LoopingWorkflow : IWorkflow + public class ForLoopWorkflow : IWorkflow { public void Build(IWorkflowBuilder builder) { diff --git a/src/samples/console/Elsa.Samples.ForLoopConsole/Program.cs b/src/samples/console/Elsa.Samples.ForLoopConsole/Program.cs index 1c04f20e6..a2bbbfe28 100644 --- a/src/samples/console/Elsa.Samples.ForLoopConsole/Program.cs +++ b/src/samples/console/Elsa.Samples.ForLoopConsole/Program.cs @@ -15,7 +15,7 @@ namespace Elsa.Samples.ForLoopConsole var services = new ServiceCollection() .AddElsa(options => options .AddConsoleActivities() - .AddWorkflow()) + .AddWorkflow()) .BuildServiceProvider(); // Run startup actions (not needed when registering Elsa with a Host). @@ -26,7 +26,7 @@ namespace Elsa.Samples.ForLoopConsole var workflowRunner = services.GetRequiredService(); // Execute the workflow. - await workflowRunner.RunWorkflowAsync(); + await workflowRunner.RunWorkflowAsync(); } } } \ No newline at end of file