diff --git a/Samples.sln b/Samples.sln
new file mode 100644
index 000000000..27aa835ff
--- /dev/null
+++ b/Samples.sln
@@ -0,0 +1,151 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.28010.2036
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Core", "src\core\Elsa.Core\Elsa.Core.csproj", "{300EE2D5-54C5-46F2-AD03-BB43589EA074}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "solution", "solution", "{7165BB9E-F22C-40D2-B7B1-CA3EFA2529A0}"
+ ProjectSection(SolutionItems) = preProject
+ .editorconfig = .editorconfig
+ .gitignore = .gitignore
+ Nuget.Config = Nuget.Config
+ README.md = README.md
+ EndProjectSection
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Abstractions", "src\core\Elsa.Abstractions\Elsa.Abstractions.csproj", "{3130C574-557C-4DA2-933E-AED7A9EBE48A}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Core", "Core", "{35F44BE9-13D0-417C-A01A-F0787BEE6DC3}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Activities.Console", "src\activities\Elsa.Activities.Console\Elsa.Activities.Console.csproj", "{B98B80CB-D3A3-437C-A61C-ED82C8C77B2F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Activities.Http", "src\activities\Elsa.Activities.Http\Elsa.Activities.Http.csproj", "{1D63E1B4-2386-4BEC-9090-C3F3CBF25703}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Activities", "Activities", "{B43B546E-23F3-46E8-ACB7-D04F05CDA180}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Activities.Email", "src\activities\Elsa.Activities.Email\Elsa.Activities.Email.csproj", "{D20FCB88-9DCA-49EA-9CC2-5B94DD935D30}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Activities.Timers", "src\activities\Elsa.Activities.Timers\Elsa.Activities.Timers.csproj", "{E4B71DC4-3E73-49C3-9B4E-CA13909F222D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Activities.MassTransit", "src\activities\Elsa.Activities.MassTransit\Elsa.Activities.MassTransit.csproj", "{C4939482-9447-47D1-B6AF-E9F8C6323841}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{5E5E1E84-DDBC-40D6-B891-0D563A15A44A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sample01", "samples\Sample01\Sample01.csproj", "{FD72B97A-60C5-4592-91E5-0ED7A8D34C83}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sample02", "samples\Sample02\Sample02.csproj", "{C7F43E7A-B133-41A8-BB9F-B4982CD4A1AA}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sample03", "samples\Sample03\Sample03.csproj", "{B86540C9-10EC-449C-9FB1-9194D903AF92}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sample04", "samples\Sample04\Sample04.csproj", "{DCAB4D92-DF84-4075-8E34-6B09AAC1FC68}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sample05", "samples\Sample05\Sample05.csproj", "{A59DA67D-3B50-4128-98E5-D8F1E0484C3C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sample06", "samples\Sample06\Sample06.csproj", "{C0F7845C-E844-43E8-A51A-B38751B55B9C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sample07", "samples\Sample07\Sample07.csproj", "{FC6628CB-69ED-4ED1-A2F5-B2233CD75C15}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sample08", "samples\Sample08\Sample08.csproj", "{9E0C1D8B-7935-42E0-8C10-A31386A9FE9C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sample09", "samples\Sample09\Sample09.csproj", "{E8622C16-D80B-46A7-99D4-B939B20FBFD6}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {300EE2D5-54C5-46F2-AD03-BB43589EA074}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {300EE2D5-54C5-46F2-AD03-BB43589EA074}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {300EE2D5-54C5-46F2-AD03-BB43589EA074}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {300EE2D5-54C5-46F2-AD03-BB43589EA074}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3130C574-557C-4DA2-933E-AED7A9EBE48A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3130C574-557C-4DA2-933E-AED7A9EBE48A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3130C574-557C-4DA2-933E-AED7A9EBE48A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3130C574-557C-4DA2-933E-AED7A9EBE48A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B98B80CB-D3A3-437C-A61C-ED82C8C77B2F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B98B80CB-D3A3-437C-A61C-ED82C8C77B2F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B98B80CB-D3A3-437C-A61C-ED82C8C77B2F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B98B80CB-D3A3-437C-A61C-ED82C8C77B2F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1D63E1B4-2386-4BEC-9090-C3F3CBF25703}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1D63E1B4-2386-4BEC-9090-C3F3CBF25703}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1D63E1B4-2386-4BEC-9090-C3F3CBF25703}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1D63E1B4-2386-4BEC-9090-C3F3CBF25703}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D20FCB88-9DCA-49EA-9CC2-5B94DD935D30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D20FCB88-9DCA-49EA-9CC2-5B94DD935D30}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D20FCB88-9DCA-49EA-9CC2-5B94DD935D30}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D20FCB88-9DCA-49EA-9CC2-5B94DD935D30}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E4B71DC4-3E73-49C3-9B4E-CA13909F222D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E4B71DC4-3E73-49C3-9B4E-CA13909F222D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E4B71DC4-3E73-49C3-9B4E-CA13909F222D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E4B71DC4-3E73-49C3-9B4E-CA13909F222D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C4939482-9447-47D1-B6AF-E9F8C6323841}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C4939482-9447-47D1-B6AF-E9F8C6323841}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C4939482-9447-47D1-B6AF-E9F8C6323841}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C4939482-9447-47D1-B6AF-E9F8C6323841}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FD72B97A-60C5-4592-91E5-0ED7A8D34C83}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FD72B97A-60C5-4592-91E5-0ED7A8D34C83}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FD72B97A-60C5-4592-91E5-0ED7A8D34C83}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FD72B97A-60C5-4592-91E5-0ED7A8D34C83}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C7F43E7A-B133-41A8-BB9F-B4982CD4A1AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C7F43E7A-B133-41A8-BB9F-B4982CD4A1AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C7F43E7A-B133-41A8-BB9F-B4982CD4A1AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C7F43E7A-B133-41A8-BB9F-B4982CD4A1AA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B86540C9-10EC-449C-9FB1-9194D903AF92}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B86540C9-10EC-449C-9FB1-9194D903AF92}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B86540C9-10EC-449C-9FB1-9194D903AF92}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B86540C9-10EC-449C-9FB1-9194D903AF92}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DCAB4D92-DF84-4075-8E34-6B09AAC1FC68}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DCAB4D92-DF84-4075-8E34-6B09AAC1FC68}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DCAB4D92-DF84-4075-8E34-6B09AAC1FC68}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DCAB4D92-DF84-4075-8E34-6B09AAC1FC68}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A59DA67D-3B50-4128-98E5-D8F1E0484C3C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A59DA67D-3B50-4128-98E5-D8F1E0484C3C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A59DA67D-3B50-4128-98E5-D8F1E0484C3C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A59DA67D-3B50-4128-98E5-D8F1E0484C3C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C0F7845C-E844-43E8-A51A-B38751B55B9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C0F7845C-E844-43E8-A51A-B38751B55B9C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C0F7845C-E844-43E8-A51A-B38751B55B9C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C0F7845C-E844-43E8-A51A-B38751B55B9C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FC6628CB-69ED-4ED1-A2F5-B2233CD75C15}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FC6628CB-69ED-4ED1-A2F5-B2233CD75C15}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FC6628CB-69ED-4ED1-A2F5-B2233CD75C15}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FC6628CB-69ED-4ED1-A2F5-B2233CD75C15}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9E0C1D8B-7935-42E0-8C10-A31386A9FE9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9E0C1D8B-7935-42E0-8C10-A31386A9FE9C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9E0C1D8B-7935-42E0-8C10-A31386A9FE9C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9E0C1D8B-7935-42E0-8C10-A31386A9FE9C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E8622C16-D80B-46A7-99D4-B939B20FBFD6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E8622C16-D80B-46A7-99D4-B939B20FBFD6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E8622C16-D80B-46A7-99D4-B939B20FBFD6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E8622C16-D80B-46A7-99D4-B939B20FBFD6}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {300EE2D5-54C5-46F2-AD03-BB43589EA074} = {35F44BE9-13D0-417C-A01A-F0787BEE6DC3}
+ {3130C574-557C-4DA2-933E-AED7A9EBE48A} = {35F44BE9-13D0-417C-A01A-F0787BEE6DC3}
+ {35F44BE9-13D0-417C-A01A-F0787BEE6DC3} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925}
+ {B43B546E-23F3-46E8-ACB7-D04F05CDA180} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925}
+ {B98B80CB-D3A3-437C-A61C-ED82C8C77B2F} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180}
+ {1D63E1B4-2386-4BEC-9090-C3F3CBF25703} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180}
+ {D20FCB88-9DCA-49EA-9CC2-5B94DD935D30} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180}
+ {E4B71DC4-3E73-49C3-9B4E-CA13909F222D} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180}
+ {C4939482-9447-47D1-B6AF-E9F8C6323841} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180}
+ {FD72B97A-60C5-4592-91E5-0ED7A8D34C83} = {5E5E1E84-DDBC-40D6-B891-0D563A15A44A}
+ {C7F43E7A-B133-41A8-BB9F-B4982CD4A1AA} = {5E5E1E84-DDBC-40D6-B891-0D563A15A44A}
+ {B86540C9-10EC-449C-9FB1-9194D903AF92} = {5E5E1E84-DDBC-40D6-B891-0D563A15A44A}
+ {DCAB4D92-DF84-4075-8E34-6B09AAC1FC68} = {5E5E1E84-DDBC-40D6-B891-0D563A15A44A}
+ {A59DA67D-3B50-4128-98E5-D8F1E0484C3C} = {5E5E1E84-DDBC-40D6-B891-0D563A15A44A}
+ {C0F7845C-E844-43E8-A51A-B38751B55B9C} = {5E5E1E84-DDBC-40D6-B891-0D563A15A44A}
+ {FC6628CB-69ED-4ED1-A2F5-B2233CD75C15} = {5E5E1E84-DDBC-40D6-B891-0D563A15A44A}
+ {9E0C1D8B-7935-42E0-8C10-A31386A9FE9C} = {5E5E1E84-DDBC-40D6-B891-0D563A15A44A}
+ {E8622C16-D80B-46A7-99D4-B939B20FBFD6} = {5E5E1E84-DDBC-40D6-B891-0D563A15A44A}
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {8B0975FD-7050-48B0-88C5-48C33378E158}
+ EndGlobalSection
+EndGlobal
diff --git a/samples/Sample01/Activities/GoodByeWorld.cs b/samples/Sample01/Activities/GoodByeWorld.cs
index e5d42e4cd..3bf726998 100644
--- a/samples/Sample01/Activities/GoodByeWorld.cs
+++ b/samples/Sample01/Activities/GoodByeWorld.cs
@@ -1,16 +1,16 @@
-using System;
-using Elsa.Services;
-using Elsa.Results;
-using Elsa.Services.Models;
-
-namespace Sample01.Activities
-{
- public class GoodByeWorld : Activity
- {
- protected override ActivityExecutionResult OnExecute(WorkflowExecutionContext context)
- {
- Console.WriteLine("Goodbye cruel world...");
- return Done();
- }
- }
+using System;
+using Elsa.Services;
+using Elsa.Results;
+using Elsa.Services.Models;
+
+namespace Sample01.Activities
+{
+ public class GoodByeWorld : Activity
+ {
+ protected override ActivityExecutionResult OnExecute(WorkflowExecutionContext context)
+ {
+ Console.WriteLine("Goodbye cruel world...");
+ return Done();
+ }
+ }
}
\ No newline at end of file
diff --git a/samples/Sample01/Activities/HelloWorld.cs b/samples/Sample01/Activities/HelloWorld.cs
index 83ef4e7b0..fb7fe7a96 100644
--- a/samples/Sample01/Activities/HelloWorld.cs
+++ b/samples/Sample01/Activities/HelloWorld.cs
@@ -1,16 +1,16 @@
-using System;
-using Elsa.Services;
-using Elsa.Results;
-using Elsa.Services.Models;
-
-namespace Sample01.Activities
-{
- public class HelloWorld : Activity
- {
- protected override ActivityExecutionResult OnExecute(WorkflowExecutionContext context)
- {
- Console.WriteLine("Hello world!");
- return Done();
- }
- }
+using System;
+using Elsa.Services;
+using Elsa.Results;
+using Elsa.Services.Models;
+
+namespace Sample01.Activities
+{
+ public class HelloWorld : Activity
+ {
+ protected override ActivityExecutionResult OnExecute(WorkflowExecutionContext context)
+ {
+ Console.WriteLine("Hello world!");
+ return Done();
+ }
+ }
}
\ No newline at end of file
diff --git a/samples/Sample01/Program.cs b/samples/Sample01/Program.cs
index 531e49e2e..d5b49d283 100644
--- a/samples/Sample01/Program.cs
+++ b/samples/Sample01/Program.cs
@@ -1,33 +1,33 @@
-using System;
-using System.Threading.Tasks;
-using Elsa.Extensions;
-using Elsa.Persistence.Extensions;
-using Elsa.Services;
-using Microsoft.Extensions.DependencyInjection;
-using Sample01.Activities;
-
-namespace Sample01
-{
- ///
- /// A minimal workflows program defined in code with a strongly-typed workflow class.
- ///
- class Program
- {
- static async Task Main(string[] args)
- {
- // Setup a service collection.
- var services = new ServiceCollection()
- .AddWorkflows()
- .AddMemoryWorkflowInstanceStore()
- .AddActivity()
- .AddActivity()
- .BuildServiceProvider();
-
- // Invoke the workflow.
- var invoker = services.GetService();
- await invoker.InvokeAsync();
-
- Console.ReadLine();
- }
- }
+using System;
+using System.Threading.Tasks;
+using Elsa.Extensions;
+using Elsa.Persistence.Extensions;
+using Elsa.Services;
+using Microsoft.Extensions.DependencyInjection;
+using Sample01.Activities;
+
+namespace Sample01
+{
+ ///
+ /// A minimal workflows program defined in code with a strongly-typed workflow class.
+ ///
+ class Program
+ {
+ static async Task Main(string[] args)
+ {
+ // Setup a service collection.
+ var services = new ServiceCollection()
+ .AddWorkflows()
+ .AddMemoryWorkflowInstanceStore()
+ .AddActivity()
+ .AddActivity()
+ .BuildServiceProvider();
+
+ // Invoke the workflow.
+ var invoker = services.GetService();
+ await invoker.InvokeAsync();
+
+ Console.ReadLine();
+ }
+ }
}
\ No newline at end of file
diff --git a/samples/Sample01/Sample01.csproj b/samples/Sample01/Sample01.csproj
index d2b936b48..0ffa1e12e 100644
--- a/samples/Sample01/Sample01.csproj
+++ b/samples/Sample01/Sample01.csproj
@@ -1,13 +1,13 @@
-
-
-
- Exe
- netcoreapp2.2
-
-
-
-
-
-
-
-
+
+
+
+ Exe
+ netcoreapp2.2
+
+
+
+
+
+
+
+
diff --git a/samples/Sample02/Program.cs b/samples/Sample02/Program.cs
index c340b9a25..a110b0cc5 100644
--- a/samples/Sample02/Program.cs
+++ b/samples/Sample02/Program.cs
@@ -1,41 +1,41 @@
-using System;
-using System.Threading.Tasks;
-using Elsa.Activities.Console.Activities;
-using Elsa.Activities.Console.Extensions;
-using Elsa.Expressions;
-using Elsa.Extensions;
-using Elsa.Persistence.Extensions;
-using Elsa.Services;
-using Microsoft.Extensions.DependencyInjection;
-
-namespace Sample02
-{
- ///
- /// A minimal workflows program defined in code using fluent workflow builder and Console activities.
- ///
- class Program
- {
- static async Task Main(string[] args)
- {
- // Setup a service collection.
- var services = new ServiceCollection()
- .AddWorkflows()
- .AddMemoryWorkflowInstanceStore()
- .AddConsoleActivities()
- .BuildServiceProvider();
-
- // Define a workflow.
- var workflowBuilder = services.GetRequiredService();
- var workflowDefinition = workflowBuilder
- .StartWith(x => x.TextExpression = new PlainTextExpression("Hello world!"))
- .Then(x => x.TextExpression = new PlainTextExpression("Goodbye cruel world..."))
- .Build();
-
- // Invoke the workflow.
- var invoker = services.GetService();
- await invoker.InvokeAsync(workflowDefinition);
-
- Console.ReadLine();
- }
- }
+using System;
+using System.Threading.Tasks;
+using Elsa.Activities.Console.Activities;
+using Elsa.Activities.Console.Extensions;
+using Elsa.Expressions;
+using Elsa.Extensions;
+using Elsa.Persistence.Extensions;
+using Elsa.Services;
+using Microsoft.Extensions.DependencyInjection;
+
+namespace Sample02
+{
+ ///
+ /// A minimal workflows program defined in code using fluent workflow builder and Console activities.
+ ///
+ class Program
+ {
+ static async Task Main(string[] args)
+ {
+ // Setup a service collection.
+ var services = new ServiceCollection()
+ .AddWorkflows()
+ .AddMemoryWorkflowInstanceStore()
+ .AddConsoleActivities()
+ .BuildServiceProvider();
+
+ // Define a workflow.
+ var workflowBuilder = services.GetRequiredService();
+ var workflowDefinition = workflowBuilder
+ .StartWith(x => x.TextExpression = new PlainTextExpression("Hello world!"))
+ .Then(x => x.TextExpression = new PlainTextExpression("Goodbye cruel world..."))
+ .Build();
+
+ // Invoke the workflow.
+ var invoker = services.GetService();
+ await invoker.InvokeAsync(workflowDefinition);
+
+ Console.ReadLine();
+ }
+ }
}
\ No newline at end of file
diff --git a/samples/Sample02/Sample02.csproj b/samples/Sample02/Sample02.csproj
index d2b936b48..0ffa1e12e 100644
--- a/samples/Sample02/Sample02.csproj
+++ b/samples/Sample02/Sample02.csproj
@@ -1,13 +1,13 @@
-
-
-
- Exe
- netcoreapp2.2
-
-
-
-
-
-
-
-
+
+
+
+ Exe
+ netcoreapp2.2
+
+
+
+
+
+
+
+
diff --git a/samples/Sample03/Program.cs b/samples/Sample03/Program.cs
index f2766e3a7..c5f471276 100644
--- a/samples/Sample03/Program.cs
+++ b/samples/Sample03/Program.cs
@@ -1,49 +1,50 @@
-using System;
-using System.Threading.Tasks;
-using Elsa.Activities.Console.Activities;
-using Elsa.Activities.Console.Extensions;
-using Elsa.Expressions;
-using Elsa.Extensions;
-using Elsa.Models;
-using Elsa.Persistence.Extensions;
-using Elsa.Services;
-using Microsoft.Extensions.DependencyInjection;
-
-namespace Sample03
-{
- ///
- /// A minimal workflows program defined as data (workflow definition) and Console activities.
- ///
- class Program
- {
- static async Task Main(string[] args)
- {
- // Setup a service collection.
- var services = new ServiceCollection()
- .AddWorkflows()
- .AddMemoryWorkflowInstanceStore()
- .AddConsoleActivities()
- .BuildServiceProvider();
-
- // Define a workflow as data so we can store it somewhere (file, database, etc.).
- var workflowDefinition = new WorkflowDefinition
- {
- Activities = new[]
- {
- new ActivityDefinition("activity-1", new { TextExpression = new PlainTextExpression("Hello world!")}),
- new ActivityDefinition("activity-2", new { TextExpression = new PlainTextExpression("Goodbye cruel world...")})
- },
- Connections = new []
- {
- new ConnectionDefinition("activity-1", "activity-2"),
- }
- };
-
- // Invoke the workflow.
- var invoker = services.GetService();
- await invoker.InvokeAsync(workflowDefinition);
-
- Console.ReadLine();
- }
- }
+using System;
+using System.Threading.Tasks;
+using Elsa;
+using Elsa.Activities.Console.Activities;
+using Elsa.Activities.Console.Extensions;
+using Elsa.Expressions;
+using Elsa.Extensions;
+using Elsa.Models;
+using Elsa.Persistence.Extensions;
+using Elsa.Services;
+using Microsoft.Extensions.DependencyInjection;
+
+namespace Sample03
+{
+ ///
+ /// A minimal workflows program defined as data (workflow definition) and Console activities.
+ ///
+ class Program
+ {
+ static async Task Main(string[] args)
+ {
+ // Setup a service collection.
+ var services = new ServiceCollection()
+ .AddWorkflows()
+ .AddMemoryWorkflowInstanceStore()
+ .AddConsoleActivities()
+ .BuildServiceProvider();
+
+ // Define a workflow as data so we can store it somewhere (file, database, etc.).
+ var workflowDefinition = new WorkflowDefinition
+ {
+ Activities = new[]
+ {
+ new ActivityDefinition("activity-1", new { TextExpression = new PlainTextExpression("Hello world!")}),
+ new ActivityDefinition("activity-2", new { TextExpression = new PlainTextExpression("Goodbye cruel world...")})
+ },
+ Connections = new []
+ {
+ new ConnectionDefinition("activity-1", "activity-2", OutcomeNames.Done),
+ }
+ };
+
+ // Invoke the workflow.
+ var invoker = services.GetService();
+ await invoker.InvokeAsync(workflowDefinition);
+
+ Console.ReadLine();
+ }
+ }
}
\ No newline at end of file
diff --git a/samples/Sample04/Activities/ArithmeticOperation.cs b/samples/Sample04/Activities/ArithmeticOperation.cs
index d00c3e385..523969c18 100644
--- a/samples/Sample04/Activities/ArithmeticOperation.cs
+++ b/samples/Sample04/Activities/ArithmeticOperation.cs
@@ -1,45 +1,45 @@
-using System.Threading;
-using System.Threading.Tasks;
-using Elsa.Expressions;
-using Elsa.Extensions;
-using Elsa.Services;
-using Elsa.Results;
-using Elsa.Services.Models;
-
-namespace Sample04.Activities
-{
- public abstract class ArithmeticOperation : Activity
- {
- private readonly IWorkflowExpressionEvaluator evaluator;
-
- protected ArithmeticOperation(IWorkflowExpressionEvaluator evaluator)
- {
- this.evaluator = evaluator;
- }
-
- public WorkflowExpression Values
- {
- get => GetState>();
- set => SetState(value);
- }
-
- public string ResultVariableName
- {
- get => GetState();
- set => SetState(value);
- }
-
- protected override async Task OnExecuteAsync(WorkflowExecutionContext context, CancellationToken cancellationToken)
- {
- var values = await evaluator.EvaluateAsync(Values, context, cancellationToken);
- var sum = Calculate(values);
-
- context.SetLastResult(sum);
- context.CurrentScope.SetVariable(ResultVariableName, sum);
-
- return Done();
- }
-
- protected abstract double Calculate(params double[] values);
- }
+using System.Threading;
+using System.Threading.Tasks;
+using Elsa.Expressions;
+using Elsa.Extensions;
+using Elsa.Services;
+using Elsa.Results;
+using Elsa.Services.Models;
+
+namespace Sample04.Activities
+{
+ public abstract class ArithmeticOperation : Activity
+ {
+ private readonly IWorkflowExpressionEvaluator evaluator;
+
+ protected ArithmeticOperation(IWorkflowExpressionEvaluator evaluator)
+ {
+ this.evaluator = evaluator;
+ }
+
+ public WorkflowExpression Values
+ {
+ get => GetState>();
+ set => SetState(value);
+ }
+
+ public string ResultVariableName
+ {
+ get => GetState();
+ set => SetState(value);
+ }
+
+ protected override async Task OnExecuteAsync(WorkflowExecutionContext context, CancellationToken cancellationToken)
+ {
+ var values = await evaluator.EvaluateAsync(Values, context, cancellationToken);
+ var sum = Calculate(values);
+
+ context.SetLastResult(sum);
+ context.CurrentScope.SetVariable(ResultVariableName, sum);
+
+ return Done();
+ }
+
+ protected abstract double Calculate(params double[] values);
+ }
}
\ No newline at end of file
diff --git a/samples/Sample04/CalculatorWorkflow.cs b/samples/Sample04/CalculatorWorkflow.cs
index e9fc1e6d1..0bf96c711 100644
--- a/samples/Sample04/CalculatorWorkflow.cs
+++ b/samples/Sample04/CalculatorWorkflow.cs
@@ -16,11 +16,11 @@ namespace Sample04
builder
.StartWith(x => x.TextExpression = new PlainTextExpression("Welcome to Calculator Workflow!"))
.Then(x => x.TextExpression = new PlainTextExpression("Enter number 1:"), id: "start")
- .Then(x => x.ArgumentName = "number1")
+ .Then(x => x.VariableName = "number1")
.Then(x => x.TextExpression = new PlainTextExpression("Enter number 2:"))
- .Then(x => x.ArgumentName = "number2")
+ .Then(x => x.VariableName = "number2")
.Then(x => x.TextExpression = new PlainTextExpression("Now enter the operation you wish to apply. Options are: add, subtract, multiply or divide:"))
- .Then(x => x.ArgumentName = "operation")
+ .Then(x => x.VariableName = "operation")
.Then(@switch =>
{
@switch.Expression = new JavaScriptExpression("operation");
@@ -51,7 +51,7 @@ namespace Sample04
)
.Add(x => x.TextExpression = new JavaScriptExpression("`Result: ${result}`"), "showResult")
.Then(x => x.TextExpression = new PlainTextExpression("Try again? (y/n)"))
- .Then(x => x.ArgumentName = "retry")
+ .Then(x => x.VariableName = "retry")
.Then(
x => x.ConditionExpression = new JavaScriptExpression("retry.toLowerCase() === 'y'"),
ifElse =>
diff --git a/samples/Sample04/Program.cs b/samples/Sample04/Program.cs
index 87929775c..e16765a1a 100644
--- a/samples/Sample04/Program.cs
+++ b/samples/Sample04/Program.cs
@@ -1,41 +1,41 @@
-using System;
-using System.Threading.Tasks;
-using Elsa.Activities.Console.Extensions;
-using Elsa.Extensions;
-using Elsa.Persistence.Extensions;
-using Elsa.Services;
-using Microsoft.Extensions.DependencyInjection;
-using Sample04.Activities;
-
-namespace Sample04
-{
- ///
- /// A strongly-typed workflows program demonstrating scripting, and branching.
- ///
- class Program
- {
- static async Task Main()
- {
- // Setup a service collection.
- var services = new ServiceCollection()
- .AddWorkflows()
- .AddMemoryWorkflowInstanceStore()
- .AddConsoleActivities()
- .AddActivity()
- .AddActivity()
- .AddActivity()
- .AddActivity()
- .BuildServiceProvider();
-
- // Create a workflow.
- var workflowFactory = services.GetRequiredService();
- var workflow = workflowFactory.CreateWorkflow();
-
- // Invoke the workflow.
- var invoker = services.GetService();
- await invoker.InvokeAsync(workflow);
-
- Console.ReadLine();
- }
- }
+using System;
+using System.Threading.Tasks;
+using Elsa.Activities.Console.Extensions;
+using Elsa.Extensions;
+using Elsa.Persistence.Extensions;
+using Elsa.Services;
+using Microsoft.Extensions.DependencyInjection;
+using Sample04.Activities;
+
+namespace Sample04
+{
+ ///
+ /// A strongly-typed workflows program demonstrating scripting, and branching.
+ ///
+ class Program
+ {
+ static async Task Main()
+ {
+ // Setup a service collection.
+ var services = new ServiceCollection()
+ .AddWorkflows()
+ .AddMemoryWorkflowInstanceStore()
+ .AddConsoleActivities()
+ .AddActivity()
+ .AddActivity()
+ .AddActivity()
+ .AddActivity()
+ .BuildServiceProvider();
+
+ // Create a workflow.
+ var workflowFactory = services.GetRequiredService();
+ var workflow = workflowFactory.CreateWorkflow();
+
+ // Invoke the workflow.
+ var invoker = services.GetService();
+ await invoker.InvokeAsync(workflow);
+
+ Console.ReadLine();
+ }
+ }
}
\ No newline at end of file
diff --git a/samples/Sample05/Program.cs b/samples/Sample05/Program.cs
index a6031b627..a89238f9a 100644
--- a/samples/Sample05/Program.cs
+++ b/samples/Sample05/Program.cs
@@ -1,53 +1,53 @@
-using System;
-using System.Threading.Tasks;
-using Elsa.Activities.Console.Extensions;
-using Elsa.Activities.Timers.Extensions;
-using Elsa.Extensions;
-using Elsa.Persistence.Extensions;
-using Elsa.Services;
-using Microsoft.Extensions.DependencyInjection;
-using Microsoft.Extensions.Hosting;
-using Microsoft.Extensions.Logging;
-using NodaTime;
-
-namespace Sample05
-{
- ///
- /// A minimal workflows program defined in code with a strongly-typed workflow class.
- ///
- class Program
- {
- static async Task Main()
- {
- var host = new HostBuilder()
- .ConfigureServices(ConfigureServices)
- .ConfigureLogging(logging => logging.AddConsole())
- .UseConsoleLifetime()
- .Build();
-
- using (host)
- {
- await host.StartAsync();
- SetupWorkflow(host.Services);
- await host.WaitForShutdownAsync();
- }
- }
-
- private static void SetupWorkflow(IServiceProvider services)
- {
- // Register the workflow.
- var registry = services.GetService();
- registry.RegisterWorkflow();
- }
-
- private static void ConfigureServices(IServiceCollection services)
- {
- services
- .AddWorkflows()
- .AddConsoleActivities()
- .AddTimerActivities(options => options.Configure(x => x.SweepInterval = Period.FromSeconds(10)))
- .AddMemoryWorkflowDefinitionStore()
- .AddMemoryWorkflowInstanceStore();
- }
- }
+using System;
+using System.Threading.Tasks;
+using Elsa.Activities.Console.Extensions;
+using Elsa.Activities.Timers.Extensions;
+using Elsa.Extensions;
+using Elsa.Persistence.Extensions;
+using Elsa.Services;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Hosting;
+using Microsoft.Extensions.Logging;
+using NodaTime;
+
+namespace Sample05
+{
+ ///
+ /// A minimal workflows program defined in code with a strongly-typed workflow class.
+ ///
+ class Program
+ {
+ static async Task Main()
+ {
+ var host = new HostBuilder()
+ .ConfigureServices(ConfigureServices)
+ .ConfigureLogging(logging => logging.AddConsole())
+ .UseConsoleLifetime()
+ .Build();
+
+ using (host)
+ {
+ await host.StartAsync();
+ SetupWorkflow(host.Services);
+ await host.WaitForShutdownAsync();
+ }
+ }
+
+ private static void SetupWorkflow(IServiceProvider services)
+ {
+ // Register the workflow.
+ var registry = services.GetService();
+ registry.RegisterWorkflow();
+ }
+
+ private static void ConfigureServices(IServiceCollection services)
+ {
+ services
+ .AddWorkflows()
+ .AddConsoleActivities()
+ .AddTimerActivities(options => options.Configure(x => x.SweepInterval = Period.FromSeconds(10)))
+ .AddMemoryWorkflowDefinitionStore()
+ .AddMemoryWorkflowInstanceStore();
+ }
+ }
}
\ No newline at end of file
diff --git a/samples/Sample05/RecurringWorkflow.cs b/samples/Sample05/RecurringWorkflow.cs
index ae0466538..04937da8a 100644
--- a/samples/Sample05/RecurringWorkflow.cs
+++ b/samples/Sample05/RecurringWorkflow.cs
@@ -1,20 +1,20 @@
-using Elsa.Activities.Console.Activities;
-using Elsa.Activities.Timers.Activities;
-using Elsa.Expressions;
-using Elsa.Services;
-using Elsa.Services.Models;
-
-namespace Sample05
-{
- public class RecurringWorkflow : IWorkflow
- {
- public void Build(IWorkflowBuilder builder)
- {
- builder
- .WithId("RecurringWorkflow")
- .AsSingleton()
- .StartWith(x => x.CronExpression = new PlainTextExpression("* * * * *"))
- .Then(x => x.TextExpression = new JavaScriptExpression("`Trigger received. The time is: ${new Date().toISOString()}`"));
- }
- }
+using Elsa.Activities.Console.Activities;
+using Elsa.Activities.Timers.Activities;
+using Elsa.Expressions;
+using Elsa.Services;
+using Elsa.Services.Models;
+
+namespace Sample05
+{
+ public class RecurringWorkflow : IWorkflow
+ {
+ public void Build(IWorkflowBuilder builder)
+ {
+ builder
+ .WithId("RecurringWorkflow")
+ .AsSingleton()
+ .StartWith(x => x.CronExpression = new PlainTextExpression("* * * * *"))
+ .Then(x => x.TextExpression = new JavaScriptExpression("`Trigger received. The time is: ${new Date().toISOString()}`"));
+ }
+ }
}
\ No newline at end of file
diff --git a/samples/Sample06/Startup.cs b/samples/Sample06/Startup.cs
index 06067a530..e9d0cdfd5 100644
--- a/samples/Sample06/Startup.cs
+++ b/samples/Sample06/Startup.cs
@@ -1,43 +1,43 @@
-using Elsa.Activities.Http.Extensions;
-using Elsa.Extensions;
-using Elsa.Persistence.Extensions;
-using Elsa.Services;
-using Microsoft.AspNetCore.Builder;
-using Microsoft.AspNetCore.Hosting;
-using Microsoft.Extensions.Configuration;
-using Microsoft.Extensions.DependencyInjection;
-
-namespace Sample06
-{
- public class Startup
- {
- public Startup(IConfiguration configuration)
- {
- Configuration = configuration;
- }
-
- public IConfiguration Configuration { get; }
-
- public void ConfigureServices(IServiceCollection services)
- {
- services
- .AddWorkflows()
- .AddHttpActivities()
- .AddMemoryWorkflowDefinitionStore()
- .AddMemoryWorkflowInstanceStore();
- }
-
- public void Configure(IApplicationBuilder app, IHostingEnvironment env, IWorkflowRegistry workflowRegistry)
- {
- if (env.IsDevelopment())
- {
- app.UseDeveloperExceptionPage();
- }
-
- app.UseHttpActivities();
- app.UseWelcomePage();
-
- workflowRegistry.RegisterWorkflow();
- }
- }
+using Elsa.Activities.Http.Extensions;
+using Elsa.Extensions;
+using Elsa.Persistence.Extensions;
+using Elsa.Services;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.DependencyInjection;
+
+namespace Sample06
+{
+ public class Startup
+ {
+ public Startup(IConfiguration configuration)
+ {
+ Configuration = configuration;
+ }
+
+ public IConfiguration Configuration { get; }
+
+ public void ConfigureServices(IServiceCollection services)
+ {
+ services
+ .AddWorkflows()
+ .AddHttpActivities()
+ .AddMemoryWorkflowDefinitionStore()
+ .AddMemoryWorkflowInstanceStore();
+ }
+
+ public void Configure(IApplicationBuilder app, IHostingEnvironment env, IWorkflowRegistry workflowRegistry)
+ {
+ if (env.IsDevelopment())
+ {
+ app.UseDeveloperExceptionPage();
+ }
+
+ app.UseHttpActivities();
+ app.UseWelcomePage();
+
+ workflowRegistry.RegisterWorkflow();
+ }
+ }
}
\ No newline at end of file
diff --git a/samples/Sample07/DocumentApprovalWorkflow.cs b/samples/Sample07/DocumentApprovalWorkflow.cs
index aff5bb166..9087fb019 100644
--- a/samples/Sample07/DocumentApprovalWorkflow.cs
+++ b/samples/Sample07/DocumentApprovalWorkflow.cs
@@ -4,9 +4,9 @@ using System.Net.Http;
using Elsa;
using Elsa.Activities.Email.Activities;
using Elsa.Activities.Http.Activities;
-using Elsa.Core.Activities.ControlFlow;
-using Elsa.Core.Activities.Primitives;
-using Elsa.Core.Expressions;
+using Elsa.Activities.ControlFlow;
+using Elsa.Activities.Primitives;
+using Elsa.Expressions;
using Elsa.Services;
using Elsa.Services.Models;
diff --git a/samples/Sample07/Startup.cs b/samples/Sample07/Startup.cs
index 3de0b14f4..9b3bfc0b7 100644
--- a/samples/Sample07/Startup.cs
+++ b/samples/Sample07/Startup.cs
@@ -1,45 +1,45 @@
-using Elsa.Activities.Email.Extensions;
-using Elsa.Activities.Http.Extensions;
-using Elsa.Core.Extensions;
-using Elsa.Core.Persistence.Extensions;
-using Elsa.Services;
-using Microsoft.AspNetCore.Builder;
-using Microsoft.AspNetCore.Hosting;
-using Microsoft.Extensions.Configuration;
-using Microsoft.Extensions.DependencyInjection;
-
-namespace Sample07
-{
- public class Startup
- {
- public Startup(IConfiguration configuration)
- {
- Configuration = configuration;
- }
-
- public IConfiguration Configuration { get; }
-
- public void ConfigureServices(IServiceCollection services)
- {
- services
- .AddWorkflows()
- .AddHttpActivities()
- .AddEmailActivities(options => options.Bind(Configuration.GetSection("Smtp"))) //Tip: use Smtp4Dev for a local SMTP server that displays sent emails without actually sending them.
- .AddMemoryWorkflowDefinitionStore()
- .AddMemoryWorkflowInstanceStore();
- }
-
- public void Configure(IApplicationBuilder app, IHostingEnvironment env, IWorkflowRegistry workflowRegistry)
- {
- if (env.IsDevelopment())
- {
- app.UseDeveloperExceptionPage();
- }
-
- app.UseHttpActivities();
- app.UseWelcomePage();
-
- workflowRegistry.RegisterWorkflow();
- }
- }
+using Elsa.Activities.Email.Extensions;
+using Elsa.Activities.Http.Extensions;
+using Elsa.Extensions;
+using Elsa.Persistence.Extensions;
+using Elsa.Services;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.DependencyInjection;
+
+namespace Sample07
+{
+ public class Startup
+ {
+ public Startup(IConfiguration configuration)
+ {
+ Configuration = configuration;
+ }
+
+ public IConfiguration Configuration { get; }
+
+ public void ConfigureServices(IServiceCollection services)
+ {
+ services
+ .AddWorkflows()
+ .AddHttpActivities()
+ .AddEmailActivities(options => options.Bind(Configuration.GetSection("Smtp"))) //Tip: use Smtp4Dev for a local SMTP server that displays sent emails without actually sending them.
+ .AddMemoryWorkflowDefinitionStore()
+ .AddMemoryWorkflowInstanceStore();
+ }
+
+ public void Configure(IApplicationBuilder app, IHostingEnvironment env, IWorkflowRegistry workflowRegistry)
+ {
+ if (env.IsDevelopment())
+ {
+ app.UseDeveloperExceptionPage();
+ }
+
+ app.UseHttpActivities();
+ app.UseWelcomePage();
+
+ workflowRegistry.RegisterWorkflow();
+ }
+ }
}
\ No newline at end of file
diff --git a/samples/Sample08/Startup.cs b/samples/Sample08/Startup.cs
index 766681324..7aad941f3 100644
--- a/samples/Sample08/Startup.cs
+++ b/samples/Sample08/Startup.cs
@@ -1,56 +1,56 @@
-using Elsa.Activities.Email.Extensions;
-using Elsa.Activities.Http.Extensions;
-using Elsa.Activities.MassTransit.Extensions;
-using Elsa.Activities.Timers.Extensions;
-using Elsa.Extensions;
-using Elsa.Persistence.Extensions;
-using Elsa.Services;
-using Microsoft.AspNetCore.Builder;
-using Microsoft.AspNetCore.Hosting;
-using Microsoft.Extensions.Configuration;
-using Microsoft.Extensions.DependencyInjection;
-using NodaTime;
-using Sample08.Messages;
-using Sample08.Workflows;
-using IHostingEnvironment = Microsoft.AspNetCore.Hosting.IHostingEnvironment;
-
-namespace Sample08
-{
- public class Startup
- {
- public Startup(IConfiguration configuration)
- {
- Configuration = configuration;
- }
-
- public IConfiguration Configuration { get; }
-
- public void ConfigureServices(IServiceCollection services)
- {
- services
- .AddWorkflows()
- .AddHttpActivities()
- .AddTimerActivities(options => options.Configure(x => x.SweepInterval = Period.FromSeconds(10)))
- .AddEmailActivities(options => options.Bind(Configuration.GetSection("Smtp")))
- .AddRabbitMqActivities(
- options => options.Bind(Configuration.GetSection("MassTransit:RabbitMq")),
- typeof(CreateOrder),
- typeof(OrderShipped))
- .AddMemoryWorkflowDefinitionStore()
- .AddMemoryWorkflowInstanceStore();
- }
-
- public void Configure(IApplicationBuilder app, IHostingEnvironment env, IWorkflowRegistry workflowRegistry)
- {
- if (env.IsDevelopment())
- {
- app.UseDeveloperExceptionPage();
- }
-
- app.UseHttpActivities();
-
- workflowRegistry.RegisterWorkflow();
- workflowRegistry.RegisterWorkflow();
- }
- }
+using Elsa.Activities.Email.Extensions;
+using Elsa.Activities.Http.Extensions;
+using Elsa.Activities.MassTransit.Extensions;
+using Elsa.Activities.Timers.Extensions;
+using Elsa.Extensions;
+using Elsa.Persistence.Extensions;
+using Elsa.Services;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.DependencyInjection;
+using NodaTime;
+using Sample08.Messages;
+using Sample08.Workflows;
+using IHostingEnvironment = Microsoft.AspNetCore.Hosting.IHostingEnvironment;
+
+namespace Sample08
+{
+ public class Startup
+ {
+ public Startup(IConfiguration configuration)
+ {
+ Configuration = configuration;
+ }
+
+ public IConfiguration Configuration { get; }
+
+ public void ConfigureServices(IServiceCollection services)
+ {
+ services
+ .AddWorkflows()
+ .AddHttpActivities()
+ .AddTimerActivities(options => options.Configure(x => x.SweepInterval = Period.FromSeconds(10)))
+ .AddEmailActivities(options => options.Bind(Configuration.GetSection("Smtp")))
+ .AddRabbitMqActivities(
+ options => options.Bind(Configuration.GetSection("MassTransit:RabbitMq")),
+ typeof(CreateOrder),
+ typeof(OrderShipped))
+ .AddMemoryWorkflowDefinitionStore()
+ .AddMemoryWorkflowInstanceStore();
+ }
+
+ public void Configure(IApplicationBuilder app, IHostingEnvironment env, IWorkflowRegistry workflowRegistry)
+ {
+ if (env.IsDevelopment())
+ {
+ app.UseDeveloperExceptionPage();
+ }
+
+ app.UseHttpActivities();
+
+ workflowRegistry.RegisterWorkflow();
+ workflowRegistry.RegisterWorkflow();
+ }
+ }
}
\ No newline at end of file
diff --git a/samples/Sample08/Workflows/HandleOrderWorkflow.cs b/samples/Sample08/Workflows/HandleOrderWorkflow.cs
index 188bde825..620d7c733 100644
--- a/samples/Sample08/Workflows/HandleOrderWorkflow.cs
+++ b/samples/Sample08/Workflows/HandleOrderWorkflow.cs
@@ -1,34 +1,34 @@
-using System;
-using Elsa.Activities.MassTransit.Activities;
-using Elsa.Activities.Timers.Activities;
-using Elsa.Activities.Primitives;
-using Elsa.Expressions;
-using Elsa.Services;
-using Elsa.Services.Models;
-using Sample08.Messages;
-
-namespace Sample08.Workflows
-{
- public class HandleOrderWorkflow : IWorkflow
- {
- public void Build(IWorkflowBuilder builder)
- {
- builder
- .StartWith(activity => activity.MessageType = typeof(CreateOrder))
- .Then(
- activity =>
- {
- activity.VariableName = "order";
- activity.ValueExpression = new JavaScriptExpression