elsa-core/src/samples/console/Elsa.Samples.Console1/Program.cs

96 lines
3.6 KiB
C#
Raw Normal View History

2022-01-04 08:42:12 +00:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Elsa.Contracts;
using Elsa.Extensions;
using Elsa.Models;
using Elsa.Persistence.InMemory.Extensions;
using Elsa.Pipelines.ActivityExecution.Components;
using Elsa.Pipelines.WorkflowExecution.Components;
2022-02-22 11:51:59 +00:00
using Elsa.Runtime.Extensions;
2022-01-04 08:42:12 +00:00
using Elsa.Samples.Console1.Workflows;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
namespace Elsa.Samples.Console1;
class Program
{
static async Task Main()
{
var serviceProvider = CreateServices();
serviceProvider
// Configure activity execution pipeline.
.ConfigureDefaultActivityExecutionPipeline(pipeline => pipeline
.UseLogging()
.UseActivityDrivers()
)
// Configure workflow engine execution pipeline.
.ConfigureDefaultWorkflowExecutionPipeline(pipeline => pipeline
.UsePersistence()
2022-01-04 08:42:12 +00:00
.UseActivityScheduler()
);
var workflow1 = new Func<IActivity>(HelloWorldWorkflow.Create);
var workflow2 = new Func<IActivity>(HelloGoodbyeWorkflow.Create);
var workflow3 = new Func<IActivity>(GreetingWorkflow.Create);
var workflow4 = new Func<IActivity>(ConditionalWorkflow.Create);
var workflow5 = new Func<IActivity>(ForWorkflow.Create);
var workflow6 = new Func<IActivity>(BlockingWorkflow.Create);
var workflow7 = new Func<IActivity>(ForkedWorkflow.Create);
var workflow8 = new Func<IActivity>(CustomizedActivityWorkflow.Create);
var workflow9 = new Func<IActivity>(VariablesWorkflow.Create);
var workflow10 = new Func<IActivity>(WhileWorkflow.Create);
var workflow11 = new Func<IActivity>(ForEachWorkflow.Create);
var workflow12 = new Func<IActivity>(ParallelForEachWorkflow.Create);
var workflow13 = new Func<IActivity>(BlockingParallelForEachWorkflow.Create);
var workflow14 = new Func<IActivity>(FlowchartWorkflow.Create);
2022-04-07 10:44:12 +00:00
var workflowFactory = workflow3;
2022-01-04 08:42:12 +00:00
var workflowGraph = workflowFactory();
var workflow = Workflow.FromActivity(workflowGraph);
2022-03-04 18:59:44 +00:00
var workflowEngine = serviceProvider.GetRequiredService<IWorkflowRunner>();
var workflowExecutionResult = await workflowEngine.RunAsync(workflow);
2022-01-04 08:42:12 +00:00
var workflowState = workflowExecutionResult.WorkflowState;
var bookmarks = new List<Bookmark>(workflowExecutionResult.Bookmarks);
while (bookmarks.Any())
{
workflow.Root = workflowFactory();
2022-01-04 08:42:12 +00:00
foreach (var bookmark in bookmarks.ToList())
{
Console.WriteLine("Press enter to resume workflow with bookmark {0}.", new
{
bookmark.Id,
bookmark.Name,
bookmark.Hash,
bookmark.ActivityId,
bookmark.ActivityInstanceId,
bookmark.CallbackMethodName
});
Console.ReadLine();
2022-03-04 18:59:44 +00:00
var resumeResult = await workflowEngine.RunAsync(workflow, workflowState, bookmark);
2022-01-04 08:42:12 +00:00
workflowState = resumeResult.WorkflowState;
bookmarks = resumeResult.Bookmarks.ToList();
}
}
}
private static IServiceProvider CreateServices()
{
var services = new ServiceCollection();
services
.AddElsa()
.AddInMemoryPersistence()
.AddLogging(logging => logging.AddConsole().SetMinimumLevel(LogLevel.Warning));
return services.BuildServiceProvider();
}
}