diff --git a/Elsa.sln b/Elsa.sln
index 69b533e49..d95f59352 100644
--- a/Elsa.sln
+++ b/Elsa.sln
@@ -122,6 +122,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Jobs", "src\modules\El
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Common", "src\modules\Elsa.Common\Elsa.Common.csproj", "{D229105F-6879-4452-9189-75DE060C0F4C}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.Console3", "src\samples\console\Elsa.Samples.Console3\Elsa.Samples.Console3.csproj", "{517B703A-7653-4036-AAB5-7B4293D39D0F}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "worker", "worker", "{389D40B8-005F-46A1-9493-1FE6065F04FD}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.Worker1", "src\samples\Elsa.Samples.Worker1\Elsa.Samples.Worker1.csproj", "{197223FB-2472-442C-BD10-2E1F931285BC}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -324,6 +330,14 @@ Global
{D229105F-6879-4452-9189-75DE060C0F4C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D229105F-6879-4452-9189-75DE060C0F4C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D229105F-6879-4452-9189-75DE060C0F4C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {517B703A-7653-4036-AAB5-7B4293D39D0F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {517B703A-7653-4036-AAB5-7B4293D39D0F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {517B703A-7653-4036-AAB5-7B4293D39D0F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {517B703A-7653-4036-AAB5-7B4293D39D0F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {197223FB-2472-442C-BD10-2E1F931285BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {197223FB-2472-442C-BD10-2E1F931285BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {197223FB-2472-442C-BD10-2E1F931285BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {197223FB-2472-442C-BD10-2E1F931285BC}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{155227F0-A33B-40AA-A4B4-06F813EB921B} = {61017E64-6D00-49CB-9E81-5002DC8F7D5F}
@@ -381,5 +395,8 @@ Global
{81A2AE6B-3D0C-4A4A-A80B-7A661FBC8117} = {5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79}
{CF1938A0-BD10-4AA1-9ABC-6D02303A9D53} = {5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79}
{D229105F-6879-4452-9189-75DE060C0F4C} = {5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79}
+ {517B703A-7653-4036-AAB5-7B4293D39D0F} = {873BFC3E-63C2-4495-A503-5EC05DCD84E4}
+ {389D40B8-005F-46A1-9493-1FE6065F04FD} = {155227F0-A33B-40AA-A4B4-06F813EB921B}
+ {197223FB-2472-442C-BD10-2E1F931285BC} = {389D40B8-005F-46A1-9493-1FE6065F04FD}
EndGlobalSection
EndGlobal
diff --git a/src/samples/Elsa.Samples.Worker1/Elsa.Samples.Worker1.csproj b/src/samples/Elsa.Samples.Worker1/Elsa.Samples.Worker1.csproj
new file mode 100644
index 000000000..1737a7b56
--- /dev/null
+++ b/src/samples/Elsa.Samples.Worker1/Elsa.Samples.Worker1.csproj
@@ -0,0 +1,13 @@
+
+
+
+ net6.0
+ enable
+ enable
+ dotnet-Elsa.Samples.Worker1-8CF3B787-1D60-4B1A-A118-71B9CF9E3D9F
+
+
+
+
+
+
diff --git a/src/samples/Elsa.Samples.Worker1/Program.cs b/src/samples/Elsa.Samples.Worker1/Program.cs
new file mode 100644
index 000000000..09f6448fb
--- /dev/null
+++ b/src/samples/Elsa.Samples.Worker1/Program.cs
@@ -0,0 +1,7 @@
+using Elsa.Samples.Worker1;
+
+IHost host = Host.CreateDefaultBuilder(args)
+ .ConfigureServices(services => { services.AddHostedService(); })
+ .Build();
+
+await host.RunAsync();
\ No newline at end of file
diff --git a/src/samples/Elsa.Samples.Worker1/Properties/launchSettings.json b/src/samples/Elsa.Samples.Worker1/Properties/launchSettings.json
new file mode 100644
index 000000000..9b0e4fbce
--- /dev/null
+++ b/src/samples/Elsa.Samples.Worker1/Properties/launchSettings.json
@@ -0,0 +1,11 @@
+{
+ "profiles": {
+ "Elsa.Samples.Worker1": {
+ "commandName": "Project",
+ "dotnetRunMessages": true,
+ "environmentVariables": {
+ "DOTNET_ENVIRONMENT": "Development"
+ }
+ }
+ }
+}
diff --git a/src/samples/Elsa.Samples.Worker1/Worker.cs b/src/samples/Elsa.Samples.Worker1/Worker.cs
new file mode 100644
index 000000000..06e02b7a9
--- /dev/null
+++ b/src/samples/Elsa.Samples.Worker1/Worker.cs
@@ -0,0 +1,20 @@
+namespace Elsa.Samples.Worker1;
+
+public class Worker : BackgroundService
+{
+ private readonly ILogger _logger;
+
+ public Worker(ILogger logger)
+ {
+ _logger = logger;
+ }
+
+ protected override async Task ExecuteAsync(CancellationToken stoppingToken)
+ {
+ while (!stoppingToken.IsCancellationRequested)
+ {
+ _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
+ await Task.Delay(1000, stoppingToken);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/samples/Elsa.Samples.Worker1/appsettings.Development.json b/src/samples/Elsa.Samples.Worker1/appsettings.Development.json
new file mode 100644
index 000000000..b2dcdb674
--- /dev/null
+++ b/src/samples/Elsa.Samples.Worker1/appsettings.Development.json
@@ -0,0 +1,8 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.Hosting.Lifetime": "Information"
+ }
+ }
+}
diff --git a/src/samples/Elsa.Samples.Worker1/appsettings.json b/src/samples/Elsa.Samples.Worker1/appsettings.json
new file mode 100644
index 000000000..b2dcdb674
--- /dev/null
+++ b/src/samples/Elsa.Samples.Worker1/appsettings.json
@@ -0,0 +1,8 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.Hosting.Lifetime": "Information"
+ }
+ }
+}
diff --git a/src/samples/console/Elsa.Samples.Console3/Elsa.Samples.Console3.csproj b/src/samples/console/Elsa.Samples.Console3/Elsa.Samples.Console3.csproj
new file mode 100644
index 000000000..339111a54
--- /dev/null
+++ b/src/samples/console/Elsa.Samples.Console3/Elsa.Samples.Console3.csproj
@@ -0,0 +1,14 @@
+
+
+
+ Exe
+ net6.0
+ enable
+ enable
+
+
+
+
+
+
+
diff --git a/src/samples/console/Elsa.Samples.Console3/Program.cs b/src/samples/console/Elsa.Samples.Console3/Program.cs
new file mode 100644
index 000000000..cdb25674a
--- /dev/null
+++ b/src/samples/console/Elsa.Samples.Console3/Program.cs
@@ -0,0 +1,34 @@
+using Elsa.Extensions;
+using Elsa.Workflows.Core.Activities;
+using Elsa.Workflows.Core.Models;
+using Elsa.Workflows.Core.Services;
+using Microsoft.Extensions.DependencyInjection;
+
+// Setup a service container from which we can resolve Elsa services.
+var services = new ServiceCollection();
+
+// Add Elsa services to the service collection.
+services.AddElsa();
+
+// Build a service provider.
+var serviceProvider = services.BuildServiceProvider();
+
+// Resolve a workflow runner.
+var workflowRunner = serviceProvider.GetRequiredService();
+
+// Define a workflow.
+//var workflow = new WriteLine("Hello World!");
+var workflow = new Workflow
+{
+ Root = new Sequence
+ {
+ Activities =
+ {
+ new WriteLine("Hello World!"),
+ new WriteLine("Goodbye cruel world..."),
+ }
+ }
+};
+
+// Execute the workflow.
+workflowRunner.RunAsync(workflow);
\ No newline at end of file
diff --git a/src/samples/console/Elsa.Samples.Console3/Workflows/HelloWorld.cs b/src/samples/console/Elsa.Samples.Console3/Workflows/HelloWorld.cs
new file mode 100644
index 000000000..cebdb7903
--- /dev/null
+++ b/src/samples/console/Elsa.Samples.Console3/Workflows/HelloWorld.cs
@@ -0,0 +1,19 @@
+using Elsa.Workflows.Core.Activities;
+using Elsa.Workflows.Core.Services;
+
+namespace Elsa.Samples.Console3.Workflows;
+
+public class HelloWorld : WorkflowBase
+{
+ protected override void Build(IWorkflowBuilder builder)
+ {
+ builder.Root = new Sequence
+ {
+ Activities =
+ {
+ new WriteLine("Hello World!"),
+ new WriteLine("Goodbye cruel world...")
+ }
+ };
+ }
+}
\ No newline at end of file