Service Bus Activities enhancements - Workflow Inbox and Test (#4512)
* Add Service Bus Message Test Scenario * change filename * add workflow test * save new unit test project (don't know why Guid have changed * use WorkfloInbox Message for ReceiveActivity and Worker * add test * add correlationId * add test with correlationId * saving sln * Fix project references * remove Moq librairies for UnitTests Projects * remove Moq and use NSubstitute --------- Co-authored-by: Jérémie DEVILLARD <jdevillard@users.noreply.github.com> Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
This commit is contained in:
parent
f0047e63cb
commit
fb68814974
296
Elsa.sln
296
Elsa.sln
|
|
@ -1,5 +1,8 @@
|
|||
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.7.34003.232
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{61017E64-6D00-49CB-9E81-5002DC8F7D5F}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{155227F0-A33B-40AA-A4B4-06F813EB921B}"
|
||||
|
|
@ -7,22 +10,22 @@ EndProject
|
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "common", "common", "{C6658DE0-2B2F-47F0-BB61-2CA66D435C09}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "solution", "solution", "{7D21EB5E-D6B4-48A5-A9BC-A26387A65F0B}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
README.md = README.md
|
||||
docker-compose.yml = docker-compose.yml
|
||||
common.props = common.props
|
||||
configureawait.props = configureawait.props
|
||||
.gitignore = .gitignore
|
||||
icon.png = icon.png
|
||||
.github\workflows\packages.yml = .github\workflows\packages.yml
|
||||
.github\workflows\all-in-one-web.yml = .github\workflows\all-in-one-web.yml
|
||||
build-and-run-all-in-one-web-docker.sh = build-and-run-all-in-one-web-docker.sh
|
||||
NuGet.Config = NuGet.Config
|
||||
.github\workflows\npm-packages.yml = .github\workflows\npm-packages.yml
|
||||
update-migrations.sh = update-migrations.sh
|
||||
.github\workflows\pr-body-generator.yml = .github\workflows\pr-body-generator.yml
|
||||
packages.props = packages.props
|
||||
EndProjectSection
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
.gitignore = .gitignore
|
||||
.github\workflows\all-in-one-web.yml = .github\workflows\all-in-one-web.yml
|
||||
build-and-run-all-in-one-web-docker.sh = build-and-run-all-in-one-web-docker.sh
|
||||
common.props = common.props
|
||||
configureawait.props = configureawait.props
|
||||
docker-compose.yml = docker-compose.yml
|
||||
icon.png = icon.png
|
||||
.github\workflows\npm-packages.yml = .github\workflows\npm-packages.yml
|
||||
NuGet.Config = NuGet.Config
|
||||
packages.props = packages.props
|
||||
.github\workflows\packages.yml = .github\workflows\packages.yml
|
||||
.github\workflows\pr-body-generator.yml = .github\workflows\pr-body-generator.yml
|
||||
README.md = README.md
|
||||
update-migrations.sh = update-migrations.sh
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{0354F050-3992-4DD4-B0EE-5FBA04AC72B6}"
|
||||
EndProject
|
||||
|
|
@ -32,93 +35,93 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "aspnet", "aspnet", "{56C2FF
|
|||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "modules", "modules", "{5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Quartz", "src\modules\Elsa.Quartz\Elsa.Quartz.csproj", "{7D5A49B4-9A9B-496E-803B-DEB85B2C3132}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Quartz", "src\modules\Elsa.Quartz\Elsa.Quartz.csproj", "{7D5A49B4-9A9B-496E-803B-DEB85B2C3132}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Http", "src\modules\Elsa.Http\Elsa.Http.csproj", "{82E26BF9-5F3A-4365-899A-AB1FFD54AA45}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Http", "src\modules\Elsa.Http\Elsa.Http.csproj", "{82E26BF9-5F3A-4365-899A-AB1FFD54AA45}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Scheduling", "src\modules\Elsa.Scheduling\Elsa.Scheduling.csproj", "{ACD65CE5-3CC2-47B1-BFAC-72443D764F6E}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Scheduling", "src\modules\Elsa.Scheduling\Elsa.Scheduling.csproj", "{ACD65CE5-3CC2-47B1-BFAC-72443D764F6E}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.AzureServiceBus", "src\modules\Elsa.AzureServiceBus\Elsa.AzureServiceBus.csproj", "{24C7095B-5CDD-4369-9F34-5565A019B195}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.AzureServiceBus", "src\modules\Elsa.AzureServiceBus\Elsa.AzureServiceBus.csproj", "{24C7095B-5CDD-4369-9F34-5565A019B195}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.JavaScript", "src\modules\Elsa.JavaScript\Elsa.JavaScript.csproj", "{D31581AB-A6C1-4B73-AB63-45667F6C82AE}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.JavaScript", "src\modules\Elsa.JavaScript\Elsa.JavaScript.csproj", "{D31581AB-A6C1-4B73-AB63-45667F6C82AE}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Hangfire", "src\modules\Elsa.Hangfire\Elsa.Hangfire.csproj", "{0601A2A6-2C62-418B-9104-8CDE497E5283}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Hangfire", "src\modules\Elsa.Hangfire\Elsa.Hangfire.csproj", "{0601A2A6-2C62-418B-9104-8CDE497E5283}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.WorkflowContexts", "src\modules\Elsa.WorkflowContexts\Elsa.WorkflowContexts.csproj", "{302BFC43-ED2F-43AE-8AD4-FCD481B0AC67}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.WorkflowContexts", "src\modules\Elsa.WorkflowContexts\Elsa.WorkflowContexts.csproj", "{302BFC43-ED2F-43AE-8AD4-FCD481B0AC67}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.MassTransit", "src\modules\Elsa.MassTransit\Elsa.MassTransit.csproj", "{BB983D0B-A939-4008-B9E3-C7C172BCF83A}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.MassTransit", "src\modules\Elsa.MassTransit\Elsa.MassTransit.csproj", "{BB983D0B-A939-4008-B9E3-C7C172BCF83A}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{90031D64-CA0F-46D0-9AF4-8DC023A5FFCD}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Labels", "src\modules\Elsa.Labels\Elsa.Labels.csproj", "{80FF5821-E831-450D-AA0C-C76D07D878F4}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Labels", "src\modules\Elsa.Labels\Elsa.Labels.csproj", "{80FF5821-E831-450D-AA0C-C76D07D878F4}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "bundles", "bundles", "{F06B9573-DF68-4606-866C-A7546A10A05A}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa", "src\bundles\Elsa\Elsa.csproj", "{FC5D2CE9-FFB0-478D-8D54-E4109D1FD202}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa", "src\bundles\Elsa\Elsa.csproj", "{FC5D2CE9-FFB0-478D-8D54-E4109D1FD202}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Liquid", "src\modules\Elsa.Liquid\Elsa.Liquid.csproj", "{8E5BD3D9-3529-48BC-B741-CFB7A69DB233}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Liquid", "src\modules\Elsa.Liquid\Elsa.Liquid.csproj", "{8E5BD3D9-3529-48BC-B741-CFB7A69DB233}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.ProtoActor", "src\modules\Elsa.ProtoActor\Elsa.ProtoActor.csproj", "{B2049499-D384-46DF-8837-F1180107DD54}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.ProtoActor", "src\modules\Elsa.ProtoActor\Elsa.ProtoActor.csproj", "{B2049499-D384-46DF-8837-F1180107DD54}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Dsl", "src\modules\Elsa.Dsl\Elsa.Dsl.csproj", "{78DAB791-8595-4612-8E9E-2248AF5B1862}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Dsl", "src\modules\Elsa.Dsl\Elsa.Dsl.csproj", "{78DAB791-8595-4612-8E9E-2248AF5B1862}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.AllInOne.Web", "src\bundles\Elsa.AllInOne.Web\Elsa.AllInOne.Web.csproj", "{E31F8955-B221-48AA-B301-6EE317D6F5B1}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.AllInOne.Web", "src\bundles\Elsa.AllInOne.Web\Elsa.AllInOne.Web.csproj", "{E31F8955-B221-48AA-B301-6EE317D6F5B1}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.WorkflowServer.Web", "src\bundles\Elsa.WorkflowServer.Web\Elsa.WorkflowServer.Web.csproj", "{3C2752A7-EEBC-4ED4-B1BF-0FCF6E071BC2}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.WorkflowServer.Web", "src\bundles\Elsa.WorkflowServer.Web\Elsa.WorkflowServer.Web.csproj", "{3C2752A7-EEBC-4ED4-B1BF-0FCF6E071BC2}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Workflows.Api", "src\modules\Elsa.Workflows.Api\Elsa.Workflows.Api.csproj", "{C9539BD8-D2AE-4A8D-8281-71A05B3FBF31}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Workflows.Api", "src\modules\Elsa.Workflows.Api\Elsa.Workflows.Api.csproj", "{C9539BD8-D2AE-4A8D-8281-71A05B3FBF31}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Workflows.Core", "src\modules\Elsa.Workflows.Core\Elsa.Workflows.Core.csproj", "{169E2C9B-6687-427F-A278-30BF849BFEDC}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Workflows.Core", "src\modules\Elsa.Workflows.Core\Elsa.Workflows.Core.csproj", "{169E2C9B-6687-427F-A278-30BF849BFEDC}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Workflows.Management", "src\modules\Elsa.Workflows.Management\Elsa.Workflows.Management.csproj", "{2DD5D66B-85E9-4AF9-911C-C9F963234159}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Workflows.Management", "src\modules\Elsa.Workflows.Management\Elsa.Workflows.Management.csproj", "{2DD5D66B-85E9-4AF9-911C-C9F963234159}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Workflows.Runtime", "src\modules\Elsa.Workflows.Runtime\Elsa.Workflows.Runtime.csproj", "{8A050229-DB79-4E0B-9AFF-7565E87F2954}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Workflows.Runtime", "src\modules\Elsa.Workflows.Runtime\Elsa.Workflows.Runtime.csproj", "{8A050229-DB79-4E0B-9AFF-7565E87F2954}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Features", "src\common\Elsa.Features\Elsa.Features.csproj", "{C237BA1A-3A7D-4AB2-BE09-2696F3C082A4}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Features", "src\common\Elsa.Features\Elsa.Features.csproj", "{C237BA1A-3A7D-4AB2-BE09-2696F3C082A4}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Expressions", "src\modules\Elsa.Expressions\Elsa.Expressions.csproj", "{80529478-A383-4FEA-B744-C71264969E9A}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Expressions", "src\modules\Elsa.Expressions\Elsa.Expressions.csproj", "{80529478-A383-4FEA-B744-C71264969E9A}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Api.Common", "src\common\Elsa.Api.Common\Elsa.Api.Common.csproj", "{39CD855E-83B1-4A96-93F7-01608211EBE3}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Api.Common", "src\common\Elsa.Api.Common\Elsa.Api.Common.csproj", "{39CD855E-83B1-4A96-93F7-01608211EBE3}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Identity", "src\modules\Elsa.Identity\Elsa.Identity.csproj", "{30B49E42-AE61-4F7C-981F-923F07BB3986}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Identity", "src\modules\Elsa.Identity\Elsa.Identity.csproj", "{30B49E42-AE61-4F7C-981F-923F07BB3986}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Common", "src\modules\Elsa.Common\Elsa.Common.csproj", "{D229105F-6879-4452-9189-75DE060C0F4C}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Common", "src\modules\Elsa.Common\Elsa.Common.csproj", "{D229105F-6879-4452-9189-75DE060C0F4C}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.EntityFrameworkCore", "src\modules\Elsa.EntityFrameworkCore\Elsa.EntityFrameworkCore.csproj", "{7CC95512-7F44-45C3-A669-95B7048D4730}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.EntityFrameworkCore", "src\modules\Elsa.EntityFrameworkCore\Elsa.EntityFrameworkCore.csproj", "{7CC95512-7F44-45C3-A669-95B7048D4730}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ConsoleApp.HelloWorld", "src\samples\console\Elsa.Samples.ConsoleApp.HelloWorld\Elsa.Samples.ConsoleApp.HelloWorld.csproj", "{D253AFC2-9496-4538-B424-47CC579B7A96}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.ConsoleApp.HelloWorld", "src\samples\console\Elsa.Samples.ConsoleApp.HelloWorld\Elsa.Samples.ConsoleApp.HelloWorld.csproj", "{D253AFC2-9496-4538-B424-47CC579B7A96}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ConsoleApp.SequentialWorkflows", "src\samples\console\Elsa.Samples.ConsoleApp.SequentialWorkflows\Elsa.Samples.ConsoleApp.SequentialWorkflows.csproj", "{74B9AFE0-EB4B-4AD2-BF25-90753203EFF8}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.ConsoleApp.SequentialWorkflows", "src\samples\console\Elsa.Samples.ConsoleApp.SequentialWorkflows\Elsa.Samples.ConsoleApp.SequentialWorkflows.csproj", "{74B9AFE0-EB4B-4AD2-BF25-90753203EFF8}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ConsoleApp.ConditionalWorkflows", "src\samples\console\Elsa.Samples.ConsoleApp.ConditionalWorkflows\Elsa.Samples.ConsoleApp.ConditionalWorkflows.csproj", "{70D3ACE9-EB41-4B36-949C-08B8C22B99F7}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.ConsoleApp.ConditionalWorkflows", "src\samples\console\Elsa.Samples.ConsoleApp.ConditionalWorkflows\Elsa.Samples.ConsoleApp.ConditionalWorkflows.csproj", "{70D3ACE9-EB41-4B36-949C-08B8C22B99F7}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ConsoleApp.LoopingWorkflows", "src\samples\console\Elsa.Samples.ConsoleApp.LoopingWorkflows\Elsa.Samples.ConsoleApp.LoopingWorkflows.csproj", "{997F5709-61E0-4874-BFC3-07974685E02E}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.ConsoleApp.LoopingWorkflows", "src\samples\console\Elsa.Samples.ConsoleApp.LoopingWorkflows\Elsa.Samples.ConsoleApp.LoopingWorkflows.csproj", "{997F5709-61E0-4874-BFC3-07974685E02E}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Telnyx", "src\modules\Elsa.Telnyx\Elsa.Telnyx.csproj", "{F09B30F7-AF33-44D7-B835-099D1F72A37E}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Telnyx", "src\modules\Elsa.Telnyx\Elsa.Telnyx.csproj", "{F09B30F7-AF33-44D7-B835-099D1F72A37E}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AspNet.TelnyxIntegration", "src\samples\aspnet\Elsa.Samples.AspNet.TelnyxIntegration\Elsa.Samples.AspNet.TelnyxIntegration.csproj", "{55AAF940-12DC-4793-805C-992AEF2C1E8D}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.AspNet.TelnyxIntegration", "src\samples\aspnet\Elsa.Samples.AspNet.TelnyxIntegration\Elsa.Samples.AspNet.TelnyxIntegration.csproj", "{55AAF940-12DC-4793-805C-992AEF2C1E8D}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ConsoleApp.Composition", "src\samples\console\Elsa.Samples.ConsoleApp.Composition\Elsa.Samples.ConsoleApp.Composition.csproj", "{1AA0AEFC-BD58-4284-A6C5-AD15C5C79782}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.ConsoleApp.Composition", "src\samples\console\Elsa.Samples.ConsoleApp.Composition\Elsa.Samples.ConsoleApp.Composition.csproj", "{1AA0AEFC-BD58-4284-A6C5-AD15C5C79782}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Email", "src\modules\Elsa.Email\Elsa.Email.csproj", "{1E5BD8D9-55BE-41E2-B389-6AB9F26C22AF}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Email", "src\modules\Elsa.Email\Elsa.Email.csproj", "{1E5BD8D9-55BE-41E2-B389-6AB9F26C22AF}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Workflows.Designer", "src\modules\Elsa.Workflows.Designer\Elsa.Workflows.Designer.csproj", "{B191F11D-583D-44D9-8A08-F5B0DC58B822}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Workflows.Designer", "src\modules\Elsa.Workflows.Designer\Elsa.Workflows.Designer.csproj", "{B191F11D-583D-44D9-8A08-F5B0DC58B822}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AspNet.HelloWorld", "src\samples\aspnet\Elsa.Samples.AspNet.HelloWorld\Elsa.Samples.AspNet.HelloWorld.csproj", "{DF8CCA17-6B00-42C6-B4EC-61B42AA91EE0}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.AspNet.HelloWorld", "src\samples\aspnet\Elsa.Samples.AspNet.HelloWorld\Elsa.Samples.AspNet.HelloWorld.csproj", "{DF8CCA17-6B00-42C6-B4EC-61B42AA91EE0}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Testing.Shared", "src\common\Elsa.Testing.Shared\Elsa.Testing.Shared.csproj", "{AD8C4BB0-C78F-496C-B326-1D82C02C7568}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Testing.Shared", "src\common\Elsa.Testing.Shared\Elsa.Testing.Shared.csproj", "{AD8C4BB0-C78F-496C-B326-1D82C02C7568}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ConsoleApp.WorkflowFunctions", "src\samples\console\Elsa.Samples.ConsoleApp.WorkflowFunctions\Elsa.Samples.ConsoleApp.WorkflowFunctions.csproj", "{4782CA82-83B0-437E-8C97-636BB8B402EA}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.ConsoleApp.WorkflowFunctions", "src\samples\console\Elsa.Samples.ConsoleApp.WorkflowFunctions\Elsa.Samples.ConsoleApp.WorkflowFunctions.csproj", "{4782CA82-83B0-437E-8C97-636BB8B402EA}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AspNet.MyBackendApi", "src\samples\aspnet\Elsa.Samples.AspNet.MyBackendApi\Elsa.Samples.AspNet.MyBackendApi.csproj", "{1A37795B-EBAB-4A9F-8CF0-373DA3D4C64A}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.AspNet.MyBackendApi", "src\samples\aspnet\Elsa.Samples.AspNet.MyBackendApi\Elsa.Samples.AspNet.MyBackendApi.csproj", "{1A37795B-EBAB-4A9F-8CF0-373DA3D4C64A}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AspNet.EntityFrameworkCore.PostgresSql", "src\samples\aspnet\Elsa.Samples.AspNet.EntityFrameworkCore.PostgresSql\Elsa.Samples.AspNet.EntityFrameworkCore.PostgresSql.csproj", "{F363BE0D-7DD0-4613-BB90-3245E23F35F9}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.AspNet.EntityFrameworkCore.PostgresSql", "src\samples\aspnet\Elsa.Samples.AspNet.EntityFrameworkCore.PostgresSql\Elsa.Samples.AspNet.EntityFrameworkCore.PostgresSql.csproj", "{F363BE0D-7DD0-4613-BB90-3245E23F35F9}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AspNet.WorkflowServer", "src\samples\aspnet\Elsa.Samples.AspNet.WorkflowServer\Elsa.Samples.AspNet.WorkflowServer.csproj", "{89157FB8-A25B-42EC-A91F-37DFEE274C8C}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.AspNet.WorkflowServer", "src\samples\aspnet\Elsa.Samples.AspNet.WorkflowServer\Elsa.Samples.AspNet.WorkflowServer.csproj", "{89157FB8-A25B-42EC-A91F-37DFEE274C8C}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AspNet.WorkflowDesigner", "src\samples\aspnet\Elsa.Samples.AspNet.WorkflowDesigner\Elsa.Samples.AspNet.WorkflowDesigner.csproj", "{812B3B34-D2DD-4A3B-BA2D-3D3C52E0C062}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.AspNet.WorkflowDesigner", "src\samples\aspnet\Elsa.Samples.AspNet.WorkflowDesigner\Elsa.Samples.AspNet.WorkflowDesigner.csproj", "{812B3B34-D2DD-4A3B-BA2D-3D3C52E0C062}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AspNet.WorkflowServerAndDesigner", "src\samples\aspnet\Elsa.Samples.AspNet.WorkflowServerAndDesigner\Elsa.Samples.AspNet.WorkflowServerAndDesigner.csproj", "{34FBB2D3-4E2B-4411-95F2-C6B56899826A}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.AspNet.WorkflowServerAndDesigner", "src\samples\aspnet\Elsa.Samples.AspNet.WorkflowServerAndDesigner\Elsa.Samples.AspNet.WorkflowServerAndDesigner.csproj", "{34FBB2D3-4E2B-4411-95F2-C6B56899826A}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docker", "docker", "{986E5482-0482-448C-B9E4-EC67A9474B85}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
|
|
@ -126,25 +129,25 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docker", "docker", "{986E54
|
|||
docker\.dockerignore = docker\.dockerignore
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AspNet.RunTaskIntegration", "src\samples\aspnet\Elsa.Samples.AspNet.RunTaskIntegration\Elsa.Samples.AspNet.RunTaskIntegration.csproj", "{51050209-EC2F-4DC7-8F46-07E22B7811CD}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.AspNet.RunTaskIntegration", "src\samples\aspnet\Elsa.Samples.AspNet.RunTaskIntegration\Elsa.Samples.AspNet.RunTaskIntegration.csproj", "{51050209-EC2F-4DC7-8F46-07E22B7811CD}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Elasticsearch", "src\modules\Elsa.Elasticsearch\Elsa.Elasticsearch.csproj", "{3246883E-2FA7-4B4A-BDC5-99039A2869BC}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Elasticsearch", "src\modules\Elsa.Elasticsearch\Elsa.Elasticsearch.csproj", "{3246883E-2FA7-4B4A-BDC5-99039A2869BC}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Webhooks", "src\modules\Elsa.Webhooks\Elsa.Webhooks.csproj", "{2BBFDE36-28A7-4875-8EBE-CC25C76B97FF}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Webhooks", "src\modules\Elsa.Webhooks\Elsa.Webhooks.csproj", "{2BBFDE36-28A7-4875-8EBE-CC25C76B97FF}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AspNet.Webhooks.WorkflowServer", "src\samples\aspnet\Elsa.Samples.AspNet.Webhooks.WorkflowServer\Elsa.Samples.AspNet.Webhooks.WorkflowServer.csproj", "{130A7A00-A9AF-4EA8-8107-BBEA07F166DF}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.AspNet.Webhooks.WorkflowServer", "src\samples\aspnet\Elsa.Samples.AspNet.Webhooks.WorkflowServer\Elsa.Samples.AspNet.Webhooks.WorkflowServer.csproj", "{130A7A00-A9AF-4EA8-8107-BBEA07F166DF}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AspNet.Webhooks.ExternalApp", "src\samples\aspnet\Elsa.Samples.AspNet.Webhooks.ExternalApp\Elsa.Samples.AspNet.Webhooks.ExternalApp.csproj", "{036D287A-33E1-4B28-BE13-14AEA16BC91F}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.AspNet.Webhooks.ExternalApp", "src\samples\aspnet\Elsa.Samples.AspNet.Webhooks.ExternalApp\Elsa.Samples.AspNet.Webhooks.ExternalApp.csproj", "{036D287A-33E1-4B28-BE13-14AEA16BC91F}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AspNet.MassTransitActivities", "src\samples\aspnet\Elsa.Samples.AspNet.MassTransitActivities\Elsa.Samples.AspNet.MassTransitActivities.csproj", "{A1A8AD89-C9C4-41BF-BBCB-EF0544A28BFB}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.AspNet.MassTransitActivities", "src\samples\aspnet\Elsa.Samples.AspNet.MassTransitActivities\Elsa.Samples.AspNet.MassTransitActivities.csproj", "{A1A8AD89-C9C4-41BF-BBCB-EF0544A28BFB}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.ProtoActor.Cluster.AzureContainerApps", "src\modules\Elsa.ProtoActor.Cluster.AzureContainerApps\Elsa.ProtoActor.Cluster.AzureContainerApps.csproj", "{9F79BBEC-02CE-4F76-AED4-BC191DA3054B}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.ProtoActor.Cluster.AzureContainerApps", "src\modules\Elsa.ProtoActor.Cluster.AzureContainerApps\Elsa.ProtoActor.Cluster.AzureContainerApps.csproj", "{9F79BBEC-02CE-4F76-AED4-BC191DA3054B}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AspNet.AzureServiceBusActivities", "src\samples\aspnet\Elsa.Samples.AspNet.AzureServiceBusActivities\Elsa.Samples.AspNet.AzureServiceBusActivities.csproj", "{C25CFDCF-8E06-4DD8-A83E-FF7EF9FDA02E}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.AspNet.AzureServiceBusActivities", "src\samples\aspnet\Elsa.Samples.AspNet.AzureServiceBusActivities\Elsa.Samples.AspNet.AzureServiceBusActivities.csproj", "{C25CFDCF-8E06-4DD8-A83E-FF7EF9FDA02E}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AspNet.ElasticsearchStorage", "src\samples\aspnet\Elsa.Samples.AspNet.ElasticsearchStorage\Elsa.Samples.AspNet.ElasticsearchStorage.csproj", "{4A54379F-4775-41B6-9752-FF300288916A}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.AspNet.ElasticsearchStorage", "src\samples\aspnet\Elsa.Samples.AspNet.ElasticsearchStorage\Elsa.Samples.AspNet.ElasticsearchStorage.csproj", "{4A54379F-4775-41B6-9752-FF300288916A}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ConsoleApp.OutboundHttpRequests", "src\samples\console\Elsa.Samples.ConsoleApp.OutboundHttpRequests\Elsa.Samples.ConsoleApp.OutboundHttpRequests.csproj", "{39AB433B-F7A6-4DD3-873A-9527946B7BD8}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.ConsoleApp.OutboundHttpRequests", "src\samples\console\Elsa.Samples.ConsoleApp.OutboundHttpRequests\Elsa.Samples.ConsoleApp.OutboundHttpRequests.csproj", "{39AB433B-F7A6-4DD3-873A-9527946B7BD8}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "unit", "unit", "{18453B51-25EB-4317-A4B3-B10518252E92}"
|
||||
EndProject
|
||||
|
|
@ -152,45 +155,45 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "integration", "integration"
|
|||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "component", "component", "{08B41FFA-CEE3-46A7-B5C0-3EB65D37A16C}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.JavaScript.UnitTests", "test\unit\Elsa.JavaScript.UnitTests\Elsa.JavaScript.UnitTests.csproj", "{0BB927FB-8C12-49B6-9150-64B733B2EBFD}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.JavaScript.UnitTests", "test\unit\Elsa.JavaScript.UnitTests\Elsa.JavaScript.UnitTests.csproj", "{0BB927FB-8C12-49B6-9150-64B733B2EBFD}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.IntegrationTests", "test\integration\Elsa.IntegrationTests\Elsa.IntegrationTests.csproj", "{E9652738-2B3D-4357-B84B-54F0EA161382}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.IntegrationTests", "test\integration\Elsa.IntegrationTests\Elsa.IntegrationTests.csproj", "{E9652738-2B3D-4357-B84B-54F0EA161382}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "clients", "clients", "{89608AA5-5ADE-4832-AC7B-871C4AE64210}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Api.Client", "src\clients\Elsa.Api.Client\Elsa.Api.Client.csproj", "{1FCB2200-28B8-4703-8E89-73241AAED047}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Api.Client", "src\clients\Elsa.Api.Client\Elsa.Api.Client.csproj", "{1FCB2200-28B8-4703-8E89-73241AAED047}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AspNet.QuartzIntegration", "src\samples\aspnet\Elsa.Samples.AspNet.QuartzIntegration\Elsa.Samples.AspNet.QuartzIntegration.csproj", "{B0312D9E-FA30-43E9-B666-40A8782D6E1C}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.AspNet.QuartzIntegration", "src\samples\aspnet\Elsa.Samples.AspNet.QuartzIntegration\Elsa.Samples.AspNet.QuartzIntegration.csproj", "{B0312D9E-FA30-43E9-B666-40A8782D6E1C}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AspNet.HangfireIntegration", "src\samples\aspnet\Elsa.Samples.AspNet.HangfireIntegration\Elsa.Samples.AspNet.HangfireIntegration.csproj", "{D2614FC7-102F-4F78-BB06-7C87304A10BA}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.AspNet.HangfireIntegration", "src\samples\aspnet\Elsa.Samples.AspNet.HangfireIntegration\Elsa.Samples.AspNet.HangfireIntegration.csproj", "{D2614FC7-102F-4F78-BB06-7C87304A10BA}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AspNet.ProtoActorRuntime", "src\samples\aspnet\Elsa.Samples.AspNet.ProtoActorRuntime\Elsa.Samples.AspNet.ProtoActorRuntime.csproj", "{A41E24C6-B16D-4C6A-A9A9-2C5AF424F20F}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.AspNet.ProtoActorRuntime", "src\samples\aspnet\Elsa.Samples.AspNet.ProtoActorRuntime\Elsa.Samples.AspNet.ProtoActorRuntime.csproj", "{A41E24C6-B16D-4C6A-A9A9-2C5AF424F20F}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AspNet.WorkflowContexts", "src\samples\aspnet\Elsa.Samples.AspNet.WorkflowContexts\Elsa.Samples.AspNet.WorkflowContexts.csproj", "{F88AB1C2-100E-459F-B2BE-5F2ACF050A0A}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.AspNet.WorkflowContexts", "src\samples\aspnet\Elsa.Samples.AspNet.WorkflowContexts\Elsa.Samples.AspNet.WorkflowContexts.csproj", "{F88AB1C2-100E-459F-B2BE-5F2ACF050A0A}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ConsoleApp.Bookmarks", "src\samples\console\Elsa.Samples.ConsoleApp.Bookmarks\Elsa.Samples.ConsoleApp.Bookmarks.csproj", "{A527B8B0-7214-4C4F-B62F-8A244B8416C8}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.ConsoleApp.Bookmarks", "src\samples\console\Elsa.Samples.ConsoleApp.Bookmarks\Elsa.Samples.ConsoleApp.Bookmarks.csproj", "{A527B8B0-7214-4C4F-B62F-8A244B8416C8}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ConsoleApp.CustomActivities", "src\samples\console\Elsa.Samples.ConsoleApp.CustomActivities\Elsa.Samples.ConsoleApp.CustomActivities.csproj", "{6DB4423B-0C99-46C9-8960-6BD54D42113A}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.ConsoleApp.CustomActivities", "src\samples\console\Elsa.Samples.ConsoleApp.CustomActivities\Elsa.Samples.ConsoleApp.CustomActivities.csproj", "{6DB4423B-0C99-46C9-8960-6BD54D42113A}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ConsoleApp.FlowchartWorkflows", "src\samples\console\Elsa.Samples.ConsoleApp.FlowchartWorkflows\Elsa.Samples.ConsoleApp.FlowchartWorkflows.csproj", "{A1A8A2C2-7F5C-4859-8F59-F60F867CE19C}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.ConsoleApp.FlowchartWorkflows", "src\samples\console\Elsa.Samples.ConsoleApp.FlowchartWorkflows\Elsa.Samples.ConsoleApp.FlowchartWorkflows.csproj", "{A1A8A2C2-7F5C-4859-8F59-F60F867CE19C}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ConsoleApp.WorkflowInputOutput", "src\samples\console\Elsa.Samples.ConsoleApp.WorkflowInputOutput\Elsa.Samples.ConsoleApp.WorkflowInputOutput.csproj", "{FAF438E1-B771-418B-83DD-A0F959C82D97}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.ConsoleApp.WorkflowInputOutput", "src\samples\console\Elsa.Samples.ConsoleApp.WorkflowInputOutput\Elsa.Samples.ConsoleApp.WorkflowInputOutput.csproj", "{FAF438E1-B771-418B-83DD-A0F959C82D97}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AspNet.Onboarding.Web", "src\samples\aspnet\Elsa.Samples.AspNet.Onboarding.Web\Elsa.Samples.AspNet.Onboarding.Web.csproj", "{D64F1240-0110-42E1-AE59-E95AEC8A2900}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.AspNet.Onboarding.Web", "src\samples\aspnet\Elsa.Samples.AspNet.Onboarding.Web\Elsa.Samples.AspNet.Onboarding.Web.csproj", "{D64F1240-0110-42E1-AE59-E95AEC8A2900}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AspNet.Onboarding.WorkflowServer", "src\samples\aspnet\Elsa.Samples.AspNet.Onboarding.WorkflowServer\Elsa.Samples.AspNet.Onboarding.WorkflowServer.csproj", "{199FC97A-682B-4C7B-A560-1032B16AEAC4}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.AspNet.Onboarding.WorkflowServer", "src\samples\aspnet\Elsa.Samples.AspNet.Onboarding.WorkflowServer\Elsa.Samples.AspNet.Onboarding.WorkflowServer.csproj", "{199FC97A-682B-4C7B-A560-1032B16AEAC4}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ConsoleApp.JsonWorkflows", "src\samples\console\Elsa.Samples.ConsoleApp.JsonWorkflows\Elsa.Samples.ConsoleApp.JsonWorkflows.csproj", "{4FA6955C-6860-493F-ABD4-CE327A33EEA3}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.ConsoleApp.JsonWorkflows", "src\samples\console\Elsa.Samples.ConsoleApp.JsonWorkflows\Elsa.Samples.ConsoleApp.JsonWorkflows.csproj", "{4FA6955C-6860-493F-ABD4-CE327A33EEA3}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AspNet.JsonWorkflowProvider", "src\samples\aspnet\Elsa.Samples.AspNet.JsonWorkflowProvider\Elsa.Samples.AspNet.JsonWorkflowProvider.csproj", "{C5043453-5FB8-4796-9A80-C4C766F2CB62}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.AspNet.JsonWorkflowProvider", "src\samples\aspnet\Elsa.Samples.AspNet.JsonWorkflowProvider\Elsa.Samples.AspNet.JsonWorkflowProvider.csproj", "{C5043453-5FB8-4796-9A80-C4C766F2CB62}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AspNet.ProtoActorRuntime.AzureContainerApps", "src\samples\aspnet\Elsa.Samples.AspNet.ProtoActorRuntime.AzureContainerApps\Elsa.Samples.AspNet.ProtoActorRuntime.AzureContainerApps.csproj", "{3212A999-4AC4-4911-9AA4-92AB906BCB5E}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.AspNet.ProtoActorRuntime.AzureContainerApps", "src\samples\aspnet\Elsa.Samples.AspNet.ProtoActorRuntime.AzureContainerApps\Elsa.Samples.AspNet.ProtoActorRuntime.AzureContainerApps.csproj", "{3212A999-4AC4-4911-9AA4-92AB906BCB5E}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AspNet.HttpEndpoints", "src\samples\aspnet\Elsa.Samples.AspNet.HttpEndpoints\Elsa.Samples.AspNet.HttpEndpoints.csproj", "{165ACC9D-B67C-4B49-A818-ECFD247C899C}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.AspNet.HttpEndpoints", "src\samples\aspnet\Elsa.Samples.AspNet.HttpEndpoints\Elsa.Samples.AspNet.HttpEndpoints.csproj", "{165ACC9D-B67C-4B49-A818-ECFD247C899C}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Environments", "src\modules\Elsa.Environments\Elsa.Environments.csproj", "{B5CDF747-8066-40D5-9BAE-CBE397BC9B51}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Environments", "src\modules\Elsa.Environments\Elsa.Environments.csproj", "{B5CDF747-8066-40D5-9BAE-CBE397BC9B51}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AspNet.DslWorkflowProvider", "src\samples\aspnet\Elsa.Samples.AspNet.DslWorkflowProvider\Elsa.Samples.AspNet.DslWorkflowProvider.csproj", "{4BC5D3D2-9425-41D7-9804-D145B92520EE}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.AspNet.DslWorkflowProvider", "src\samples\aspnet\Elsa.Samples.AspNet.DslWorkflowProvider\Elsa.Samples.AspNet.DslWorkflowProvider.csproj", "{4BC5D3D2-9425-41D7-9804-D145B92520EE}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "persistence", "persistence", "{9B4F139F-7D26-435C-A561-89E65A67A8E5}"
|
||||
EndProject
|
||||
|
|
@ -206,64 +209,66 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "timers", "timers", "{AB797A
|
|||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "runtimes", "runtimes", "{58C59255-281C-4595-8732-808158F1DC6E}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Dapper", "src\modules\Elsa.Dapper\Elsa.Dapper.csproj", "{4D8F3BB2-709D-481A-8FD3-0DA9762B366D}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Dapper", "src\modules\Elsa.Dapper\Elsa.Dapper.csproj", "{4D8F3BB2-709D-481A-8FD3-0DA9762B366D}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AspNet.DapperPersistence", "src\samples\aspnet\Elsa.Samples.AspNet.DapperPersistence\Elsa.Samples.AspNet.DapperPersistence.csproj", "{D5905087-2E73-44AD-B3CC-70FE8AAA99A1}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.AspNet.DapperPersistence", "src\samples\aspnet\Elsa.Samples.AspNet.DapperPersistence\Elsa.Samples.AspNet.DapperPersistence.csproj", "{D5905087-2E73-44AD-B3CC-70FE8AAA99A1}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Dapper.Migrations", "src\modules\Elsa.Dapper.Migrations\Elsa.Dapper.Migrations.csproj", "{A86DF0F0-24E9-470E-984B-9E7332544972}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Dapper.Migrations", "src\modules\Elsa.Dapper.Migrations\Elsa.Dapper.Migrations.csproj", "{A86DF0F0-24E9-470E-984B-9E7332544972}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.WorkflowProviders.BlobStorage", "src\modules\Elsa.WorkflowProviders.BlobStorage\Elsa.WorkflowProviders.BlobStorage.csproj", "{A702DD84-B55C-4807-9C28-D8F5AC3CCA78}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.WorkflowProviders.BlobStorage", "src\modules\Elsa.WorkflowProviders.BlobStorage\Elsa.WorkflowProviders.BlobStorage.csproj", "{A702DD84-B55C-4807-9C28-D8F5AC3CCA78}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ConsoleApp.ActivityOutput", "src\samples\console\Elsa.Samples.ConsoleApp.ActivityOutput\Elsa.Samples.ConsoleApp.ActivityOutput.csproj", "{9C9FEB8E-A253-4705-A344-49BFEFC9A516}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.ConsoleApp.ActivityOutput", "src\samples\console\Elsa.Samples.ConsoleApp.ActivityOutput\Elsa.Samples.ConsoleApp.ActivityOutput.csproj", "{9C9FEB8E-A253-4705-A344-49BFEFC9A516}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.MongoDb", "src\modules\Elsa.MongoDb\Elsa.MongoDb.csproj", "{3A377A6A-F735-4010-9E00-72E8BEB8F1F2}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.MongoDb", "src\modules\Elsa.MongoDb\Elsa.MongoDb.csproj", "{3A377A6A-F735-4010-9E00-72E8BEB8F1F2}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AspNet.MongoDbPersistence", "src\samples\aspnet\Elsa.Samples.AspNet.MongoDbPersistence\Elsa.Samples.AspNet.MongoDbPersistence.csproj", "{DAACE93A-866E-428E-B2A9-AFAC79F9C7A4}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.AspNet.MongoDbPersistence", "src\samples\aspnet\Elsa.Samples.AspNet.MongoDbPersistence\Elsa.Samples.AspNet.MongoDbPersistence.csproj", "{DAACE93A-866E-428E-B2A9-AFAC79F9C7A4}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AspNet.DynamicActivityProvider", "src\samples\aspnet\Elsa.Samples.AspNet.DynamicActivityProvider\Elsa.Samples.AspNet.DynamicActivityProvider.csproj", "{85E13383-7C39-4719-AAC0-0B357C3A97C7}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.AspNet.DynamicActivityProvider", "src\samples\aspnet\Elsa.Samples.AspNet.DynamicActivityProvider\Elsa.Samples.AspNet.DynamicActivityProvider.csproj", "{85E13383-7C39-4719-AAC0-0B357C3A97C7}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Mediator", "src\common\Elsa.Mediator\Elsa.Mediator.csproj", "{28818676-F6AF-4203-8B65-BD33A50CB9A2}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Mediator", "src\common\Elsa.Mediator\Elsa.Mediator.csproj", "{28818676-F6AF-4203-8B65-BD33A50CB9A2}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Workflows.Core.UnitTests", "test\unit\Elsa.Workflows.Core.UnitTests\Elsa.Workflows.Core.UnitTests.csproj", "{DC9CCAD0-7363-4691-B964-FF5B3AEA3F95}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Workflows.Core.UnitTests", "test\unit\Elsa.Workflows.Core.UnitTests\Elsa.Workflows.Core.UnitTests.csproj", "{DC9CCAD0-7363-4691-B964-FF5B3AEA3F95}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.ProtoCluster.ComponentTests", "test\component\Elsa.ProtoCluster.ComponentTests\Elsa.ProtoCluster.ComponentTests.csproj", "{B99B23D4-6D36-4A31-BE92-DE2415514C79}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.ProtoCluster.ComponentTests", "test\component\Elsa.ProtoCluster.ComponentTests\Elsa.ProtoCluster.ComponentTests.csproj", "{B99B23D4-6D36-4A31-BE92-DE2415514C79}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AspNet.ChildWorkflows", "src\samples\aspnet\Elsa.Samples.AspNet.ChildWorkflows\Elsa.Samples.AspNet.ChildWorkflows.csproj", "{2EA47068-6079-4276-8776-F67DE99B568D}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.AspNet.ChildWorkflows", "src\samples\aspnet\Elsa.Samples.AspNet.ChildWorkflows\Elsa.Samples.AspNet.ChildWorkflows.csproj", "{2EA47068-6079-4276-8776-F67DE99B568D}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AspNet.DocumentApproval", "src\samples\aspnet\Elsa.Samples.AspNet.DocumentApproval\Elsa.Samples.AspNet.DocumentApproval.csproj", "{CA9391E3-FA3F-4F96-B6DF-25309BFE7D05}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.AspNet.DocumentApproval", "src\samples\aspnet\Elsa.Samples.AspNet.DocumentApproval\Elsa.Samples.AspNet.DocumentApproval.csproj", "{CA9391E3-FA3F-4F96-B6DF-25309BFE7D05}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.DropIns.Core", "src\common\Elsa.DropIns.Core\Elsa.DropIns.Core.csproj", "{1B794B9C-9B8A-4D5A-9848-B51274BD1FC5}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.DropIns.Core", "src\common\Elsa.DropIns.Core\Elsa.DropIns.Core.csproj", "{1B794B9C-9B8A-4D5A-9848-B51274BD1FC5}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.DropIns", "src\common\Elsa.DropIns\Elsa.DropIns.csproj", "{4E7F15D1-729E-4DA7-992A-C3A2C6054B37}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.DropIns", "src\common\Elsa.DropIns\Elsa.DropIns.csproj", "{4E7F15D1-729E-4DA7-992A-C3A2C6054B37}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "drop-ins", "drop-ins", "{6AB6F2F7-CAC1-45C8-9D87-EEE56BC68601}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SampleDropIn", "src\samples\drop-ins\SampleDropIn\SampleDropIn.csproj", "{E0567846-AC0E-4E09-96A1-EFED4B570A01}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SampleDropIn", "src\samples\drop-ins\SampleDropIn\SampleDropIn.csproj", "{E0567846-AC0E-4E09-96A1-EFED4B570A01}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.SasTokens", "src\modules\Elsa.SasTokens\Elsa.SasTokens.csproj", "{3095C95A-F1F9-487A-A983-1B100A33E4C7}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.SasTokens", "src\modules\Elsa.SasTokens\Elsa.SasTokens.csproj", "{3095C95A-F1F9-487A-A983-1B100A33E4C7}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "alterations", "alterations", "{CF3DA5F1-F98D-49C9-A980-27E570B38B8D}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Alterations.Core", "src\modules\Elsa.Alterations.Core\Elsa.Alterations.Core.csproj", "{8DBEC8F3-908D-46B3-95CA-47EA138AB1A4}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Alterations.Core", "src\modules\Elsa.Alterations.Core\Elsa.Alterations.Core.csproj", "{8DBEC8F3-908D-46B3-95CA-47EA138AB1A4}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Alterations", "src\modules\Elsa.Alterations\Elsa.Alterations.csproj", "{CC7DE119-736D-4FC5-85DC-70A6770749F6}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Alterations", "src\modules\Elsa.Alterations\Elsa.Alterations.csproj", "{CC7DE119-736D-4FC5-85DC-70A6770749F6}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.EntityFrameworkCore.Common", "src\modules\Elsa.EntityFrameworkCore.Common\Elsa.EntityFrameworkCore.Common.csproj", "{6F30A941-6EB6-4C9B-BF89-9BBAB757B491}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.EntityFrameworkCore.Sqlite", "src\modules\Elsa.EntityFrameworkCore.Sqlite\Elsa.EntityFrameworkCore.Sqlite.csproj", "{EFE4A814-F58D-4C19-8F7F-B95F4EE343F0}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.EntityFrameworkCore.Sqlite", "src\modules\Elsa.EntityFrameworkCore.Sqlite\Elsa.EntityFrameworkCore.Sqlite.csproj", "{EFE4A814-F58D-4C19-8F7F-B95F4EE343F0}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.EntityFrameworkCore.SqlServer", "src\modules\Elsa.EntityFrameworkCore.SqlServer\Elsa.EntityFrameworkCore.SqlServer.csproj", "{1C84408D-A0A7-4513-AD9A-1BA137ABE62C}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.EntityFrameworkCore.SqlServer", "src\modules\Elsa.EntityFrameworkCore.SqlServer\Elsa.EntityFrameworkCore.SqlServer.csproj", "{1C84408D-A0A7-4513-AD9A-1BA137ABE62C}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.EntityFrameworkCore.MySql", "src\modules\Elsa.EntityFrameworkCore.MySql\Elsa.EntityFrameworkCore.MySql.csproj", "{E4300D97-1D53-4029-9435-483FB7EC9621}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.EntityFrameworkCore.MySql", "src\modules\Elsa.EntityFrameworkCore.MySql\Elsa.EntityFrameworkCore.MySql.csproj", "{E4300D97-1D53-4029-9435-483FB7EC9621}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.EntityFrameworkCore.PostgreSql", "src\modules\Elsa.EntityFrameworkCore.PostgreSql\Elsa.EntityFrameworkCore.PostgreSql.csproj", "{84AB9951-3DBF-43A4-8F5D-AEED1102CE88}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.EntityFrameworkCore.PostgreSql", "src\modules\Elsa.EntityFrameworkCore.PostgreSql\Elsa.EntityFrameworkCore.PostgreSql.csproj", "{84AB9951-3DBF-43A4-8F5D-AEED1102CE88}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Alterations.MassTransit", "src\modules\Elsa.Alterations.MassTransit\Elsa.Alterations.MassTransit.csproj", "{1F621382-08FB-45EA-B94C-96A7FECB9489}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Activities.UnitTests", "test\unit\Elsa.Activities.UnitTests\Elsa.Activities.UnitTests.csproj", "{E6562B0F-AF64-472A-B009-BF6D40DDE99B}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.ServiceBusIntegrationTests", "test\integration\Elsa.ServiceBusIntegrationTests\Elsa.ServiceBusIntegrationTests.csproj", "{9504E3F3-F77F-437A-8644-D23D7F5FCF8B}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElsaStudioWebAssembly", "src\bundles\ElsaStudioWebAssembly\ElsaStudioWebAssembly.csproj", "{E12A1BDF-5D65-493B-835D-AFBC480A5650}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.EntityFrameworkCore.Common", "src\modules\Elsa.EntityFrameworkCore.Common\Elsa.EntityFrameworkCore.Common.csproj", "{FBA14F8A-9F14-4364-ABDB-B8AE81A0D755}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
|
|
@ -630,10 +635,6 @@ Global
|
|||
{CC7DE119-736D-4FC5-85DC-70A6770749F6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{CC7DE119-736D-4FC5-85DC-70A6770749F6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{CC7DE119-736D-4FC5-85DC-70A6770749F6}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{6F30A941-6EB6-4C9B-BF89-9BBAB757B491}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{6F30A941-6EB6-4C9B-BF89-9BBAB757B491}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{6F30A941-6EB6-4C9B-BF89-9BBAB757B491}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{6F30A941-6EB6-4C9B-BF89-9BBAB757B491}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{EFE4A814-F58D-4C19-8F7F-B95F4EE343F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{EFE4A814-F58D-4C19-8F7F-B95F4EE343F0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{EFE4A814-F58D-4C19-8F7F-B95F4EE343F0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
|
|
@ -658,10 +659,21 @@ Global
|
|||
{E6562B0F-AF64-472A-B009-BF6D40DDE99B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E6562B0F-AF64-472A-B009-BF6D40DDE99B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E6562B0F-AF64-472A-B009-BF6D40DDE99B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{9504E3F3-F77F-437A-8644-D23D7F5FCF8B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9504E3F3-F77F-437A-8644-D23D7F5FCF8B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9504E3F3-F77F-437A-8644-D23D7F5FCF8B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{9504E3F3-F77F-437A-8644-D23D7F5FCF8B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{E12A1BDF-5D65-493B-835D-AFBC480A5650}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E12A1BDF-5D65-493B-835D-AFBC480A5650}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E12A1BDF-5D65-493B-835D-AFBC480A5650}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E12A1BDF-5D65-493B-835D-AFBC480A5650}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{FBA14F8A-9F14-4364-ABDB-B8AE81A0D755}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{FBA14F8A-9F14-4364-ABDB-B8AE81A0D755}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{FBA14F8A-9F14-4364-ABDB-B8AE81A0D755}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{FBA14F8A-9F14-4364-ABDB-B8AE81A0D755}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{155227F0-A33B-40AA-A4B4-06F813EB921B} = {61017E64-6D00-49CB-9E81-5002DC8F7D5F}
|
||||
|
|
@ -669,15 +681,32 @@ Global
|
|||
{873BFC3E-63C2-4495-A503-5EC05DCD84E4} = {155227F0-A33B-40AA-A4B4-06F813EB921B}
|
||||
{56C2FFB8-EA54-45B5-A095-4A78142EB4B5} = {155227F0-A33B-40AA-A4B4-06F813EB921B}
|
||||
{5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79} = {61017E64-6D00-49CB-9E81-5002DC8F7D5F}
|
||||
{7D5A49B4-9A9B-496E-803B-DEB85B2C3132} = {AB797AF0-C12C-46DE-A157-7E25625C6200}
|
||||
{82E26BF9-5F3A-4365-899A-AB1FFD54AA45} = {5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79}
|
||||
{ACD65CE5-3CC2-47B1-BFAC-72443D764F6E} = {AB797AF0-C12C-46DE-A157-7E25625C6200}
|
||||
{24C7095B-5CDD-4369-9F34-5565A019B195} = {DD089B8B-DA73-492A-9010-F772D1C178DA}
|
||||
{D31581AB-A6C1-4B73-AB63-45667F6C82AE} = {6EF07978-A6D2-40EB-891D-7D70C5F37E76}
|
||||
{0601A2A6-2C62-418B-9104-8CDE497E5283} = {AB797AF0-C12C-46DE-A157-7E25625C6200}
|
||||
{302BFC43-ED2F-43AE-8AD4-FCD481B0AC67} = {B08B4E00-C2AB-48F3-8389-449F42AEF179}
|
||||
{BB983D0B-A939-4008-B9E3-C7C172BCF83A} = {DD089B8B-DA73-492A-9010-F772D1C178DA}
|
||||
{80FF5821-E831-450D-AA0C-C76D07D878F4} = {5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79}
|
||||
{F06B9573-DF68-4606-866C-A7546A10A05A} = {61017E64-6D00-49CB-9E81-5002DC8F7D5F}
|
||||
{FC5D2CE9-FFB0-478D-8D54-E4109D1FD202} = {F06B9573-DF68-4606-866C-A7546A10A05A}
|
||||
{8E5BD3D9-3529-48BC-B741-CFB7A69DB233} = {6EF07978-A6D2-40EB-891D-7D70C5F37E76}
|
||||
{B2049499-D384-46DF-8837-F1180107DD54} = {58C59255-281C-4595-8732-808158F1DC6E}
|
||||
{78DAB791-8595-4612-8E9E-2248AF5B1862} = {6EF07978-A6D2-40EB-891D-7D70C5F37E76}
|
||||
{E31F8955-B221-48AA-B301-6EE317D6F5B1} = {F06B9573-DF68-4606-866C-A7546A10A05A}
|
||||
{3C2752A7-EEBC-4ED4-B1BF-0FCF6E071BC2} = {F06B9573-DF68-4606-866C-A7546A10A05A}
|
||||
{82E26BF9-5F3A-4365-899A-AB1FFD54AA45} = {5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79}
|
||||
{C9539BD8-D2AE-4A8D-8281-71A05B3FBF31} = {B08B4E00-C2AB-48F3-8389-449F42AEF179}
|
||||
{169E2C9B-6687-427F-A278-30BF849BFEDC} = {B08B4E00-C2AB-48F3-8389-449F42AEF179}
|
||||
{2DD5D66B-85E9-4AF9-911C-C9F963234159} = {B08B4E00-C2AB-48F3-8389-449F42AEF179}
|
||||
{8A050229-DB79-4E0B-9AFF-7565E87F2954} = {B08B4E00-C2AB-48F3-8389-449F42AEF179}
|
||||
{C237BA1A-3A7D-4AB2-BE09-2696F3C082A4} = {C6658DE0-2B2F-47F0-BB61-2CA66D435C09}
|
||||
{80FF5821-E831-450D-AA0C-C76D07D878F4} = {5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79}
|
||||
{80529478-A383-4FEA-B744-C71264969E9A} = {6EF07978-A6D2-40EB-891D-7D70C5F37E76}
|
||||
{39CD855E-83B1-4A96-93F7-01608211EBE3} = {C6658DE0-2B2F-47F0-BB61-2CA66D435C09}
|
||||
{30B49E42-AE61-4F7C-981F-923F07BB3986} = {5948B0A5-7873-4DBB-BA03-EB283D6EA91B}
|
||||
{D229105F-6879-4452-9189-75DE060C0F4C} = {5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79}
|
||||
{7CC95512-7F44-45C3-A669-95B7048D4730} = {9B4F139F-7D26-435C-A561-89E65A67A8E5}
|
||||
{D253AFC2-9496-4538-B424-47CC579B7A96} = {873BFC3E-63C2-4495-A503-5EC05DCD84E4}
|
||||
{74B9AFE0-EB4B-4AD2-BF25-90753203EFF8} = {873BFC3E-63C2-4495-A503-5EC05DCD84E4}
|
||||
{70D3ACE9-EB41-4B36-949C-08B8C22B99F7} = {873BFC3E-63C2-4495-A503-5EC05DCD84E4}
|
||||
|
|
@ -686,6 +715,7 @@ Global
|
|||
{55AAF940-12DC-4793-805C-992AEF2C1E8D} = {56C2FFB8-EA54-45B5-A095-4A78142EB4B5}
|
||||
{1AA0AEFC-BD58-4284-A6C5-AD15C5C79782} = {873BFC3E-63C2-4495-A503-5EC05DCD84E4}
|
||||
{1E5BD8D9-55BE-41E2-B389-6AB9F26C22AF} = {5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79}
|
||||
{B191F11D-583D-44D9-8A08-F5B0DC58B822} = {B08B4E00-C2AB-48F3-8389-449F42AEF179}
|
||||
{DF8CCA17-6B00-42C6-B4EC-61B42AA91EE0} = {56C2FFB8-EA54-45B5-A095-4A78142EB4B5}
|
||||
{AD8C4BB0-C78F-496C-B326-1D82C02C7568} = {C6658DE0-2B2F-47F0-BB61-2CA66D435C09}
|
||||
{4782CA82-83B0-437E-8C97-636BB8B402EA} = {873BFC3E-63C2-4495-A503-5EC05DCD84E4}
|
||||
|
|
@ -695,10 +725,12 @@ Global
|
|||
{812B3B34-D2DD-4A3B-BA2D-3D3C52E0C062} = {56C2FFB8-EA54-45B5-A095-4A78142EB4B5}
|
||||
{34FBB2D3-4E2B-4411-95F2-C6B56899826A} = {56C2FFB8-EA54-45B5-A095-4A78142EB4B5}
|
||||
{51050209-EC2F-4DC7-8F46-07E22B7811CD} = {56C2FFB8-EA54-45B5-A095-4A78142EB4B5}
|
||||
{3246883E-2FA7-4B4A-BDC5-99039A2869BC} = {9B4F139F-7D26-435C-A561-89E65A67A8E5}
|
||||
{2BBFDE36-28A7-4875-8EBE-CC25C76B97FF} = {5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79}
|
||||
{130A7A00-A9AF-4EA8-8107-BBEA07F166DF} = {56C2FFB8-EA54-45B5-A095-4A78142EB4B5}
|
||||
{036D287A-33E1-4B28-BE13-14AEA16BC91F} = {56C2FFB8-EA54-45B5-A095-4A78142EB4B5}
|
||||
{A1A8AD89-C9C4-41BF-BBCB-EF0544A28BFB} = {56C2FFB8-EA54-45B5-A095-4A78142EB4B5}
|
||||
{9F79BBEC-02CE-4F76-AED4-BC191DA3054B} = {58C59255-281C-4595-8732-808158F1DC6E}
|
||||
{C25CFDCF-8E06-4DD8-A83E-FF7EF9FDA02E} = {56C2FFB8-EA54-45B5-A095-4A78142EB4B5}
|
||||
{4A54379F-4775-41B6-9752-FF300288916A} = {56C2FFB8-EA54-45B5-A095-4A78142EB4B5}
|
||||
{39AB433B-F7A6-4DD3-873A-9527946B7BD8} = {873BFC3E-63C2-4495-A503-5EC05DCD84E4}
|
||||
|
|
@ -726,32 +758,12 @@ Global
|
|||
{B5CDF747-8066-40D5-9BAE-CBE397BC9B51} = {5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79}
|
||||
{4BC5D3D2-9425-41D7-9804-D145B92520EE} = {56C2FFB8-EA54-45B5-A095-4A78142EB4B5}
|
||||
{9B4F139F-7D26-435C-A561-89E65A67A8E5} = {5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79}
|
||||
{7CC95512-7F44-45C3-A669-95B7048D4730} = {9B4F139F-7D26-435C-A561-89E65A67A8E5}
|
||||
{6EF07978-A6D2-40EB-891D-7D70C5F37E76} = {5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79}
|
||||
{78DAB791-8595-4612-8E9E-2248AF5B1862} = {6EF07978-A6D2-40EB-891D-7D70C5F37E76}
|
||||
{D31581AB-A6C1-4B73-AB63-45667F6C82AE} = {6EF07978-A6D2-40EB-891D-7D70C5F37E76}
|
||||
{8E5BD3D9-3529-48BC-B741-CFB7A69DB233} = {6EF07978-A6D2-40EB-891D-7D70C5F37E76}
|
||||
{DD089B8B-DA73-492A-9010-F772D1C178DA} = {5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79}
|
||||
{24C7095B-5CDD-4369-9F34-5565A019B195} = {DD089B8B-DA73-492A-9010-F772D1C178DA}
|
||||
{BB983D0B-A939-4008-B9E3-C7C172BCF83A} = {DD089B8B-DA73-492A-9010-F772D1C178DA}
|
||||
{3246883E-2FA7-4B4A-BDC5-99039A2869BC} = {9B4F139F-7D26-435C-A561-89E65A67A8E5}
|
||||
{5948B0A5-7873-4DBB-BA03-EB283D6EA91B} = {5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79}
|
||||
{30B49E42-AE61-4F7C-981F-923F07BB3986} = {5948B0A5-7873-4DBB-BA03-EB283D6EA91B}
|
||||
{B08B4E00-C2AB-48F3-8389-449F42AEF179} = {5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79}
|
||||
{302BFC43-ED2F-43AE-8AD4-FCD481B0AC67} = {B08B4E00-C2AB-48F3-8389-449F42AEF179}
|
||||
{C9539BD8-D2AE-4A8D-8281-71A05B3FBF31} = {B08B4E00-C2AB-48F3-8389-449F42AEF179}
|
||||
{169E2C9B-6687-427F-A278-30BF849BFEDC} = {B08B4E00-C2AB-48F3-8389-449F42AEF179}
|
||||
{B191F11D-583D-44D9-8A08-F5B0DC58B822} = {B08B4E00-C2AB-48F3-8389-449F42AEF179}
|
||||
{2DD5D66B-85E9-4AF9-911C-C9F963234159} = {B08B4E00-C2AB-48F3-8389-449F42AEF179}
|
||||
{8A050229-DB79-4E0B-9AFF-7565E87F2954} = {B08B4E00-C2AB-48F3-8389-449F42AEF179}
|
||||
{AB797AF0-C12C-46DE-A157-7E25625C6200} = {5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79}
|
||||
{7D5A49B4-9A9B-496E-803B-DEB85B2C3132} = {AB797AF0-C12C-46DE-A157-7E25625C6200}
|
||||
{0601A2A6-2C62-418B-9104-8CDE497E5283} = {AB797AF0-C12C-46DE-A157-7E25625C6200}
|
||||
{ACD65CE5-3CC2-47B1-BFAC-72443D764F6E} = {AB797AF0-C12C-46DE-A157-7E25625C6200}
|
||||
{58C59255-281C-4595-8732-808158F1DC6E} = {5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79}
|
||||
{B2049499-D384-46DF-8837-F1180107DD54} = {58C59255-281C-4595-8732-808158F1DC6E}
|
||||
{9F79BBEC-02CE-4F76-AED4-BC191DA3054B} = {58C59255-281C-4595-8732-808158F1DC6E}
|
||||
{80529478-A383-4FEA-B744-C71264969E9A} = {6EF07978-A6D2-40EB-891D-7D70C5F37E76}
|
||||
{4D8F3BB2-709D-481A-8FD3-0DA9762B366D} = {9B4F139F-7D26-435C-A561-89E65A67A8E5}
|
||||
{D5905087-2E73-44AD-B3CC-70FE8AAA99A1} = {56C2FFB8-EA54-45B5-A095-4A78142EB4B5}
|
||||
{A86DF0F0-24E9-470E-984B-9E7332544972} = {9B4F139F-7D26-435C-A561-89E65A67A8E5}
|
||||
|
|
@ -773,13 +785,17 @@ Global
|
|||
{CF3DA5F1-F98D-49C9-A980-27E570B38B8D} = {5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79}
|
||||
{8DBEC8F3-908D-46B3-95CA-47EA138AB1A4} = {CF3DA5F1-F98D-49C9-A980-27E570B38B8D}
|
||||
{CC7DE119-736D-4FC5-85DC-70A6770749F6} = {CF3DA5F1-F98D-49C9-A980-27E570B38B8D}
|
||||
{6F30A941-6EB6-4C9B-BF89-9BBAB757B491} = {9B4F139F-7D26-435C-A561-89E65A67A8E5}
|
||||
{EFE4A814-F58D-4C19-8F7F-B95F4EE343F0} = {9B4F139F-7D26-435C-A561-89E65A67A8E5}
|
||||
{1C84408D-A0A7-4513-AD9A-1BA137ABE62C} = {9B4F139F-7D26-435C-A561-89E65A67A8E5}
|
||||
{E4300D97-1D53-4029-9435-483FB7EC9621} = {9B4F139F-7D26-435C-A561-89E65A67A8E5}
|
||||
{84AB9951-3DBF-43A4-8F5D-AEED1102CE88} = {9B4F139F-7D26-435C-A561-89E65A67A8E5}
|
||||
{1F621382-08FB-45EA-B94C-96A7FECB9489} = {CF3DA5F1-F98D-49C9-A980-27E570B38B8D}
|
||||
{E6562B0F-AF64-472A-B009-BF6D40DDE99B} = {18453B51-25EB-4317-A4B3-B10518252E92}
|
||||
{9504E3F3-F77F-437A-8644-D23D7F5FCF8B} = {1B8D5897-902E-4632-8698-E89CAF3DDF54}
|
||||
{E12A1BDF-5D65-493B-835D-AFBC480A5650} = {F06B9573-DF68-4606-866C-A7546A10A05A}
|
||||
{FBA14F8A-9F14-4364-ABDB-B8AE81A0D755} = {9B4F139F-7D26-435C-A561-89E65A67A8E5}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {D4B5CEAA-7D70-4FCB-A68E-B03FBE5E0E5E}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
|
|
|||
|
|
@ -88,16 +88,16 @@ public class MessageReceived : Trigger
|
|||
protected override async ValueTask ExecuteAsync(ActivityExecutionContext context)
|
||||
{
|
||||
// If we did not receive external input, it means we are just now encountering this activity.
|
||||
if (!context.TryGetWorkflowInput<ReceivedServiceBusMessageModel>(InputKey, out var receivedMessage))
|
||||
if (context.IsTriggerOfWorkflow())
|
||||
{
|
||||
await Resume(context);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Create bookmarks for when we receive the expected HTTP request.
|
||||
context.CreateBookmark(GetBookmarkPayload(context.ExpressionExecutionContext), Resume);
|
||||
context.CreateBookmark(GetBookmarkPayload(context.ExpressionExecutionContext), Resume,false);
|
||||
return;
|
||||
}
|
||||
|
||||
// Provide the received message as output.
|
||||
await SetResultAsync(receivedMessage, context);
|
||||
await context.CompleteActivityAsync();
|
||||
}
|
||||
|
||||
private async ValueTask Resume(ActivityExecutionContext context)
|
||||
|
|
|
|||
|
|
@ -1,135 +1,145 @@
|
|||
using Azure.Messaging.ServiceBus;
|
||||
using Elsa.AzureServiceBus.Activities;
|
||||
using Elsa.AzureServiceBus.Models;
|
||||
using Elsa.Workflows.Core.Contracts;
|
||||
using Elsa.Workflows.Core.Helpers;
|
||||
using Elsa.Workflows.Runtime.Contracts;
|
||||
using Elsa.Workflows.Runtime.Requests;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Elsa.AzureServiceBus.Services;
|
||||
|
||||
/// <summary>
|
||||
/// Processes messages received via a queue specified through the <see cref="MessageReceivedTriggerPayload"/>.
|
||||
/// When a message is received, the appropriate workflows are executed.
|
||||
/// </summary>
|
||||
public class Worker : IAsyncDisposable
|
||||
{
|
||||
private static readonly string BookmarkName = TypeNameHelper.GenerateTypeName<MessageReceived>();
|
||||
private readonly ServiceBusProcessor _processor;
|
||||
private readonly IWorkflowDispatcher _workflowDispatcher;
|
||||
private readonly IHasher _hasher;
|
||||
private readonly ILogger _logger;
|
||||
private int _refCount = 1;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="Worker"/> class.
|
||||
/// </summary>
|
||||
public Worker(string queueOrTopic, string? subscription, IWorkflowDispatcher workflowDispatcher, ServiceBusClient client, IHasher hasher, ILogger<Worker> logger)
|
||||
{
|
||||
QueueOrTopic = queueOrTopic;
|
||||
Subscription = subscription == "" ? default : subscription;
|
||||
_workflowDispatcher = workflowDispatcher;
|
||||
_hasher = hasher;
|
||||
_logger = logger;
|
||||
|
||||
var options = new ServiceBusProcessorOptions();
|
||||
var processor = string.IsNullOrEmpty(subscription) ? client.CreateProcessor(queueOrTopic, options) : client.CreateProcessor(queueOrTopic, subscription, options);
|
||||
|
||||
processor.ProcessMessageAsync += OnMessageReceivedAsync;
|
||||
processor.ProcessErrorAsync += OnErrorAsync;
|
||||
_processor = processor;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The name of the queue or topic that this worker is processing.
|
||||
/// </summary>
|
||||
public string QueueOrTopic { get; }
|
||||
|
||||
/// <summary>
|
||||
/// The name of the subscription that this worker is processing. Only valid if the worker is processing a topic.
|
||||
/// </summary>
|
||||
public string? Subscription { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Maintains the number of workflows that are relying on this worker. When it goes to zero, the worker will be removed.
|
||||
/// </summary>
|
||||
public int RefCount
|
||||
{
|
||||
get => _refCount;
|
||||
private set
|
||||
{
|
||||
if (value < 0)
|
||||
throw new ArgumentException("RefCount cannot be less than zero");
|
||||
|
||||
_refCount = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Starts the worker.
|
||||
/// </summary>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
public async Task StartAsync(CancellationToken cancellationToken = default) => await _processor.StartProcessingAsync(cancellationToken);
|
||||
|
||||
/// <summary>
|
||||
/// Increments the ref count.
|
||||
/// </summary>
|
||||
public void IncrementRefCount() => RefCount++;
|
||||
|
||||
/// <summary>
|
||||
/// Decrements the ref count.
|
||||
/// </summary>
|
||||
public void DecrementRefCount() => RefCount--;
|
||||
|
||||
/// <summary>
|
||||
/// Disposes the worker.
|
||||
/// </summary>
|
||||
public async ValueTask DisposeAsync() => await _processor.DisposeAsync();
|
||||
|
||||
private async Task OnMessageReceivedAsync(ProcessMessageEventArgs args) => await InvokeWorkflowsAsync(args.Message, args.CancellationToken);
|
||||
|
||||
private Task OnErrorAsync(ProcessErrorEventArgs args)
|
||||
{
|
||||
_logger.LogError(args.Exception, "An error occurred while processing {EntityPath}", args.EntityPath);
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
private async Task InvokeWorkflowsAsync(ServiceBusReceivedMessage message, CancellationToken cancellationToken)
|
||||
{
|
||||
var payload = new MessageReceivedTriggerPayload(QueueOrTopic, Subscription);
|
||||
var correlationId = message.CorrelationId;
|
||||
var messageModel = CreateMessageModel(message);
|
||||
var input = new Dictionary<string, object> { [MessageReceived.InputKey] = messageModel };
|
||||
var activityTypeName = ActivityTypeNameHelper.GenerateTypeName<MessageReceived>();
|
||||
var dispatchRequest = new DispatchTriggerWorkflowsRequest(activityTypeName, payload, correlationId, default, default, input);
|
||||
await _workflowDispatcher.DispatchAsync(dispatchRequest, cancellationToken);
|
||||
}
|
||||
|
||||
private ReceivedServiceBusMessageModel CreateMessageModel(ServiceBusReceivedMessage message) =>
|
||||
new(
|
||||
message.Body.ToArray(),
|
||||
message.Subject,
|
||||
message.ContentType,
|
||||
message.To,
|
||||
message.CorrelationId,
|
||||
message.DeliveryCount,
|
||||
message.EnqueuedTime,
|
||||
message.ScheduledEnqueueTime,
|
||||
message.ExpiresAt,
|
||||
message.LockedUntil,
|
||||
message.TimeToLive,
|
||||
message.LockToken,
|
||||
message.MessageId,
|
||||
message.PartitionKey,
|
||||
message.TransactionPartitionKey,
|
||||
message.ReplyTo,
|
||||
message.SequenceNumber,
|
||||
message.EnqueuedSequenceNumber,
|
||||
message.SessionId,
|
||||
message.ReplyToSessionId,
|
||||
message.DeadLetterReason,
|
||||
message.DeadLetterSource,
|
||||
message.DeadLetterErrorDescription,
|
||||
message.ApplicationProperties);
|
||||
using Azure.Messaging.ServiceBus;
|
||||
using Elsa.AzureServiceBus.Activities;
|
||||
using Elsa.AzureServiceBus.Models;
|
||||
using Elsa.Workflows.Core.Contracts;
|
||||
using Elsa.Workflows.Core.Helpers;
|
||||
using Elsa.Workflows.Runtime.Contracts;
|
||||
using Elsa.Workflows.Runtime.Requests;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Elsa.AzureServiceBus.Services;
|
||||
|
||||
/// <summary>
|
||||
/// Processes messages received via a queue specified through the <see cref="MessageReceivedTriggerPayload"/>.
|
||||
/// When a message is received, the appropriate workflows are executed.
|
||||
/// </summary>
|
||||
public class Worker : IAsyncDisposable
|
||||
{
|
||||
private static readonly string BookmarkName = TypeNameHelper.GenerateTypeName<MessageReceived>();
|
||||
private readonly ServiceBusProcessor _processor;
|
||||
private readonly IWorkflowDispatcher _workflowDispatcher;
|
||||
private readonly IHasher _hasher;
|
||||
private readonly IWorkflowInbox _workflowInbox;
|
||||
private readonly ILogger _logger;
|
||||
private int _refCount = 1;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="Worker"/> class.
|
||||
/// </summary>
|
||||
public Worker(string queueOrTopic, string? subscription, IWorkflowDispatcher workflowDispatcher, ServiceBusClient client, IHasher hasher, IWorkflowInbox workflowInbox, ILogger<Worker> logger)
|
||||
{
|
||||
QueueOrTopic = queueOrTopic;
|
||||
Subscription = subscription == "" ? default : subscription;
|
||||
_workflowDispatcher = workflowDispatcher;
|
||||
_hasher = hasher;
|
||||
_workflowInbox = workflowInbox;
|
||||
_logger = logger;
|
||||
|
||||
var options = new ServiceBusProcessorOptions();
|
||||
var processor = string.IsNullOrEmpty(subscription) ? client.CreateProcessor(queueOrTopic, options) : client.CreateProcessor(queueOrTopic, subscription, options);
|
||||
|
||||
processor.ProcessMessageAsync += OnMessageReceivedAsync;
|
||||
processor.ProcessErrorAsync += OnErrorAsync;
|
||||
_processor = processor;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The name of the queue or topic that this worker is processing.
|
||||
/// </summary>
|
||||
public string QueueOrTopic { get; }
|
||||
|
||||
/// <summary>
|
||||
/// The name of the subscription that this worker is processing. Only valid if the worker is processing a topic.
|
||||
/// </summary>
|
||||
public string? Subscription { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Maintains the number of workflows that are relying on this worker. When it goes to zero, the worker will be removed.
|
||||
/// </summary>
|
||||
public int RefCount
|
||||
{
|
||||
get => _refCount;
|
||||
private set
|
||||
{
|
||||
if (value < 0)
|
||||
throw new ArgumentException("RefCount cannot be less than zero");
|
||||
|
||||
_refCount = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Starts the worker.
|
||||
/// </summary>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
public async Task StartAsync(CancellationToken cancellationToken = default) => await _processor.StartProcessingAsync(cancellationToken);
|
||||
|
||||
/// <summary>
|
||||
/// Increments the ref count.
|
||||
/// </summary>
|
||||
public void IncrementRefCount() => RefCount++;
|
||||
|
||||
/// <summary>
|
||||
/// Decrements the ref count.
|
||||
/// </summary>
|
||||
public void DecrementRefCount() => RefCount--;
|
||||
|
||||
/// <summary>
|
||||
/// Disposes the worker.
|
||||
/// </summary>
|
||||
public async ValueTask DisposeAsync() => await _processor.DisposeAsync();
|
||||
|
||||
private async Task OnMessageReceivedAsync(ProcessMessageEventArgs args) => await InvokeWorkflowsAsync(args.Message, args.CancellationToken);
|
||||
|
||||
private Task OnErrorAsync(ProcessErrorEventArgs args)
|
||||
{
|
||||
_logger.LogError(args.Exception, "An error occurred while processing {EntityPath}", args.EntityPath);
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
private async Task InvokeWorkflowsAsync(ServiceBusReceivedMessage message, CancellationToken cancellationToken)
|
||||
{
|
||||
var payload = new MessageReceivedTriggerPayload(QueueOrTopic, Subscription);
|
||||
var correlationId = message.CorrelationId;
|
||||
var messageModel = CreateMessageModel(message);
|
||||
var input = new Dictionary<string, object> { [MessageReceived.InputKey] = messageModel };
|
||||
var activityTypeName = ActivityTypeNameHelper.GenerateTypeName<MessageReceived>();
|
||||
|
||||
var results = await _workflowInbox.SubmitAsync(new Workflows.Runtime.Models.NewWorkflowInboxMessage()
|
||||
{
|
||||
ActivityTypeName = activityTypeName,
|
||||
BookmarkPayload = payload,
|
||||
Input = input,
|
||||
CorrelationId = correlationId
|
||||
});
|
||||
|
||||
_logger.LogInformation($"{results.WorkflowExecutionResults.Count()} workflow triggered by the service bus message");
|
||||
}
|
||||
|
||||
private ReceivedServiceBusMessageModel CreateMessageModel(ServiceBusReceivedMessage message) =>
|
||||
new(
|
||||
message.Body.ToArray(),
|
||||
message.Subject,
|
||||
message.ContentType,
|
||||
message.To,
|
||||
message.CorrelationId,
|
||||
message.DeliveryCount,
|
||||
message.EnqueuedTime,
|
||||
message.ScheduledEnqueueTime,
|
||||
message.ExpiresAt,
|
||||
message.LockedUntil,
|
||||
message.TimeToLive,
|
||||
message.LockToken,
|
||||
message.MessageId,
|
||||
message.PartitionKey,
|
||||
message.TransactionPartitionKey,
|
||||
message.ReplyTo,
|
||||
message.SequenceNumber,
|
||||
message.EnqueuedSequenceNumber,
|
||||
message.SessionId,
|
||||
message.ReplyToSessionId,
|
||||
message.DeadLetterReason,
|
||||
message.DeadLetterSource,
|
||||
message.DeadLetterErrorDescription,
|
||||
message.ApplicationProperties);
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
using Elsa.ServiceBusIntegrationTests.Helpers;
|
||||
|
||||
namespace Elsa.ServiceBusIntegrationTests.Contracts
|
||||
{
|
||||
public interface IServiceBusProcessorManager
|
||||
{
|
||||
public ServiceBusProcessorTest Get(string topic, string subscription);
|
||||
public ServiceBusProcessorTest Init(string topic, string subscription);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
namespace Elsa.ServiceBusIntegrationTests.Contracts
|
||||
{
|
||||
public interface ITestResetEventManager
|
||||
{
|
||||
public void Set(string resetEvent);
|
||||
public AutoResetEvent Get(string resetEvent);
|
||||
public AutoResetEvent Init(string resetEvent);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
|
||||
<IsPackable>false</IsPackable>
|
||||
<IsTestProject>true</IsTestProject>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.6.0" />
|
||||
<PackageReference Include="NSubstitute" Version="5.1.0" />
|
||||
<PackageReference Include="xunit" Version="2.4.2" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="coverlet.collector" Version="3.2.0">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
|
||||
<PackageReference Include="Azure.Messaging.ServiceBus" Version="7.12.0" />
|
||||
<PackageReference Include="Azure.ResourceManager.ServiceBus" Version="1.0.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\src\common\Elsa.Testing.Shared\Elsa.Testing.Shared.csproj" />
|
||||
<ProjectReference Include="..\..\..\src\modules\Elsa.AzureServiceBus\Elsa.AzureServiceBus.csproj" />
|
||||
<ProjectReference Include="..\..\..\src\modules\Elsa.JavaScript\Elsa.JavaScript.csproj" />
|
||||
<ProjectReference Include="..\..\..\src\modules\Elsa.Scheduling\Elsa.Scheduling.csproj" />
|
||||
<ProjectReference Include="..\..\..\src\modules\Elsa.WorkflowProviders.BlobStorage\Elsa.WorkflowProviders.BlobStorage.csproj" />
|
||||
<ProjectReference Include="..\..\..\src\modules\Elsa.Workflows.Api\Elsa.Workflows.Api.csproj" />
|
||||
<ProjectReference Include="..\..\..\src\modules\Elsa.Workflows.Runtime\Elsa.Workflows.Runtime.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -0,0 +1 @@
|
|||
global using Xunit;
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
using Azure.Messaging.ServiceBus;
|
||||
using Elsa.ServiceBusIntegrationTests.Contracts;
|
||||
using NSubstitute;
|
||||
using Xunit.Abstractions;
|
||||
|
||||
namespace Elsa.ServiceBusIntegrationTests.Helpers
|
||||
{
|
||||
public class ServiceBusProcessorManager : IServiceBusProcessorManager
|
||||
{
|
||||
private readonly ServiceBusClient _serviceBusClient;
|
||||
private readonly ITestOutputHelper _testOutputHelper;
|
||||
private readonly IDictionary<(string topicName, string subscriptionName), ServiceBusProcessorTest> _serviceBusProcessors
|
||||
= new Dictionary<(string topicName, string subscriptionName), ServiceBusProcessorTest>();
|
||||
public ServiceBusProcessorManager(ServiceBusClient serviceBusClient, ITestOutputHelper testOutputHelper)
|
||||
{
|
||||
_serviceBusClient = serviceBusClient;
|
||||
_testOutputHelper = testOutputHelper;
|
||||
}
|
||||
|
||||
public ServiceBusProcessorTest Init(string topic ,string subscription)
|
||||
{
|
||||
_serviceBusProcessors.TryGetValue((topic, subscription), out var processor);
|
||||
if (processor != null)
|
||||
throw new ArgumentException($"ServiceBusProcessor with topic:{topic}, subscription:{subscription} already initialized");
|
||||
|
||||
processor = new ServiceBusProcessorTest(_testOutputHelper);
|
||||
_serviceBusClient
|
||||
.CreateProcessor(Arg.Is<string>(s => s == topic),
|
||||
Arg.Any<string>(),
|
||||
Arg.Any<ServiceBusProcessorOptions>()
|
||||
)
|
||||
.Returns((c)=> {
|
||||
_testOutputHelper.WriteLine("ServiceBusClient");
|
||||
return processor;
|
||||
});
|
||||
|
||||
_serviceBusProcessors.Add((topic,subscription), processor);
|
||||
return processor;
|
||||
|
||||
}
|
||||
public ServiceBusProcessorTest Get(string topic, string subscription)
|
||||
{
|
||||
_serviceBusProcessors.TryGetValue((topic, subscription), out var processor);
|
||||
if (processor == null)
|
||||
throw new ArgumentException($"ServiceBusProcessor with topic:{topic}, subscription:{subscription} not exist");
|
||||
|
||||
return processor;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
using Azure.Messaging.ServiceBus;
|
||||
using System.Text.Json;
|
||||
using Xunit.Abstractions;
|
||||
|
||||
namespace Elsa.ServiceBusIntegrationTests.Helpers
|
||||
{
|
||||
public class ServiceBusProcessorTest : ServiceBusProcessor
|
||||
{
|
||||
private readonly ITestOutputHelper _testOutputHelper;
|
||||
|
||||
public ServiceBusProcessorTest(ITestOutputHelper testOutputHelper)
|
||||
{
|
||||
_testOutputHelper = testOutputHelper;
|
||||
}
|
||||
public async Task SendMessage<T>(T payload, string correlationId, int attempt = 1)
|
||||
{
|
||||
var args = CreateMessageArgs(payload, correlationId, attempt);
|
||||
await base.OnProcessMessageAsync(args);
|
||||
}
|
||||
|
||||
public ProcessMessageEventArgs CreateMessageArgs<T>(T payload, string correlationId, int deliveryCount = 1)
|
||||
{
|
||||
var payloadJson = JsonSerializer.Serialize(payload);
|
||||
var props = new Dictionary<string, object>() { };
|
||||
|
||||
var message = ServiceBusModelFactory.ServiceBusReceivedMessage(
|
||||
body: BinaryData.FromString(payloadJson),
|
||||
deliveryCount: deliveryCount,
|
||||
correlationId: correlationId,
|
||||
properties: props
|
||||
);
|
||||
|
||||
|
||||
var args = new ProcessMessageEventArgs(message, null, new CancellationToken());
|
||||
|
||||
return args;
|
||||
}
|
||||
public override async Task StartProcessingAsync(CancellationToken cancellationToken = default)
|
||||
{
|
||||
_testOutputHelper.WriteLine("Receiving Service Bus Message");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
using Elsa.ServiceBusIntegrationTests.Contracts;
|
||||
|
||||
namespace Elsa.ServiceBusIntegrationTests.Helpers
|
||||
{
|
||||
public class TestResetEventManager : ITestResetEventManager
|
||||
{
|
||||
public AutoResetEvent WaitHandleTest { get; } = new AutoResetEvent(false);
|
||||
private IDictionary<string, AutoResetEvent> _events = new Dictionary<string, AutoResetEvent>();
|
||||
public AutoResetEvent Get()
|
||||
{
|
||||
return WaitHandleTest;
|
||||
}
|
||||
|
||||
public AutoResetEvent Get(string resetEvent)
|
||||
{
|
||||
_events.TryGetValue(resetEvent, out var result);
|
||||
return result;
|
||||
}
|
||||
|
||||
public AutoResetEvent Init(string resetEvent)
|
||||
{
|
||||
var rEvent = Get(resetEvent);
|
||||
if (rEvent == null)
|
||||
{
|
||||
var newEvent = new AutoResetEvent(false);
|
||||
_events.Add(resetEvent, newEvent);
|
||||
return newEvent;
|
||||
}
|
||||
return rEvent;
|
||||
}
|
||||
|
||||
public void Set(string resetEvent)
|
||||
{
|
||||
Get(resetEvent)?.Set();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,384 @@
|
|||
using Azure.Messaging.ServiceBus;
|
||||
using Elsa.AzureServiceBus.Contracts;
|
||||
using Elsa.AzureServiceBus.Models;
|
||||
using Elsa.AzureServiceBus.Services;
|
||||
using Elsa.Testing.Shared;
|
||||
using Elsa.Workflows.Core;
|
||||
using Elsa.Workflows.Core.Contracts;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using System.Collections.ObjectModel;
|
||||
using Xunit.Abstractions;
|
||||
using Elsa.Mediator.HostedServices;
|
||||
using Elsa.Mediator.Options;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Elsa.Workflows.Runtime.Options;
|
||||
using Elsa.Workflows.Runtime.Contracts;
|
||||
using Elsa.ServiceBusIntegrationTests.Contracts;
|
||||
using Elsa.ServiceBusIntegrationTests.Scenarios.workflows;
|
||||
using Elsa.ServiceBusIntegrationTests.Helpers;
|
||||
using NSubstitute;
|
||||
|
||||
namespace Elsa.ServiceBusIntegrationTests.Scenarios.ServiceBus
|
||||
{
|
||||
|
||||
public class ServiceBusTest : IDisposable
|
||||
{
|
||||
private readonly IServiceProvider _services;
|
||||
private readonly CapturingTextWriter _capturingTextWriter = new();
|
||||
|
||||
private readonly ServiceBusClient _serviceBusClient = Substitute.For<ServiceBusClient>();
|
||||
|
||||
private IWorkerManager _worker;
|
||||
private readonly BackgroundCommandSenderHostedService _hosted;
|
||||
private readonly BackgroundEventPublisherHostedService _backgroundEventService;
|
||||
private readonly ITestResetEventManager _resetEventManager = new TestResetEventManager();
|
||||
private readonly ITestOutputHelper _testOutputHelper;
|
||||
private readonly IServiceBusProcessorManager _sbProcessorManager;
|
||||
|
||||
public ServiceBusTest(ITestOutputHelper testOutputHelper)
|
||||
{
|
||||
_services = new TestApplicationBuilder(testOutputHelper)
|
||||
.WithCapturingTextWriter(_capturingTextWriter)
|
||||
.AddWorkflow<ReceiveOneMessageWorkflow>()
|
||||
.AddWorkflow<ReceiveMessageWorkflow>()
|
||||
.AddWorkflow<SendOneMessageWorkflow>()
|
||||
.AddWorkflow<SendOneMessageWithCorrelationIdWorkflow>()
|
||||
.ConfigureServices(services =>
|
||||
{
|
||||
services
|
||||
.AddSingleton<ServiceBusClient>(_serviceBusClient)
|
||||
.AddSingleton<IServiceBusProcessorManager, ServiceBusProcessorManager>()
|
||||
|
||||
.AddSingleton<IWorkerManager, WorkerManager>()
|
||||
.AddSingleton(_resetEventManager)
|
||||
|
||||
.AddSingleton(sp =>
|
||||
{
|
||||
var options = sp.GetRequiredService<IOptions<MediatorOptions>>().Value;
|
||||
return ActivatorUtilities.CreateInstance<BackgroundCommandSenderHostedService>(sp, options.CommandWorkerCount);
|
||||
})
|
||||
.AddSingleton(sp =>
|
||||
{
|
||||
var options = sp.GetRequiredService<IOptions<MediatorOptions>>().Value;
|
||||
return ActivatorUtilities.CreateInstance<BackgroundEventPublisherHostedService>(sp, options.NotificationWorkerCount);
|
||||
})
|
||||
;
|
||||
})
|
||||
.Build();
|
||||
|
||||
_worker = _services.GetRequiredService<IWorkerManager>();
|
||||
_hosted = _services.GetRequiredService<BackgroundCommandSenderHostedService>();
|
||||
_backgroundEventService = _services.GetRequiredService<BackgroundEventPublisherHostedService>();
|
||||
_sbProcessorManager = _services.GetRequiredService<IServiceBusProcessorManager>();
|
||||
|
||||
_testOutputHelper = testOutputHelper;
|
||||
}
|
||||
|
||||
[Fact(DisplayName = "2 Receive - Sending 1 message - Should Block")]
|
||||
public async Task Receive_1_Message_Should_Block_If_One_Receive()
|
||||
{
|
||||
_sbProcessorManager.Init("topicName", "subscriptionName");
|
||||
_sbProcessorManager.Init("topicName1", "subscription1");
|
||||
|
||||
//Init waitEvent :
|
||||
_resetEventManager.Init("receive1");
|
||||
_resetEventManager.Init("receive2");
|
||||
|
||||
//Init BackGround
|
||||
await InitRegistryAndBackGroundServiceWorkerAsync();
|
||||
|
||||
//Start Workflow
|
||||
var workflowDefinitionId = typeof(ReceiveMessageWorkflow).Name;
|
||||
var startWorkflowOptions = new StartWorkflowRuntimeOptions(null, new Dictionary<string, object>(), Common.Models.VersionOptions.Published);
|
||||
var workflowRuntime = _services.GetRequiredService<IWorkflowRuntime>();
|
||||
var workflowState = await workflowRuntime.StartWorkflowAsync(workflowDefinitionId, startWorkflowOptions);
|
||||
|
||||
/*
|
||||
* Workflow don't receive any message so it should be
|
||||
* Running
|
||||
* Suspended
|
||||
*/
|
||||
Assert.Equal(WorkflowStatus.Running, workflowState.Status);
|
||||
Assert.Equal(WorkflowSubStatus.Suspended, workflowState.SubStatus);
|
||||
|
||||
//Start Worker to send Message on topicName/suscriptionName
|
||||
await _worker.StartWorkerAsync("topicName", "subscriptionName");
|
||||
await _sbProcessorManager
|
||||
.Get("topicName", "subscriptionName")
|
||||
.SendMessage<dynamic>(new { hello = "world" }, null);
|
||||
|
||||
//Wait for receiving first message
|
||||
var wait1 = _resetEventManager.Get("receive1").WaitOne(TimeSpan.FromSeconds(5));
|
||||
_testOutputHelper.WriteLine($"wait1 : {wait1}");
|
||||
|
||||
//Wait for receiving second message
|
||||
var wait2 = _resetEventManager.Get("receive2").WaitOne(TimeSpan.FromSeconds(5));
|
||||
_testOutputHelper.WriteLine($"wait2 : {wait2}");
|
||||
|
||||
await Task.Delay(500); //Todo find how to remove delay
|
||||
var lastWorkflowState = await workflowRuntime.ExportWorkflowStateAsync(workflowState.WorkflowInstanceId);
|
||||
/*
|
||||
* We don't send 2 messages so Workflow must be
|
||||
* Running
|
||||
* Suspended
|
||||
*
|
||||
* with a timeout on Wait for 2nd Message. (False ResetEvent)
|
||||
*/
|
||||
Assert.NotNull(lastWorkflowState);
|
||||
Assert.Equal(WorkflowStatus.Running, lastWorkflowState.Status);
|
||||
Assert.Equal(WorkflowSubStatus.Suspended, lastWorkflowState.SubStatus);
|
||||
Assert.True(wait1);
|
||||
Assert.False(wait2);
|
||||
}
|
||||
|
||||
private async Task InitRegistryAndBackGroundServiceWorkerAsync()
|
||||
{
|
||||
//Init Registries to use StartWorkflow
|
||||
await _services.PopulateRegistriesAsync();
|
||||
|
||||
//Start background services for CommandHandler
|
||||
await _hosted.StartAsync(CancellationToken.None);
|
||||
await _backgroundEventService.StartAsync(CancellationToken.None);
|
||||
}
|
||||
|
||||
[Fact(DisplayName = "1 Receive - Sending 1 message - Should Finished")]
|
||||
public async Task Receive_1_Message_Should_Finish_With_One_Receive()
|
||||
{
|
||||
_sbProcessorManager.Init("topicName", "subscriptionName");
|
||||
|
||||
//Init waitEvent :
|
||||
_resetEventManager.Init("receive1");
|
||||
|
||||
//Init BackGround
|
||||
await InitRegistryAndBackGroundServiceWorkerAsync();
|
||||
|
||||
//Start Workflow
|
||||
var workflowDefinitionId = typeof(ReceiveOneMessageWorkflow).Name;
|
||||
var startWorkflowOptions = new StartWorkflowRuntimeOptions(null, new Dictionary<string, object>(), Common.Models.VersionOptions.Published);
|
||||
var workflowRuntime = _services.GetRequiredService<IWorkflowRuntime>();
|
||||
var workflowState = await workflowRuntime.StartWorkflowAsync(workflowDefinitionId, startWorkflowOptions);
|
||||
|
||||
/*
|
||||
* Workflow don't receive any message so it should be
|
||||
* Running
|
||||
* Suspended
|
||||
*/
|
||||
Assert.Equal(WorkflowStatus.Running, workflowState.Status);
|
||||
Assert.Equal(WorkflowSubStatus.Suspended, workflowState.SubStatus);
|
||||
|
||||
//Start Worker to send Message on topicName/suscriptionName
|
||||
await _worker.StartWorkerAsync("topicName", "subscriptionName");
|
||||
await _sbProcessorManager
|
||||
.Get("topicName", "subscriptionName")
|
||||
.SendMessage<dynamic>(new { hello = "world" }, null);
|
||||
|
||||
//Wait for receiving first message
|
||||
var wait1 = _resetEventManager.Get("receive1").WaitOne(TimeSpan.FromSeconds(5));
|
||||
_testOutputHelper.WriteLine($"wait1 : {wait1}");
|
||||
|
||||
await Task.Delay(500); //Todo find how to remove delay
|
||||
var lastWorkflowState = await workflowRuntime.ExportWorkflowStateAsync(workflowState.WorkflowInstanceId);
|
||||
/*
|
||||
* We sent 1 message so Workflow must be
|
||||
* Finished
|
||||
* Finished
|
||||
*
|
||||
* with no timeout for the first message. (True ResetEvent)
|
||||
*/
|
||||
Assert.NotNull(lastWorkflowState);
|
||||
Assert.Equal(WorkflowStatus.Finished, lastWorkflowState.Status);
|
||||
Assert.Equal(WorkflowSubStatus.Finished, lastWorkflowState.SubStatus);
|
||||
Assert.True(wait1);
|
||||
}
|
||||
|
||||
[Fact(DisplayName = "1 Send - 1 Receive - Should Finished - without race condition")]
|
||||
public async Task Send_1_Message_And_Receive_Response()
|
||||
{
|
||||
_sbProcessorManager.Init("topicName", "subscriptionName");
|
||||
|
||||
//Init waitEvent :
|
||||
_resetEventManager.Init("receive1");
|
||||
|
||||
//Init BackGround
|
||||
await InitRegistryAndBackGroundServiceWorkerAsync();
|
||||
|
||||
var senderMock = Substitute.For<ServiceBusSender>();
|
||||
_serviceBusClient
|
||||
.CreateSender(Arg.Any<string>())
|
||||
.Returns(senderMock);
|
||||
|
||||
|
||||
senderMock
|
||||
.SendMessageAsync(Arg.Any<ServiceBusMessage>(), Arg.Any<CancellationToken>())
|
||||
.ReturnsForAnyArgs(async (callback) =>
|
||||
{
|
||||
var sb = callback.Arg<ServiceBusMessage>();
|
||||
var c = callback.Arg<CancellationToken>();
|
||||
|
||||
_testOutputHelper.WriteLine("Sending Message from activity");
|
||||
|
||||
await _worker.StartWorkerAsync("topicName", "subscriptionName");
|
||||
await _sbProcessorManager
|
||||
.Get("topicName", "subscriptionName")
|
||||
.SendMessage<dynamic>(new { hello = "world" }, null);
|
||||
});
|
||||
|
||||
|
||||
//Start Workflow
|
||||
var workflowDefinitionId = typeof(SendOneMessageWorkflow).Name;
|
||||
var startWorkflowOptions = new StartWorkflowRuntimeOptions(null, new Dictionary<string, object>(), Common.Models.VersionOptions.Published);
|
||||
var workflowRuntime = _services.GetRequiredService<IWorkflowRuntime>();
|
||||
var workflowState = await workflowRuntime.StartWorkflowAsync(workflowDefinitionId, startWorkflowOptions);
|
||||
|
||||
/*
|
||||
* Workflow don't receive any message so it should be
|
||||
* Running
|
||||
* Suspended
|
||||
*/
|
||||
Assert.Equal(WorkflowStatus.Running, workflowState.Status);
|
||||
Assert.Equal(WorkflowSubStatus.Suspended, workflowState.SubStatus);
|
||||
|
||||
//Wait for receiving first message
|
||||
var wait1 = _resetEventManager.Get("receive1").WaitOne(TimeSpan.FromSeconds(5));
|
||||
_testOutputHelper.WriteLine($"wait1 : {wait1}");
|
||||
|
||||
await Task.Delay(500); //Todo find how to remove delay
|
||||
var lastWorkflowState = await workflowRuntime.ExportWorkflowStateAsync(workflowState.WorkflowInstanceId);
|
||||
/*
|
||||
* We sent 1 message so Workflow must be
|
||||
* Finished
|
||||
* Finished
|
||||
*
|
||||
* with no timeout for the first message. (True ResetEvent)
|
||||
*/
|
||||
Assert.NotNull(lastWorkflowState);
|
||||
Assert.Equal(WorkflowStatus.Finished, lastWorkflowState.Status);
|
||||
Assert.Equal(WorkflowSubStatus.Finished, lastWorkflowState.SubStatus);
|
||||
Assert.True(wait1);
|
||||
}
|
||||
|
||||
[Fact(DisplayName = "1 Send - 1 Receive - with correlationId - Should Finished - without race condition")]
|
||||
public async Task Send_1_Message_And_Correlate_Receive_Response()
|
||||
{
|
||||
var correlationId = "EEE3D9CC-2279-4CE5-8F4F-FC6C65BF8814";
|
||||
_sbProcessorManager.Init("topicName", "subscriptionName");
|
||||
|
||||
//Init waitEvent :
|
||||
_resetEventManager.Init("receive1");
|
||||
|
||||
//Init BackGround
|
||||
await InitRegistryAndBackGroundServiceWorkerAsync();
|
||||
|
||||
var senderMock = Substitute.For<ServiceBusSender>();
|
||||
_serviceBusClient
|
||||
.CreateSender(Arg.Any<string>())
|
||||
.Returns(senderMock);
|
||||
|
||||
senderMock
|
||||
.SendMessageAsync(Arg.Any<ServiceBusMessage>(), Arg.Any<CancellationToken>())
|
||||
.ReturnsForAnyArgs(async (callback) =>
|
||||
{
|
||||
var sb = callback.Arg<ServiceBusMessage>();
|
||||
var c = callback.Arg<CancellationToken>();
|
||||
|
||||
_testOutputHelper.WriteLine("Sending Message from activity");
|
||||
|
||||
await _worker.StartWorkerAsync("topicName", "subscriptionName");
|
||||
await _sbProcessorManager
|
||||
.Get("topicName", "subscriptionName")
|
||||
.SendMessage<dynamic>(new { hello = "world" }, correlationId);
|
||||
});
|
||||
|
||||
//Start Workflow
|
||||
var workflowDefinitionId = typeof(SendOneMessageWithCorrelationIdWorkflow).Name;
|
||||
var startWorkflowOptions = new StartWorkflowRuntimeOptions(null, new Dictionary<string, object>(), Common.Models.VersionOptions.Published);
|
||||
var workflowRuntime = _services.GetRequiredService<IWorkflowRuntime>();
|
||||
var workflowState = await workflowRuntime.StartWorkflowAsync(workflowDefinitionId, startWorkflowOptions);
|
||||
|
||||
/*
|
||||
* Workflow don't receive any message so it should be
|
||||
* Running
|
||||
* Suspended
|
||||
*/
|
||||
Assert.Equal(WorkflowStatus.Running, workflowState.Status);
|
||||
Assert.Equal(WorkflowSubStatus.Suspended, workflowState.SubStatus);
|
||||
|
||||
//Wait for receiving first message
|
||||
var wait1 = _resetEventManager.Get("receive1").WaitOne(TimeSpan.FromSeconds(5));
|
||||
_testOutputHelper.WriteLine($"wait1 : {wait1}");
|
||||
|
||||
await Task.Delay(500); //Todo find how to remove delay
|
||||
var lastWorkflowState = await workflowRuntime.ExportWorkflowStateAsync(workflowState.WorkflowInstanceId);
|
||||
/*
|
||||
* We sent 1 message so Workflow must be
|
||||
* Finished
|
||||
* Finished
|
||||
*
|
||||
* with no timeout for the first message. (True ResetEvent)
|
||||
*/
|
||||
Assert.NotNull(lastWorkflowState);
|
||||
Assert.Equal(WorkflowStatus.Finished, lastWorkflowState.Status);
|
||||
Assert.Equal(WorkflowSubStatus.Finished, lastWorkflowState.SubStatus);
|
||||
Assert.True(wait1);
|
||||
}
|
||||
|
||||
|
||||
[Fact(DisplayName = "1 Receive - Listening from other topic - Should not trigger")]
|
||||
public async Task Receive_1_Message_Should_Not_Trigger()
|
||||
{
|
||||
_sbProcessorManager.Init("topicName1", "subscriptionName1");
|
||||
|
||||
//Init waitEvent :
|
||||
_resetEventManager.Init("receive1");
|
||||
_resetEventManager.Init("receive2");
|
||||
|
||||
//Init BackGround
|
||||
await InitRegistryAndBackGroundServiceWorkerAsync();
|
||||
|
||||
//Start Workflow
|
||||
var workflowDefinitionId = typeof(ReceiveMessageWorkflow).Name;
|
||||
var startWorkflowOptions = new StartWorkflowRuntimeOptions(null, new Dictionary<string, object>(), Common.Models.VersionOptions.Published);
|
||||
var workflowRuntime = _services.GetRequiredService<IWorkflowRuntime>();
|
||||
var workflowState = await workflowRuntime.StartWorkflowAsync(workflowDefinitionId, startWorkflowOptions);
|
||||
|
||||
/*
|
||||
* Workflow don't receive any message so it should be
|
||||
* Running
|
||||
* Suspended
|
||||
*/
|
||||
Assert.Equal(WorkflowStatus.Running, workflowState.Status);
|
||||
Assert.Equal(WorkflowSubStatus.Suspended, workflowState.SubStatus);
|
||||
|
||||
//Start Worker to send Message on topicName/suscriptionName
|
||||
await _worker.StartWorkerAsync("topicName1", "subscriptionName1");
|
||||
await _sbProcessorManager
|
||||
.Get("topicName1", "subscriptionName1")
|
||||
.SendMessage<dynamic>(new { hello = "world" }, null);
|
||||
|
||||
//Wait for receiving first message
|
||||
var wait1 = _resetEventManager.Get("receive1").WaitOne(TimeSpan.FromSeconds(5));
|
||||
_testOutputHelper.WriteLine($"wait1 : {wait1}");
|
||||
|
||||
var lastWorkflowState = await workflowRuntime.ExportWorkflowStateAsync(workflowState.WorkflowInstanceId);
|
||||
/*
|
||||
* We don't send 2 messages so Workflow must be
|
||||
* Running
|
||||
* Suspended
|
||||
*
|
||||
* with a timeout on Wait for 2nd Message. (False ResetEvent)
|
||||
*/
|
||||
Assert.NotNull(lastWorkflowState);
|
||||
Assert.Equal(WorkflowStatus.Running, lastWorkflowState.Status);
|
||||
Assert.Equal(WorkflowSubStatus.Suspended, lastWorkflowState.SubStatus);
|
||||
Assert.False(wait1);
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
|
||||
_hosted.StopAsync(new CancellationToken()).GetAwaiter().GetResult();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
using Elsa.AzureServiceBus.Activities;
|
||||
using Elsa.Workflows.Core;
|
||||
using Elsa.Workflows.Core.Activities;
|
||||
using Elsa.Workflows.Core.Contracts;
|
||||
using Elsa.ServiceBusIntegrationTests.Contracts;
|
||||
|
||||
namespace Elsa.ServiceBusIntegrationTests.Scenarios.workflows
|
||||
{
|
||||
public class ReceiveMessageWorkflow : WorkflowBase
|
||||
{
|
||||
private readonly ITestResetEventManager _waitHandleTestManager;
|
||||
|
||||
public ReceiveMessageWorkflow(ITestResetEventManager waitHandleTestManager)
|
||||
{
|
||||
_waitHandleTestManager = waitHandleTestManager;
|
||||
}
|
||||
|
||||
protected override void Build(IWorkflowBuilder builder)
|
||||
{
|
||||
builder.Root = new Sequence()
|
||||
{
|
||||
Activities =
|
||||
{
|
||||
new MessageReceived("topicName","subscriptionName"),
|
||||
new WriteLine(context=> {_waitHandleTestManager.Set("receive1"); return "first receive ok"; }),
|
||||
new MessageReceived("topicName1","subscriptionName1"),
|
||||
new WriteLine(context=> {_waitHandleTestManager.Set("receive2"); return "Ok"; }),
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
using Elsa.AzureServiceBus.Activities;
|
||||
using Elsa.Workflows.Core;
|
||||
using Elsa.Workflows.Core.Activities;
|
||||
using Elsa.Workflows.Core.Contracts;
|
||||
using Elsa.ServiceBusIntegrationTests.Contracts;
|
||||
|
||||
namespace Elsa.ServiceBusIntegrationTests.Scenarios.workflows
|
||||
{
|
||||
public class ReceiveOneMessageWorkflow : WorkflowBase
|
||||
{
|
||||
private readonly ITestResetEventManager _waitHandleTestManager;
|
||||
|
||||
public ReceiveOneMessageWorkflow(ITestResetEventManager waitHandleTestManager)
|
||||
{
|
||||
_waitHandleTestManager = waitHandleTestManager;
|
||||
}
|
||||
|
||||
protected override void Build(IWorkflowBuilder builder)
|
||||
{
|
||||
builder.Root = new Sequence()
|
||||
{
|
||||
Activities =
|
||||
{
|
||||
new MessageReceived("topicName","subscriptionName"),
|
||||
new WriteLine(context=> {_waitHandleTestManager.Set("receive1"); return "first receive ok"; }),
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
using Elsa.AzureServiceBus.Activities;
|
||||
using Elsa.Workflows.Core;
|
||||
using Elsa.Workflows.Core.Activities;
|
||||
using Elsa.Workflows.Core.Contracts;
|
||||
using Elsa.ServiceBusIntegrationTests.Contracts;
|
||||
|
||||
namespace Elsa.ServiceBusIntegrationTests.Scenarios.workflows
|
||||
{
|
||||
public class SendOneMessageWorkflow : WorkflowBase
|
||||
{
|
||||
private readonly ITestResetEventManager _waitHandleTestManager;
|
||||
|
||||
public SendOneMessageWorkflow(ITestResetEventManager waitHandleTestManager)
|
||||
{
|
||||
_waitHandleTestManager = waitHandleTestManager;
|
||||
}
|
||||
|
||||
protected override void Build(IWorkflowBuilder builder)
|
||||
{
|
||||
builder.Root = new Sequence()
|
||||
{
|
||||
Activities =
|
||||
{
|
||||
new SendMessage()
|
||||
{
|
||||
QueueOrTopic = new ("sendTopic1"),
|
||||
MessageBody = new Workflows.Core.Models.Input<object>("HEllo World"),
|
||||
},
|
||||
new MessageReceived("topicName","subscriptionName"),
|
||||
new WriteLine(context=> {_waitHandleTestManager.Set("receive1"); return "first receive ok"; }),
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public class SendOneMessageWithCorrelationIdWorkflow : WorkflowBase
|
||||
{
|
||||
private readonly ITestResetEventManager _waitHandleTestManager;
|
||||
|
||||
public SendOneMessageWithCorrelationIdWorkflow(ITestResetEventManager waitHandleTestManager)
|
||||
{
|
||||
_waitHandleTestManager = waitHandleTestManager;
|
||||
}
|
||||
|
||||
protected override void Build(IWorkflowBuilder builder)
|
||||
{
|
||||
builder.Root = new Sequence()
|
||||
{
|
||||
Activities =
|
||||
{
|
||||
new SendMessage()
|
||||
{
|
||||
QueueOrTopic = new ("sendTopic1"),
|
||||
MessageBody = new Workflows.Core.Models.Input<object>("HEllo World"),
|
||||
},
|
||||
new Correlate()
|
||||
{
|
||||
CorrelationId = new ("EEE3D9CC-2279-4CE5-8F4F-FC6C65BF8814")
|
||||
},
|
||||
new MessageReceived("topicName","subscriptionName"),
|
||||
new WriteLine(context=> {_waitHandleTestManager.Set("receive1"); return "first receive ok"; }),
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -8,7 +8,6 @@
|
|||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
|
||||
<PackageReference Include="Moq" Version="4.18.4" />
|
||||
<PackageReference Include="xunit" Version="2.4.2" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@
|
|||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
|
||||
<PackageReference Include="Moq" Version="4.18.4" />
|
||||
<PackageReference Include="xunit" Version="2.4.2" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
|
|
|
|||
Loading…
Reference in a new issue