diff --git a/aspnet-core/LINGYUN.MicroService.Workflow.sln b/aspnet-core/LINGYUN.MicroService.Workflow.sln index 2f6185189..3035cd55e 100644 --- a/aspnet-core/LINGYUN.MicroService.Workflow.sln +++ b/aspnet-core/LINGYUN.MicroService.Workflow.sln @@ -61,7 +61,17 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elsa.Activities EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elsa.Activities.Notifications", "modules\elsa\LINGYUN.Abp.Elsa.Activities.Notifications\LINGYUN.Abp.Elsa.Activities.Notifications.csproj", "{F5023AD3-D9C5-40C9-B76A-58D95E441997}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Elsa.Activities.IM", "modules\elsa\LINGYUN.Abp.Elsa.Activities.IM\LINGYUN.Abp.Elsa.Activities.IM.csproj", "{4FD7B21B-3689-4D4A-BDD2-A07E2DC2E80C}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elsa.Activities.IM", "modules\elsa\LINGYUN.Abp.Elsa.Activities.IM\LINGYUN.Abp.Elsa.Activities.IM.csproj", "{4FD7B21B-3689-4D4A-BDD2-A07E2DC2E80C}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elsa.Activities.Sms", "modules\elsa\LINGYUN.Abp.Elsa.Activities.Sms\LINGYUN.Abp.Elsa.Activities.Sms.csproj", "{FF3A193B-6131-4B4D-9729-1BF8A125C0AB}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "common", "common", "{6DA78E72-BA55-4ECF-97DB-6258174D3E2A}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.RealTime", "modules\common\LINGYUN.Abp.RealTime\LINGYUN.Abp.RealTime.csproj", "{18A20311-84D8-49C4-B7BA-1187FF25E9BC}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Notifications", "modules\common\LINGYUN.Abp.Notifications\LINGYUN.Abp.Notifications.csproj", "{2C3FABD7-808B-47B5-A194-849A1738E9A2}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.IM", "modules\common\LINGYUN.Abp.IM\LINGYUN.Abp.IM.csproj", "{8BE6BA3E-048E-4FC7-81DD-7FCD29AE2126}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -161,6 +171,22 @@ Global {4FD7B21B-3689-4D4A-BDD2-A07E2DC2E80C}.Debug|Any CPU.Build.0 = Debug|Any CPU {4FD7B21B-3689-4D4A-BDD2-A07E2DC2E80C}.Release|Any CPU.ActiveCfg = Release|Any CPU {4FD7B21B-3689-4D4A-BDD2-A07E2DC2E80C}.Release|Any CPU.Build.0 = Release|Any CPU + {FF3A193B-6131-4B4D-9729-1BF8A125C0AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FF3A193B-6131-4B4D-9729-1BF8A125C0AB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FF3A193B-6131-4B4D-9729-1BF8A125C0AB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FF3A193B-6131-4B4D-9729-1BF8A125C0AB}.Release|Any CPU.Build.0 = Release|Any CPU + {18A20311-84D8-49C4-B7BA-1187FF25E9BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {18A20311-84D8-49C4-B7BA-1187FF25E9BC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {18A20311-84D8-49C4-B7BA-1187FF25E9BC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {18A20311-84D8-49C4-B7BA-1187FF25E9BC}.Release|Any CPU.Build.0 = Release|Any CPU + {2C3FABD7-808B-47B5-A194-849A1738E9A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2C3FABD7-808B-47B5-A194-849A1738E9A2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2C3FABD7-808B-47B5-A194-849A1738E9A2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2C3FABD7-808B-47B5-A194-849A1738E9A2}.Release|Any CPU.Build.0 = Release|Any CPU + {8BE6BA3E-048E-4FC7-81DD-7FCD29AE2126}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8BE6BA3E-048E-4FC7-81DD-7FCD29AE2126}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8BE6BA3E-048E-4FC7-81DD-7FCD29AE2126}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8BE6BA3E-048E-4FC7-81DD-7FCD29AE2126}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -192,6 +218,10 @@ Global {81CB5141-4FC5-413A-A516-CD65F40465C0} = {F1CCBEC7-ACAB-4DC5-909E-D8CC2E1B7EEC} {F5023AD3-D9C5-40C9-B76A-58D95E441997} = {F1CCBEC7-ACAB-4DC5-909E-D8CC2E1B7EEC} {4FD7B21B-3689-4D4A-BDD2-A07E2DC2E80C} = {F1CCBEC7-ACAB-4DC5-909E-D8CC2E1B7EEC} + {FF3A193B-6131-4B4D-9729-1BF8A125C0AB} = {F1CCBEC7-ACAB-4DC5-909E-D8CC2E1B7EEC} + {18A20311-84D8-49C4-B7BA-1187FF25E9BC} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A} + {2C3FABD7-808B-47B5-A194-849A1738E9A2} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A} + {8BE6BA3E-048E-4FC7-81DD-7FCD29AE2126} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {6BB7A5DE-DA12-44DC-BC9B-0F6CA524346F} diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.IM/FodyWeavers.xsd b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.IM/FodyWeavers.xsd new file mode 100644 index 000000000..11da52550 --- /dev/null +++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.IM/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.IM/LINGYUN/Abp/Elsa/Activities/IM/Activities/SendMessage.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.IM/LINGYUN/Abp/Elsa/Activities/IM/Activities/SendMessage.cs index 24cf6abe8..f1393d0c5 100644 --- a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.IM/LINGYUN/Abp/Elsa/Activities/IM/Activities/SendMessage.cs +++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.IM/LINGYUN/Abp/Elsa/Activities/IM/Activities/SendMessage.cs @@ -1,4 +1,5 @@ -using Elsa.ActivityResults; +using Elsa; +using Elsa.ActivityResults; using Elsa.Attributes; using Elsa.Services; using Elsa.Services.Models; @@ -9,7 +10,10 @@ using Volo.Abp.Timing; namespace LINGYUN.Abp.Elsa.Activities.IM; -[Action(Category = "Message", Description = "Send an message.")] +[Action( + Category = "Message", + Description = "Send an message.", + Outcomes = new[] { OutcomeNames.Done })] public class SendMessage : Activity { private readonly IClock _clock; @@ -61,7 +65,7 @@ public class SendMessage : Activity _clock, false, MessageType.Text, - MessageSourceTye.User, + MessageSourceType.User, tenantId); } else if (To.HasValue) @@ -74,7 +78,7 @@ public class SendMessage : Activity _clock, false, MessageType.Text, - MessageSourceTye.User, + MessageSourceType.User, tenantId); } diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Notifications/LINGYUN/Abp/Elsa/Activities/Notifications/Activities/SendNotification.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Notifications/LINGYUN/Abp/Elsa/Activities/Notifications/Activities/SendNotification.cs index d180f9078..a765ce0ca 100644 --- a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Notifications/LINGYUN/Abp/Elsa/Activities/Notifications/Activities/SendNotification.cs +++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Notifications/LINGYUN/Abp/Elsa/Activities/Notifications/Activities/SendNotification.cs @@ -1,4 +1,5 @@ -using Elsa.ActivityResults; +using Elsa; +using Elsa.ActivityResults; using Elsa.Attributes; using Elsa.Design; using Elsa.Expressions; @@ -13,7 +14,10 @@ using System.Threading.Tasks; namespace LINGYUN.Abp.Elsa.Activities.Notifications; -[Action(Category = "Notification", Description = "Send an notification.")] +[Action( + Category = "Notification", + Description = "Send an notification.", + Outcomes = new[] { OutcomeNames.Done })] public class SendNotification : Activity { private readonly INotificationSender _notificationSender; diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Sms/FodyWeavers.xml b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Sms/FodyWeavers.xml new file mode 100644 index 000000000..c485a4548 --- /dev/null +++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Sms/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Sms/FodyWeavers.xsd b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Sms/FodyWeavers.xsd new file mode 100644 index 000000000..11da52550 --- /dev/null +++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Sms/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Sms/LINGYUN.Abp.Elsa.Activities.Sms.csproj b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Sms/LINGYUN.Abp.Elsa.Activities.Sms.csproj new file mode 100644 index 000000000..73b91cc43 --- /dev/null +++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Sms/LINGYUN.Abp.Elsa.Activities.Sms.csproj @@ -0,0 +1,20 @@ + + + + + + + netstandard2.1 + + enable + + + + + + + + + + + diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Sms/LINGYUN/Abp/Elsa/Activities/Sms/AbpElsaActivitiesSmsModule.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Sms/LINGYUN/Abp/Elsa/Activities/Sms/AbpElsaActivitiesSmsModule.cs new file mode 100644 index 000000000..16041721f --- /dev/null +++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Sms/LINGYUN/Abp/Elsa/Activities/Sms/AbpElsaActivitiesSmsModule.cs @@ -0,0 +1,11 @@ +using Volo.Abp.Modularity; +using Volo.Abp.Sms; + +namespace LINGYUN.Abp.Elsa.Activities.Sms; + +[DependsOn( + typeof(AbpElsaModule), + typeof(AbpSmsModule))] +public class AbpElsaActivitiesSmsModule : AbpModule +{ +} diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Sms/LINGYUN/Abp/Elsa/Activities/Sms/Activities/SendSms.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Sms/LINGYUN/Abp/Elsa/Activities/Sms/Activities/SendSms.cs new file mode 100644 index 000000000..c0fb509ef --- /dev/null +++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Sms/LINGYUN/Abp/Elsa/Activities/Sms/Activities/SendSms.cs @@ -0,0 +1,59 @@ +using Elsa; +using Elsa.ActivityResults; +using Elsa.Attributes; +using Elsa.Design; +using Elsa.Expressions; +using Elsa.Services; +using Elsa.Services.Models; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp.Sms; + +namespace LINGYUN.Abp.Elsa.Activities.Sms; + +[Action( + Category = "Sms", + Description = "Send an sms message.", + Outcomes = new[] { OutcomeNames.Done })] +public class SendSms : Activity +{ + private readonly ISmsSender _smsSender; + + public SendSms( + ISmsSender smsSender) + { + _smsSender = smsSender; + } + + [ActivityInput( + Hint = "The recipients phoneNumber list.", + UIHint = ActivityInputUIHints.MultiText, + DefaultSyntax = SyntaxNames.Json, + SupportedSyntaxes = new[] { SyntaxNames.Json, SyntaxNames.JavaScript })] + public ICollection To { get; set; } = new List(); + + [ActivityInput(Hint = "The message content.")] + public string Message { get; set; } + + [ActivityInput( + Hint = "Attachment property that are sent with the message.", + UIHint = ActivityInputUIHints.MultiLine, DefaultSyntax = SyntaxNames.Json, + SupportedSyntaxes = new[] { SyntaxNames.Json, SyntaxNames.JavaScript, SyntaxNames.Liquid }, + Category = PropertyCategories.Advanced + )] + public Dictionary Properties { get; set; } = new(); + + protected async override ValueTask OnExecuteAsync(ActivityExecutionContext context) + { + var smsMessage = new SmsMessage(To.JoinAsString(";"), Message); + foreach (var prop in Properties) + { + smsMessage.Properties.TryAdd(prop.Key, prop.Value); + } + + await _smsSender.SendAsync(smsMessage); + + return Done(); + } +} diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Sms/LINGYUN/Abp/Elsa/Activities/Sms/Startup.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Sms/LINGYUN/Abp/Elsa/Activities/Sms/Startup.cs new file mode 100644 index 000000000..ed1326dcb --- /dev/null +++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Sms/LINGYUN/Abp/Elsa/Activities/Sms/Startup.cs @@ -0,0 +1,16 @@ +using Elsa.Attributes; +using Elsa.Options; +using Elsa.Services.Startup; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; + +namespace LINGYUN.Abp.Elsa.Activities.Sms; + +[Feature("Sms")] +public class Startup : StartupBase +{ + public override void ConfigureElsa(ElsaOptionsBuilder elsa, IConfiguration configuration) + { + elsa.AddSmsActivities(); + } +} diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Sms/Microsoft/Extensions/DependencyInjection/SmsServiceCollectionExtensions.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Sms/Microsoft/Extensions/DependencyInjection/SmsServiceCollectionExtensions.cs new file mode 100644 index 000000000..16f4bbbc3 --- /dev/null +++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Sms/Microsoft/Extensions/DependencyInjection/SmsServiceCollectionExtensions.cs @@ -0,0 +1,15 @@ +using Elsa.Options; +using LINGYUN.Abp.Elsa.Activities.Sms; + +namespace Microsoft.Extensions.DependencyInjection; + +public static class SmsServiceCollectionExtensions +{ + public static ElsaOptionsBuilder AddSmsActivities(this ElsaOptionsBuilder options) + { + options + .AddActivity(); + + return options; + } +} diff --git a/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/LY.MicroService.WorkflowManagement.HttpApi.Host.csproj b/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/LY.MicroService.WorkflowManagement.HttpApi.Host.csproj index a166fabaa..b0208c7f0 100644 --- a/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/LY.MicroService.WorkflowManagement.HttpApi.Host.csproj +++ b/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/LY.MicroService.WorkflowManagement.HttpApi.Host.csproj @@ -49,6 +49,7 @@ + diff --git a/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/Pages/_Host.cshtml b/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/Pages/_Host.cshtml index 0a576edef..c1a99ee89 100644 --- a/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/Pages/_Host.cshtml +++ b/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/Pages/_Host.cshtml @@ -1,8 +1,7 @@ @page "/" @inject IConfiguration Configuration; @{ - var serverUrl = Configuration["Elsa:Server:BaseAddress"]; - var basePath = Configuration["Hosting:BasePath"]; + var serverUrl = Configuration["Elsa:Server:BaseUrl"]; } @@ -10,23 +9,22 @@ Elsa Workflows - - - - - - + + + + + + - - +