From 72caccb6a67b4be0973691eb84ca122d2ecf9cab Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Sat, 17 Oct 2020 13:51:27 +0200 Subject: [PATCH] Update ReceiveHttpRequest using new trigger API --- .../ReceiveHttpRequestBuilderExtensions.cs | 6 +- .../ApplicationBuilderExtensions.cs | 2 +- .../Extensions/ServiceCollectionExtensions.cs | 1 - .../Middleware/HttpRequestMiddleware.cs | 4 +- .../Handlers/TriggerRequestHandler.cs | 100 ------------------ .../Triggers/ReceiveHttpRequestTrigger.cs | 6 +- .../Elsa.Abstractions/Builders/IBuilder.cs | 1 - .../Builders/IWorkflowBuilder.cs | 7 -- .../Converters/TypeConverter.cs | 1 - .../Elsa.Abstractions.csproj.DotSettings | 3 +- .../Extensions/WorkflowBlueprintExtensions.cs | 40 +++++++ .../WorkflowExecutionContextExtensions.cs | 12 --- .../Extensions/WorkflowSchedulerExtensions.cs | 0 .../Services/ActivityPropertyProviders.cs | 14 ++- .../Services/IWorkflowHost.cs | 3 - .../Models/WorkflowExecutionContext.cs | 1 - .../Triggers/ITriggerProvider.cs | 1 - .../Triggers/IWorkflowSelector.cs | 2 - .../Triggers/TriggerProvider.cs | 1 - .../Activities/ControlFlow/Join/Join.cs | 1 - .../Elsa.Core/Builders/ActivityBuilder.cs | 11 +- .../Builders/ActivityBuilderExtensions.cs | 12 +-- src/core/Elsa.Core/Builders/OutcomeBuilder.cs | 5 - .../Builders/OutcomeBuilderExtensions.cs | 8 +- .../Elsa.Core/Builders/WorkflowBuilder.cs | 34 +----- .../Builders/WorkflowBuilderExtensions.cs | 8 +- .../Data/Services/DataMigrationsRunner.cs | 1 - .../Data/Services/DatabaseInitializer.cs | 1 - .../ElsaServiceCollectionExtensions.cs | 1 - .../WorkflowExpressionOptionsProvider.cs | 1 - src/core/Elsa.Core/Services/WorkflowHost.cs | 4 - .../Elsa.Core/Services/WorkflowScheduler.cs | 2 - .../ResumeRunningWorkflowsTask.cs | 1 - .../StartupTasks/StartServiceBusTask.cs | 2 - .../Elsa.Core/Triggers/WorkflowSelector.cs | 1 - .../Elsa.Samples.HelloWorldConsole/Program.cs | 1 - .../Elsa.Samples.HelloWorldHttp/elsa.db | Bin 61440 -> 61440 bytes 37 files changed, 73 insertions(+), 226 deletions(-) delete mode 100644 src/activities/Elsa.Activities.Http/RequestHandlers/Handlers/TriggerRequestHandler.cs create mode 100644 src/core/Elsa.Abstractions/Extensions/WorkflowBlueprintExtensions.cs rename src/core/Elsa.Abstractions/{Services => }/Extensions/WorkflowSchedulerExtensions.cs (100%) diff --git a/src/activities/Elsa.Activities.Http/Activities/ReceiveHttpRequest/ReceiveHttpRequestBuilderExtensions.cs b/src/activities/Elsa.Activities.Http/Activities/ReceiveHttpRequest/ReceiveHttpRequestBuilderExtensions.cs index 241cfffda..20139ac68 100644 --- a/src/activities/Elsa.Activities.Http/Activities/ReceiveHttpRequest/ReceiveHttpRequestBuilderExtensions.cs +++ b/src/activities/Elsa.Activities.Http/Activities/ReceiveHttpRequest/ReceiveHttpRequestBuilderExtensions.cs @@ -13,10 +13,6 @@ namespace Elsa.Activities.Http this IBuilder builder, Action> setup) => builder.Then(setup); - public static IActivityBuilder ReceiveHttpRequest( - this IBuilder builder, - Action setup) => builder.Then(setup); - public static IActivityBuilder ReceiveHttpRequest(this IBuilder builder, Func> path) => builder.ReceiveHttpRequest(setup => setup.Set(x => x.Path, path)); @@ -32,6 +28,6 @@ namespace Elsa.Activities.Http builder.ReceiveHttpRequest(setup => setup.Set(x => x.Path, path)); public static IActivityBuilder ReceiveHttpRequest(this IBuilder builder, PathString path) => - builder.ReceiveHttpRequest(x => x.Path = path); + builder.ReceiveHttpRequest(setup => setup.Set(x => x.Path, path)); } } \ No newline at end of file diff --git a/src/activities/Elsa.Activities.Http/Extensions/ApplicationBuilderExtensions.cs b/src/activities/Elsa.Activities.Http/Extensions/ApplicationBuilderExtensions.cs index e6bf973a9..bb7435419 100644 --- a/src/activities/Elsa.Activities.Http/Extensions/ApplicationBuilderExtensions.cs +++ b/src/activities/Elsa.Activities.Http/Extensions/ApplicationBuilderExtensions.cs @@ -10,7 +10,7 @@ namespace Microsoft.AspNetCore.Builder public static IApplicationBuilder UseHttpActivities(this IApplicationBuilder app) { return app - .UseRequestHandler() + .UseMiddleware() .UseRequestHandler("/workflows/signal"); } diff --git a/src/activities/Elsa.Activities.Http/Extensions/ServiceCollectionExtensions.cs b/src/activities/Elsa.Activities.Http/Extensions/ServiceCollectionExtensions.cs index 812bf84f8..f531321e1 100644 --- a/src/activities/Elsa.Activities.Http/Extensions/ServiceCollectionExtensions.cs +++ b/src/activities/Elsa.Activities.Http/Extensions/ServiceCollectionExtensions.cs @@ -48,7 +48,6 @@ namespace Microsoft.Extensions.DependencyInjection .AddDataProtection(); return services - .AddRequestHandler() .AddRequestHandler(); } diff --git a/src/activities/Elsa.Activities.Http/Middleware/HttpRequestMiddleware.cs b/src/activities/Elsa.Activities.Http/Middleware/HttpRequestMiddleware.cs index 6c00179eb..e0a337b56 100644 --- a/src/activities/Elsa.Activities.Http/Middleware/HttpRequestMiddleware.cs +++ b/src/activities/Elsa.Activities.Http/Middleware/HttpRequestMiddleware.cs @@ -1,7 +1,6 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; -using Elsa.Activities.Http.Services; using Elsa.Activities.Http.Triggers; using Elsa.Services; using Elsa.Triggers; @@ -18,10 +17,11 @@ namespace Elsa.Activities.Http.Middleware _next = next; } - public async Task InvokeAsync(HttpContext httpContext, IWorkflowSelector workflowSelector, IWorkflowHost workflowHost, CancellationToken cancellationToken) + public async Task InvokeAsync(HttpContext httpContext, IWorkflowSelector workflowSelector, IWorkflowHost workflowHost) { var path = httpContext.Request.Path; var method = httpContext.Request.Method; + var cancellationToken = httpContext.RequestAborted; var results = await workflowSelector.SelectWorkflowsAsync( x => x.Path == path && x.Method == null || x.Method == method, diff --git a/src/activities/Elsa.Activities.Http/RequestHandlers/Handlers/TriggerRequestHandler.cs b/src/activities/Elsa.Activities.Http/RequestHandlers/Handlers/TriggerRequestHandler.cs deleted file mode 100644 index 2bcc3eb17..000000000 --- a/src/activities/Elsa.Activities.Http/RequestHandlers/Handlers/TriggerRequestHandler.cs +++ /dev/null @@ -1,100 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using Elsa.Activities.Http.Indexes; -using Elsa.Activities.Http.RequestHandlers.Results; -using Elsa.Activities.Http.Services; -using Elsa.Extensions; -using Elsa.Models; -using Elsa.Services; -using Elsa.Services.Models; -using Microsoft.AspNetCore.Http; -using Open.Linq.AsyncExtensions; - -namespace Elsa.Activities.Http.RequestHandlers.Handlers -{ - public class TriggerRequestHandler : IRequestHandler - { - private readonly HttpContext _httpContext; - private readonly IWorkflowHost _workflowHost; - private readonly IWorkflowRegistry _registry; - private readonly IWorkflowInstanceManager _workflowInstanceManager; - private readonly CancellationToken _cancellationToken; - - public TriggerRequestHandler( - IHttpContextAccessor httpContext, - IWorkflowHost workflowHost, - IWorkflowRegistry registry, - IWorkflowInstanceManager workflowInstanceManager) - { - _httpContext = httpContext.HttpContext; - _workflowHost = workflowHost; - _registry = registry; - _workflowInstanceManager = workflowInstanceManager; - _cancellationToken = httpContext.HttpContext.RequestAborted; - } - - public async Task HandleRequestAsync() - { - // TODO: Optimize this by building up a hash of routes and workflows to execute. - var requestPath = _httpContext.Request.Path.ToString(); - var method = _httpContext.Request.Method; - - var httpWorkflows = - await _registry.GetWorkflowsByStartActivityAsync(_cancellationToken); - - var workflowsToStart = httpWorkflows; - - var workflowsToResume = - await _workflowInstanceManager - .Query( - x => x.RequestPath == requestPath && x.RequestMethod == null || x.RequestMethod == method) - .ListAsync() - .ToList(); - - if (!workflowsToStart.Any() && !workflowsToResume.Any()) - return new NextResult(); - - var workflowsToResumeTuples = - from workflowInstance in workflowsToResume - from blockingActivity in workflowInstance.BlockingActivities - where blockingActivity.ActivityType == nameof(ReceiveHttpRequest) - from activity in workflowInstance.Activities - where activity.Id == blockingActivity.ActivityId - where activity.Data.Value(nameof(ReceiveHttpRequest.Path)) == requestPath - where activity.Data.Value(nameof(ReceiveHttpRequest.Method)) == method - select (workflowInstance, activity); - - await InvokeWorkflowsToStartAsync(workflowsToStart); - await InvokeWorkflowsToResumeAsync(workflowsToResumeTuples); - - return !_httpContext.Items.ContainsKey(WorkflowHttpResult.Instance) - ? (IRequestHandlerResult)new AcceptedResult() - : new EmptyResult(); - } - - private async Task InvokeWorkflowsToStartAsync( - IEnumerable<(IWorkflowBlueprint Workflow, IActivityBlueprint Activity)> items) - { - foreach (var (workflow, activity) in items) - { - await _workflowHost.RunWorkflowAsync( - workflow, - activity.Id, - cancellationToken: _cancellationToken); - } - } - - private async Task InvokeWorkflowsToResumeAsync(IEnumerable<(WorkflowInstance, ActivityInstance)> items) - { - foreach (var (workflowInstance, activity) in items) - { - await _workflowHost.RunWorkflowAsync( - workflowInstance, - activity.Id, - cancellationToken: _cancellationToken); - } - } - } -} \ No newline at end of file diff --git a/src/activities/Elsa.Activities.Http/Triggers/ReceiveHttpRequestTrigger.cs b/src/activities/Elsa.Activities.Http/Triggers/ReceiveHttpRequestTrigger.cs index 453f95630..0a04f6fd9 100644 --- a/src/activities/Elsa.Activities.Http/Triggers/ReceiveHttpRequestTrigger.cs +++ b/src/activities/Elsa.Activities.Http/Triggers/ReceiveHttpRequestTrigger.cs @@ -2,10 +2,8 @@ using System.Collections.Generic; using System.Linq; using System.Runtime.CompilerServices; -using System.Security.Cryptography.Xml; using System.Threading; using System.Threading.Tasks; -using Elsa.Expressions; using Elsa.Services; using Elsa.Services.Models; using Elsa.Triggers; @@ -50,8 +48,8 @@ namespace Elsa.Activities.Http.Triggers yield return new ReceiveHttpRequestTrigger { ActivityId = activity.Id, - Path = (PathString)(await workflowBlueprint.ActivityPropertyProviders.GetProvider(activity.Id, nameof(ReceiveHttpRequest.Path))!.GetValueAsync(activityExecutionContext, cancellationToken))!, - Method = (string)(await workflowBlueprint.ActivityPropertyProviders.GetProvider(activity.Id, nameof(ReceiveHttpRequest.Method))!.GetValueAsync(activityExecutionContext, cancellationToken))!, + Path = await workflowBlueprint.GetActivityPropertyValue(activity.Id, x => x.Path, activityExecutionContext, cancellationToken), + Method = await workflowBlueprint.GetActivityPropertyValue(activity.Id, x => x.Method, activityExecutionContext, cancellationToken) }; } } diff --git a/src/core/Elsa.Abstractions/Builders/IBuilder.cs b/src/core/Elsa.Abstractions/Builders/IBuilder.cs index c14d21d12..41f1e321c 100644 --- a/src/core/Elsa.Abstractions/Builders/IBuilder.cs +++ b/src/core/Elsa.Abstractions/Builders/IBuilder.cs @@ -6,7 +6,6 @@ namespace Elsa.Builders public interface IBuilder { IActivityBuilder Then(Action>? setup, Action? branch = default) where T : class, IActivity; - IActivityBuilder Then(Action setup, Action? branch = default) where T : class, IActivity; IActivityBuilder Then(Action? branch = default) where T : class, IActivity; } } \ No newline at end of file diff --git a/src/core/Elsa.Abstractions/Builders/IWorkflowBuilder.cs b/src/core/Elsa.Abstractions/Builders/IWorkflowBuilder.cs index 81c79c22a..3d1f0309a 100644 --- a/src/core/Elsa.Abstractions/Builders/IWorkflowBuilder.cs +++ b/src/core/Elsa.Abstractions/Builders/IWorkflowBuilder.cs @@ -42,17 +42,10 @@ namespace Elsa.Builders IActivityBuilder StartWith(Action? branch = default) where T : class, IActivity; - IActivityBuilder StartWith(Action setup, Action? branch = default) - where T : class, IActivity; - IActivityBuilder Add( Action>? setup = default, Action? branch = default) where T : class, IActivity; - IActivityBuilder Add( - Action setup, - Action? branch = default) where T : class, IActivity; - IActivityBuilder Add( Action? branch = default, IDictionary? propertyValueProviders = default) diff --git a/src/core/Elsa.Abstractions/Converters/TypeConverter.cs b/src/core/Elsa.Abstractions/Converters/TypeConverter.cs index 6a6911733..5b72186c0 100644 --- a/src/core/Elsa.Abstractions/Converters/TypeConverter.cs +++ b/src/core/Elsa.Abstractions/Converters/TypeConverter.cs @@ -1,5 +1,4 @@ using System; -using Elsa.Serialization; using Newtonsoft.Json; using Rebus.Extensions; diff --git a/src/core/Elsa.Abstractions/Elsa.Abstractions.csproj.DotSettings b/src/core/Elsa.Abstractions/Elsa.Abstractions.csproj.DotSettings index 17962b139..3cd9e9581 100644 --- a/src/core/Elsa.Abstractions/Elsa.Abstractions.csproj.DotSettings +++ b/src/core/Elsa.Abstractions/Elsa.Abstractions.csproj.DotSettings @@ -1,2 +1,3 @@  - True \ No newline at end of file + True + True \ No newline at end of file diff --git a/src/core/Elsa.Abstractions/Extensions/WorkflowBlueprintExtensions.cs b/src/core/Elsa.Abstractions/Extensions/WorkflowBlueprintExtensions.cs new file mode 100644 index 000000000..eb889ee38 --- /dev/null +++ b/src/core/Elsa.Abstractions/Extensions/WorkflowBlueprintExtensions.cs @@ -0,0 +1,40 @@ +using System; +using System.Linq.Expressions; +using System.Threading; +using System.Threading.Tasks; +using Elsa.Services; +using Elsa.Services.Models; + +namespace Elsa +{ + public static class WorkflowBlueprintExtensions + { + public static ValueTask GetActivityPropertyValue( + this IWorkflowBlueprint workflowBlueprint, + string activityId, + Expression> propertyExpression, + ActivityExecutionContext activityExecutionContext, + CancellationToken cancellationToken) where TActivity : IActivity + { + var expression = (MemberExpression)propertyExpression.Body; + string propertyName = expression.Member.Name; + return GetActivityPropertyValue(workflowBlueprint, activityId, propertyName, activityExecutionContext, cancellationToken); + } + + public static async ValueTask GetActivityPropertyValue( + this IWorkflowBlueprint workflowBlueprint, + string activityId, + string propertyName, + ActivityExecutionContext activityExecutionContext, + CancellationToken cancellationToken) + { + var provider = workflowBlueprint.ActivityPropertyProviders.GetProvider(activityId, propertyName); + + if (provider == null) + return default!; + + var value = await provider.GetValueAsync(activityExecutionContext, cancellationToken); + return (T)value!; + } + } +} \ No newline at end of file diff --git a/src/core/Elsa.Abstractions/Extensions/WorkflowExecutionContextExtensions.cs b/src/core/Elsa.Abstractions/Extensions/WorkflowExecutionContextExtensions.cs index 37c22f8d4..3eb12982a 100644 --- a/src/core/Elsa.Abstractions/Extensions/WorkflowExecutionContextExtensions.cs +++ b/src/core/Elsa.Abstractions/Extensions/WorkflowExecutionContextExtensions.cs @@ -6,18 +6,6 @@ namespace Elsa { public static class WorkflowExecutionContextExtensions { - // public static IEnumerable GetStartActivities(this WorkflowExecutionContext workflowExecutionContext) - // { - // var targetActivities = workflowExecutionContext.Connections.Select(x => x.Target.Activity).Distinct().ToLookup(x => x); - // - // var query = - // from activity in workflowExecutionContext.Activities - // where !targetActivities.Contains(activity) - // select activity; - // - // return query; - // } - public static IEnumerable GetInboundConnections(this WorkflowExecutionContext workflowExecutionContext, string activityId) => workflowExecutionContext.WorkflowBlueprint.Connections.Where(x => x.Target.Activity.Id == activityId); diff --git a/src/core/Elsa.Abstractions/Services/Extensions/WorkflowSchedulerExtensions.cs b/src/core/Elsa.Abstractions/Extensions/WorkflowSchedulerExtensions.cs similarity index 100% rename from src/core/Elsa.Abstractions/Services/Extensions/WorkflowSchedulerExtensions.cs rename to src/core/Elsa.Abstractions/Extensions/WorkflowSchedulerExtensions.cs diff --git a/src/core/Elsa.Abstractions/Services/ActivityPropertyProviders.cs b/src/core/Elsa.Abstractions/Services/ActivityPropertyProviders.cs index 9765c58f4..a91d95c13 100644 --- a/src/core/Elsa.Abstractions/Services/ActivityPropertyProviders.cs +++ b/src/core/Elsa.Abstractions/Services/ActivityPropertyProviders.cs @@ -36,14 +36,12 @@ namespace Elsa.Services public IDictionary? GetProviders(string activityId) => _providers.TryGetValue(activityId, out var properties) ? properties : null; - public IActivityPropertyValueProvider? GetProvider(string activityId, string propertyName) - { - if (_providers.TryGetValue(activityId, out var properties)) - if (properties.TryGetValue(propertyName, out var provider)) - return provider; - - return null; - } + public IActivityPropertyValueProvider? GetProvider(string activityId, string propertyName) => + _providers.TryGetValue(activityId, out var properties) + && properties != null + && properties.TryGetValue(propertyName, out var provider) + ? provider + : null; public async ValueTask SetActivityPropertiesAsync( IActivity activity, diff --git a/src/core/Elsa.Abstractions/Services/IWorkflowHost.cs b/src/core/Elsa.Abstractions/Services/IWorkflowHost.cs index 626d47a6e..33b680f14 100644 --- a/src/core/Elsa.Abstractions/Services/IWorkflowHost.cs +++ b/src/core/Elsa.Abstractions/Services/IWorkflowHost.cs @@ -1,10 +1,7 @@ -using System; -using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Elsa.Models; using Elsa.Services.Models; -using Elsa.Triggers; namespace Elsa.Services { diff --git a/src/core/Elsa.Abstractions/Services/Models/WorkflowExecutionContext.cs b/src/core/Elsa.Abstractions/Services/Models/WorkflowExecutionContext.cs index 7855426dc..490579b1e 100644 --- a/src/core/Elsa.Abstractions/Services/Models/WorkflowExecutionContext.cs +++ b/src/core/Elsa.Abstractions/Services/Models/WorkflowExecutionContext.cs @@ -2,7 +2,6 @@ using System; using System.Collections.Generic; using System.Linq; using Elsa.Comparers; -using Elsa.Expressions; using Elsa.Models; using Microsoft.Extensions.Localization; using Newtonsoft.Json.Linq; diff --git a/src/core/Elsa.Abstractions/Triggers/ITriggerProvider.cs b/src/core/Elsa.Abstractions/Triggers/ITriggerProvider.cs index e3c48e028..e3297d3f7 100644 --- a/src/core/Elsa.Abstractions/Triggers/ITriggerProvider.cs +++ b/src/core/Elsa.Abstractions/Triggers/ITriggerProvider.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Threading; -using System.Threading.Tasks; using Elsa.Services.Models; namespace Elsa.Triggers diff --git a/src/core/Elsa.Abstractions/Triggers/IWorkflowSelector.cs b/src/core/Elsa.Abstractions/Triggers/IWorkflowSelector.cs index bc3ea8bff..ca6cf32af 100644 --- a/src/core/Elsa.Abstractions/Triggers/IWorkflowSelector.cs +++ b/src/core/Elsa.Abstractions/Triggers/IWorkflowSelector.cs @@ -1,8 +1,6 @@ using System; using System.Collections.Generic; -using System.Runtime.CompilerServices; using System.Threading; -using Elsa.Services.Models; namespace Elsa.Triggers { diff --git a/src/core/Elsa.Abstractions/Triggers/TriggerProvider.cs b/src/core/Elsa.Abstractions/Triggers/TriggerProvider.cs index 935b977be..7497d5f92 100644 --- a/src/core/Elsa.Abstractions/Triggers/TriggerProvider.cs +++ b/src/core/Elsa.Abstractions/Triggers/TriggerProvider.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Threading; -using System.Threading.Tasks; using Elsa.Services.Models; namespace Elsa.Triggers diff --git a/src/core/Elsa.Core/Activities/ControlFlow/Join/Join.cs b/src/core/Elsa.Core/Activities/ControlFlow/Join/Join.cs index b9e74097c..07adbc490 100644 --- a/src/core/Elsa.Core/Activities/ControlFlow/Join/Join.cs +++ b/src/core/Elsa.Core/Activities/ControlFlow/Join/Join.cs @@ -6,7 +6,6 @@ using Elsa.ActivityResults; using Elsa.Attributes; using Elsa.Design; using Elsa.Events; -using Elsa.Messaging.Domain; using Elsa.Services; using Elsa.Services.Models; using MediatR; diff --git a/src/core/Elsa.Core/Builders/ActivityBuilder.cs b/src/core/Elsa.Core/Builders/ActivityBuilder.cs index 3c385f176..34259692a 100644 --- a/src/core/Elsa.Core/Builders/ActivityBuilder.cs +++ b/src/core/Elsa.Core/Builders/ActivityBuilder.cs @@ -11,18 +11,15 @@ namespace Elsa.Builders { public ActivityBuilder( Type activityType, - Action? setupActivity, IWorkflowBuilder workflowBuilder, IDictionary? propertyValueProviders) { ActivityType = activityType; - SetupActivity = setupActivity; WorkflowBuilder = workflowBuilder; PropertyValueProviders = propertyValueProviders; } public Type ActivityType { get; } - public Action? SetupActivity { get; } public IWorkflowBuilder WorkflowBuilder { get; } public string ActivityId { get; set; } = default!; public string? Name { get; set; } @@ -41,11 +38,6 @@ namespace Elsa.Builders Action? branch = null) where T : class, IActivity => When(OutcomeNames.Done).Then(setup, branch); - public IActivityBuilder Then( - Action setup, - Action? branch = null) - where T : class, IActivity => When(OutcomeNames.Done).Then(setup, branch); - public IActivityBuilder Then(Action? branch = null) where T : class, IActivity => When(OutcomeNames.Done).Then(branch); @@ -64,7 +56,8 @@ namespace Elsa.Builders public Func> BuildActivityAsync() => async (context, cancellationToken) => { - var activity = context.ActivateActivity(context.ActivityBlueprint.Type, SetupActivity); + //var activity = context.ActivateActivity(context.ActivityBlueprint.Type, SetupActivity); + var activity = context.ActivateActivity(context.ActivityBlueprint.Type); activity.Id = ActivityId; activity.Name = Name; activity.Description = Description; diff --git a/src/core/Elsa.Core/Builders/ActivityBuilderExtensions.cs b/src/core/Elsa.Core/Builders/ActivityBuilderExtensions.cs index 660d5f66b..c77cf8651 100644 --- a/src/core/Elsa.Core/Builders/ActivityBuilderExtensions.cs +++ b/src/core/Elsa.Core/Builders/ActivityBuilderExtensions.cs @@ -10,17 +10,17 @@ namespace Elsa.Builders { public static IActivityBuilder Then(this IBuilder builder, Func> activity) => - builder.Then(x => x.Function = RunInline(activity)); + builder.Then(inline => inline.Set(x => x.Function, RunInline(activity))); public static IActivityBuilder Then(this IBuilder builder, Func activity) => - builder.Then(x => x.Function = RunInline(activity)); - + builder.Then(inline => inline.Set(x => x.Function, RunInline(activity))); + public static IActivityBuilder Then(this IBuilder builder, Action activity) => - builder.Then(x => x.Function = RunInline(activity)); - + builder.Then(inline => inline.Set(x => x.Function, RunInline(activity))); + public static IActivityBuilder Then(this IBuilder builder, Action activity) => - builder.Then(x => x.Function = RunInline(activity)); + builder.Then(inline => inline.Set(x => x.Function, RunInline(activity))); private static Func> RunInline( Func> activity) => diff --git a/src/core/Elsa.Core/Builders/OutcomeBuilder.cs b/src/core/Elsa.Core/Builders/OutcomeBuilder.cs index e1b181b21..545a4575a 100644 --- a/src/core/Elsa.Core/Builders/OutcomeBuilder.cs +++ b/src/core/Elsa.Core/Builders/OutcomeBuilder.cs @@ -22,11 +22,6 @@ namespace Elsa.Builders Action? branch = default) where T : class, IActivity => Then(WorkflowBuilder.Add(setup), branch); - public IActivityBuilder Then( - Action setup, - Action? branch = default) - where T : class, IActivity => Then(WorkflowBuilder.Add(setup), branch); - public IActivityBuilder Then(Action? branch = default) where T : class, IActivity => Then(WorkflowBuilder.Add(branch)); diff --git a/src/core/Elsa.Core/Builders/OutcomeBuilderExtensions.cs b/src/core/Elsa.Core/Builders/OutcomeBuilderExtensions.cs index 5469fc613..7d52b9b0d 100644 --- a/src/core/Elsa.Core/Builders/OutcomeBuilderExtensions.cs +++ b/src/core/Elsa.Core/Builders/OutcomeBuilderExtensions.cs @@ -12,27 +12,27 @@ namespace Elsa.Builders this IOutcomeBuilder outcomeBuilder, Func> activity, Action? branch = default) => - outcomeBuilder.Then(x => x.Function = activity, branch); + outcomeBuilder.Then(inline => inline.Set(x => x.Function, activity), branch); public static IActivityBuilder Then( this IOutcomeBuilder outcomeBuilder, Func activity, Action? branch = default) => outcomeBuilder.Then( - x => x.Function = RunInline(activity), + inline => inline.Set(x => x.Function, RunInline(activity)), branch); public static IActivityBuilder Then( this IOutcomeBuilder outcomeBuilder, Action activity, Action? branch = default) => outcomeBuilder.Then( - x => x.Function = RunInline(activity), + inline => inline.Set(x => x.Function, RunInline(activity)), branch); public static IActivityBuilder Then( this IOutcomeBuilder outcomeBuilder, Action activity, Action? branch = default) => outcomeBuilder.Then( - x => x.Function = RunInline(activity), + inline => inline.Set(x => x.Function, RunInline(activity)), branch); private static Func> RunInline( diff --git a/src/core/Elsa.Core/Builders/WorkflowBuilder.cs b/src/core/Elsa.Core/Builders/WorkflowBuilder.cs index 0f0d92383..2fc10f3c6 100644 --- a/src/core/Elsa.Core/Builders/WorkflowBuilder.cs +++ b/src/core/Elsa.Core/Builders/WorkflowBuilder.cs @@ -92,11 +92,10 @@ namespace Elsa.Builders public IActivityBuilder New( Type activityType, - Action? setupActivity = default, Action? branch = default, IDictionary? propertyValueProviders = default) { - var activityBuilder = new ActivityBuilder(activityType, setupActivity, this, propertyValueProviders); + var activityBuilder = new ActivityBuilder(activityType, this, propertyValueProviders); branch?.Invoke(activityBuilder); return activityBuilder; } @@ -105,7 +104,7 @@ namespace Elsa.Builders Action? branch = default, IDictionary? propertyValueProviders = default) where T : class, IActivity => - New(typeof(T), null, branch, propertyValueProviders); + New(typeof(T), branch, propertyValueProviders); public IActivityBuilder New( Action>? setup = default, @@ -121,11 +120,6 @@ namespace Elsa.Builders return New(branch, valueProviders); } - public IActivityBuilder New( - Action? setup, - Action? branch = default) where T : class, IActivity => - New(typeof(T), x => setup?.Invoke((T)x), branch); - public IActivityBuilder StartWith( Action>? setup = default, Action? branch = default) where T : class, IActivity @@ -134,14 +128,6 @@ namespace Elsa.Builders return Add(activityBuilder, branch); } - public IActivityBuilder StartWith( - Action? setup, - Action? branch = default) where T : class, IActivity - { - var activityBuilder = New(setup, branch); - return Add(activityBuilder, branch); - } - public IActivityBuilder StartWith(Action? branch = default) where T : class, IActivity => Add(branch); @@ -154,21 +140,12 @@ namespace Elsa.Builders return Add(activityBuilder, branch); } - public IActivityBuilder Add( - Action setup, - Action? branch = default) - where T : class, IActivity - { - var activityBuilder = New(setup, branch); - return Add(activityBuilder, branch); - } - public IActivityBuilder Add( Action? branch = default, IDictionary? propertyValueProviders = default) where T : class, IActivity { - var activityBuilder = new ActivityBuilder(typeof(T), null, this, propertyValueProviders); + var activityBuilder = new ActivityBuilder(typeof(T), this, propertyValueProviders); return Add(activityBuilder); } @@ -196,11 +173,6 @@ namespace Elsa.Builders Action? branch = default) where T : class, IActivity => StartWith(setup, branch); - public IActivityBuilder Then( - Action? setup = default, - Action? branch = default) - where T : class, IActivity => StartWith(setup, branch); - public IActivityBuilder Then(Action? branch = default) where T : class, IActivity => StartWith(branch); diff --git a/src/core/Elsa.Core/Builders/WorkflowBuilderExtensions.cs b/src/core/Elsa.Core/Builders/WorkflowBuilderExtensions.cs index 26c1fc2ba..178350f73 100644 --- a/src/core/Elsa.Core/Builders/WorkflowBuilderExtensions.cs +++ b/src/core/Elsa.Core/Builders/WorkflowBuilderExtensions.cs @@ -9,21 +9,21 @@ namespace Elsa.Builders public static class WorkflowBuilderExtensions { public static IActivityBuilder StartWith(this IWorkflowBuilder builder, Action action) => - builder.StartWith(x => x.Function = RunInline(action)); + builder.StartWith(inline => inline.Set(x => x.Function, RunInline(action))); public static IActivityBuilder StartWith(this IWorkflowBuilder builder, Action action) => - builder.StartWith(x => x.Function = RunInline(action)); + builder.StartWith(inline => inline.Set(x => x.Function, RunInline(action))); public static IActivityBuilder StartWith( this IWorkflowBuilder builder, Func action) => - builder.StartWith(x => x.Function = RunInline(action)); + builder.StartWith(inline => inline.Set(x => x.Function, RunInline(action))); public static IActivityBuilder StartWith( this IWorkflowBuilder builder, Func> action) => - builder.StartWith(x => x.Function = RunInline(action)); + builder.StartWith(inline => inline.Set(x => x.Function, RunInline(action))); public static IActivityBuilder SetVariable(this IWorkflowBuilder builder, string variableName, object? value) => builder.StartWith( diff --git a/src/core/Elsa.Core/Data/Services/DataMigrationsRunner.cs b/src/core/Elsa.Core/Data/Services/DataMigrationsRunner.cs index 9066cd947..f23ab8f2c 100644 --- a/src/core/Elsa.Core/Data/Services/DataMigrationsRunner.cs +++ b/src/core/Elsa.Core/Data/Services/DataMigrationsRunner.cs @@ -1,6 +1,5 @@ using System.Threading; using System.Threading.Tasks; -using Elsa.Runtime; using Elsa.Services; namespace Elsa.Data.Services diff --git a/src/core/Elsa.Core/Data/Services/DatabaseInitializer.cs b/src/core/Elsa.Core/Data/Services/DatabaseInitializer.cs index 497a4c176..05c25ebfd 100644 --- a/src/core/Elsa.Core/Data/Services/DatabaseInitializer.cs +++ b/src/core/Elsa.Core/Data/Services/DatabaseInitializer.cs @@ -1,6 +1,5 @@ using System.Threading; using System.Threading.Tasks; -using Elsa.Runtime; using Elsa.Services; using YesSql; diff --git a/src/core/Elsa.Core/Extensions/ElsaServiceCollectionExtensions.cs b/src/core/Elsa.Core/Extensions/ElsaServiceCollectionExtensions.cs index 22f1c9fa1..2580afc28 100644 --- a/src/core/Elsa.Core/Extensions/ElsaServiceCollectionExtensions.cs +++ b/src/core/Elsa.Core/Extensions/ElsaServiceCollectionExtensions.cs @@ -12,7 +12,6 @@ using Elsa.Expressions; using Elsa.Indexes; using Elsa.Messages; using Elsa.Messaging; -using Elsa.Messaging.Distributed; using Elsa.Messaging.Distributed.Handlers; using Elsa.Metadata; using Elsa.Metadata.Handlers; diff --git a/src/core/Elsa.Core/Metadata/Handlers/WorkflowExpressionOptionsProvider.cs b/src/core/Elsa.Core/Metadata/Handlers/WorkflowExpressionOptionsProvider.cs index 829f6cb6e..d2778df64 100644 --- a/src/core/Elsa.Core/Metadata/Handlers/WorkflowExpressionOptionsProvider.cs +++ b/src/core/Elsa.Core/Metadata/Handlers/WorkflowExpressionOptionsProvider.cs @@ -1,7 +1,6 @@ using System.Linq; using System.Reflection; using Elsa.Expressions; -using Elsa.Serialization; using Newtonsoft.Json.Linq; using Rebus.Extensions; diff --git a/src/core/Elsa.Core/Services/WorkflowHost.cs b/src/core/Elsa.Core/Services/WorkflowHost.cs index c0db1b264..11ef3d0ec 100644 --- a/src/core/Elsa.Core/Services/WorkflowHost.cs +++ b/src/core/Elsa.Core/Services/WorkflowHost.cs @@ -1,21 +1,17 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; using Elsa.ActivityResults; using Elsa.Events; using Elsa.Exceptions; -using Elsa.Expressions; -using Elsa.Messaging.Domain; using Elsa.Models; using Elsa.Services.Models; using Elsa.Triggers; using MediatR; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -using Open.Linq.AsyncExtensions; namespace Elsa.Services { diff --git a/src/core/Elsa.Core/Services/WorkflowScheduler.cs b/src/core/Elsa.Core/Services/WorkflowScheduler.cs index d45377e07..7894c1e1a 100644 --- a/src/core/Elsa.Core/Services/WorkflowScheduler.cs +++ b/src/core/Elsa.Core/Services/WorkflowScheduler.cs @@ -9,8 +9,6 @@ using Elsa.Exceptions; using Elsa.Extensions; using Elsa.Indexes; using Elsa.Messages; -using Elsa.Messaging.Distributed; -using Elsa.Messaging.Domain; using Elsa.Models; using Elsa.Queries; using Elsa.Services.Models; diff --git a/src/core/Elsa.Core/StartupTasks/ResumeRunningWorkflowsTask.cs b/src/core/Elsa.Core/StartupTasks/ResumeRunningWorkflowsTask.cs index 91ade1ac0..86ae32479 100644 --- a/src/core/Elsa.Core/StartupTasks/ResumeRunningWorkflowsTask.cs +++ b/src/core/Elsa.Core/StartupTasks/ResumeRunningWorkflowsTask.cs @@ -3,7 +3,6 @@ using System.Threading.Tasks; using Elsa.DistributedLock; using Elsa.Models; using Elsa.Queries; -using Elsa.Runtime; using Elsa.Services; namespace Elsa.StartupTasks diff --git a/src/core/Elsa.Core/StartupTasks/StartServiceBusTask.cs b/src/core/Elsa.Core/StartupTasks/StartServiceBusTask.cs index 989cde899..0c7b7610e 100644 --- a/src/core/Elsa.Core/StartupTasks/StartServiceBusTask.cs +++ b/src/core/Elsa.Core/StartupTasks/StartServiceBusTask.cs @@ -1,8 +1,6 @@ using System.Threading; using System.Threading.Tasks; using Elsa.Messages; -using Elsa.Messaging.Distributed; -using Elsa.Runtime; using Elsa.Services; using Rebus.Bus; diff --git a/src/core/Elsa.Core/Triggers/WorkflowSelector.cs b/src/core/Elsa.Core/Triggers/WorkflowSelector.cs index 5d68fd56e..1a624d890 100644 --- a/src/core/Elsa.Core/Triggers/WorkflowSelector.cs +++ b/src/core/Elsa.Core/Triggers/WorkflowSelector.cs @@ -5,7 +5,6 @@ using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; using Elsa.Services; -using Elsa.Services.Models; using Open.Linq.AsyncExtensions; namespace Elsa.Triggers diff --git a/src/samples/Elsa.Samples.HelloWorldConsole/Program.cs b/src/samples/Elsa.Samples.HelloWorldConsole/Program.cs index 758858b64..a1b3b18a8 100644 --- a/src/samples/Elsa.Samples.HelloWorldConsole/Program.cs +++ b/src/samples/Elsa.Samples.HelloWorldConsole/Program.cs @@ -2,7 +2,6 @@ using System.Threading.Tasks; using Elsa.Activities.Console; using Elsa.Builders; -using Elsa.Runtime; using Elsa.Services; using Microsoft.Extensions.DependencyInjection; diff --git a/src/samples/Elsa.Samples.HelloWorldHttp/elsa.db b/src/samples/Elsa.Samples.HelloWorldHttp/elsa.db index adc58a02bc6c858dd6406dc8e87d9583851abef0..03cf2c6e9c3408839177dea1574391bb298fdbd4 100644 GIT binary patch delta 598 zcmZwEzfTlF6bJC#ogHzHWXGd3Xduu~o%3sVW|q>z7#j=z0B2@rnzj&Tz@(o5?HYGw;2%Gq83BHfF=t=9A}PYyZve zyA*}h8Ndf&cYQ8_{&@S@RBz#Bxlm;OVSjPnQiscm5JQ#a zSSjO(Dy1!z6AJTO`d9tO@!JoptNvqO%!n02iVWAMBXTaJlKxx&y}$VM!p{r}e>zyI zt@zf8$1FawG@;JQ+z2NH$JlAhGNUy!u3}VYcCy7(ZRJXGF~I`278tYG$Wpwtr6jyE zMsr7{(n?#YTxE4dOUWi!ToqZ~5nM7t^ZVB4sIi_V(U?U?7S0)QBs009lw;0~u879X zL)H+=s{gEZJ;P>z1!bL#VukOuH9YDq$0?0S2*Pq;CcR3&{Wr$+Hm