Add WorkflowSerializer service for simplifies workflow deserialization
This commit is contained in:
parent
366ce2fabd
commit
d6481133fd
|
|
@ -0,0 +1,16 @@
|
|||
using Elsa.Workflows.Core.Activities;
|
||||
|
||||
namespace Elsa.Workflows.Management.Contracts;
|
||||
|
||||
/// <summary>
|
||||
/// Serializes and deserializes workflows.
|
||||
/// </summary>
|
||||
public interface IWorkflowSerializer
|
||||
{
|
||||
/// <summary>
|
||||
/// Serializes the specified workflow.
|
||||
/// </summary>
|
||||
/// <param name="serializedWorkflow">The data representing the workflow.</param>
|
||||
/// <returns>A deserialized workflow.</returns>
|
||||
Workflow Deserialize(string serializedWorkflow);
|
||||
}
|
||||
|
|
@ -159,6 +159,7 @@ public class WorkflowManagementFeature : FeatureBase
|
|||
.AddMemoryStore<WorkflowInstance, MemoryWorkflowInstanceStore>()
|
||||
.AddActivityProvider<TypedActivityProvider>()
|
||||
.AddSingleton<IWorkflowDefinitionService, WorkflowDefinitionService>()
|
||||
.AddSingleton<IWorkflowSerializer, WorkflowSerializer>()
|
||||
.AddSingleton<IWorkflowValidator, WorkflowValidator>()
|
||||
.AddSingleton<IWorkflowDefinitionPublisher, WorkflowDefinitionPublisher>()
|
||||
.AddSingleton<IWorkflowDefinitionImporter, WorkflowDefinitionImporter>()
|
||||
|
|
|
|||
|
|
@ -0,0 +1,32 @@
|
|||
using Elsa.Workflows.Core.Activities;
|
||||
using Elsa.Workflows.Core.Contracts;
|
||||
using Elsa.Workflows.Management.Contracts;
|
||||
using Elsa.Workflows.Management.Mappers;
|
||||
using Elsa.Workflows.Management.Models;
|
||||
|
||||
namespace Elsa.Workflows.Management.Services;
|
||||
|
||||
/// <summary>
|
||||
/// A serializer that parses JSON.
|
||||
/// </summary>
|
||||
public class WorkflowSerializer : IWorkflowSerializer
|
||||
{
|
||||
private readonly IApiSerializer _apiSerializer;
|
||||
private readonly WorkflowDefinitionMapper _workflowDefinitionMapper;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="WorkflowSerializer"/> class.
|
||||
/// </summary>
|
||||
public WorkflowSerializer(IApiSerializer apiSerializer, WorkflowDefinitionMapper workflowDefinitionMapper)
|
||||
{
|
||||
_apiSerializer = apiSerializer;
|
||||
_workflowDefinitionMapper = workflowDefinitionMapper;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public Workflow Deserialize(string serializedWorkflow)
|
||||
{
|
||||
var model = _apiSerializer.Deserialize<WorkflowDefinitionModel>(serializedWorkflow);
|
||||
return _workflowDefinitionMapper.Map(model);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue