diff --git a/Directory.Packages.props b/Directory.Packages.props index 711b1cdf2..560465af2 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -44,7 +44,7 @@ - + diff --git a/src/modules/Elsa.JavaScript/Handlers/ConfigureEngineWithCommonTypes.cs b/src/modules/Elsa.JavaScript/Handlers/ConfigureEngineWithCommonTypes.cs index 3443dcb60..3a695f5ec 100644 --- a/src/modules/Elsa.JavaScript/Handlers/ConfigureEngineWithCommonTypes.cs +++ b/src/modules/Elsa.JavaScript/Handlers/ConfigureEngineWithCommonTypes.cs @@ -19,6 +19,7 @@ public class ConfigureEngineWithCommonTypes : INotificationHandler(); engine.RegisterType(); engine.RegisterType(); + engine.RegisterType(); return Task.CompletedTask; } diff --git a/src/modules/Elsa.JavaScript/Providers/InputFunctionsDefinitionProvider.cs b/src/modules/Elsa.JavaScript/Providers/InputFunctionsDefinitionProvider.cs index 67f66978e..cee375298 100644 --- a/src/modules/Elsa.JavaScript/Providers/InputFunctionsDefinitionProvider.cs +++ b/src/modules/Elsa.JavaScript/Providers/InputFunctionsDefinitionProvider.cs @@ -2,6 +2,7 @@ using Elsa.JavaScript.Contracts; using Elsa.JavaScript.TypeDefinitions.Abstractions; using Elsa.JavaScript.TypeDefinitions.Models; using Elsa.Workflows.Activities; +using Elsa.Workflows.Management; using Humanizer; using JetBrains.Annotations; @@ -9,8 +10,7 @@ namespace Elsa.JavaScript.Providers; /// Produces s for common functions. [UsedImplicitly] -internal class InputFunctionsDefinitionProvider(ITypeAliasRegistry typeAliasRegistry, IWorkflowDefinitionService workflowDefinitionService) - : FunctionDefinitionProvider +internal class InputFunctionsDefinitionProvider(ITypeAliasRegistry typeAliasRegistry) : FunctionDefinitionProvider { protected override ValueTask> GetFunctionDefinitionsAsync(TypeDefinitionContext context) { diff --git a/src/modules/Elsa.JavaScript/Services/JintJavaScriptEvaluator.cs b/src/modules/Elsa.JavaScript/Services/JintJavaScriptEvaluator.cs index 36a7ac604..cece9a3a2 100644 --- a/src/modules/Elsa.JavaScript/Services/JintJavaScriptEvaluator.cs +++ b/src/modules/Elsa.JavaScript/Services/JintJavaScriptEvaluator.cs @@ -1,5 +1,7 @@ +using System.Diagnostics.CodeAnalysis; using System.Security.Cryptography; using System.Text; +using Acornima.Ast; using Elsa.Expressions.Helpers; using Elsa.Expressions.Models; using Elsa.JavaScript.Contracts; @@ -8,7 +10,6 @@ using Elsa.JavaScript.Notifications; using Elsa.JavaScript.ObjectConverters; using Elsa.JavaScript.Options; using Elsa.Mediator.Contracts; -using Esprima.Ast; using Jint; using Jint.Runtime.Interop; using Microsoft.Extensions.Caching.Memory; @@ -46,18 +47,13 @@ public class JintJavaScriptEvaluator(IConfiguration configuration, INotification options ??= new ExpressionEvaluatorOptions(); var engineOptions = new Jint.Options(); - ; if (_jintOptions.AllowClrAccess) engineOptions.AllowClr(); - // Wrap objects in ObjectWrapper instances and set their prototype to Array.prototype if they are array-like. - engineOptions.SetWrapObjectHandler((engine, target, type) => - { - ConfigureClrAccess(opts); - ConfigureObjectWrapper(opts); - ConfigureObjectConverters(opts); - }); + ConfigureClrAccess(engineOptions); + ConfigureObjectWrapper(engineOptions); + ConfigureObjectConverters(engineOptions); engineOptions.Interop.ObjectConverters.Add(new ByteArrayConverter()); diff --git a/src/modules/Elsa.JavaScript/TypeDefinitions/Providers/CommonTypesDefinitionProvider.cs b/src/modules/Elsa.JavaScript/TypeDefinitions/Providers/CommonTypesDefinitionProvider.cs index af218a03b..33df93bb5 100644 --- a/src/modules/Elsa.JavaScript/TypeDefinitions/Providers/CommonTypesDefinitionProvider.cs +++ b/src/modules/Elsa.JavaScript/TypeDefinitions/Providers/CommonTypesDefinitionProvider.cs @@ -12,8 +12,8 @@ internal class CommonTypeDefinitionProvider(ITypeDescriber typeDescriber) : Type { protected override IEnumerable GetTypeDefinitions(TypeDefinitionContext context) { - yield return _typeDescriber.DescribeType(typeof(Guid)); - yield return _typeDescriber.DescribeType(typeof(JsonObject)); - yield return _typeDescriber.DescribeType(typeof(Random)); + yield return typeDescriber.DescribeType(typeof(Guid)); + yield return typeDescriber.DescribeType(typeof(JsonObject)); + yield return typeDescriber.DescribeType(typeof(Random)); } } \ No newline at end of file diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/ActivityDescriptors/List/Endpoint.cs b/src/modules/Elsa.Workflows.Api/Endpoints/ActivityDescriptors/List/Endpoint.cs index 42059bfc7..7d5423695 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/ActivityDescriptors/List/Endpoint.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/ActivityDescriptors/List/Endpoint.cs @@ -1,13 +1,12 @@ using Elsa.Abstractions; using Elsa.Workflows.Contracts; -using Elsa.Workflows.Management.Activities.WorkflowDefinitionActivity; -using Elsa.Workflows.Management.Contracts; +using Elsa.Workflows.Management; using JetBrains.Annotations; namespace Elsa.Workflows.Api.Endpoints.ActivityDescriptors.List; [PublicAPI] -internal class List(IActivityRegistry registry, IActivityRegistryPopulator registryPopulator, WorkflowDefinitionActivityProvider workflowDefinitionActivityProvider) : ElsaEndpointWithoutRequest +internal class List(IActivityRegistry registry, IActivityRegistryPopulator registryPopulator) : ElsaEndpointWithoutRequest { public override void Configure() { diff --git a/src/modules/Elsa.Workflows.Runtime/Services/TaskReporter.cs b/src/modules/Elsa.Workflows.Runtime/Services/TaskReporter.cs index 90ae08266..ac7f07cf7 100644 --- a/src/modules/Elsa.Workflows.Runtime/Services/TaskReporter.cs +++ b/src/modules/Elsa.Workflows.Runtime/Services/TaskReporter.cs @@ -1,25 +1,36 @@ +using Elsa.Workflows.Contracts; +using Elsa.Workflows.Helpers; using Elsa.Workflows.Runtime.Activities; +using Elsa.Workflows.Runtime.Options; using Elsa.Workflows.Runtime.Stimuli; namespace Elsa.Workflows.Runtime; /// -public class TaskReporter(IStimulusSender stimulusSender) : ITaskReporter +public class TaskReporter(IBookmarkQueue stimulusSender, IStimulusHasher stimulusHasher) : ITaskReporter { + private static readonly string ActivityTypeName = ActivityTypeNameHelper.GenerateTypeName(); + /// public async Task ReportCompletionAsync(string taskId, object? result = default, CancellationToken cancellationToken = default) { - var bookmarkPayload = new RunTaskStimulus(taskId, default!); + var stimulus = new RunTaskStimulus(taskId, default!); var input = new Dictionary { [RunTask.InputKey] = result! }; - var sender = new StimulusMetadata + var bookmarkQueueItem = new NewBookmarkQueueItem { - Input = input, + ActivityTypeName = ActivityTypeName, + StimulusHash = stimulusHasher.Hash(ActivityTypeName, stimulus), + Options = new ResumeBookmarkOptions + { + Input = input + } }; - await stimulusSender.SendAsync(bookmarkPayload, sender, cancellationToken: cancellationToken); + + await stimulusSender.EnqueueAsync(bookmarkQueueItem, cancellationToken); } } \ No newline at end of file