Update Signaling Console sample project
This commit is contained in:
parent
0c6dfef6b6
commit
445ca96c57
|
|
@ -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 :)");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue