using System; using System.Threading.Tasks; using Elsa.Activities.Console.Extensions; using Elsa.Activities.Timers.Extensions; using Elsa.Extensions; using Elsa.Persistence.Memory; 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) { SetupWorkflow(host.Services); await host.StartAsync(); 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(1))) .AddMemoryWorkflowDefinitionStore() .AddMemoryWorkflowInstanceStore(); } } }