Beispiel #1
0
        public async Task Run(RunnerContext runnerContext, CancellationToken cancellationToken)
        {
            var busControlFactory = runnerContext.LifetimeScope.Resolve <IBusControlFactory>();
            var busControl        = busControlFactory.CreateBusControl();
            var busHandle         = await busControl.StartAsync(cancellationToken);

            try
            {
                System.Console.WriteLine($"Starting execution of workflow [{Name}]");
                var workflowMessageTransportFactory = new WorkflowMessageRabbitMqTransportFactory(busControlFactory);
                var workflowCommandContext          = CreateWorkflowCommandContext(runnerContext, workflowMessageTransportFactory);
                while (true)
                {
                    var workflowCommand = GetWorkflowCommand(this);
                    if (null == workflowCommand)
                    {
                        System.Console.WriteLine($"Finished execution of workflow [{Name}]");
                        return;
                    }

                    try
                    {
                        System.Console.WriteLine($"Starting command [{workflowCommand.Name}]");
                        await workflowCommand.Execute(workflowCommandContext, cancellationToken).ConfigureAwait(false);
                    }
                    catch (Exception ex)
                    {
                        System.Console.WriteLine($"An error has occurred during command execution [{ex.Message}]");
                    }
                }
            }
            finally
            {
                await busHandle.StopAsync(cancellationToken);
            }
        }
 protected override WorkflowCommandContextBase CreateWorkflowCommandContext(RunnerContext runnerContext, WorkflowMessageRabbitMqTransportFactory workflowMessageTransportFactory)
 {
     return(new PackageV01WorkflowCommandContext(runnerContext, workflowMessageTransportFactory.CreateMessageTransport(EndpointConfiguration.Address)));
 }
Beispiel #3
0
 protected abstract WorkflowCommandContextBase CreateWorkflowCommandContext(RunnerContext runnerContext, WorkflowMessageRabbitMqTransportFactory workflowMessageTransportFactory);