Update Signaling Console sample project

This commit is contained in:
Sipke Schoorstra 2021-05-11 14:32:26 +02:00
parent 0c6dfef6b6
commit 445ca96c57
2 changed files with 21 additions and 5 deletions

View file

@ -17,9 +17,9 @@ namespace Elsa.Samples.ForkJoinTimerAndSignalHttp.Controllers
}
[HttpGet]
public async Task<IActionResult> Trigger(string signalName, string correlationId, CancellationToken cancellationToken)
public async Task<IActionResult> Trigger(string signalName, string workflowInstanceId, CancellationToken cancellationToken)
{
await _signaler.TriggerSignalAsync(signalName, workflowInstanceId: correlationId, cancellationToken: cancellationToken);
await _signaler.TriggerSignalAsync(signalName, workflowInstanceId: workflowInstanceId, cancellationToken: cancellationToken);
return Ok("Signal triggered :)");
}
}

View file

@ -1,7 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Elsa.Activities.Signaling;
using Elsa.Activities.Signaling.Models;
using Elsa.Activities.Signaling.Services;
using Elsa.Dispatch;
using Elsa.Models;
using Elsa.Services;
using MediatR;
using Microsoft.Extensions.DependencyInjection;
namespace Elsa.Samples.SignalingConsole
@ -28,19 +35,28 @@ namespace Elsa.Samples.SignalingConsole
var workflowRunner = services.GetRequiredService<IBuildsAndStartsWorkflow>();
// Define a couple of cars so we can correlate workflows with them.
var cars = new[] {"Car 1", "Car 2"};
var cars = new[] { "Car 1", "Car 2" };
var workflowInstances = new List<WorkflowInstance>();
// Execute a workflow for each car.
foreach (var car in cars)
await workflowRunner.BuildAndStartWorkflowAsync<TrafficLightWorkflow>(correlationId: car);
{
var workflowInstance = await workflowRunner.BuildAndStartWorkflowAsync<TrafficLightWorkflow>(correlationId: car);
workflowInstances.Add(workflowInstance);
}
Console.WriteLine("Hit enter to signal green light for Car 2.");
Console.ReadLine();
// The workflows are now suspended at the red light.
// Trigger a green light signal for the first car.
var signal = "Green";
var correlationId = "Car 2";
var car2Workflow = workflowInstances.First(x => x.CorrelationId == correlationId);
var signaler = services.GetRequiredService<ISignaler>();
await signaler.TriggerSignalAsync("Green", workflowInstanceId: "Car 2");
await signaler.TriggerSignalAsync(signal, workflowInstanceId: car2Workflow.Id);
// Notice that only the workflow correlated to the second car executed.