Update ReceiveHttpRequest using new trigger API
This commit is contained in:
parent
f4cad1c5c8
commit
72caccb6a6
|
|
@ -13,10 +13,6 @@ namespace Elsa.Activities.Http
|
|||
this IBuilder builder,
|
||||
Action<ISetupActivity<ReceiveHttpRequest>> setup) => builder.Then(setup);
|
||||
|
||||
public static IActivityBuilder ReceiveHttpRequest(
|
||||
this IBuilder builder,
|
||||
Action<ReceiveHttpRequest> setup) => builder.Then(setup);
|
||||
|
||||
public static IActivityBuilder ReceiveHttpRequest(this IBuilder builder,
|
||||
Func<ActivityExecutionContext, ValueTask<PathString>> 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));
|
||||
}
|
||||
}
|
||||
|
|
@ -10,7 +10,7 @@ namespace Microsoft.AspNetCore.Builder
|
|||
public static IApplicationBuilder UseHttpActivities(this IApplicationBuilder app)
|
||||
{
|
||||
return app
|
||||
.UseRequestHandler<TriggerRequestHandler>()
|
||||
.UseMiddleware<ReceiveHttpRequestMiddleware>()
|
||||
.UseRequestHandler<SignalRequestHandler>("/workflows/signal");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -48,7 +48,6 @@ namespace Microsoft.Extensions.DependencyInjection
|
|||
.AddDataProtection();
|
||||
|
||||
return services
|
||||
.AddRequestHandler<TriggerRequestHandler>()
|
||||
.AddRequestHandler<SignalRequestHandler>();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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<ReceiveHttpRequestTrigger>(
|
||||
x => x.Path == path && x.Method == null || x.Method == method,
|
||||
|
|
|
|||
|
|
@ -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<IRequestHandlerResult> 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<ReceiveHttpRequest>(_cancellationToken);
|
||||
|
||||
var workflowsToStart = httpWorkflows;
|
||||
|
||||
var workflowsToResume =
|
||||
await _workflowInstanceManager
|
||||
.Query<WorkflowInstanceByReceiveHttpRequestIndex>(
|
||||
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<string>(nameof(ReceiveHttpRequest.Path)) == requestPath
|
||||
where activity.Data.Value<string>(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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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<ReceiveHttpRequest, PathString>(activity.Id, x => x.Path, activityExecutionContext, cancellationToken),
|
||||
Method = await workflowBlueprint.GetActivityPropertyValue<ReceiveHttpRequest, string?>(activity.Id, x => x.Method, activityExecutionContext, cancellationToken)
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ namespace Elsa.Builders
|
|||
public interface IBuilder
|
||||
{
|
||||
IActivityBuilder Then<T>(Action<ISetupActivity<T>>? setup, Action<IActivityBuilder>? branch = default) where T : class, IActivity;
|
||||
IActivityBuilder Then<T>(Action<T> setup, Action<IActivityBuilder>? branch = default) where T : class, IActivity;
|
||||
IActivityBuilder Then<T>(Action<IActivityBuilder>? branch = default) where T : class, IActivity;
|
||||
}
|
||||
}
|
||||
|
|
@ -42,17 +42,10 @@ namespace Elsa.Builders
|
|||
IActivityBuilder StartWith<T>(Action<IActivityBuilder>? branch = default)
|
||||
where T : class, IActivity;
|
||||
|
||||
IActivityBuilder StartWith<T>(Action<T> setup, Action<IActivityBuilder>? branch = default)
|
||||
where T : class, IActivity;
|
||||
|
||||
IActivityBuilder Add<T>(
|
||||
Action<ISetupActivity<T>>? setup = default,
|
||||
Action<IActivityBuilder>? branch = default) where T : class, IActivity;
|
||||
|
||||
IActivityBuilder Add<T>(
|
||||
Action<T> setup,
|
||||
Action<IActivityBuilder>? branch = default) where T : class, IActivity;
|
||||
|
||||
IActivityBuilder Add<T>(
|
||||
Action<IActivityBuilder>? branch = default,
|
||||
IDictionary<string, IActivityPropertyValueProvider>? propertyValueProviders = default)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
using System;
|
||||
using Elsa.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
using Rebus.Extensions;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,2 +1,3 @@
|
|||
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=extensions/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
|
||||
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=extensions/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=services_005Cextensions/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
|
||||
|
|
@ -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<T> GetActivityPropertyValue<TActivity, T>(
|
||||
this IWorkflowBlueprint workflowBlueprint,
|
||||
string activityId,
|
||||
Expression<Func<TActivity, T>> propertyExpression,
|
||||
ActivityExecutionContext activityExecutionContext,
|
||||
CancellationToken cancellationToken) where TActivity : IActivity
|
||||
{
|
||||
var expression = (MemberExpression)propertyExpression.Body;
|
||||
string propertyName = expression.Member.Name;
|
||||
return GetActivityPropertyValue<T>(workflowBlueprint, activityId, propertyName, activityExecutionContext, cancellationToken);
|
||||
}
|
||||
|
||||
public static async ValueTask<T> GetActivityPropertyValue<T>(
|
||||
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!;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -6,18 +6,6 @@ namespace Elsa
|
|||
{
|
||||
public static class WorkflowExecutionContextExtensions
|
||||
{
|
||||
// public static IEnumerable<IActivity> 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<IConnection>
|
||||
GetInboundConnections(this WorkflowExecutionContext workflowExecutionContext, string activityId) =>
|
||||
workflowExecutionContext.WorkflowBlueprint.Connections.Where(x => x.Target.Activity.Id == activityId);
|
||||
|
|
|
|||
|
|
@ -36,14 +36,12 @@ namespace Elsa.Services
|
|||
public IDictionary<string, IActivityPropertyValueProvider>? 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,
|
||||
|
|
|
|||
|
|
@ -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
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Elsa.Services.Models;
|
||||
|
||||
namespace Elsa.Triggers
|
||||
|
|
|
|||
|
|
@ -1,8 +1,6 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Threading;
|
||||
using Elsa.Services.Models;
|
||||
|
||||
namespace Elsa.Triggers
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Elsa.Services.Models;
|
||||
|
||||
namespace Elsa.Triggers
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -11,18 +11,15 @@ namespace Elsa.Builders
|
|||
{
|
||||
public ActivityBuilder(
|
||||
Type activityType,
|
||||
Action<IActivity>? setupActivity,
|
||||
IWorkflowBuilder workflowBuilder,
|
||||
IDictionary<string, IActivityPropertyValueProvider>? propertyValueProviders)
|
||||
{
|
||||
ActivityType = activityType;
|
||||
SetupActivity = setupActivity;
|
||||
WorkflowBuilder = workflowBuilder;
|
||||
PropertyValueProviders = propertyValueProviders;
|
||||
}
|
||||
|
||||
public Type ActivityType { get; }
|
||||
public Action<IActivity>? 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<IActivityBuilder>? branch = null)
|
||||
where T : class, IActivity => When(OutcomeNames.Done).Then(setup, branch);
|
||||
|
||||
public IActivityBuilder Then<T>(
|
||||
Action<T> setup,
|
||||
Action<IActivityBuilder>? branch = null)
|
||||
where T : class, IActivity => When(OutcomeNames.Done).Then(setup, branch);
|
||||
|
||||
public IActivityBuilder Then<T>(Action<IActivityBuilder>? branch = null)
|
||||
where T : class, IActivity => When(OutcomeNames.Done).Then<T>(branch);
|
||||
|
||||
|
|
@ -64,7 +56,8 @@ namespace Elsa.Builders
|
|||
public Func<ActivityExecutionContext, CancellationToken, ValueTask<IActivity>> 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;
|
||||
|
|
|
|||
|
|
@ -10,17 +10,17 @@ namespace Elsa.Builders
|
|||
{
|
||||
public static IActivityBuilder Then(this IBuilder builder,
|
||||
Func<ActivityExecutionContext, ValueTask<IActivityExecutionResult>> activity) =>
|
||||
builder.Then<Inline>(x => x.Function = RunInline(activity));
|
||||
builder.Then<Inline>(inline => inline.Set(x => x.Function, RunInline(activity)));
|
||||
|
||||
public static IActivityBuilder
|
||||
Then(this IBuilder builder, Func<ActivityExecutionContext, ValueTask> activity) =>
|
||||
builder.Then<Inline>(x => x.Function = RunInline(activity));
|
||||
|
||||
builder.Then<Inline>(inline => inline.Set(x => x.Function, RunInline(activity)));
|
||||
|
||||
public static IActivityBuilder Then(this IBuilder builder, Action<ActivityExecutionContext> activity) =>
|
||||
builder.Then<Inline>(x => x.Function = RunInline(activity));
|
||||
|
||||
builder.Then<Inline>(inline => inline.Set(x => x.Function, RunInline(activity)));
|
||||
|
||||
public static IActivityBuilder Then(this IBuilder builder, Action activity) =>
|
||||
builder.Then<Inline>(x => x.Function = RunInline(activity));
|
||||
builder.Then<Inline>(inline => inline.Set(x => x.Function, RunInline(activity)));
|
||||
|
||||
private static Func<ActivityExecutionContext, ValueTask<IActivityExecutionResult>> RunInline(
|
||||
Func<ActivityExecutionContext, ValueTask<IActivityExecutionResult>> activity) =>
|
||||
|
|
|
|||
|
|
@ -22,11 +22,6 @@ namespace Elsa.Builders
|
|||
Action<IActivityBuilder>? branch = default) where T : class, IActivity =>
|
||||
Then(WorkflowBuilder.Add(setup), branch);
|
||||
|
||||
public IActivityBuilder Then<T>(
|
||||
Action<T> setup,
|
||||
Action<IActivityBuilder>? branch = default)
|
||||
where T : class, IActivity => Then(WorkflowBuilder.Add(setup), branch);
|
||||
|
||||
public IActivityBuilder Then<T>(Action<IActivityBuilder>? branch = default)
|
||||
where T : class, IActivity => Then(WorkflowBuilder.Add<T>(branch));
|
||||
|
||||
|
|
|
|||
|
|
@ -12,27 +12,27 @@ namespace Elsa.Builders
|
|||
this IOutcomeBuilder outcomeBuilder,
|
||||
Func<ActivityExecutionContext, ValueTask<IActivityExecutionResult>> activity,
|
||||
Action<IActivityBuilder>? branch = default) =>
|
||||
outcomeBuilder.Then<Inline>(x => x.Function = activity, branch);
|
||||
outcomeBuilder.Then<Inline>(inline => inline.Set(x => x.Function, activity), branch);
|
||||
|
||||
public static IActivityBuilder Then(
|
||||
this IOutcomeBuilder outcomeBuilder,
|
||||
Func<ActivityExecutionContext, ValueTask> activity,
|
||||
Action<IActivityBuilder>? branch = default) => outcomeBuilder.Then<Inline>(
|
||||
x => x.Function = RunInline(activity),
|
||||
inline => inline.Set(x => x.Function, RunInline(activity)),
|
||||
branch);
|
||||
|
||||
public static IActivityBuilder Then(
|
||||
this IOutcomeBuilder outcomeBuilder,
|
||||
Action<ActivityExecutionContext> activity,
|
||||
Action<IActivityBuilder>? branch = default) => outcomeBuilder.Then<Inline>(
|
||||
x => x.Function = RunInline(activity),
|
||||
inline => inline.Set(x => x.Function, RunInline(activity)),
|
||||
branch);
|
||||
|
||||
public static IActivityBuilder Then(
|
||||
this IOutcomeBuilder outcomeBuilder,
|
||||
Action activity,
|
||||
Action<IActivityBuilder>? branch = default) => outcomeBuilder.Then<Inline>(
|
||||
x => x.Function = RunInline(activity),
|
||||
inline => inline.Set(x => x.Function, RunInline(activity)),
|
||||
branch);
|
||||
|
||||
private static Func<ActivityExecutionContext, ValueTask<IActivityExecutionResult>> RunInline(
|
||||
|
|
|
|||
|
|
@ -92,11 +92,10 @@ namespace Elsa.Builders
|
|||
|
||||
public IActivityBuilder New(
|
||||
Type activityType,
|
||||
Action<IActivity>? setupActivity = default,
|
||||
Action<IActivityBuilder>? branch = default,
|
||||
IDictionary<string, IActivityPropertyValueProvider>? 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<IActivityBuilder>? branch = default,
|
||||
IDictionary<string, IActivityPropertyValueProvider>? propertyValueProviders = default)
|
||||
where T : class, IActivity =>
|
||||
New(typeof(T), null, branch, propertyValueProviders);
|
||||
New(typeof(T), branch, propertyValueProviders);
|
||||
|
||||
public IActivityBuilder New<T>(
|
||||
Action<ISetupActivity<T>>? setup = default,
|
||||
|
|
@ -121,11 +120,6 @@ namespace Elsa.Builders
|
|||
return New<T>(branch, valueProviders);
|
||||
}
|
||||
|
||||
public IActivityBuilder New<T>(
|
||||
Action<T>? setup,
|
||||
Action<IActivityBuilder>? branch = default) where T : class, IActivity =>
|
||||
New(typeof(T), x => setup?.Invoke((T)x), branch);
|
||||
|
||||
public IActivityBuilder StartWith<T>(
|
||||
Action<ISetupActivity<T>>? setup = default,
|
||||
Action<IActivityBuilder>? branch = default) where T : class, IActivity
|
||||
|
|
@ -134,14 +128,6 @@ namespace Elsa.Builders
|
|||
return Add(activityBuilder, branch);
|
||||
}
|
||||
|
||||
public IActivityBuilder StartWith<T>(
|
||||
Action<T>? setup,
|
||||
Action<IActivityBuilder>? branch = default) where T : class, IActivity
|
||||
{
|
||||
var activityBuilder = New(setup, branch);
|
||||
return Add(activityBuilder, branch);
|
||||
}
|
||||
|
||||
public IActivityBuilder StartWith<T>(Action<IActivityBuilder>? branch = default)
|
||||
where T : class, IActivity =>
|
||||
Add<T>(branch);
|
||||
|
|
@ -154,21 +140,12 @@ namespace Elsa.Builders
|
|||
return Add(activityBuilder, branch);
|
||||
}
|
||||
|
||||
public IActivityBuilder Add<T>(
|
||||
Action<T> setup,
|
||||
Action<IActivityBuilder>? branch = default)
|
||||
where T : class, IActivity
|
||||
{
|
||||
var activityBuilder = New(setup, branch);
|
||||
return Add(activityBuilder, branch);
|
||||
}
|
||||
|
||||
public IActivityBuilder Add<T>(
|
||||
Action<IActivityBuilder>? branch = default,
|
||||
IDictionary<string, IActivityPropertyValueProvider>? 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<IActivityBuilder>? branch = default)
|
||||
where T : class, IActivity => StartWith(setup, branch);
|
||||
|
||||
public IActivityBuilder Then<T>(
|
||||
Action<T>? setup = default,
|
||||
Action<IActivityBuilder>? branch = default)
|
||||
where T : class, IActivity => StartWith(setup, branch);
|
||||
|
||||
public IActivityBuilder Then<T>(Action<IActivityBuilder>? branch = default)
|
||||
where T : class, IActivity => StartWith<T>(branch);
|
||||
|
||||
|
|
|
|||
|
|
@ -9,21 +9,21 @@ namespace Elsa.Builders
|
|||
public static class WorkflowBuilderExtensions
|
||||
{
|
||||
public static IActivityBuilder StartWith(this IWorkflowBuilder builder, Action action) =>
|
||||
builder.StartWith<Inline>(x => x.Function = RunInline(action));
|
||||
builder.StartWith<Inline>(inline => inline.Set(x => x.Function, RunInline(action)));
|
||||
|
||||
public static IActivityBuilder
|
||||
StartWith(this IWorkflowBuilder builder, Action<ActivityExecutionContext> action) =>
|
||||
builder.StartWith<Inline>(x => x.Function = RunInline(action));
|
||||
builder.StartWith<Inline>(inline => inline.Set(x => x.Function, RunInline(action)));
|
||||
|
||||
public static IActivityBuilder StartWith(
|
||||
this IWorkflowBuilder builder,
|
||||
Func<ActivityExecutionContext, ValueTask> action) =>
|
||||
builder.StartWith<Inline>(x => x.Function = RunInline(action));
|
||||
builder.StartWith<Inline>(inline => inline.Set(x => x.Function, RunInline(action)));
|
||||
|
||||
public static IActivityBuilder StartWith(
|
||||
this IWorkflowBuilder builder,
|
||||
Func<ActivityExecutionContext, ValueTask<IActivityExecutionResult>> action) =>
|
||||
builder.StartWith<Inline>(x => x.Function = RunInline(action));
|
||||
builder.StartWith<Inline>(inline => inline.Set(x => x.Function, RunInline(action)));
|
||||
|
||||
public static IActivityBuilder SetVariable(this IWorkflowBuilder builder, string variableName, object? value) =>
|
||||
builder.StartWith<SetVariable>(
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Elsa.Runtime;
|
||||
using Elsa.Services;
|
||||
|
||||
namespace Elsa.Data.Services
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Elsa.Runtime;
|
||||
using Elsa.Services;
|
||||
using YesSql;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using Elsa.Expressions;
|
||||
using Elsa.Serialization;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using Rebus.Extensions;
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
Binary file not shown.
Loading…
Reference in a new issue