diff --git a/aspnet-core/LINGYUN.MicroService.Workflow.sln b/aspnet-core/LINGYUN.MicroService.Workflow.sln
index 9f253ed20..2f6185189 100644
--- a/aspnet-core/LINGYUN.MicroService.Workflow.sln
+++ b/aspnet-core/LINGYUN.MicroService.Workflow.sln
@@ -57,7 +57,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elsa.Server", "
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elsa.EntityFramework.Core", "modules\elsa\LINGYUN.Abp.Elsa.EntityFramework.Core\LINGYUN.Abp.Elsa.EntityFramework.Core.csproj", "{CAC0D3A2-8BFA-4A84-A7FA-550A3BB16288}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Elsa.Activities.BlobStoring", "modules\elsa\LINGYUN.Abp.Elsa.Activities.BlobStoring\LINGYUN.Abp.Elsa.Activities.BlobStoring.csproj", "{81CB5141-4FC5-413A-A516-CD65F40465C0}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elsa.Activities.BlobStoring", "modules\elsa\LINGYUN.Abp.Elsa.Activities.BlobStoring\LINGYUN.Abp.Elsa.Activities.BlobStoring.csproj", "{81CB5141-4FC5-413A-A516-CD65F40465C0}"
+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}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -149,10 +153,14 @@ Global
{81CB5141-4FC5-413A-A516-CD65F40465C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{81CB5141-4FC5-413A-A516-CD65F40465C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{81CB5141-4FC5-413A-A516-CD65F40465C0}.Release|Any CPU.Build.0 = Release|Any CPU
- {00CB6328-83F0-4C50-9561-2C61AFC03CA1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {00CB6328-83F0-4C50-9561-2C61AFC03CA1}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {00CB6328-83F0-4C50-9561-2C61AFC03CA1}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {00CB6328-83F0-4C50-9561-2C61AFC03CA1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F5023AD3-D9C5-40C9-B76A-58D95E441997}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F5023AD3-D9C5-40C9-B76A-58D95E441997}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F5023AD3-D9C5-40C9-B76A-58D95E441997}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F5023AD3-D9C5-40C9-B76A-58D95E441997}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4FD7B21B-3689-4D4A-BDD2-A07E2DC2E80C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {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
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -182,7 +190,8 @@ Global
{88AA0D46-597E-4969-8382-A3F8054B9409} = {F1CCBEC7-ACAB-4DC5-909E-D8CC2E1B7EEC}
{CAC0D3A2-8BFA-4A84-A7FA-550A3BB16288} = {F1CCBEC7-ACAB-4DC5-909E-D8CC2E1B7EEC}
{81CB5141-4FC5-413A-A516-CD65F40465C0} = {F1CCBEC7-ACAB-4DC5-909E-D8CC2E1B7EEC}
- {00CB6328-83F0-4C50-9561-2C61AFC03CA1} = {2F51B296-58EB-4D54-9921-5A07E6E4B7BF}
+ {F5023AD3-D9C5-40C9-B76A-58D95E441997} = {F1CCBEC7-ACAB-4DC5-909E-D8CC2E1B7EEC}
+ {4FD7B21B-3689-4D4A-BDD2-A07E2DC2E80C} = {F1CCBEC7-ACAB-4DC5-909E-D8CC2E1B7EEC}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {6BB7A5DE-DA12-44DC-BC9B-0F6CA524346F}
diff --git a/aspnet-core/common.props b/aspnet-core/common.props
index 8ee00186e..8d6704e65 100644
--- a/aspnet-core/common.props
+++ b/aspnet-core/common.props
@@ -3,7 +3,7 @@
latest
5.3.2
colin
- $(NoWarn);CS1591;CS0436
+ $(NoWarn);CS1591;CS0436;CS8618
https://github.com/colinin/abp-next-admin
MIT
git
diff --git a/aspnet-core/modules/common/LINGYUN.Abp.IM/LINGYUN/Abp/IM/Messages/ChatMessage.cs b/aspnet-core/modules/common/LINGYUN.Abp.IM/LINGYUN/Abp/IM/Messages/ChatMessage.cs
index 0c9c58386..692fc4415 100644
--- a/aspnet-core/modules/common/LINGYUN.Abp.IM/LINGYUN/Abp/IM/Messages/ChatMessage.cs
+++ b/aspnet-core/modules/common/LINGYUN.Abp.IM/LINGYUN/Abp/IM/Messages/ChatMessage.cs
@@ -59,7 +59,7 @@ namespace LINGYUN.Abp.IM.Messages
///
public MessageType MessageType { get; set; } = MessageType.Text;
- public MessageSourceTye Source { get; set; } = MessageSourceTye.User;
+ public MessageSourceType Source { get; set; } = MessageSourceType.User;
public ExtraPropertyDictionary ExtraProperties { get; set; }
@@ -77,7 +77,7 @@ namespace LINGYUN.Abp.IM.Messages
IClock clock,
bool isAnonymous = false,
MessageType type = MessageType.Text,
- MessageSourceTye souce = MessageSourceTye.User,
+ MessageSourceType souce = MessageSourceType.User,
Guid? tenantId = null)
{
return new ChatMessage
@@ -111,7 +111,7 @@ namespace LINGYUN.Abp.IM.Messages
IsAnonymous = false,
MessageType = type,
TenantId = tenantId,
- Source = MessageSourceTye.System,
+ Source = MessageSourceType.System,
}
.SetProperty("L", false);
}
@@ -145,7 +145,7 @@ namespace LINGYUN.Abp.IM.Messages
IsAnonymous = false,
MessageType = type,
TenantId = tenantId,
- Source = MessageSourceTye.System,
+ Source = MessageSourceType.System,
}
.SetProperty("L", true)
.SetProperty(nameof(ChatMessage.Content).ToPascalCase(), content);
@@ -169,7 +169,7 @@ namespace LINGYUN.Abp.IM.Messages
IsAnonymous = false,
MessageType = type,
TenantId = tenantId,
- Source = MessageSourceTye.System,
+ Source = MessageSourceType.System,
}
.SetProperty("L", false);
}
@@ -202,7 +202,7 @@ namespace LINGYUN.Abp.IM.Messages
IsAnonymous = false,
MessageType = type,
TenantId = tenantId,
- Source = MessageSourceTye.System,
+ Source = MessageSourceType.System,
}
.SetProperty("L", true)
.SetProperty(nameof(ChatMessage.Content).ToPascalCase(), content);
@@ -216,7 +216,7 @@ namespace LINGYUN.Abp.IM.Messages
IClock clock,
bool isAnonymous = false,
MessageType type = MessageType.Text,
- MessageSourceTye souce = MessageSourceTye.User,
+ MessageSourceType souce = MessageSourceType.User,
Guid? tenantId = null)
{
return new ChatMessage
diff --git a/aspnet-core/modules/common/LINGYUN.Abp.IM/LINGYUN/Abp/IM/Messages/LastChatMessage.cs b/aspnet-core/modules/common/LINGYUN.Abp.IM/LINGYUN/Abp/IM/Messages/LastChatMessage.cs
index 22e70b9ec..32d7a9756 100644
--- a/aspnet-core/modules/common/LINGYUN.Abp.IM/LINGYUN/Abp/IM/Messages/LastChatMessage.cs
+++ b/aspnet-core/modules/common/LINGYUN.Abp.IM/LINGYUN/Abp/IM/Messages/LastChatMessage.cs
@@ -59,7 +59,7 @@ namespace LINGYUN.Abp.IM.Messages
///
public MessageType MessageType { get; set; }
- public MessageSourceTye Source { get; set; }
+ public MessageSourceType Source { get; set; }
public ExtraPropertyDictionary ExtraProperties { get; set; }
public LastChatMessage()
{
diff --git a/aspnet-core/modules/common/LINGYUN.Abp.IM/LINGYUN/Abp/IM/Messages/MessageSourceTye.cs b/aspnet-core/modules/common/LINGYUN.Abp.IM/LINGYUN/Abp/IM/Messages/MessageSourceType.cs
similarity index 68%
rename from aspnet-core/modules/common/LINGYUN.Abp.IM/LINGYUN/Abp/IM/Messages/MessageSourceTye.cs
rename to aspnet-core/modules/common/LINGYUN.Abp.IM/LINGYUN/Abp/IM/Messages/MessageSourceType.cs
index 38614e069..e77f1de1f 100644
--- a/aspnet-core/modules/common/LINGYUN.Abp.IM/LINGYUN/Abp/IM/Messages/MessageSourceTye.cs
+++ b/aspnet-core/modules/common/LINGYUN.Abp.IM/LINGYUN/Abp/IM/Messages/MessageSourceType.cs
@@ -1,6 +1,6 @@
namespace LINGYUN.Abp.IM.Messages
{
- public enum MessageSourceTye
+ public enum MessageSourceType
{
User = 0,
System = 10,
diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/FodyWeavers.xml b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/FodyWeavers.xml
index ac6b5b292..c485a4548 100644
--- a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/FodyWeavers.xml
+++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/FodyWeavers.xml
@@ -1,3 +1,3 @@
-
+
\ No newline at end of file
diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/LINGYUN/Abp/Elsa/Activities/BlobStoring/Activities/BlobActivity.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/LINGYUN/Abp/Elsa/Activities/BlobStoring/Activities/BlobActivity.cs
new file mode 100644
index 000000000..918831dde
--- /dev/null
+++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/LINGYUN/Abp/Elsa/Activities/BlobStoring/Activities/BlobActivity.cs
@@ -0,0 +1,16 @@
+using Elsa.Services;
+using Volo.Abp.BlobStoring;
+using Volo.Abp.MultiTenancy;
+
+namespace LINGYUN.Abp.Elsa.Activities.BlobStoring;
+
+public abstract class BlobActivity : Activity
+{
+ protected ICurrentTenant CurrentTenant;
+ protected IBlobContainer BlobContainer;
+
+ protected BlobActivity(IBlobContainer blobContainer)
+ {
+ BlobContainer = blobContainer;
+ }
+}
diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/LINGYUN/Abp/Elsa/Activities/BlobStoring/Activities/BlobExists.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/LINGYUN/Abp/Elsa/Activities/BlobStoring/Activities/BlobExists.cs
index 321555dc6..36276f3c8 100644
--- a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/LINGYUN/Abp/Elsa/Activities/BlobStoring/Activities/BlobExists.cs
+++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/LINGYUN/Abp/Elsa/Activities/BlobStoring/Activities/BlobExists.cs
@@ -1,7 +1,6 @@
using Elsa;
using Elsa.ActivityResults;
using Elsa.Attributes;
-using Elsa.Services;
using Elsa.Services.Models;
using System;
using System.Threading.Tasks;
@@ -12,21 +11,19 @@ namespace LINGYUN.Abp.Elsa.Activities.BlobStoring;
[Action(Category = "Blob",
Description = "Check if a blob exists.",
Outcomes = new[] { OutcomeNames.True, OutcomeNames.False })]
-public class BlobExists : Activity
+public class BlobExists : BlobActivity
{
- private readonly IBlobContainer _container;
-
[ActivityInput(Hint = "Path of the oss.")]
public string? Path { get; set; }
- public BlobExists(IBlobContainer container)
+ public BlobExists(IBlobContainer blobContainer)
+ : base(blobContainer)
{
- _container = container;
}
protected async override ValueTask OnExecuteAsync(ActivityExecutionContext context)
{
- var exists = await _container.ExistsAsync(Path, context.CancellationToken);
+ var exists = await BlobContainer.ExistsAsync(Path, context.CancellationToken);
if (exists)
{
return Outcome(OutcomeNames.True);
diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/LINGYUN/Abp/Elsa/Activities/BlobStoring/Activities/DeleteBlob.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/LINGYUN/Abp/Elsa/Activities/BlobStoring/Activities/DeleteBlob.cs
index 3f28738a5..4c163d412 100644
--- a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/LINGYUN/Abp/Elsa/Activities/BlobStoring/Activities/DeleteBlob.cs
+++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/LINGYUN/Abp/Elsa/Activities/BlobStoring/Activities/DeleteBlob.cs
@@ -1,7 +1,6 @@
using Elsa;
using Elsa.ActivityResults;
using Elsa.Attributes;
-using Elsa.Services;
using Elsa.Services.Models;
using System;
using System.Threading.Tasks;
@@ -12,21 +11,19 @@ namespace LINGYUN.Abp.Elsa.Activities.BlobStoring;
[Action(Category = "Blob",
Description = "Deletes blob at specified location",
Outcomes = new[] { OutcomeNames.Done })]
-public class DeleteBlob : Activity
+public class DeleteBlob : BlobActivity
{
- private readonly IBlobContainer _container;
-
[ActivityInput(Hint = "Path of the blob to be deleted.")]
public string? Path { get; set; }
- public DeleteBlob(IBlobContainer container)
+ public DeleteBlob(IBlobContainer blobContainer)
+ : base(blobContainer)
{
- _container = container;
}
protected async override ValueTask OnExecuteAsync(ActivityExecutionContext context)
{
- await _container.DeleteAsync(Path, context.CancellationToken);
+ await BlobContainer.DeleteAsync(Path, context.CancellationToken);
return Done();
}
diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/LINGYUN/Abp/Elsa/Activities/BlobStoring/Activities/ReadBlob.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/LINGYUN/Abp/Elsa/Activities/BlobStoring/Activities/ReadBlob.cs
index 7672ddd0b..b3893bbe6 100644
--- a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/LINGYUN/Abp/Elsa/Activities/BlobStoring/Activities/ReadBlob.cs
+++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/LINGYUN/Abp/Elsa/Activities/BlobStoring/Activities/ReadBlob.cs
@@ -1,7 +1,6 @@
using Elsa;
using Elsa.ActivityResults;
using Elsa.Attributes;
-using Elsa.Services;
using Elsa.Services.Models;
using System;
using System.Threading.Tasks;
@@ -12,24 +11,22 @@ namespace LINGYUN.Abp.Elsa.Activities.BlobStoring;
[Action(Category = "Blob",
Description = "Reads a blob.",
Outcomes = new[] { OutcomeNames.Done })]
-public class ReadBlob : Activity
+public class ReadBlob : BlobActivity
{
- private readonly IBlobContainer _container;
-
[ActivityInput(Hint = "Path of the blob.")]
public string? Path { get; set; }
[ActivityOutput]
public byte[]? Output { get; set; }
- public ReadBlob(IBlobContainer container)
+ public ReadBlob(IBlobContainer blobContainer)
+ : base(blobContainer)
{
- _container = container;
}
protected async override ValueTask OnExecuteAsync(ActivityExecutionContext context)
{
- Output = await _container.GetAllBytesAsync(Path, context.CancellationToken);
+ Output = await BlobContainer.GetAllBytesAsync(Path, context.CancellationToken);
return Done();
}
diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/LINGYUN/Abp/Elsa/Activities/BlobStoring/Activities/WriteBlob.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/LINGYUN/Abp/Elsa/Activities/BlobStoring/Activities/WriteBlob.cs
index 65367c7da..6c70f5531 100644
--- a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/LINGYUN/Abp/Elsa/Activities/BlobStoring/Activities/WriteBlob.cs
+++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/LINGYUN/Abp/Elsa/Activities/BlobStoring/Activities/WriteBlob.cs
@@ -2,7 +2,6 @@
using Elsa.ActivityResults;
using Elsa.Attributes;
using Elsa.Expressions;
-using Elsa.Services;
using Elsa.Services.Models;
using System;
using System.Threading.Tasks;
@@ -13,10 +12,8 @@ namespace LINGYUN.Abp.Elsa.Activities.BlobStoring;
[Action(Category = "Blob",
Description = "Save a blob.",
Outcomes = new[] { OutcomeNames.Done })]
-public class WriteBlob : Activity
+public class WriteBlob : BlobActivity
{
- private readonly IBlobContainer _container;
-
[ActivityInput(Hint = "Path of the blob.")]
public string? Path { get; set; }
@@ -26,14 +23,14 @@ public class WriteBlob : Activity
[ActivityInput(Hint = "The bytes to write.", SupportedSyntaxes = new[] { SyntaxNames.JavaScript }, DefaultSyntax = SyntaxNames.JavaScript)]
public byte[]? Bytes { get; set; }
- public WriteBlob(IBlobContainer container)
+ public WriteBlob(IBlobContainer blobContainer)
+ : base(blobContainer)
{
- _container = container;
}
protected async override ValueTask OnExecuteAsync(ActivityExecutionContext context)
{
- await _container.SaveAsync(Path, Bytes, Overwrite, context.CancellationToken);
+ await BlobContainer.SaveAsync(Path, Bytes, Overwrite, context.CancellationToken);
return Done();
}
diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/LINGYUN/Abp/Elsa/Activities/BlobStoring/AbpElsaBlobContainer.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/LINGYUN/Abp/Elsa/Activities/BlobStoring/ElsaBlobContainer.cs
similarity index 52%
rename from aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/LINGYUN/Abp/Elsa/Activities/BlobStoring/AbpElsaBlobContainer.cs
rename to aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/LINGYUN/Abp/Elsa/Activities/BlobStoring/ElsaBlobContainer.cs
index acbac9218..b37a25c74 100644
--- a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/LINGYUN/Abp/Elsa/Activities/BlobStoring/AbpElsaBlobContainer.cs
+++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/LINGYUN/Abp/Elsa/Activities/BlobStoring/ElsaBlobContainer.cs
@@ -2,7 +2,7 @@
namespace LINGYUN.Abp.Elsa.Activities.BlobStoring;
-[BlobContainerName("elsa-container")]
-public class AbpElsaBlobContainer
+[BlobContainerName("elsa")]
+public class ElsaBlobContainer
{
}
diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.IM/FodyWeavers.xml b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.IM/FodyWeavers.xml
new file mode 100644
index 000000000..c485a4548
--- /dev/null
+++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.IM/FodyWeavers.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.IM/LINGYUN.Abp.Elsa.Activities.IM.csproj b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.IM/LINGYUN.Abp.Elsa.Activities.IM.csproj
new file mode 100644
index 000000000..63640ac43
--- /dev/null
+++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.IM/LINGYUN.Abp.Elsa.Activities.IM.csproj
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+ netstandard2.1
+
+ enable
+
+
+
+
+
+
+
+
diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.IM/LINGYUN/Abp/Elsa/Activities/IM/AbpElsaActivitiesIMModule.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.IM/LINGYUN/Abp/Elsa/Activities/IM/AbpElsaActivitiesIMModule.cs
new file mode 100644
index 000000000..323257961
--- /dev/null
+++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.IM/LINGYUN/Abp/Elsa/Activities/IM/AbpElsaActivitiesIMModule.cs
@@ -0,0 +1,11 @@
+using LINGYUN.Abp.IM;
+using Volo.Abp.Modularity;
+
+namespace LINGYUN.Abp.Elsa.Activities.IM;
+
+[DependsOn(
+ typeof(AbpElsaModule),
+ typeof(AbpIMModule))]
+public class AbpElsaActivitiesIMModule : AbpModule
+{
+}
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
new file mode 100644
index 000000000..24cf6abe8
--- /dev/null
+++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.IM/LINGYUN/Abp/Elsa/Activities/IM/Activities/SendMessage.cs
@@ -0,0 +1,90 @@
+using Elsa.ActivityResults;
+using Elsa.Attributes;
+using Elsa.Services;
+using Elsa.Services.Models;
+using LINGYUN.Abp.IM.Messages;
+using System;
+using System.Threading.Tasks;
+using Volo.Abp.Timing;
+
+namespace LINGYUN.Abp.Elsa.Activities.IM;
+
+[Action(Category = "Message", Description = "Send an message.")]
+public class SendMessage : Activity
+{
+ private readonly IClock _clock;
+ private readonly IMessageSender _messageSender;
+
+ [ActivityInput(Hint = "The message content.")]
+ public string Content { get; set; } //TODO: Other message type
+
+ [ActivityInput(Hint = "Source user identity.")]
+ public Guid FormUser { get; set; }
+
+ [ActivityInput(Hint = "Source user name.")]
+ public string? FormUserName { get; set; }
+
+ [ActivityInput(
+ Hint = "Receiving user identity.",
+ UIHint = "If the value is not empty, it is a user message")]
+ public Guid? To { get; set; }
+
+ [ActivityInput(
+ Hint = "Receiving group identity.",
+ UIHint = "If the value is not empty, it is a group message")]
+ public string? GroupId { get; set; }
+
+ [ActivityOutput]
+ public string? MessageId { get; set; }
+
+ public SendMessage(
+ IClock clock,
+ IMessageSender messageSender)
+ {
+ _clock = clock;
+ _messageSender = messageSender;
+ }
+
+
+ protected async override ValueTask OnExecuteAsync(ActivityExecutionContext context)
+ {
+ ChatMessage? chatMessage = null;
+ var tenantId = context.GetTenantId();
+
+ if (!GroupId.IsNullOrWhiteSpace())
+ {
+ chatMessage = ChatMessage.Group(
+ FormUser,
+ FormUserName,
+ GroupId,
+ Content,
+ _clock,
+ false,
+ MessageType.Text,
+ MessageSourceTye.User,
+ tenantId);
+ }
+ else if (To.HasValue)
+ {
+ chatMessage = ChatMessage.User(
+ FormUser,
+ FormUserName,
+ To.Value,
+ Content,
+ _clock,
+ false,
+ MessageType.Text,
+ MessageSourceTye.User,
+ tenantId);
+ }
+
+ if (chatMessage != null)
+ {
+ MessageId = await _messageSender.SendMessageAsync(chatMessage);
+
+ return Done();
+ }
+
+ return Suspend();
+ }
+}
diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.IM/LINGYUN/Abp/Elsa/Activities/IM/Startup.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.IM/LINGYUN/Abp/Elsa/Activities/IM/Startup.cs
new file mode 100644
index 000000000..69f2e4ffd
--- /dev/null
+++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.IM/LINGYUN/Abp/Elsa/Activities/IM/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.IM;
+
+[Feature("IM")]
+public class Startup : StartupBase
+{
+ public override void ConfigureElsa(ElsaOptionsBuilder elsa, IConfiguration configuration)
+ {
+ elsa.AddIMActivities();
+ }
+}
diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.IM/Microsoft/Extensions/DependencyInjection/IMServiceCollectionExtensions.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.IM/Microsoft/Extensions/DependencyInjection/IMServiceCollectionExtensions.cs
new file mode 100644
index 000000000..4b9180430
--- /dev/null
+++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.IM/Microsoft/Extensions/DependencyInjection/IMServiceCollectionExtensions.cs
@@ -0,0 +1,15 @@
+using Elsa.Options;
+using LINGYUN.Abp.Elsa.Activities.IM;
+
+namespace Microsoft.Extensions.DependencyInjection;
+
+public static class IMServiceCollectionExtensions
+{
+ public static ElsaOptionsBuilder AddIMActivities(this ElsaOptionsBuilder options)
+ {
+ options
+ .AddActivity();
+
+ return options;
+ }
+}
diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Notifications/FodyWeavers.xml b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Notifications/FodyWeavers.xml
new file mode 100644
index 000000000..c485a4548
--- /dev/null
+++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Notifications/FodyWeavers.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Notifications/FodyWeavers.xsd b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Notifications/FodyWeavers.xsd
new file mode 100644
index 000000000..11da52550
--- /dev/null
+++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Notifications/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.Notifications/LINGYUN.Abp.Elsa.Activities.Notifications.csproj b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Notifications/LINGYUN.Abp.Elsa.Activities.Notifications.csproj
new file mode 100644
index 000000000..f69447a35
--- /dev/null
+++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Notifications/LINGYUN.Abp.Elsa.Activities.Notifications.csproj
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+ netstandard2.1
+
+ enable
+
+
+
+
+
+
+
+
diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Notifications/LINGYUN/Abp/Elsa/Activities/Notifications/AbpElsaActivitiesNotificationsModule.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Notifications/LINGYUN/Abp/Elsa/Activities/Notifications/AbpElsaActivitiesNotificationsModule.cs
new file mode 100644
index 000000000..406fe5c27
--- /dev/null
+++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Notifications/LINGYUN/Abp/Elsa/Activities/Notifications/AbpElsaActivitiesNotificationsModule.cs
@@ -0,0 +1,11 @@
+using LINGYUN.Abp.Notifications;
+using Volo.Abp.Modularity;
+
+namespace LINGYUN.Abp.Elsa.Activities.Notifications;
+
+[DependsOn(
+ typeof(AbpElsaModule),
+ typeof(AbpNotificationModule))]
+public class AbpElsaActivitiesNotificationsModule : AbpModule
+{
+}
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
new file mode 100644
index 000000000..d180f9078
--- /dev/null
+++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Notifications/LINGYUN/Abp/Elsa/Activities/Notifications/Activities/SendNotification.cs
@@ -0,0 +1,82 @@
+using Elsa.ActivityResults;
+using Elsa.Attributes;
+using Elsa.Design;
+using Elsa.Expressions;
+using Elsa.Providers.WorkflowStorage;
+using Elsa.Services;
+using Elsa.Services.Models;
+using LINGYUN.Abp.Notifications;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace LINGYUN.Abp.Elsa.Activities.Notifications;
+
+[Action(Category = "Notification", Description = "Send an notification.")]
+public class SendNotification : Activity
+{
+ private readonly INotificationSender _notificationSender;
+
+ [ActivityInput(Hint = "The name of the registered notification.", SupportedSyntaxes = new[] { SyntaxNames.JavaScript, SyntaxNames.Liquid })]
+ public string NotificationName { get; set; }
+
+ [ActivityInput(
+ Hint = "Notifications pass data or template content.",
+ UIHint = ActivityInputUIHints.MultiLine,
+ SupportedSyntaxes = new[] { SyntaxNames.JavaScript, SyntaxNames.Liquid },
+ DefaultWorkflowStorageProvider = TransientWorkflowStorageProvider.ProviderName
+ )]
+ public object NotificationData { get; set; }
+
+ [ActivityInput(
+ Hint = "The recipients user id list.",
+ UIHint = ActivityInputUIHints.MultiText,
+ DefaultSyntax = SyntaxNames.Json,
+ SupportedSyntaxes = new[] { SyntaxNames.Json, SyntaxNames.JavaScript })]
+ public ICollection To { get; set; } = new List();
+
+ [ActivityInput(Hint = "Notifications severity.", SupportedSyntaxes = new[] { SyntaxNames.JavaScript, SyntaxNames.Liquid })]
+ public NotificationSeverity Severity { get; set; } = NotificationSeverity.Info;
+
+ [ActivityOutput]
+ public string? NotificationId { get; set; }
+
+ public SendNotification(
+ INotificationSender notificationSender)
+ {
+ _notificationSender = notificationSender;
+ }
+
+
+ protected async override ValueTask OnExecuteAsync(ActivityExecutionContext context)
+ {
+ var tenantId = context.GetTenantId();
+ switch (NotificationData)
+ {
+ case NotificationData data:
+ NotificationId = await _notificationSender.SendNofiterAsync(
+ NotificationName,
+ data,
+ GetUserIdentifiers(),
+ tenantId,
+ Severity);
+ return Done();
+ case NotificationTemplate template:
+ NotificationId = await _notificationSender.SendNofiterAsync(
+ NotificationName,
+ template,
+ GetUserIdentifiers(),
+ tenantId,
+ Severity);
+ return Done();
+ }
+
+ return Suspend();
+ }
+
+ private IEnumerable GetUserIdentifiers()
+ {
+ return To.Select(to => new UserIdentifier(to, to.ToString()));
+ }
+}
diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Notifications/LINGYUN/Abp/Elsa/Activities/Notifications/Startup.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Notifications/LINGYUN/Abp/Elsa/Activities/Notifications/Startup.cs
new file mode 100644
index 000000000..cb9fd3e4c
--- /dev/null
+++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Notifications/LINGYUN/Abp/Elsa/Activities/Notifications/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.Notifications;
+
+[Feature("Notification")]
+public class Startup : StartupBase
+{
+ public override void ConfigureElsa(ElsaOptionsBuilder elsa, IConfiguration configuration)
+ {
+ elsa.AddNotificationActivities();
+ }
+}
diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Notifications/Microsoft/Extensions/DependencyInjection/NotificationServiceCollectionExtensions.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Notifications/Microsoft/Extensions/DependencyInjection/NotificationServiceCollectionExtensions.cs
new file mode 100644
index 000000000..02b80884e
--- /dev/null
+++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Notifications/Microsoft/Extensions/DependencyInjection/NotificationServiceCollectionExtensions.cs
@@ -0,0 +1,15 @@
+using Elsa.Options;
+using LINGYUN.Abp.Elsa.Activities.Notifications;
+
+namespace Microsoft.Extensions.DependencyInjection;
+
+public static class NotificationServiceCollectionExtensions
+{
+ public static ElsaOptionsBuilder AddNotificationActivities(this ElsaOptionsBuilder options)
+ {
+ options
+ .AddActivity();
+
+ return options;
+ }
+}
diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFramework.Core/FodyWeavers.xml b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFramework.Core/FodyWeavers.xml
new file mode 100644
index 000000000..c485a4548
--- /dev/null
+++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFramework.Core/FodyWeavers.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Server/FodyWeavers.xml b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Server/FodyWeavers.xml
index ac6b5b292..c485a4548 100644
--- a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Server/FodyWeavers.xml
+++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Server/FodyWeavers.xml
@@ -1,3 +1,3 @@
-
+
\ No newline at end of file
diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa/Elsa/Models/WorkflowInstanceExtensions.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa/Elsa/Models/WorkflowInstanceExtensions.cs
new file mode 100644
index 000000000..cfda57ba4
--- /dev/null
+++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa/Elsa/Models/WorkflowInstanceExtensions.cs
@@ -0,0 +1,17 @@
+using System;
+
+namespace Elsa.Models;
+
+public static class WorkflowInstanceExtensions
+{
+ public static Guid? GetTenantId(this WorkflowInstance instance)
+ {
+ var tenantId = instance.TenantId;
+ if (!tenantId.IsNullOrWhiteSpace() &&
+ Guid.TryParse(tenantId, out var id))
+ {
+ return id;
+ }
+ return null;
+ }
+}
diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa/Elsa/Services/Models/ActivityExecutionContextExtensions.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa/Elsa/Services/Models/ActivityExecutionContextExtensions.cs
new file mode 100644
index 000000000..990ad4bf6
--- /dev/null
+++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa/Elsa/Services/Models/ActivityExecutionContextExtensions.cs
@@ -0,0 +1,12 @@
+using Elsa.Models;
+using System;
+
+namespace Elsa.Services.Models;
+
+public static class ActivityExecutionContextExtensions
+{
+ public static Guid? GetTenantId(this ActivityExecutionContext context)
+ {
+ return context.WorkflowInstance.GetTenantId();
+ }
+}
diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa/FodyWeavers.xml b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa/FodyWeavers.xml
index ac6b5b292..c485a4548 100644
--- a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa/FodyWeavers.xml
+++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa/FodyWeavers.xml
@@ -1,3 +1,3 @@
-
+
\ No newline at end of file
diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa/LINGYUN.Abp.Elsa.csproj b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa/LINGYUN.Abp.Elsa.csproj
index d07bc6ce9..fcf7f9078 100644
--- a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa/LINGYUN.Abp.Elsa.csproj
+++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa/LINGYUN.Abp.Elsa.csproj
@@ -6,6 +6,7 @@
netstandard2.1
+ Enable
diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa/LINGYUN/Abp/Elsa/AbpElsaModule.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa/LINGYUN/Abp/Elsa/AbpElsaModule.cs
index b96821e9d..31075b2dc 100644
--- a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa/LINGYUN/Abp/Elsa/AbpElsaModule.cs
+++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa/LINGYUN/Abp/Elsa/AbpElsaModule.cs
@@ -46,7 +46,8 @@ public class AbpElsaModule : AbpModule
builder.Configure(options);
});
- context.Services.AddSingleton();
+ context.Services.Replace(ServiceLifetime.Singleton);
+ context.Services.Replace(ServiceLifetime.Scoped);
Configure(options =>
{
diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa/LINGYUN/Abp/Elsa/AbpTenantAccessor.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa/LINGYUN/Abp/Elsa/AbpTenantAccessor.cs
index a9af50bd3..a35ac8243 100644
--- a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa/LINGYUN/Abp/Elsa/AbpTenantAccessor.cs
+++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa/LINGYUN/Abp/Elsa/AbpTenantAccessor.cs
@@ -15,12 +15,13 @@ public class AbpTenantAccessor : ITenantAccessor
_currentTenant = currentTenant;
}
- public Task GetTenantIdAsync(CancellationToken cancellationToken = default)
+ public Task GetTenantIdAsync(CancellationToken cancellationToken = default)
{
+ string? tenantId = null;
if (_currentTenant.IsAvailable)
{
- return Task.FromResult(_currentTenant.GetId().ToString());
+ tenantId = _currentTenant.GetId().ToString();
}
- return Task.FromResult("");
+ return Task.FromResult(tenantId);
}
}
diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa/LINGYUN/Abp/Elsa/AbpWorkflowRunner.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa/LINGYUN/Abp/Elsa/AbpWorkflowRunner.cs
new file mode 100644
index 000000000..2ea2842c6
--- /dev/null
+++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa/LINGYUN/Abp/Elsa/AbpWorkflowRunner.cs
@@ -0,0 +1,52 @@
+using Elsa.Models;
+using Elsa.Services;
+using Elsa.Services.Models;
+using Elsa.Services.Workflows;
+using Elsa.Services.WorkflowStorage;
+using MediatR;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+using System.Threading;
+using System.Threading.Tasks;
+using Volo.Abp.MultiTenancy;
+
+namespace LINGYUN.Abp.Elsa;
+
+public class AbpWorkflowRunner : WorkflowRunner
+{
+ private readonly ICurrentTenant _currentTenant;
+ public AbpWorkflowRunner(
+ ICurrentTenant currentTenant,
+ IWorkflowContextManager workflowContextManager,
+ IMediator mediator,
+ IServiceScopeFactory serviceScopeFactory,
+ IGetsStartActivities startingActivitiesProvider,
+ IWorkflowStorageService workflowStorageService,
+ ILogger logger)
+ : base(
+ workflowContextManager,
+ mediator,
+ serviceScopeFactory,
+ startingActivitiesProvider,
+ workflowStorageService,
+ logger)
+ {
+ _currentTenant = currentTenant;
+ }
+
+ protected async override Task RunWorkflowInternalAsync(
+ WorkflowExecutionContext workflowExecutionContext,
+ string? activityId = null,
+ CancellationToken cancellationToken = default)
+ {
+ var tenantId = workflowExecutionContext.WorkflowInstance.GetTenantId();
+
+ using (_currentTenant.Change(tenantId))
+ {
+ return await base.RunWorkflowInternalAsync(
+ workflowExecutionContext,
+ activityId,
+ cancellationToken);
+ }
+ }
+}
diff --git a/aspnet-core/modules/message/LINGYUN.Abp.MessageService.Domain/LINGYUN/Abp/MessageService/Chat/Message.cs b/aspnet-core/modules/message/LINGYUN.Abp.MessageService.Domain/LINGYUN/Abp/MessageService/Chat/Message.cs
index 1a0e29e92..edcbabedb 100644
--- a/aspnet-core/modules/message/LINGYUN.Abp.MessageService.Domain/LINGYUN/Abp/MessageService/Chat/Message.cs
+++ b/aspnet-core/modules/message/LINGYUN.Abp.MessageService.Domain/LINGYUN/Abp/MessageService/Chat/Message.cs
@@ -31,7 +31,7 @@ namespace LINGYUN.Abp.MessageService.Chat
///
/// 消息来源
///
- public virtual MessageSourceTye Source { get; protected set; }
+ public virtual MessageSourceType Source { get; protected set; }
///
/// 发送状态
///
@@ -43,7 +43,7 @@ namespace LINGYUN.Abp.MessageService.Chat
string sendUserName,
string content,
MessageType type = MessageType.Text,
- MessageSourceTye source = MessageSourceTye.User,
+ MessageSourceType source = MessageSourceType.User,
Guid? tenantId = null)
{
MessageId = id;
diff --git a/aspnet-core/modules/message/LINGYUN.Abp.MessageService.Domain/LINGYUN/Abp/MessageService/Chat/UserMessage.cs b/aspnet-core/modules/message/LINGYUN.Abp.MessageService.Domain/LINGYUN/Abp/MessageService/Chat/UserMessage.cs
index 37c6d39e6..b50f249e0 100644
--- a/aspnet-core/modules/message/LINGYUN.Abp.MessageService.Domain/LINGYUN/Abp/MessageService/Chat/UserMessage.cs
+++ b/aspnet-core/modules/message/LINGYUN.Abp.MessageService.Domain/LINGYUN/Abp/MessageService/Chat/UserMessage.cs
@@ -18,7 +18,7 @@ namespace LINGYUN.Abp.MessageService.Chat
Guid receiveUserId,
string content,
MessageType type = MessageType.Text,
- MessageSourceTye source = MessageSourceTye.User,
+ MessageSourceType source = MessageSourceType.User,
Guid? tenantId = null)
: base(id, sendUserId, sendUserName, content, type, source, tenantId)
{
diff --git a/aspnet-core/modules/message/LINGYUN.Abp.MessageService.Domain/LINGYUN/Abp/MessageService/Groups/GroupMessage.cs b/aspnet-core/modules/message/LINGYUN.Abp.MessageService.Domain/LINGYUN/Abp/MessageService/Groups/GroupMessage.cs
index 7619a3d1e..5198467ad 100644
--- a/aspnet-core/modules/message/LINGYUN.Abp.MessageService.Domain/LINGYUN/Abp/MessageService/Groups/GroupMessage.cs
+++ b/aspnet-core/modules/message/LINGYUN.Abp.MessageService.Domain/LINGYUN/Abp/MessageService/Groups/GroupMessage.cs
@@ -19,7 +19,7 @@ namespace LINGYUN.Abp.MessageService.Groups
long groupId,
string content,
MessageType type = MessageType.Text,
- MessageSourceTye source = MessageSourceTye.User,
+ MessageSourceType source = MessageSourceType.User,
Guid? tenantId = null)
: base(id, sendUserId, sendUserName, content, type, source, tenantId)
{
diff --git a/aspnet-core/modules/message/LINGYUN.Abp.MessageService.EntityFrameworkCore/LINGYUN/Abp/MessageService/Chat/EfCoreMessageRepository.cs b/aspnet-core/modules/message/LINGYUN.Abp.MessageService.EntityFrameworkCore/LINGYUN/Abp/MessageService/Chat/EfCoreMessageRepository.cs
index e65586c8c..65d78e375 100644
--- a/aspnet-core/modules/message/LINGYUN.Abp.MessageService.EntityFrameworkCore/LINGYUN/Abp/MessageService/Chat/EfCoreMessageRepository.cs
+++ b/aspnet-core/modules/message/LINGYUN.Abp.MessageService.EntityFrameworkCore/LINGYUN/Abp/MessageService/Chat/EfCoreMessageRepository.cs
@@ -341,7 +341,7 @@ namespace LINGYUN.Abp.MessageService.Chat
FormUserName = GetValue(reader, 3),
Object = GetValue(reader, 4),
AvatarUrl = GetValue(reader, 5),
- Source = (MessageSourceTye)GetValue(reader, 6),
+ Source = (MessageSourceType)GetValue(reader, 6),
MessageId = GetValue(reader, 7),
MessageType = (MessageType)GetValue(reader, 8),
TenantId = GetValue(reader, 9),
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 65dfdb07d..a166fabaa 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
@@ -47,6 +47,8 @@
+
+
diff --git a/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/WorkflowManagementHttpApiHostModule.Configure.cs b/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/WorkflowManagementHttpApiHostModule.Configure.cs
index 25d663d50..f50a9e502 100644
--- a/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/WorkflowManagementHttpApiHostModule.Configure.cs
+++ b/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/WorkflowManagementHttpApiHostModule.Configure.cs
@@ -74,6 +74,8 @@ public partial class WorkflowManagementHttpApiHostModule
typeof(Elsa.Webhooks.Persistence.EntityFramework.MySql.Startup),
typeof(Elsa.WorkflowSettings.Persistence.EntityFramework.MySql.Startup),
typeof(LINGYUN.Abp.Elsa.Activities.BlobStoring.Startup),
+ typeof(LINGYUN.Abp.Elsa.Activities.Notifications.Startup),
+ typeof(LINGYUN.Abp.Elsa.Activities.IM.Startup),
};
PreConfigure(elsa =>
diff --git a/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/appsettings.Development.json b/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/appsettings.Development.json
index fbf9aab36..9de187a76 100644
--- a/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/appsettings.Development.json
+++ b/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/appsettings.Development.json
@@ -41,6 +41,8 @@
"Conductor": true,
"Telnyx": true,
"BlobStoring": true,
+ "Notification": true,
+ "IM": true,
"Webhooks": {
"Enabled": true,
"ConnectionStringIdentifier": "Workflow",