From 325e8b8ddc396df337505efeb7ae2949f770a442 Mon Sep 17 00:00:00 2001
From: cKey <35512826+colinin@users.noreply.github.com>
Date: Thu, 9 Dec 2021 14:37:26 +0800
Subject: [PATCH] =?UTF-8?q?feat(workflow):=20=E5=A2=9E=E5=8A=A0ES=E5=AD=98?=
=?UTF-8?q?=E5=82=A8=E6=94=AF=E6=8C=81=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=B7=A5?=
=?UTF-8?q?=E4=BD=9C=E6=B5=81=E7=AE=A1=E7=90=86=E9=A1=B9=E7=9B=AE.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...LINGYUN.Abp.WorkflowCore.Components.csproj | 1 +
.../AbpWorkflowCoreComponentsModule.cs | 8 +-
.../Components/Primitives/RemoteService.cs | 81 +++
.../{EmailStepBody.cs => SendEmail.cs} | 8 +-
.../Primitives/{SmsStepBody.cs => SendSms.cs} | 8 +-
.../Elasticsearch/AbpElasticsearchIndexer.cs | 3 +-
...kflowCore.Persistence.Elasticsearch.csproj | 20 +
...kflowCorePersistenceElasticsearchModule.cs | 22 +
...flowCorePersistenceElasticsearchOptions.cs | 14 +
.../ElasticsearchPersistenceProvider.cs | 555 ++++++++++++++++++
.../Models/PersistedScheduledCommand.cs | 32 +
.../AbpWorkflowCorePersistenceModule.cs | 4 +-
.../AbpWorkflowPersistenceProvider.cs | 3 +-
.../LINGYUN.Abp.WorkflowCore.csproj | 6 +-
.../Abp/WorkflowCore/AbpDateTimeProvider.cs | 22 +
...lowManagement.Application.Contracts.csproj | 20 +
...wManagementPermissionDefinitionProvider.cs | 23 +
.../WorkflowManagementPermissions.cs | 9 +
...lowManagementApplicationContractsModule.cs | 14 +
.../WorkflowManagementRemoteServiceConsts.cs | 7 +
....Abp.WorkflowManagement.Application.csproj | 20 +
.../WorkflowManagementAppServiceBase.cs | 14 +
...kflowManagementApplicationMapperProfile.cs | 11 +
.../WorkflowManagementApplicationModule.cs | 25 +
...bp.WorkflowManagement.Domain.Shared.csproj | 27 +
.../Localization/Resources/en.json | 7 +
.../Localization/Resources/zh-Hans.json | 7 +
.../WorkflowManagementResource.cs | 9 +
.../WorkflowManagementDomainSharedModule.cs | 33 ++
.../WorkflowManagementErrorCodes.cs | 7 +
...NGYUN.Abp.WorkflowManagement.Domain.csproj | 22 +
...flowManagementSettingDefinitionProvider.cs | 11 +
.../Settings/WorkflowManagementSettings.cs | 7 +
.../LINGYUN/Abp/WorkflowManagement/Step.cs | 57 ++
.../Abp/WorkflowManagement/Workflow.cs | 45 ++
.../WorkflowManagementDbProperties.cs | 12 +
.../WorkflowManagementDomainMapperProfile.cs | 12 +
.../WorkflowManagementDomainModule.cs | 27 +
...kflowManagement.EntityFrameworkCore.csproj | 19 +
.../IWorkflowManagementDbContext.cs | 10 +
.../WorkflowManagementDbContext.cs | 20 +
...agementDbContextModelCreatingExtensions.cs | 22 +
...flowManagementEntityFrameworkCoreModule.cs | 20 +
...agementModelBuilderConfigurationOptions.cs | 18 +
...GYUN.Abp.WorkflowManagement.HttpApi.csproj | 19 +
.../WorkflowManagementHttpApiModule.cs | 41 ++
...orkflowManagement.SettingManagement.csproj | 20 +
.../SettingManagement/SettingAppService.cs | 77 +++
.../SettingManagement/SettingController.cs | 48 ++
...rkflowManagementSettingManagementModule.cs | 15 +
50 files changed, 1527 insertions(+), 15 deletions(-)
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowCore.Components/LINGYUN/Abp/WorkflowCore/Components/Primitives/RemoteService.cs
rename aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowCore.Components/LINGYUN/Abp/WorkflowCore/Components/Primitives/{EmailStepBody.cs => SendEmail.cs} (85%)
rename aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowCore.Components/LINGYUN/Abp/WorkflowCore/Components/Primitives/{SmsStepBody.cs => SendSms.cs} (81%)
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowCore.Persistence.Elasticsearch/LINGYUN.Abp.WorkflowCore.Persistence.Elasticsearch.csproj
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowCore.Persistence.Elasticsearch/LINGYUN/Abp/WorkflowCore/Persistence/Elasticsearch/AbpWorkflowCorePersistenceElasticsearchModule.cs
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowCore.Persistence.Elasticsearch/LINGYUN/Abp/WorkflowCore/Persistence/Elasticsearch/AbpWorkflowCorePersistenceElasticsearchOptions.cs
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowCore.Persistence.Elasticsearch/LINGYUN/Abp/WorkflowCore/Persistence/Elasticsearch/ElasticsearchPersistenceProvider.cs
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowCore.Persistence.Elasticsearch/LINGYUN/Abp/WorkflowCore/Persistence/Elasticsearch/Models/PersistedScheduledCommand.cs
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowCore/LINGYUN/Abp/WorkflowCore/AbpDateTimeProvider.cs
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.Application.Contracts/LINGYUN.Abp.WorkflowManagement.Application.Contracts.csproj
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.Application.Contracts/LINGYUN/Abp/WorkflowManagement/Authorization/WorkflowManagementPermissionDefinitionProvider.cs
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.Application.Contracts/LINGYUN/Abp/WorkflowManagement/Authorization/WorkflowManagementPermissions.cs
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.Application.Contracts/LINGYUN/Abp/WorkflowManagement/WorkflowManagementApplicationContractsModule.cs
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.Application.Contracts/LINGYUN/Abp/WorkflowManagement/WorkflowManagementRemoteServiceConsts.cs
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.Application/LINGYUN.Abp.WorkflowManagement.Application.csproj
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.Application/LINGYUN/Abp/WorkflowManagement/WorkflowManagementAppServiceBase.cs
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.Application/LINGYUN/Abp/WorkflowManagement/WorkflowManagementApplicationMapperProfile.cs
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.Application/LINGYUN/Abp/WorkflowManagement/WorkflowManagementApplicationModule.cs
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.Domain.Shared/LINGYUN.Abp.WorkflowManagement.Domain.Shared.csproj
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.Domain.Shared/LINGYUN/Abp/WorkflowManagement/Localization/Resources/en.json
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.Domain.Shared/LINGYUN/Abp/WorkflowManagement/Localization/Resources/zh-Hans.json
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.Domain.Shared/LINGYUN/Abp/WorkflowManagement/Localization/WorkflowManagementResource.cs
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.Domain.Shared/LINGYUN/Abp/WorkflowManagement/WorkflowManagementDomainSharedModule.cs
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.Domain.Shared/LINGYUN/Abp/WorkflowManagement/WorkflowManagementErrorCodes.cs
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.Domain/LINGYUN.Abp.WorkflowManagement.Domain.csproj
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.Domain/LINGYUN/Abp/WorkflowManagement/Settings/WorkflowManagementSettingDefinitionProvider.cs
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.Domain/LINGYUN/Abp/WorkflowManagement/Settings/WorkflowManagementSettings.cs
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.Domain/LINGYUN/Abp/WorkflowManagement/Step.cs
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.Domain/LINGYUN/Abp/WorkflowManagement/Workflow.cs
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.Domain/LINGYUN/Abp/WorkflowManagement/WorkflowManagementDbProperties.cs
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.Domain/LINGYUN/Abp/WorkflowManagement/WorkflowManagementDomainMapperProfile.cs
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.Domain/LINGYUN/Abp/WorkflowManagement/WorkflowManagementDomainModule.cs
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.EntityFrameworkCore/LINGYUN.Abp.WorkflowManagement.EntityFrameworkCore.csproj
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.EntityFrameworkCore/LINGYUN/Abp/WorkflowManagement/EntityFrameworkCore/IWorkflowManagementDbContext.cs
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.EntityFrameworkCore/LINGYUN/Abp/WorkflowManagement/EntityFrameworkCore/WorkflowManagementDbContext.cs
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.EntityFrameworkCore/LINGYUN/Abp/WorkflowManagement/EntityFrameworkCore/WorkflowManagementDbContextModelCreatingExtensions.cs
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.EntityFrameworkCore/LINGYUN/Abp/WorkflowManagement/EntityFrameworkCore/WorkflowManagementEntityFrameworkCoreModule.cs
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.EntityFrameworkCore/LINGYUN/Abp/WorkflowManagement/EntityFrameworkCore/WorkflowManagementModelBuilderConfigurationOptions.cs
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.HttpApi/LINGYUN.Abp.WorkflowManagement.HttpApi.csproj
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.HttpApi/LINGYUN/Abp/WorkflowManagement/WorkflowManagementHttpApiModule.cs
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.SettingManagement/LINGYUN.Abp.WorkflowManagement.SettingManagement.csproj
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.SettingManagement/LINGYUN/Abp/WorkflowManagement/SettingManagement/SettingAppService.cs
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.SettingManagement/LINGYUN/Abp/WorkflowManagement/SettingManagement/SettingController.cs
create mode 100644 aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowManagement.SettingManagement/LINGYUN/Abp/WorkflowManagement/SettingManagement/WorkflowManagementSettingManagementModule.cs
diff --git a/aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowCore.Components/LINGYUN.Abp.WorkflowCore.Components.csproj b/aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowCore.Components/LINGYUN.Abp.WorkflowCore.Components.csproj
index 76233328a..41f84616c 100644
--- a/aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowCore.Components/LINGYUN.Abp.WorkflowCore.Components.csproj
+++ b/aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowCore.Components/LINGYUN.Abp.WorkflowCore.Components.csproj
@@ -11,6 +11,7 @@
+
diff --git a/aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowCore.Components/LINGYUN/Abp/WorkflowCore/Components/AbpWorkflowCoreComponentsModule.cs b/aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowCore.Components/LINGYUN/Abp/WorkflowCore/Components/AbpWorkflowCoreComponentsModule.cs
index cac71425a..fc0630583 100644
--- a/aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowCore.Components/LINGYUN/Abp/WorkflowCore/Components/AbpWorkflowCoreComponentsModule.cs
+++ b/aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowCore.Components/LINGYUN/Abp/WorkflowCore/Components/AbpWorkflowCoreComponentsModule.cs
@@ -1,4 +1,6 @@
-using Volo.Abp.Emailing;
+using LINGYUN.Abp.WorkflowCore.Components.Authentication;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.Emailing;
using Volo.Abp.Modularity;
using Volo.Abp.Sms;
@@ -10,5 +12,9 @@ namespace LINGYUN.Abp.WorkflowCore.Components
typeof(AbpWorkflowCoreModule))]
public class AbpWorkflowCoreComponentsModule : AbpModule
{
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ context.Services.AddSingleton(AsyncLocalCurrentAssigner.Instance);
+ }
}
}
diff --git a/aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowCore.Components/LINGYUN/Abp/WorkflowCore/Components/Primitives/RemoteService.cs b/aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowCore.Components/LINGYUN/Abp/WorkflowCore/Components/Primitives/RemoteService.cs
new file mode 100644
index 000000000..e648318a5
--- /dev/null
+++ b/aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowCore.Components/LINGYUN/Abp/WorkflowCore/Components/Primitives/RemoteService.cs
@@ -0,0 +1,81 @@
+using Microsoft.Extensions.DependencyInjection;
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Linq;
+using System.Reflection;
+using System.Threading.Tasks;
+using Volo.Abp.Localization;
+using Volo.Abp.MultiTenancy;
+using WorkflowCore.Interface;
+using WorkflowCore.Models;
+
+namespace LINGYUN.Abp.WorkflowCore.Components.Primitives
+{
+ public class RemoteService : StepBodyAsyncBase
+ {
+ private readonly ICurrentTenant _currentTenant;
+ private readonly IServiceProvider _serviceProvider;
+ public RemoteService(
+ ICurrentTenant currentTenant,
+ IServiceProvider serviceProvider)
+ {
+ _currentTenant = currentTenant;
+ _serviceProvider = serviceProvider;
+
+ Data = new Dictionary();
+ }
+ ///
+ /// 远程服务接口类型
+ ///
+ public string Interface { get; set; }
+ ///
+ /// 远程服务方法名称
+ ///
+ public string Method { get; set; }
+ ///
+ /// 请求参数
+ ///
+ public Dictionary Data { get; set; }
+ ///
+ /// 调用结果
+ ///
+ public object Result { get; set; }
+
+ public Guid? TenantId { get; set; }
+ public string CurrentCulture { get; set; }
+
+ public override async Task RunAsync(IStepExecutionContext context)
+ {
+ var serviceType = Type.GetType(Interface, true, true);
+ var method = serviceType.GetMethod(Method);
+
+ var serviceFactory = _serviceProvider.GetRequiredService(serviceType);
+
+ using (_currentTenant.Change(TenantId))
+ {
+ using (CultureHelper.Use(CurrentCulture ?? CultureInfo.CurrentCulture.Name))
+ {
+ // TODO: 身份令牌?
+ // 工作流中是否需要调用API, 还是用户调用API之后传递事件激活下一个步骤
+
+ // Abp Api动态代理
+ var result = (Task)method.Invoke(serviceFactory, Data.Select(x => x.Value).ToArray());
+ await result;
+
+ if (!method.ReturnType.GenericTypeArguments.IsNullOrEmpty())
+ {
+ var resultType = method.ReturnType.GenericTypeArguments[0];
+ var resultProperty = typeof(Task<>)
+ .MakeGenericType(resultType)
+ .GetProperty(nameof(Task