2023-04-25 20:15:11 +00:00
|
|
|
|
using Elsa.Extensions;
|
|
|
|
|
|
using Elsa.Testing.Shared;
|
2023-07-09 12:02:41 +00:00
|
|
|
|
using Elsa.Workflows.Core.Activities;
|
2023-04-25 20:15:11 +00:00
|
|
|
|
using Elsa.Workflows.Core.Contracts;
|
|
|
|
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
|
|
|
|
|
|
|
|
// Setup service container.
|
|
|
|
|
|
var services = new ServiceCollection();
|
|
|
|
|
|
|
|
|
|
|
|
// Add Elsa services.
|
|
|
|
|
|
services.AddElsa();
|
|
|
|
|
|
|
|
|
|
|
|
// Build service container.
|
|
|
|
|
|
var serviceProvider = services.BuildServiceProvider();
|
|
|
|
|
|
|
|
|
|
|
|
// Populate registries. This is only necessary for applications that are not using hosted services.
|
|
|
|
|
|
await serviceProvider.PopulateRegistriesAsync();
|
|
|
|
|
|
|
|
|
|
|
|
// Import a workflow from a JSON file.
|
|
|
|
|
|
var workflowJson = await File.ReadAllTextAsync("HelloWorld.json");
|
|
|
|
|
|
|
|
|
|
|
|
// Get a serializer to deserialize the workflow.
|
|
|
|
|
|
var serializer = serviceProvider.GetRequiredService<IActivitySerializer>();
|
|
|
|
|
|
|
|
|
|
|
|
// Deserialize the workflow.
|
|
|
|
|
|
var workflow = serializer.Deserialize<Workflow>(workflowJson);
|
|
|
|
|
|
|
|
|
|
|
|
// Resolve a workflow runner to run the workflow.
|
|
|
|
|
|
var workflowRunner = serviceProvider.GetRequiredService<IWorkflowRunner>();
|
|
|
|
|
|
|
|
|
|
|
|
// Run the workflow.
|
|
|
|
|
|
await workflowRunner.RunAsync(workflow);
|