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
|
2022-01-18 17:24:52 +00:00
|
|
|
|
.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())
|
|
|
|
|
|
{
|
2022-03-21 19:33:11 +00:00
|
|
|
|
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();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|