diff --git a/samples/aspnet/Elsa.Samples.AspNet.Onboarding.Web/Controllers/HomeController.cs b/samples/aspnet/Elsa.Samples.AspNet.Onboarding.Web/Controllers/HomeController.cs index 4b680d2ae..18878dda3 100644 --- a/samples/aspnet/Elsa.Samples.AspNet.Onboarding.Web/Controllers/HomeController.cs +++ b/samples/aspnet/Elsa.Samples.AspNet.Onboarding.Web/Controllers/HomeController.cs @@ -6,27 +6,18 @@ using Microsoft.EntityFrameworkCore; namespace Elsa.Samples.AspNet.Onboarding.Web.Controllers; -public class HomeController : Controller +public class HomeController(OnboardingDbContext dbContext, ElsaClient elsaClient) : Controller { - private readonly OnboardingDbContext _dbContext; - private readonly ElsaClient _elsaClient; - - public HomeController(OnboardingDbContext dbContext, ElsaClient elsaClient) - { - _dbContext = dbContext; - _elsaClient = elsaClient; - } - public async Task Index(CancellationToken cancellationToken) { - var tasks = await _dbContext.Tasks.Where(x => !x.IsCompleted).ToListAsync(cancellationToken: cancellationToken); + var tasks = await dbContext.Tasks.Where(x => !x.IsCompleted).ToListAsync(cancellationToken: cancellationToken); var model = new IndexViewModel(tasks); return View(model); } public async Task CompleteTask(int taskId, CancellationToken cancellationToken) { - var task = _dbContext.Tasks.FirstOrDefault(x => x.Id == taskId); + var task = dbContext.Tasks.FirstOrDefault(x => x.Id == taskId); if (task == null) return NotFound(); @@ -35,13 +26,13 @@ public class HomeController : Controller { Magic = Random.Shared.NextDouble() }; - await _elsaClient.ReportTaskCompletedAsync(task.ExternalId, result, cancellationToken); + await elsaClient.ReportTaskCompletedAsync(task.ExternalId, result, cancellationToken); task.IsCompleted = true; task.CompletedAt = DateTimeOffset.Now; - _dbContext.Tasks.Update(task); - await _dbContext.SaveChangesAsync(cancellationToken); + dbContext.Tasks.Update(task); + await dbContext.SaveChangesAsync(cancellationToken); return RedirectToAction("Index"); } diff --git a/samples/aspnet/Elsa.Samples.AspNet.Onboarding.Web/Models/RunTaskWebhook.cs b/samples/aspnet/Elsa.Samples.AspNet.Onboarding.Web/Models/RunTaskWebhook.cs index d28353e5f..ad20488a4 100644 --- a/samples/aspnet/Elsa.Samples.AspNet.Onboarding.Web/Models/RunTaskWebhook.cs +++ b/samples/aspnet/Elsa.Samples.AspNet.Onboarding.Web/Models/RunTaskWebhook.cs @@ -4,4 +4,4 @@ public record RunTaskWebhook( string WorkflowInstanceId, string TaskId, string TaskName, - TaskPayload TaskPayload); \ No newline at end of file + TaskPayload? TaskPayload); \ No newline at end of file diff --git a/samples/aspnet/Elsa.Samples.AspNet.Onboarding.WorkflowServer/Elsa.Samples.AspNet.Onboarding.WorkflowServer.csproj b/samples/aspnet/Elsa.Samples.AspNet.Onboarding.WorkflowServer/Elsa.Samples.AspNet.Onboarding.WorkflowServer.csproj index e36e42033..b1672db79 100644 --- a/samples/aspnet/Elsa.Samples.AspNet.Onboarding.WorkflowServer/Elsa.Samples.AspNet.Onboarding.WorkflowServer.csproj +++ b/samples/aspnet/Elsa.Samples.AspNet.Onboarding.WorkflowServer/Elsa.Samples.AspNet.Onboarding.WorkflowServer.csproj @@ -13,8 +13,4 @@ - - - - diff --git a/src/modules/Elsa.Workflows.Runtime/Activities/RunTask.cs b/src/modules/Elsa.Workflows.Runtime/Activities/RunTask.cs index 55c00431f..f80bf7314 100644 --- a/src/modules/Elsa.Workflows.Runtime/Activities/RunTask.cs +++ b/src/modules/Elsa.Workflows.Runtime/Activities/RunTask.cs @@ -91,7 +91,7 @@ public class RunTask : Activity var taskId = identityGenerator.GenerateId(); var payload = new RunTaskBookmarkPayload(taskId, taskName); context.CreateBookmark(payload, ResumeAsync, includeActivityInstanceId: false); - + // Dispatch task request. var taskParams = Payload.GetOrDefault(context); var runTaskRequest = new RunTaskRequest(context, taskId, taskName, taskParams); diff --git a/src/modules/Elsa.Workflows.Runtime/Services/TaskReporter.cs b/src/modules/Elsa.Workflows.Runtime/Services/TaskReporter.cs index ff00e451a..768baed45 100644 --- a/src/modules/Elsa.Workflows.Runtime/Services/TaskReporter.cs +++ b/src/modules/Elsa.Workflows.Runtime/Services/TaskReporter.cs @@ -2,23 +2,14 @@ using Elsa.Workflows.Helpers; using Elsa.Workflows.Runtime.Activities; using Elsa.Workflows.Runtime.Bookmarks; using Elsa.Workflows.Runtime.Contracts; -using Elsa.Workflows.Runtime.Requests; +using Elsa.Workflows.Runtime.Models; +using Elsa.Workflows.Runtime.Parameters; -namespace Elsa.Workflows.Runtime.Services; +namespace Elsa.Workflows.Runtime; /// -public class TaskReporter : ITaskReporter +public class TaskReporter(IWorkflowInbox workflowInbox) : ITaskReporter { - private readonly IWorkflowDispatcher _workflowDispatcher; - - /// - /// Constructor. - /// - public TaskReporter(IWorkflowDispatcher workflowDispatcher) - { - _workflowDispatcher = workflowDispatcher; - } - /// public async Task ReportCompletionAsync(string taskId, object? result = default, CancellationToken cancellationToken = default) { @@ -30,7 +21,16 @@ public class TaskReporter : ITaskReporter }; var activityTypeName = ActivityTypeNameHelper.GenerateTypeName(); - var request = new DispatchResumeWorkflowsRequest(activityTypeName, bookmarkPayload, Input: input); - await _workflowDispatcher.DispatchAsync(request, cancellationToken: cancellationToken); + var message = new NewWorkflowInboxMessage + { + ActivityTypeName = activityTypeName, + BookmarkPayload = bookmarkPayload, + Input = input, + }; + var options = new WorkflowInboxMessageDeliveryParams + { + DispatchAsynchronously = true + }; + await workflowInbox.SubmitAsync(message, options, cancellationToken); } } \ No newline at end of file