Generate default instance ID

This commit is contained in:
Sipke Schoorstra 2023-07-23 19:38:52 +02:00
parent 9230696707
commit 78aa011df8

View file

@ -1,29 +1,39 @@
using Elsa.Workflows.Core.Activities;
using Elsa.Workflows.Core.Contracts;
using Elsa.Workflows.Core.State;
using Elsa.Workflows.Runtime.Contracts;
using Microsoft.Extensions.DependencyInjection;
namespace Elsa.Workflows.Runtime.Services;
/// <inheritdoc />
public class WorkflowHostFactory : IWorkflowHostFactory
{
private readonly IIdentityGenerator _identityGenerator;
private readonly IServiceProvider _serviceProvider;
public WorkflowHostFactory(IServiceProvider serviceProvider)
/// <summary>
/// Initializes a new instance of the <see cref="WorkflowHostFactory"/> class.
/// </summary>
public WorkflowHostFactory(IIdentityGenerator identityGenerator, IServiceProvider serviceProvider)
{
_identityGenerator = identityGenerator;
_serviceProvider = serviceProvider;
}
/// <inheritdoc />
public Task<IWorkflowHost> CreateAsync(Workflow workflow, WorkflowState workflowState, CancellationToken cancellationToken = default)
{
var workflowHost = (IWorkflowHost)ActivatorUtilities.CreateInstance<WorkflowHost>(_serviceProvider, workflow, workflowState);
return Task.FromResult(workflowHost);
}
/// <inheritdoc />
public Task<IWorkflowHost> CreateAsync(Workflow workflow, CancellationToken cancellationToken = default)
{
var workflowState = new WorkflowState
{
Id = _identityGenerator.GenerateId(),
DefinitionId = workflow.Identity.DefinitionId,
DefinitionVersion = workflow.Identity.Version
};