diff --git a/src/activities/Elsa.Activities.Http/Parsers/FormHttpRequestBodyParser.cs b/src/activities/Elsa.Activities.Http/Parsers/FormHttpRequestBodyParser.cs index 77c912b50..2a119c389 100644 --- a/src/activities/Elsa.Activities.Http/Parsers/FormHttpRequestBodyParser.cs +++ b/src/activities/Elsa.Activities.Http/Parsers/FormHttpRequestBodyParser.cs @@ -13,7 +13,7 @@ namespace Elsa.Activities.Http.Parsers public int Priority => 0; public string?[] SupportedContentTypes => new[] { "application/x-www-form-urlencoded" }; - public async Task ParseAsync(HttpRequest request, Type? targetType = default, CancellationToken cancellationToken = default) + public async Task ParseAsync(HttpRequest request, Type? targetType = default, CancellationToken cancellationToken = default) { var form = await request.ReadFormAsync(cancellationToken); return form.ToDictionary( diff --git a/src/activities/Elsa.Activities.Timers/Triggers/InstantEventTrigger.cs b/src/activities/Elsa.Activities.Timers/Triggers/InstantEventTrigger.cs index e28be22c5..9db76e8da 100644 --- a/src/activities/Elsa.Activities.Timers/Triggers/InstantEventTrigger.cs +++ b/src/activities/Elsa.Activities.Timers/Triggers/InstantEventTrigger.cs @@ -1,9 +1,11 @@ using System.Threading; using System.Threading.Tasks; +using Elsa.Extensions; using Elsa.Indexes; using Elsa.Services; using Elsa.Triggers; using NodaTime; +using Open.Linq.AsyncExtensions; namespace Elsa.Activities.Timers.Triggers { @@ -32,7 +34,7 @@ namespace Elsa.Activities.Timers.Triggers { // Only provide a trigger if the workflow hasn't executed already sometime in the past. var workflowDefinitionId = context.ActivityExecutionContext.WorkflowExecutionContext.WorkflowBlueprint.Id; - var instanceCount = await _workflowInstanceManager.Query(x => x.WorkflowDefinitionId == workflowDefinitionId).CountAsync(); + var instanceCount = await _workflowInstanceManager.ListByDefinitionAsync(workflowDefinitionId, cancellationToken).Count(); var configuredInstant = await context.Activity.GetPropertyValueAsync(x => x.Instant, cancellationToken); var now = _clock.GetCurrentInstant(); diff --git a/src/core/Elsa.Abstractions/Services/IWorkflowInstanceManager.cs b/src/core/Elsa.Abstractions/Services/IWorkflowInstanceManager.cs index fd969d1d5..16d79fa5a 100644 --- a/src/core/Elsa.Abstractions/Services/IWorkflowInstanceManager.cs +++ b/src/core/Elsa.Abstractions/Services/IWorkflowInstanceManager.cs @@ -12,9 +12,7 @@ namespace Elsa.Services { ValueTask SaveAsync(WorkflowInstance workflowInstance, CancellationToken cancellationToken = default); ValueTask DeleteAsync(WorkflowInstance workflowInstance, CancellationToken cancellationToken = default); - IQuery Query(); IQuery Query() where TIndex : class, IIndex; IQuery Query(Expression> predicate) where TIndex : class, IIndex; - IQuery ExecuteQuery(ICompiledQuery query); } } \ No newline at end of file diff --git a/src/core/Elsa.Core/Extensions/WorkflowDefinitionManagerExtensions.cs b/src/core/Elsa.Core/Extensions/WorkflowDefinitionManagerExtensions.cs index afbe63370..516158706 100644 --- a/src/core/Elsa.Core/Extensions/WorkflowDefinitionManagerExtensions.cs +++ b/src/core/Elsa.Core/Extensions/WorkflowDefinitionManagerExtensions.cs @@ -13,21 +13,6 @@ namespace Elsa.Extensions public static IQuery QueryByIdAndVersion(this IWorkflowDefinitionManager manager, string workflowDefinitionId, VersionOptions versionOptions) => manager.Query(x => x.WorkflowDefinitionId == workflowDefinitionId).WithVersion(versionOptions); - public static IQuery QueryByVersionId( - this IWorkflowDefinitionManager manager, - string workflowDefinitionVersionId) => - manager.Query(x => x.WorkflowDefinitionVersionId == workflowDefinitionVersionId); - - public static IQuery QueryByVersion( - this IWorkflowDefinitionManager manager, - VersionOptions versionOptions) => - manager.Query().WithVersion(versionOptions); - - public static IQuery QueryByBlockingActivity( - this IWorkflowInstanceManager manager, - string activityType) => - manager.Query(x => x.ActivityType == activityType); - public static async Task GetAsync( this IWorkflowDefinitionManager manager, string workflowDefinitionId, @@ -35,18 +20,6 @@ namespace Elsa.Extensions CancellationToken cancellationToken = default) => await manager.QueryByIdAndVersion(workflowDefinitionId, versionOptions).FirstOrDefaultAsync(); - public static async Task GetByVersionIdAsync( - this IWorkflowDefinitionManager manager, - string workflowDefinitionVersionId, - CancellationToken cancellationToken = default) => - await manager.QueryByVersionId(workflowDefinitionVersionId).FirstOrDefaultAsync(); - - public static async Task> ListAsync( - this IWorkflowDefinitionManager manager, - VersionOptions versionOptions, - CancellationToken cancellationToken = default) => - await manager.QueryByVersion(versionOptions).ListAsync(); - public static Task> ListByStatusAsync( this IWorkflowInstanceManager manager, WorkflowStatus workflowStatus, @@ -54,16 +27,5 @@ namespace Elsa.Extensions manager .Query(x => x.WorkflowStatus == workflowStatus) .ListAsync(); - - public static async Task> ListByBlockingActivityAsync( - this IWorkflowInstanceManager manager, - string activityType, - CancellationToken cancellationToken = default) => - await manager.QueryByBlockingActivity(activityType).ListAsync(); - - public static async Task> ListByBlockingActivityAsync( - this IWorkflowInstanceManager manager, - CancellationToken cancellationToken = default) => - await manager.ListByBlockingActivityAsync(typeof(TActivity).Name, cancellationToken); } } \ No newline at end of file diff --git a/src/providers/Elsa.DistributedLocking.AzureBlob/AzureBlobLockProvider.cs b/src/providers/Elsa.DistributedLocking.AzureBlob/AzureBlobLockProvider.cs index 099a5dd9c..86469f8cf 100644 --- a/src/providers/Elsa.DistributedLocking.AzureBlob/AzureBlobLockProvider.cs +++ b/src/providers/Elsa.DistributedLocking.AzureBlob/AzureBlobLockProvider.cs @@ -26,10 +26,10 @@ namespace Elsa private readonly List _lockedBlobs = new List(); private readonly string _connectionString; private readonly TimeSpan _leaseTime; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly TimeSpan _renewInterval; - private CloudBlobContainer _cloudBlobContainer; - private Timer _renewTimer; + private CloudBlobContainer? _cloudBlobContainer; + private Timer _renewTimer = default!; public AzureBlobLockProvider( string connectionString, @@ -39,6 +39,7 @@ namespace Elsa { _logger = logger; _connectionString = connectionString; + if (leaseTime >= TimeSpan.FromSeconds(MaxLeaseTime) || leaseTime <= TimeSpan.FromSeconds(MinLeaseTime)) { _logger.LogInformation("Lease time must be between 15 Seconds and 60 seconds, Found {leaseTime.TotalSeconds} seconds. Setting default value of 60 seconds", leaseTime.TotalSeconds); @@ -58,10 +59,7 @@ namespace Elsa _renewInterval = renewInterval; } - public Task AcquireLockAsync(string name, CancellationToken cancellationToken = default) => - name == null - ? throw new ArgumentNullException(nameof(name)) - : CreateLockAsync(name, cancellationToken); + public Task AcquireLockAsync(string name, CancellationToken cancellationToken = default) => CreateLockAsync(name, cancellationToken); private async Task CreateLockAsync(string name, CancellationToken cancellationToken = default) { @@ -161,7 +159,7 @@ namespace Elsa _cloudBlobContainer = blobClient.GetContainerReference(ContainerName); if (!_cloudBlobContainer.Exists()) { - _cloudBlobContainer.CreateIfNotExists(BlobContainerPublicAccessType.Off, (BlobRequestOptions)null, (OperationContext)null); + _cloudBlobContainer.CreateIfNotExists(BlobContainerPublicAccessType.Off); } } } diff --git a/src/samples/Elsa.Samples.ContextualWorkflowHttp/Workflows/DocumentApprovalWorkflow.cs b/src/samples/Elsa.Samples.ContextualWorkflowHttp/Workflows/DocumentApprovalWorkflow.cs index 8561d7a4c..9d6825d72 100644 --- a/src/samples/Elsa.Samples.ContextualWorkflowHttp/Workflows/DocumentApprovalWorkflow.cs +++ b/src/samples/Elsa.Samples.ContextualWorkflowHttp/Workflows/DocumentApprovalWorkflow.cs @@ -63,7 +63,7 @@ namespace Elsa.Samples.ContextualWorkflowHttp.Workflows private static void StoreComment(ActivityExecutionContext context) { var document = (Document)context.WorkflowExecutionContext.WorkflowContext!; - var comment = (Comment)((HttpRequestModel)context.Input)!.Body!; + var comment = (Comment)((HttpRequestModel)context.Input!).Body!; document.Comments.Add(comment); } diff --git a/src/scripting/Elsa.Scripting.Liquid/Extensions/LiquidTemplateManagerExtensions.cs b/src/scripting/Elsa.Scripting.Liquid/Extensions/LiquidTemplateManagerExtensions.cs index 3f04e7beb..3de0b3351 100644 --- a/src/scripting/Elsa.Scripting.Liquid/Extensions/LiquidTemplateManagerExtensions.cs +++ b/src/scripting/Elsa.Scripting.Liquid/Extensions/LiquidTemplateManagerExtensions.cs @@ -10,7 +10,7 @@ namespace Elsa.Scripting.Liquid.Extensions /// /// Renders a Liquid template containing HTML. /// - public static Task RenderAsync(this ILiquidTemplateManager manager, string template, TemplateContext context) + public static Task RenderAsync(this ILiquidTemplateManager manager, string template, TemplateContext context) { return manager.RenderAsync(template, context, HtmlEncoder.Default); }