From 570a07e656a9d4dc0dbf20fb3649cf507d2a179c Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Sat, 3 Apr 2021 21:07:18 +0200 Subject: [PATCH] Configure Azure Service Bus activities --- .../AzureServiceBusQueueMessageReceived.cs | 8 ++++++-- .../AzureServiceBusTopicMessageReceived.cs | 16 ++++++++++++---- ...ceBusTopicMessageReceivedBuilderExtensions.cs | 1 + ...reServiceBusTopicMessageReceivedExtensions.cs | 0 .../SendAzureServiceBusQueueMessage.cs | 9 ++++++--- .../Extensions/MessageBodyExtensions.cs | 10 +++++----- 6 files changed, 30 insertions(+), 14 deletions(-) rename src/activities/Elsa.Activities.AzureServiceBus/Activities/{AzureServiceBusMessageReceived => AzureServiceBusTopicMessageReceived}/AzureServiceBusTopicMessageReceived.cs (69%) rename src/activities/Elsa.Activities.AzureServiceBus/Activities/{AzureServiceBusMessageReceived => AzureServiceBusTopicMessageReceived}/AzureServiceBusTopicMessageReceivedBuilderExtensions.cs (95%) rename src/activities/Elsa.Activities.AzureServiceBus/Activities/{AzureServiceBusMessageReceived => AzureServiceBusTopicMessageReceived}/AzureServiceBusTopicMessageReceivedExtensions.cs (100%) diff --git a/src/activities/Elsa.Activities.AzureServiceBus/Activities/AzureServiceBusMessageReceived/AzureServiceBusQueueMessageReceived.cs b/src/activities/Elsa.Activities.AzureServiceBus/Activities/AzureServiceBusMessageReceived/AzureServiceBusQueueMessageReceived.cs index 57a358c12..4e6515230 100644 --- a/src/activities/Elsa.Activities.AzureServiceBus/Activities/AzureServiceBusMessageReceived/AzureServiceBusQueueMessageReceived.cs +++ b/src/activities/Elsa.Activities.AzureServiceBus/Activities/AzureServiceBusMessageReceived/AzureServiceBusQueueMessageReceived.cs @@ -3,6 +3,7 @@ using Elsa.Activities.AzureServiceBus.Extensions; using Elsa.Activities.AzureServiceBus.Models; using Elsa.ActivityResults; using Elsa.Attributes; +using Elsa.Expressions; using Elsa.Serialization; using Elsa.Services; using Elsa.Services.Models; @@ -19,8 +20,11 @@ namespace Elsa.Activities.AzureServiceBus _serializer = serializer; } - [ActivityProperty] public string QueueName { get; set; } = default!; - [ActivityProperty] public Type MessageType { get; set; } = default!; + [ActivityProperty(SupportedSyntaxes = new[] { SyntaxNames.JavaScript, SyntaxNames.Liquid })] + public string QueueName { get; set; } = default!; + + [ActivityProperty] + public Type MessageType { get; set; } = default!; protected override IActivityExecutionResult OnExecute(ActivityExecutionContext context) => context.WorkflowExecutionContext.IsFirstPass ? ExecuteInternal(context) : Suspend(); protected override IActivityExecutionResult OnResume(ActivityExecutionContext context) => ExecuteInternal(context); diff --git a/src/activities/Elsa.Activities.AzureServiceBus/Activities/AzureServiceBusMessageReceived/AzureServiceBusTopicMessageReceived.cs b/src/activities/Elsa.Activities.AzureServiceBus/Activities/AzureServiceBusTopicMessageReceived/AzureServiceBusTopicMessageReceived.cs similarity index 69% rename from src/activities/Elsa.Activities.AzureServiceBus/Activities/AzureServiceBusMessageReceived/AzureServiceBusTopicMessageReceived.cs rename to src/activities/Elsa.Activities.AzureServiceBus/Activities/AzureServiceBusTopicMessageReceived/AzureServiceBusTopicMessageReceived.cs index 1009297d1..67cf80e68 100644 --- a/src/activities/Elsa.Activities.AzureServiceBus/Activities/AzureServiceBusMessageReceived/AzureServiceBusTopicMessageReceived.cs +++ b/src/activities/Elsa.Activities.AzureServiceBus/Activities/AzureServiceBusTopicMessageReceived/AzureServiceBusTopicMessageReceived.cs @@ -3,10 +3,13 @@ using Elsa.Activities.AzureServiceBus.Extensions; using Elsa.Activities.AzureServiceBus.Models; using Elsa.ActivityResults; using Elsa.Attributes; +using Elsa.Expressions; using Elsa.Serialization; using Elsa.Services; using Elsa.Services.Models; +// ReSharper disable ExplicitCallerInfoArgument +// ReSharper disable once CheckNamespace namespace Elsa.Activities.AzureServiceBus { [Trigger(Category = "Azure Service Bus", DisplayName = "Service Bus Topic Message Received", Description = "Triggered when a message is received on the specified topic/subscription", Outcomes = new[] { OutcomeNames.Done })] @@ -19,16 +22,21 @@ namespace Elsa.Activities.AzureServiceBus _serializer = serializer; } - [ActivityProperty] public string TopicName { get; set; } = default!; - [ActivityProperty] public string SubscriptionName { get; set; } = default!; - [ActivityProperty] public Type MessageType { get; set; } = default!; + [ActivityProperty(SupportedSyntaxes = new[] { SyntaxNames.JavaScript, SyntaxNames.Liquid })] + public string TopicName { get; set; } = default!; + + [ActivityProperty(SupportedSyntaxes = new[] { SyntaxNames.JavaScript, SyntaxNames.Liquid })] + public string SubscriptionName { get; set; } = default!; + + [ActivityProperty] + public Type MessageType { get; set; } = default!; protected override IActivityExecutionResult OnExecute(ActivityExecutionContext context) => context.WorkflowExecutionContext.IsFirstPass ? ExecuteInternal(context) : Suspend(); protected override IActivityExecutionResult OnResume(ActivityExecutionContext context) => ExecuteInternal(context); private IActivityExecutionResult ExecuteInternal(ActivityExecutionContext context) { - var message = (MessageModel)context.Input!; + var message = (MessageModel) context.Input!; var model = message.ReadBody(MessageType, _serializer); return Done(model); diff --git a/src/activities/Elsa.Activities.AzureServiceBus/Activities/AzureServiceBusMessageReceived/AzureServiceBusTopicMessageReceivedBuilderExtensions.cs b/src/activities/Elsa.Activities.AzureServiceBus/Activities/AzureServiceBusTopicMessageReceived/AzureServiceBusTopicMessageReceivedBuilderExtensions.cs similarity index 95% rename from src/activities/Elsa.Activities.AzureServiceBus/Activities/AzureServiceBusMessageReceived/AzureServiceBusTopicMessageReceivedBuilderExtensions.cs rename to src/activities/Elsa.Activities.AzureServiceBus/Activities/AzureServiceBusTopicMessageReceived/AzureServiceBusTopicMessageReceivedBuilderExtensions.cs index 5e3ef1131..6e055f5e8 100644 --- a/src/activities/Elsa.Activities.AzureServiceBus/Activities/AzureServiceBusMessageReceived/AzureServiceBusTopicMessageReceivedBuilderExtensions.cs +++ b/src/activities/Elsa.Activities.AzureServiceBus/Activities/AzureServiceBusTopicMessageReceived/AzureServiceBusTopicMessageReceivedBuilderExtensions.cs @@ -3,6 +3,7 @@ using System.Runtime.CompilerServices; using Elsa.Builders; // ReSharper disable ExplicitCallerInfoArgument +// ReSharper disable once CheckNamespace namespace Elsa.Activities.AzureServiceBus { public static class AzureServiceBusTopicMessageReceivedBuilderExtensions diff --git a/src/activities/Elsa.Activities.AzureServiceBus/Activities/AzureServiceBusMessageReceived/AzureServiceBusTopicMessageReceivedExtensions.cs b/src/activities/Elsa.Activities.AzureServiceBus/Activities/AzureServiceBusTopicMessageReceived/AzureServiceBusTopicMessageReceivedExtensions.cs similarity index 100% rename from src/activities/Elsa.Activities.AzureServiceBus/Activities/AzureServiceBusMessageReceived/AzureServiceBusTopicMessageReceivedExtensions.cs rename to src/activities/Elsa.Activities.AzureServiceBus/Activities/AzureServiceBusTopicMessageReceived/AzureServiceBusTopicMessageReceivedExtensions.cs diff --git a/src/activities/Elsa.Activities.AzureServiceBus/Activities/SendAzureServiceBusMessage/SendAzureServiceBusQueueMessage.cs b/src/activities/Elsa.Activities.AzureServiceBus/Activities/SendAzureServiceBusMessage/SendAzureServiceBusQueueMessage.cs index dea5fb9d6..29a06fb1c 100644 --- a/src/activities/Elsa.Activities.AzureServiceBus/Activities/SendAzureServiceBusMessage/SendAzureServiceBusQueueMessage.cs +++ b/src/activities/Elsa.Activities.AzureServiceBus/Activities/SendAzureServiceBusMessage/SendAzureServiceBusQueueMessage.cs @@ -2,6 +2,7 @@ using Elsa.Activities.AzureServiceBus.Services; using Elsa.ActivityResults; using Elsa.Attributes; +using Elsa.Expressions; using Elsa.Serialization; using Elsa.Services; using Elsa.Services.Models; @@ -20,13 +21,15 @@ namespace Elsa.Activities.AzureServiceBus _serializer = serializer; } - [ActivityProperty] public string QueueName { get; set; } = default!; - [ActivityProperty] public object Message { get; set; } = default!; + [ActivityProperty(SupportedSyntaxes = new[] { SyntaxNames.JavaScript, SyntaxNames.Liquid })] + public string QueueName { get; set; } = default!; + + [ActivityProperty(SupportedSyntaxes = new[] { SyntaxNames.JavaScript, SyntaxNames.Liquid, SyntaxNames.Json })] + public object Message { get; set; } = default!; protected override async ValueTask OnExecuteAsync(ActivityExecutionContext context) { var sender = await _messageSenderFactory.GetSenderAsync(QueueName, context.CancellationToken); - var message = Extensions.MessageBodyExtensions.CreateMessage(_serializer, Message); if (!string.IsNullOrWhiteSpace(context.WorkflowExecutionContext.CorrelationId)) diff --git a/src/activities/Elsa.Activities.AzureServiceBus/Extensions/MessageBodyExtensions.cs b/src/activities/Elsa.Activities.AzureServiceBus/Extensions/MessageBodyExtensions.cs index e75d4b646..b2823c68f 100644 --- a/src/activities/Elsa.Activities.AzureServiceBus/Extensions/MessageBodyExtensions.cs +++ b/src/activities/Elsa.Activities.AzureServiceBus/Extensions/MessageBodyExtensions.cs @@ -13,22 +13,22 @@ namespace Elsa.Activities.AzureServiceBus.Extensions public static object ReadBody(this MessageModel message, Type type, IContentSerializer serializer) { if (type == typeof(string)) - return UTF8Encoding.UTF8.GetString(message.Body); + return Encoding.UTF8.GetString(message.Body); var bytes = message.Body; var json = Encoding.UTF8.GetString(bytes); return serializer.Deserialize(json, type)!; } - public static Message CreateMessage(IContentSerializer serializer, object Message) + public static Message CreateMessage(IContentSerializer serializer, object message) { byte[] messageBytes; - if (Message.GetType() == typeof(string)) - messageBytes = UTF8Encoding.UTF8.GetBytes(Message as string); + if (message is string s) + messageBytes = Encoding.UTF8.GetBytes(s); else { - var json = serializer.Serialize(Message); + var json = serializer.Serialize(message); messageBytes = Encoding.UTF8.GetBytes(json); }