elsa-core/src/samples/server/Elsa.Samples.Server.Host/Startup.cs

93 lines
4 KiB
C#
Raw Normal View History

2021-05-24 12:32:12 +00:00
using System;
using Elsa.Activities.UserTask.Extensions;
2021-05-23 20:54:20 +00:00
using Elsa.Caching.Rebus.Extensions;
2021-01-31 11:51:51 +00:00
using Elsa.Persistence.EntityFramework.Core.Extensions;
2021-05-23 20:54:20 +00:00
using Elsa.Persistence.EntityFramework.SqlServer;
using Elsa.Rebus.RabbitMq;
2021-04-29 20:43:41 +00:00
using Elsa.Samples.Server.Host.Activities;
2021-05-24 12:32:12 +00:00
using Hangfire;
2019-11-22 22:07:31 +00:00
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
2021-05-23 20:54:20 +00:00
using Quartz;
2019-11-22 22:07:31 +00:00
namespace Elsa.Samples.Server.Host
2019-11-22 22:07:31 +00:00
{
public class Startup
{
public Startup(IWebHostEnvironment environment, IConfiguration configuration)
{
Environment = environment;
Configuration = configuration;
}
private IWebHostEnvironment Environment { get; }
private IConfiguration Configuration { get; }
2019-11-22 22:07:31 +00:00
public void ConfigureServices(IServiceCollection services)
{
var elsaSection = Configuration.GetSection("Elsa");
2021-05-23 20:54:20 +00:00
var sqlServerConnectionString = Configuration.GetConnectionString("SqlServer");
2021-04-01 16:53:26 +00:00
services.AddControllers();
2019-11-22 22:07:31 +00:00
services
2021-04-29 20:43:41 +00:00
.AddActivityPropertyOptionsProvider<VehicleActivity>()
.AddRuntimeSelectItemsProvider<VehicleActivity>()
2021-05-22 19:31:00 +00:00
//.AddRedis(Configuration.GetConnectionString("Redis"))
2021-01-31 11:51:51 +00:00
.AddElsa(elsa => elsa
2021-05-23 20:54:20 +00:00
.WithContainerName(Configuration["ContainerName"] ?? System.Environment.MachineName)
.UseEntityFrameworkPersistence(ef => ef.UseSqlServer(sqlServerConnectionString))
.UseRabbitMq(Configuration.GetConnectionString("RabbitMq"))
.UseRebusCacheSignal()
//.UseRedisCacheSignal()
.AddConsoleActivities()
.AddHttpActivities(elsaSection.GetSection("Http").Bind)
.AddEmailActivities(elsaSection.GetSection("Smtp").Bind)
.AddQuartzTemporalActivities()
// .AddQuartzTemporalActivities(configureQuartz: quartz => quartz.UsePersistentStore(store =>
// {
// store.UseJsonSerializer();
// store.UseSqlServer(sqlServerConnectionString);
// store.UseClustering();
// }))
//.AddHangfireTemporalActivities(hangfire => hangfire.UseInMemoryStorage(), (_, hangfireServer) => hangfireServer.SchedulePollingInterval = TimeSpan.FromSeconds(5))
2021-05-24 12:40:08 +00:00
//.AddHangfireTemporalActivities(hangfire => hangfire.UseSqlServerStorage(sqlServerConnectionString), (_, hangfireServer) => hangfireServer.SchedulePollingInterval = TimeSpan.FromSeconds(5))
.AddJavaScriptActivities()
.AddUserTaskActivities()
.AddActivitiesFrom<Startup>()
.AddWorkflowsFrom<Startup>()
);
Merge branch 'develop' into feature/elsa-2.0 # Conflicts: # Samples.sln # src/core/Elsa.Abstractions/Elsa.Abstractions.csproj # src/core/Elsa.Core/Elsa.Core.csproj # src/persistence/Elsa.Persistence.EntityFrameworkCore/Extensions/EFCoreServiceCollectionExtensions.cs # src/providers/Elsa.Persistence.EntityFrameworkCore/Elsa.Persistence.EntityFrameworkCore.csproj # src/providers/Elsa.Persistence.YesSql/DbContexts/DesignTimeDbContextFactoryBase.cs # src/providers/Elsa.Persistence.YesSql/DbContexts/MySqlContext.cs # src/providers/Elsa.Persistence.YesSql/DbContexts/MySqlContextFactory.cs # src/providers/Elsa.Persistence.YesSql/Elsa.Persistence.YesSql.csproj # src/providers/Elsa.Persistence.YesSql/Migrations/MySql/20200113102615_InitialCreate.Designer.cs # src/providers/Elsa.Persistence.YesSql/Migrations/MySql/20200113102615_InitialCreate.cs # src/providers/Elsa.Persistence.YesSql/Migrations/MySql/MySqlContextModelSnapshot.cs # src/samples/Elsa.Samples.Timers/Elsa.Samples.Timers.csproj # src/samples/Sample05/Program.cs # src/samples/Sample08/Sample08.csproj # src/samples/Sample08/Startup.cs # src/samples/Sample14/Program.cs # src/samples/Sample14/Sample14.csproj # src/samples/Sample16/Sample16.csproj # src/samples/Sample18/Program.cs # src/samples/Sample18/Sample18.csproj # src/samples/Sample19/Sample19.csproj # src/samples/Sample19/Startup.cs # src/samples/Sample21/Sample21.csproj # src/samples/Sample21/Startup.cs # src/samples/Sample22/Program.cs # src/samples/Sample22/Sample22.csproj # src/samples/Sample23/Program.cs # src/samples/Sample23/Sample23.csproj
2020-01-16 20:23:45 +00:00
2021-04-29 20:43:41 +00:00
// Elsa API endpoints.
Merge branch 'develop' into feature/elsa-2.0 # Conflicts: # Samples.sln # src/core/Elsa.Abstractions/Elsa.Abstractions.csproj # src/core/Elsa.Core/Elsa.Core.csproj # src/persistence/Elsa.Persistence.EntityFrameworkCore/Extensions/EFCoreServiceCollectionExtensions.cs # src/providers/Elsa.Persistence.EntityFrameworkCore/Elsa.Persistence.EntityFrameworkCore.csproj # src/providers/Elsa.Persistence.YesSql/DbContexts/DesignTimeDbContextFactoryBase.cs # src/providers/Elsa.Persistence.YesSql/DbContexts/MySqlContext.cs # src/providers/Elsa.Persistence.YesSql/DbContexts/MySqlContextFactory.cs # src/providers/Elsa.Persistence.YesSql/Elsa.Persistence.YesSql.csproj # src/providers/Elsa.Persistence.YesSql/Migrations/MySql/20200113102615_InitialCreate.Designer.cs # src/providers/Elsa.Persistence.YesSql/Migrations/MySql/20200113102615_InitialCreate.cs # src/providers/Elsa.Persistence.YesSql/Migrations/MySql/MySqlContextModelSnapshot.cs # src/samples/Elsa.Samples.Timers/Elsa.Samples.Timers.csproj # src/samples/Sample05/Program.cs # src/samples/Sample08/Sample08.csproj # src/samples/Sample08/Startup.cs # src/samples/Sample14/Program.cs # src/samples/Sample14/Sample14.csproj # src/samples/Sample16/Sample16.csproj # src/samples/Sample18/Program.cs # src/samples/Sample18/Sample18.csproj # src/samples/Sample19/Sample19.csproj # src/samples/Sample19/Startup.cs # src/samples/Sample21/Sample21.csproj # src/samples/Sample21/Startup.cs # src/samples/Sample22/Program.cs # src/samples/Sample22/Sample22.csproj # src/samples/Sample23/Program.cs # src/samples/Sample23/Sample23.csproj
2020-01-16 20:23:45 +00:00
services
2020-10-19 20:12:11 +00:00
.AddElsaApiEndpoints()
.AddElsaSwagger();
2021-03-11 12:17:38 +00:00
// Allow arbitrary client browser apps to access the API for demo purposes only.
// In a production environment, make sure to allow only origins you trust.
2021-03-11 12:17:38 +00:00
services.AddCors(cors => cors.AddDefaultPolicy(policy => policy.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin().WithExposedHeaders("Content-Disposition")));
2019-11-22 22:07:31 +00:00
}
public void Configure(IApplicationBuilder app)
{
if (Environment.IsDevelopment())
{
app.UseDeveloperExceptionPage();
2020-11-11 20:32:12 +00:00
app.UseSwagger();
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "Elsa"));
2019-11-22 22:07:31 +00:00
}
app
.UseCors()
.UseHttpActivities()
.UseRouting()
.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
2019-11-22 22:07:31 +00:00
}
}
}