Files
Caspian.WorkflowFramework/Caspian.WorkflowFramework.Package/Config/DependencyInjection.cs
T

73 lines
2.6 KiB
C#

using Caspian.WorkflowFramework.Contracts;
using Caspian.WorkflowFramework.Services;
using Elsa.Extensions;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Elsa.EntityFrameworkCore.Extensions;
using Elsa.EntityFrameworkCore.Modules.Management;
using Elsa.EntityFrameworkCore.Modules.Runtime;
using Elsa.EntityFrameworkCore.Modules.Identity;
using Elsa.Email;
using San.MongoLogger;
using San.MongoLogger.Models;
namespace Caspian.WorkflowFramework;
public static class DependencyInjection
{
public static void AddWorkflowFramework(this IHostApplicationBuilder builder, string connectionString)
{
builder.Services.AddMongoLogger<LogModel>(builder.Configuration);
builder.Services.AddElsa(elsa =>
{
// Configure Management layer to use EF Core.
elsa.UseWorkflowManagement(management => management
.UseEntityFrameworkCore(ef => ef.UseSqlServer(connectionString)));
// Configure Runtime layer to use EF Core.
elsa.UseWorkflowRuntime(runtime => runtime
.UseEntityFrameworkCore(ef => ef.UseSqlServer(connectionString)));
// Expose Elsa API endpoints.
elsa.UseWorkflowsApi();
// Enable C# workflow expressions
elsa.UseCSharp();
// Enable JavaScript workflow expressions
elsa.UseJavaScript(options => options.AllowClrAccess = true);
});
//// Configure CORS to allow designer app hosted on a different origin to invoke the APIs.
//builder.Services.AddCors(cors => cors
// .AddDefaultPolicy(policy => policy
// .AllowAnyOrigin() // For demo purposes only. Use a specific origin instead.
// .AllowAnyHeader()
// .AllowAnyMethod()
// .WithExposedHeaders("x-elsa-workflow-instance-id"))); // Required for Elsa Studio in order to support running workflows from the designer. Alternatively, you can use the `*` wildcard to expose all headers.
// Add Health Checks.
builder.Services.AddHealthChecks();
builder.Services.AddScoped<IWorkflowService, WorkflowService>();
}
public static void UseWorkflowFramework(this IApplicationBuilder app)
{
try
{
app.UseMongoLogger<LogModel>();
}
catch (Exception ex)
{
var d = ex;
}
//app.UseWorkflowsApi(); // Use Elsa API endpoints.
app.UseWorkflows(); // Use Elsa middleware to handle HTTP requests mapped to HTTP Endpoint activities.
}
}