You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.4 KiB
67 lines
2.4 KiB
using LINGYUN.Abp.Data.DbMigrator;
|
|
using LINGYUN.Abp.WorkflowCore.Persistence.EntityFrameworkCore;
|
|
using LINGYUN.Abp.WorkflowManagement;
|
|
using LINGYUN.Abp.WorkflowManagement.EntityFrameworkCore;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.Extensions.Logging;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using Volo.Abp.DependencyInjection;
|
|
using WorkflowCore.Interface;
|
|
|
|
namespace LY.MicroService.WorkflowManagement;
|
|
|
|
public class WorkflowEngineManager : IWorkflowEngineManager, ISingletonDependency
|
|
{
|
|
private readonly IWorkflowHost _workflowHost;
|
|
private readonly IDbSchemaMigrator _dbSchemaMigrator;
|
|
|
|
private readonly ILogger<WorkflowEngineManager> _logger;
|
|
public WorkflowEngineManager(
|
|
IWorkflowHost workflowHost,
|
|
IDbSchemaMigrator dbSchemaMigrator,
|
|
ILogger<WorkflowEngineManager> logger)
|
|
{
|
|
_logger = logger;
|
|
_workflowHost = workflowHost;
|
|
_dbSchemaMigrator = dbSchemaMigrator;
|
|
}
|
|
|
|
public async Task InitializeAsync(CancellationToken cancellationToken = default)
|
|
{
|
|
_logger.LogInformation("Migrating workflow core context...");
|
|
await _dbSchemaMigrator.MigrateAsync<WorkflowDbContext>(
|
|
(connectionString, builder) =>
|
|
{
|
|
builder.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString));
|
|
|
|
return new WorkflowDbContext(builder.Options);
|
|
});
|
|
_logger.LogInformation("Migrated workflow core context.");
|
|
|
|
_logger.LogInformation("Migrating workflow management context...");
|
|
await _dbSchemaMigrator.MigrateAsync<WorkflowManagementDbContext>(
|
|
(connectionString, builder) =>
|
|
{
|
|
builder.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString));
|
|
|
|
return new WorkflowManagementDbContext(builder.Options);
|
|
});
|
|
_logger.LogInformation("Migrated workflow management context.");
|
|
}
|
|
|
|
public async Task RegisterAsync(CancellationToken cancellationToken = default)
|
|
{
|
|
|
|
}
|
|
|
|
public async Task StartAsync(CancellationToken cancellationToken = default)
|
|
{
|
|
await _workflowHost.StartAsync(cancellationToken);
|
|
}
|
|
|
|
public async Task StopAsync(CancellationToken cancellationToken = default)
|
|
{
|
|
await _workflowHost.StopAsync(cancellationToken);
|
|
}
|
|
}
|
|
|