using Elsa.AspNetCore; using Elsa.AspNetCore.Conventions; using Elsa.AspNetCore.Extensions; using Elsa.Extensions; using Elsa.Hangfire.Implementations; using Elsa.Http; using Elsa.Http.Extensions; using Elsa.JavaScript.Activities; using Elsa.JavaScript.Extensions; using Elsa.Jobs.Extensions; using Elsa.Labels.EntityFrameworkCore.Extensions; using Elsa.Labels.EntityFrameworkCore.Sqlite; using Elsa.Labels.Extensions; using Elsa.Liquid.Extensions; using Elsa.Quartz.Implementations; using Elsa.Scheduling.Extensions; using Elsa.WorkflowContexts.Extensions; using Elsa.Workflows.Api.Extensions; using Elsa.Workflows.Core.Activities; using Elsa.Workflows.Core.Pipelines.WorkflowExecution.Components; using Elsa.Workflows.Core.Serialization; using Elsa.Workflows.Core.Services; using Elsa.Workflows.Management.Extensions; using Elsa.Workflows.Management.Serialization; using Elsa.Workflows.Persistence.EntityFrameworkCore.Extensions; using Elsa.Workflows.Persistence.EntityFrameworkCore.Sqlite; using Elsa.Workflows.Persistence.Extensions; using Elsa.Workflows.Runtime.Extensions; var builder = WebApplication.CreateBuilder(args); var services = builder.Services; // Add Elsa services. services .AddElsa(elsa => elsa .UseManagement(management => management .AddActivity() .AddActivity() .AddActivity() .AddActivity() .AddActivity() .AddActivity() .AddActivity() .AddActivity() .AddActivity() .AddActivity() .AddActivity() ) .UseWorkflowPersistence(p => p.UseEntityFrameworkCore(ef => ef.UseSqlite())) .UseWorkflowApiEndpoints() .UseJavaScript() .UseLiquid() .UseLabels(labels => labels.UseEntityFrameworkCore(ef => ef.UseSqlite())) .UseHttp() .UseMvc() ); services .AddJobServices(new QuartzJobSchedulerProvider(), new HangfireJobQueueProvider()) .AddSchedulingServices() ; //services.AddControllers(); services.AddHealthChecks(); services.AddCors(cors => cors.AddDefaultPolicy(policy => policy.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin())); // Register serialization configurator for configuring what types to allow to be serialized. services.AddSingleton(); services.AddSingleton(); // Configure middleware pipeline. var app = builder.Build(); var serviceProvider = app.Services; // Configure workflow engine execution pipeline. serviceProvider.ConfigureDefaultWorkflowExecutionPipeline(pipeline => pipeline .UseWorkflowExecutionEvents() .UseWorkflowExecutionLogPersistence() .UsePersistence() .UseWorkflowContexts() .UseStackBasedActivityScheduler() ); if (app.Environment.IsDevelopment()) app.UseDeveloperExceptionPage(); // CORS. app.UseCors(); // Health checks. app.MapHealthChecks("/"); // Map Elsa API endpoint controllers. app.MapManagementApiEndpoints(); app.MapLabelApiEndpoints(); // Register Elsa middleware. app.UseJsonSerializationErrorHandler(); app.UseHttpActivities(); // Run. app.Run();