diff --git a/Elsa.sln b/Elsa.sln index ddf89440c..23dd0aee3 100644 --- a/Elsa.sln +++ b/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 diff --git a/src/modules/Elsa.AzureServiceBus/Activities/MessageReceived.cs b/src/modules/Elsa.AzureServiceBus/Activities/MessageReceived.cs index e38256029..69d6454c7 100644 --- a/src/modules/Elsa.AzureServiceBus/Activities/MessageReceived.cs +++ b/src/modules/Elsa.AzureServiceBus/Activities/MessageReceived.cs @@ -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(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) diff --git a/src/modules/Elsa.AzureServiceBus/Services/Worker.cs b/src/modules/Elsa.AzureServiceBus/Services/Worker.cs index 787f53289..0e80f3164 100644 --- a/src/modules/Elsa.AzureServiceBus/Services/Worker.cs +++ b/src/modules/Elsa.AzureServiceBus/Services/Worker.cs @@ -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; - -/// -/// Processes messages received via a queue specified through the . -/// When a message is received, the appropriate workflows are executed. -/// -public class Worker : IAsyncDisposable -{ - private static readonly string BookmarkName = TypeNameHelper.GenerateTypeName(); - private readonly ServiceBusProcessor _processor; - private readonly IWorkflowDispatcher _workflowDispatcher; - private readonly IHasher _hasher; - private readonly ILogger _logger; - private int _refCount = 1; - - /// - /// Initializes a new instance of the class. - /// - public Worker(string queueOrTopic, string? subscription, IWorkflowDispatcher workflowDispatcher, ServiceBusClient client, IHasher hasher, ILogger 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; - } - - /// - /// The name of the queue or topic that this worker is processing. - /// - public string QueueOrTopic { get; } - - /// - /// The name of the subscription that this worker is processing. Only valid if the worker is processing a topic. - /// - public string? Subscription { get; } - - /// - /// Maintains the number of workflows that are relying on this worker. When it goes to zero, the worker will be removed. - /// - public int RefCount - { - get => _refCount; - private set - { - if (value < 0) - throw new ArgumentException("RefCount cannot be less than zero"); - - _refCount = value; - } - } - - /// - /// Starts the worker. - /// - /// The cancellation token. - public async Task StartAsync(CancellationToken cancellationToken = default) => await _processor.StartProcessingAsync(cancellationToken); - - /// - /// Increments the ref count. - /// - public void IncrementRefCount() => RefCount++; - - /// - /// Decrements the ref count. - /// - public void DecrementRefCount() => RefCount--; - - /// - /// Disposes the worker. - /// - 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 { [MessageReceived.InputKey] = messageModel }; - var activityTypeName = ActivityTypeNameHelper.GenerateTypeName(); - 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; + +/// +/// Processes messages received via a queue specified through the . +/// When a message is received, the appropriate workflows are executed. +/// +public class Worker : IAsyncDisposable +{ + private static readonly string BookmarkName = TypeNameHelper.GenerateTypeName(); + private readonly ServiceBusProcessor _processor; + private readonly IWorkflowDispatcher _workflowDispatcher; + private readonly IHasher _hasher; + private readonly IWorkflowInbox _workflowInbox; + private readonly ILogger _logger; + private int _refCount = 1; + + /// + /// Initializes a new instance of the class. + /// + public Worker(string queueOrTopic, string? subscription, IWorkflowDispatcher workflowDispatcher, ServiceBusClient client, IHasher hasher, IWorkflowInbox workflowInbox, ILogger 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; + } + + /// + /// The name of the queue or topic that this worker is processing. + /// + public string QueueOrTopic { get; } + + /// + /// The name of the subscription that this worker is processing. Only valid if the worker is processing a topic. + /// + public string? Subscription { get; } + + /// + /// Maintains the number of workflows that are relying on this worker. When it goes to zero, the worker will be removed. + /// + public int RefCount + { + get => _refCount; + private set + { + if (value < 0) + throw new ArgumentException("RefCount cannot be less than zero"); + + _refCount = value; + } + } + + /// + /// Starts the worker. + /// + /// The cancellation token. + public async Task StartAsync(CancellationToken cancellationToken = default) => await _processor.StartProcessingAsync(cancellationToken); + + /// + /// Increments the ref count. + /// + public void IncrementRefCount() => RefCount++; + + /// + /// Decrements the ref count. + /// + public void DecrementRefCount() => RefCount--; + + /// + /// Disposes the worker. + /// + 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 { [MessageReceived.InputKey] = messageModel }; + var activityTypeName = ActivityTypeNameHelper.GenerateTypeName(); + + 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); } \ No newline at end of file diff --git a/test/integration/Elsa.ServiceBusIntegrationTests/Contracts/IServiceBusProcessorManager.cs b/test/integration/Elsa.ServiceBusIntegrationTests/Contracts/IServiceBusProcessorManager.cs new file mode 100644 index 000000000..69cac4d43 --- /dev/null +++ b/test/integration/Elsa.ServiceBusIntegrationTests/Contracts/IServiceBusProcessorManager.cs @@ -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); + } +} \ No newline at end of file diff --git a/test/integration/Elsa.ServiceBusIntegrationTests/Contracts/ITestResetEventManager.cs b/test/integration/Elsa.ServiceBusIntegrationTests/Contracts/ITestResetEventManager.cs new file mode 100644 index 000000000..aed3a0979 --- /dev/null +++ b/test/integration/Elsa.ServiceBusIntegrationTests/Contracts/ITestResetEventManager.cs @@ -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); + } +} \ No newline at end of file diff --git a/test/integration/Elsa.ServiceBusIntegrationTests/Elsa.ServiceBusIntegrationTests.csproj b/test/integration/Elsa.ServiceBusIntegrationTests/Elsa.ServiceBusIntegrationTests.csproj new file mode 100644 index 000000000..15d50a588 --- /dev/null +++ b/test/integration/Elsa.ServiceBusIntegrationTests/Elsa.ServiceBusIntegrationTests.csproj @@ -0,0 +1,39 @@ + + + + net7.0 + enable + enable + + false + true + + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + + + + + + + + + + + + + diff --git a/test/integration/Elsa.ServiceBusIntegrationTests/GlobalUsings.cs b/test/integration/Elsa.ServiceBusIntegrationTests/GlobalUsings.cs new file mode 100644 index 000000000..8c927eb74 --- /dev/null +++ b/test/integration/Elsa.ServiceBusIntegrationTests/GlobalUsings.cs @@ -0,0 +1 @@ +global using Xunit; \ No newline at end of file diff --git a/test/integration/Elsa.ServiceBusIntegrationTests/Helpers/ServiceBusProcessorManager.cs b/test/integration/Elsa.ServiceBusIntegrationTests/Helpers/ServiceBusProcessorManager.cs new file mode 100644 index 000000000..6116ad176 --- /dev/null +++ b/test/integration/Elsa.ServiceBusIntegrationTests/Helpers/ServiceBusProcessorManager.cs @@ -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(s => s == topic), + Arg.Any(), + Arg.Any() + ) + .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; + } + } +} \ No newline at end of file diff --git a/test/integration/Elsa.ServiceBusIntegrationTests/Helpers/ServiceBusProcessorTest.cs b/test/integration/Elsa.ServiceBusIntegrationTests/Helpers/ServiceBusProcessorTest.cs new file mode 100644 index 000000000..a13f192e0 --- /dev/null +++ b/test/integration/Elsa.ServiceBusIntegrationTests/Helpers/ServiceBusProcessorTest.cs @@ -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 payload, string correlationId, int attempt = 1) + { + var args = CreateMessageArgs(payload, correlationId, attempt); + await base.OnProcessMessageAsync(args); + } + + public ProcessMessageEventArgs CreateMessageArgs(T payload, string correlationId, int deliveryCount = 1) + { + var payloadJson = JsonSerializer.Serialize(payload); + var props = new Dictionary() { }; + + 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"); + } + + } +} \ No newline at end of file diff --git a/test/integration/Elsa.ServiceBusIntegrationTests/Helpers/TestResetEventManager.cs b/test/integration/Elsa.ServiceBusIntegrationTests/Helpers/TestResetEventManager.cs new file mode 100644 index 000000000..ac77e23d2 --- /dev/null +++ b/test/integration/Elsa.ServiceBusIntegrationTests/Helpers/TestResetEventManager.cs @@ -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 _events = new Dictionary(); + 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(); + } + } +} \ No newline at end of file diff --git a/test/integration/Elsa.ServiceBusIntegrationTests/Scenarios/ServiceBus/ServiceBusTests.cs b/test/integration/Elsa.ServiceBusIntegrationTests/Scenarios/ServiceBus/ServiceBusTests.cs new file mode 100644 index 000000000..76d5ddda7 --- /dev/null +++ b/test/integration/Elsa.ServiceBusIntegrationTests/Scenarios/ServiceBus/ServiceBusTests.cs @@ -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(); + + 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() + .AddWorkflow() + .AddWorkflow() + .AddWorkflow() + .ConfigureServices(services => + { + services + .AddSingleton(_serviceBusClient) + .AddSingleton() + + .AddSingleton() + .AddSingleton(_resetEventManager) + + .AddSingleton(sp => + { + var options = sp.GetRequiredService>().Value; + return ActivatorUtilities.CreateInstance(sp, options.CommandWorkerCount); + }) + .AddSingleton(sp => + { + var options = sp.GetRequiredService>().Value; + return ActivatorUtilities.CreateInstance(sp, options.NotificationWorkerCount); + }) + ; + }) + .Build(); + + _worker = _services.GetRequiredService(); + _hosted = _services.GetRequiredService(); + _backgroundEventService = _services.GetRequiredService(); + _sbProcessorManager = _services.GetRequiredService(); + + _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(), Common.Models.VersionOptions.Published); + var workflowRuntime = _services.GetRequiredService(); + 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(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(), Common.Models.VersionOptions.Published); + var workflowRuntime = _services.GetRequiredService(); + 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(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(); + _serviceBusClient + .CreateSender(Arg.Any()) + .Returns(senderMock); + + + senderMock + .SendMessageAsync(Arg.Any(), Arg.Any()) + .ReturnsForAnyArgs(async (callback) => + { + var sb = callback.Arg(); + var c = callback.Arg(); + + _testOutputHelper.WriteLine("Sending Message from activity"); + + await _worker.StartWorkerAsync("topicName", "subscriptionName"); + await _sbProcessorManager + .Get("topicName", "subscriptionName") + .SendMessage(new { hello = "world" }, null); + }); + + + //Start Workflow + var workflowDefinitionId = typeof(SendOneMessageWorkflow).Name; + var startWorkflowOptions = new StartWorkflowRuntimeOptions(null, new Dictionary(), Common.Models.VersionOptions.Published); + var workflowRuntime = _services.GetRequiredService(); + 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(); + _serviceBusClient + .CreateSender(Arg.Any()) + .Returns(senderMock); + + senderMock + .SendMessageAsync(Arg.Any(), Arg.Any()) + .ReturnsForAnyArgs(async (callback) => + { + var sb = callback.Arg(); + var c = callback.Arg(); + + _testOutputHelper.WriteLine("Sending Message from activity"); + + await _worker.StartWorkerAsync("topicName", "subscriptionName"); + await _sbProcessorManager + .Get("topicName", "subscriptionName") + .SendMessage(new { hello = "world" }, correlationId); + }); + + //Start Workflow + var workflowDefinitionId = typeof(SendOneMessageWithCorrelationIdWorkflow).Name; + var startWorkflowOptions = new StartWorkflowRuntimeOptions(null, new Dictionary(), Common.Models.VersionOptions.Published); + var workflowRuntime = _services.GetRequiredService(); + 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(), Common.Models.VersionOptions.Published); + var workflowRuntime = _services.GetRequiredService(); + 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(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(); + } + } +} \ No newline at end of file diff --git a/test/integration/Elsa.ServiceBusIntegrationTests/Scenarios/workflows/ReceiveMessageWorkflow.cs b/test/integration/Elsa.ServiceBusIntegrationTests/Scenarios/workflows/ReceiveMessageWorkflow.cs new file mode 100644 index 000000000..d2d9c6c2e --- /dev/null +++ b/test/integration/Elsa.ServiceBusIntegrationTests/Scenarios/workflows/ReceiveMessageWorkflow.cs @@ -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"; }), + } + }; + } + + } +} \ No newline at end of file diff --git a/test/integration/Elsa.ServiceBusIntegrationTests/Scenarios/workflows/ReceiveOneMessageWorkflow.cs b/test/integration/Elsa.ServiceBusIntegrationTests/Scenarios/workflows/ReceiveOneMessageWorkflow.cs new file mode 100644 index 000000000..32155fdd2 --- /dev/null +++ b/test/integration/Elsa.ServiceBusIntegrationTests/Scenarios/workflows/ReceiveOneMessageWorkflow.cs @@ -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"; }), + } + }; + } + } +} \ No newline at end of file diff --git a/test/integration/Elsa.ServiceBusIntegrationTests/Scenarios/workflows/SendOneMessageWorkflow.cs b/test/integration/Elsa.ServiceBusIntegrationTests/Scenarios/workflows/SendOneMessageWorkflow.cs new file mode 100644 index 000000000..8f6b08685 --- /dev/null +++ b/test/integration/Elsa.ServiceBusIntegrationTests/Scenarios/workflows/SendOneMessageWorkflow.cs @@ -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("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("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"; }), + } + }; + } + } +} \ No newline at end of file diff --git a/test/unit/Elsa.JavaScript.UnitTests/Elsa.JavaScript.UnitTests.csproj b/test/unit/Elsa.JavaScript.UnitTests/Elsa.JavaScript.UnitTests.csproj index e541d58fc..a831b31cd 100644 --- a/test/unit/Elsa.JavaScript.UnitTests/Elsa.JavaScript.UnitTests.csproj +++ b/test/unit/Elsa.JavaScript.UnitTests/Elsa.JavaScript.UnitTests.csproj @@ -8,7 +8,6 @@ - runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/test/unit/Elsa.Workflows.Core.UnitTests/Elsa.Workflows.Core.UnitTests.csproj b/test/unit/Elsa.Workflows.Core.UnitTests/Elsa.Workflows.Core.UnitTests.csproj index f1412712f..3a6f40f9c 100644 --- a/test/unit/Elsa.Workflows.Core.UnitTests/Elsa.Workflows.Core.UnitTests.csproj +++ b/test/unit/Elsa.Workflows.Core.UnitTests/Elsa.Workflows.Core.UnitTests.csproj @@ -11,7 +11,6 @@ - runtime; build; native; contentfiles; analyzers; buildtransitive