Seperate YesSql (#504)
* Seperate YesSql and added InMemory, MongoDb * Error fixed, if DatabaseInitializer is run through several times * icon.png was not packed * Added AddWorkflowProvider to AddElsaPersistenceMongoDb * Wrong primary keys were used for MongoDb * Refactorig MongoDb * Register IMongoCollection<WorkflowDefinition> and IMongoCollection<WorkflowInstance> with DI * Wrong Parameter Type in Constructor (MongoDbWorkflowInstanceRepository) * Add workflowDefinition.WorkflowDefinitionId = _idGenerator.Generate(); to Initialize * Removed duplicated code * Correct wrong Commit Co-authored-by: Rafael Carnucci <rafael.carnucci@icn.de> Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
This commit is contained in:
parent
65a266dfdb
commit
3b35d9ff0a
865
Elsa.sln
865
Elsa.sln
|
|
@ -1,484 +1,381 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.29509.3
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Core", "src\core\Elsa.Core\Elsa.Core.csproj", "{300EE2D5-54C5-46F2-AD03-BB43589EA074}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "solution", "solution", "{7165BB9E-F22C-40D2-B7B1-CA3EFA2529A0}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
.dockerignore = .dockerignore
|
||||
.editorconfig = .editorconfig
|
||||
.gitignore = .gitignore
|
||||
docker-compose.yaml = docker-compose.yaml
|
||||
Dockerfile = Dockerfile
|
||||
Nuget.Config = Nuget.Config
|
||||
README.md = README.md
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Abstractions", "src\core\Elsa.Abstractions\Elsa.Abstractions.csproj", "{3130C574-557C-4DA2-933E-AED7A9EBE48A}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "core", "core", "{35F44BE9-13D0-417C-A01A-F0787BEE6DC3}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Activities.Console", "src\activities\Elsa.Activities.Console\Elsa.Activities.Console.csproj", "{B98B80CB-D3A3-437C-A61C-ED82C8C77B2F}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Activities.Http", "src\activities\Elsa.Activities.Http\Elsa.Activities.Http.csproj", "{1D63E1B4-2386-4BEC-9090-C3F3CBF25703}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "activities", "activities", "{B43B546E-23F3-46E8-ACB7-D04F05CDA180}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Activities.Email", "src\activities\Elsa.Activities.Email\Elsa.Activities.Email.csproj", "{D20FCB88-9DCA-49EA-9CC2-5B94DD935D30}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Activities.Timers", "src\activities\Elsa.Activities.Timers\Elsa.Activities.Timers.csproj", "{E4B71DC4-3E73-49C3-9B4E-CA13909F222D}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Activities.MassTransit", "src\activities\Elsa.Activities.MassTransit\Elsa.Activities.MassTransit.csproj", "{C4939482-9447-47D1-B6AF-E9F8C6323841}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{5E5E1E84-DDBC-40D6-B891-0D563A15A44A}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Activities.UserTask", "src\activities\Elsa.Activities.UserTask\Elsa.Activities.UserTask.csproj", "{823F80B6-E241-43F7-83BD-29FBB58A77F9}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Activities.Dropbox", "src\activities\Elsa.Activities.Dropbox\Elsa.Activities.Dropbox.csproj", "{79E85459-EF54-44D6-9508-1E68B8238D00}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "scripting", "scripting", "{9C3C685E-3D7D-4638-A031-24F71CF74B52}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa", "src\core\Elsa\Elsa.csproj", "{6BB5EB72-AD9A-41ED-A6AA-0FF1093EA41B}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Scripting.JavaScript", "src\scripting\Elsa.Scripting.JavaScript\Elsa.Scripting.JavaScript.csproj", "{18BE8F72-E528-4617-B1B1-07BD35337DFC}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Scripting.Liquid", "src\scripting\Elsa.Scripting.Liquid\Elsa.Scripting.Liquid.csproj", "{01DC21DD-C6E2-4B21-864E-97D29448F777}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "server", "server", "{468E498C-59DB-4541-8D8A-0D89DE9083AB}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Server.Host", "src\server\Elsa.Server.Host\Elsa.Server.Host.csproj", "{FC54EDBA-71FB-4A87-8FD5-54759DF77CCE}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{AB1AE008-6FD6-414C-8E88-D735F42E1FA6}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "integration", "integration", "{0A3C36AB-2ACF-4175-A512-66B4C3DB9371}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "shared", "shared", "{0A6747EA-7AC6-4B6F-BC0C-C40C8A80C44D}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Testing.Shared", "test\shared\Elsa.Testing.Shared\Elsa.Testing.Shared.csproj", "{E7C689EB-5AD6-4E91-A007-6116EEA702FC}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.DistributedLocking.SqlServer", "src\providers\Elsa.DistributedLocking.SqlServer\Elsa.DistributedLocking.SqlServer.csproj", "{150EF356-E8BC-4922-91C2-362017479409}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.DistributedLocking.Redis", "src\providers\Elsa.DistributedLocking.Redis\Elsa.DistributedLocking.Redis.csproj", "{EBD49CCA-5400-4C36-B5DF-7B28190AA323}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.DistributedLocking.AzureBlob", "src\providers\Elsa.DistributedLocking.AzureBlob\Elsa.DistributedLocking.AzureBlob.csproj", "{E20238CE-5C64-4F87-8753-3B4E1EC9A740}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "locking", "locking", "{7CD5C8D5-EC78-4A99-A514-F01CA7197AC8}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Core.IntegrationTests", "test\integration\Elsa.Core.IntegrationTests\Elsa.Core.IntegrationTests.csproj", "{4CB34AB3-01C9-4911-8914-EABAA744EAD3}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "component", "component", "{FC47A50F-03B2-47D8-AAFB-075314FBA186}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.ComponentTests", "test\component\Elsa.ComponentTests\Elsa.ComponentTests.csproj", "{BB5819C7-434A-4AC5-8B0E-6C4FA672EBD5}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Server.Api", "src\server\Elsa.Server.Api\Elsa.Server.Api.csproj", "{44E0B699-A140-4551-A0E9-9FD9F171A9C2}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "clients", "clients", "{E43FB9E7-7851-4880-B7EE-12B8CEE628D0}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Client", "src\clients\Elsa.Client\Elsa.Client.csproj", "{2DA042D6-1E3C-4B15-B48E-BF45426C74E1}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dashboards", "dashboards", "{5583B236-794A-422C-B306-52BB7DFE7EBE}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "blazor", "blazor", "{5837821B-CA71-40B6-A9F1-C25D318B4691}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElsaDashboard.Backend", "src\dashboards\blazor\ElsaDashboard.Backend\ElsaDashboard.Backend.csproj", "{25015984-7F81-454C-AC6E-E6DC810A59E2}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElsaDashboard.Shared", "src\dashboards\blazor\ElsaDashboard.Shared\ElsaDashboard.Shared.csproj", "{DC9B6EEA-E692-4AF7-9A5A-870FAC4B5EB2}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElsaDashboard.WebAssembly", "src\dashboards\blazor\ElsaDashboard.WebAssembly\ElsaDashboard.WebAssembly.csproj", "{04FD384F-1B78-4D4C-9815-F9FBDA1B9245}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElsaDashboard.Application", "src\dashboards\blazor\ElsaDashboard.Application\ElsaDashboard.Application.csproj", "{EDD20103-2089-48D7-A445-6FA8183CA376}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElsaDashboard.Application.Server", "src\dashboards\blazor\ElsaDashboard.Application.Server\ElsaDashboard.Application.Server.csproj", "{8DD4F1E8-8AC8-4AB4-AC08-9456AA6EAF10}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElsaDashboard.Application.WebAssembly", "src\dashboards\blazor\ElsaDashboard.Application.WebAssembly\ElsaDashboard.Application.WebAssembly.csproj", "{F7181887-E6B5-4DA9-9598-8E9E806B5A20}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Activities.Rebus", "src\activities\Elsa.Activities.Rebus\Elsa.Activities.Rebus.csproj", "{115DEB38-679F-467E-8F87-9E669DFD2EB8}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "servicebus", "servicebus", "{47EDFC14-BB99-44BF-A447-035D40D7347B}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Rebus.AzureServiceBus", "src\servicebus\Elsa.Rebus.AzureServiceBus\Elsa.Rebus.AzureServiceBus.csproj", "{D3440E66-A871-4AB0-A1E0-8B3864ACA16A}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Rebus.RabbitMq", "src\servicebus\Elsa.Rebus.RabbitMq\Elsa.Rebus.RabbitMq.csproj", "{FC656D28-1AA3-462D-9B18-A10436E47C08}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Activities.AzureServiceBus", "src\activities\Elsa.Activities.AzureServiceBus\Elsa.Activities.AzureServiceBus.csproj", "{DD607BC1-F9D9-4685-BC8F-A4056C2C31FA}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "worker", "worker", "{E42743A0-FBDD-4150-9D53-6000496D9B87}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "console", "console", "{FC9F520F-BA51-4AD2-BFEE-EF787798E734}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "aspnet", "aspnet", "{22E75696-6FE9-436A-9097-EE21C603F818}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ContextualWorkflowHttp", "src\samples\aspnet\Elsa.Samples.ContextualWorkflowHttp\Elsa.Samples.ContextualWorkflowHttp.csproj", "{2EC02600-8367-4B25-8243-CA4E53FA00FA}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.CorrelationHttp", "src\samples\aspnet\Elsa.Samples.CorrelationHttp\Elsa.Samples.CorrelationHttp.csproj", "{3BDA353A-660E-47FA-95F5-4F6BB8E6B8AD}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.CustomActivities", "src\samples\aspnet\Elsa.Samples.CustomActivities\Elsa.Samples.CustomActivities.csproj", "{AC6AA60A-393F-4D49-B3F1-44F567B18E22}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ForkJoinTimerAndSignalHttp", "src\samples\aspnet\Elsa.Samples.ForkJoinTimerAndSignalHttp\Elsa.Samples.ForkJoinTimerAndSignalHttp.csproj", "{8BB1B34D-E0FC-4804-9098-E7F8E35A749A}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.HelloWorldHttp", "src\samples\aspnet\Elsa.Samples.HelloWorldHttp\Elsa.Samples.HelloWorldHttp.csproj", "{15FDEF59-32F8-4F8F-AE10-B3D0FEE03049}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ReadModelHttp", "src\samples\aspnet\Elsa.Samples.ReadModelHttp\Elsa.Samples.ReadModelHttp.csproj", "{795FF94C-F22C-45A3-9643-88EED173D6D4}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.DeclarativeCompositeActivitiesConsole", "src\samples\console\Elsa.Samples.DeclarativeCompositeActivitiesConsole\Elsa.Samples.DeclarativeCompositeActivitiesConsole.csproj", "{7EC9B4E1-820E-4D53-B4E2-9815E31C7AE8}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.FileBasedWorkflow", "src\samples\console\Elsa.Samples.FileBasedWorkflow\Elsa.Samples.FileBasedWorkflow.csproj", "{C6A54F89-271D-402E-A38D-6C3A9DB7DF9C}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ForLoopConsole", "src\samples\console\Elsa.Samples.ForLoopConsole\Elsa.Samples.ForLoopConsole.csproj", "{F5124847-D046-4458-A89D-CD796FEDEE1A}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.GoBackConsole", "src\samples\console\Elsa.Samples.GoBackConsole\Elsa.Samples.GoBackConsole.csproj", "{0B147307-64FF-4496-9DC9-8F83013AC045}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.HelloWorldConsole", "src\samples\console\Elsa.Samples.HelloWorldConsole\Elsa.Samples.HelloWorldConsole.csproj", "{935888CF-E871-42BB-A47D-5E1168269A03}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.IfElseConsole", "src\samples\console\Elsa.Samples.IfElseConsole\Elsa.Samples.IfElseConsole.csproj", "{EA1D7E39-D77D-4B13-BAD0-76BA30547019}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ProgrammaticCompositeActivitiesConsole", "src\samples\console\Elsa.Samples.ProgrammaticCompositeActivitiesConsole\Elsa.Samples.ProgrammaticCompositeActivitiesConsole.csproj", "{0FC36CEC-35B3-4EB7-9DD7-0F2A1C4E9313}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ReadLineEchoConsole", "src\samples\console\Elsa.Samples.ReadLineEchoConsole\Elsa.Samples.ReadLineEchoConsole.csproj", "{E7BAECCC-CBF8-4975-93C4-6D3A8F94B000}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.Serialization", "src\samples\console\Elsa.Samples.Serialization\Elsa.Samples.Serialization.csproj", "{823EB953-0B26-4D85-9B3F-14FCB476E987}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.SignalingConsole", "src\samples\console\Elsa.Samples.SignalingConsole\Elsa.Samples.SignalingConsole.csproj", "{83929B86-434B-4C24-9B02-1F944DF8D71C}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.WhileLoopConsole", "src\samples\console\Elsa.Samples.WhileLoopConsole\Elsa.Samples.WhileLoopConsole.csproj", "{EDE80D8C-4C1F-44A3-8D0E-6D0757439E1C}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AzureServiceBusWorker", "src\samples\worker\Elsa.Samples.AzureServiceBusWorker\Elsa.Samples.AzureServiceBusWorker.csproj", "{F958B682-5192-4287-BF80-CB7B30ECFC9E}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.DistributedLock", "src\samples\worker\Elsa.Samples.DistributedLock\Elsa.Samples.DistributedLock.csproj", "{F081EE15-7E1A-4E8C-B91F-5472ED565431}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.MultiTenantChildWorker", "src\samples\worker\Elsa.Samples.MultiTenantChildWorker\Elsa.Samples.MultiTenantChildWorker.csproj", "{1053BF2D-BCB6-4616-9773-7FF25F48ECA3}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.RebusWorker", "src\samples\worker\Elsa.Samples.RebusWorker\Elsa.Samples.RebusWorker.csproj", "{6837DB22-1F5C-42E1-A466-E4597AF6E91E}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.RunChildWorkflowWorker", "src\samples\worker\Elsa.Samples.RunChildWorkflowWorker\Elsa.Samples.RunChildWorkflowWorker.csproj", "{A4DF29BD-95CC-4A86-96EC-FB6692270E68}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.Timers", "src\samples\worker\Elsa.Samples.Timers\Elsa.Samples.Timers.csproj", "{FD2D1BD0-1229-4DCF-BE70-6BFD396DD489}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.WhileLoopWorker", "src\samples\worker\Elsa.Samples.WhileLoopWorker\Elsa.Samples.WhileLoopWorker.csproj", "{EA3832C4-8079-4E84-AF8C-12744E4EFD44}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.CustomAttributesChildWorker", "src\samples\worker\Elsa.Samples.CustomAttributesChildWorker\Elsa.Samples.CustomAttributesChildWorker.csproj", "{AEA00027-F280-43A4-AC60-E2AF3014CF34}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.Interrupts", "src\samples\aspnet\Elsa.Samples.Interrupts\Elsa.Samples.Interrupts.csproj", "{E0090EF3-C4A7-4262-9300-1D395BE25DD0}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{300EE2D5-54C5-46F2-AD03-BB43589EA074}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{300EE2D5-54C5-46F2-AD03-BB43589EA074}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{300EE2D5-54C5-46F2-AD03-BB43589EA074}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{300EE2D5-54C5-46F2-AD03-BB43589EA074}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3130C574-557C-4DA2-933E-AED7A9EBE48A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3130C574-557C-4DA2-933E-AED7A9EBE48A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3130C574-557C-4DA2-933E-AED7A9EBE48A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3130C574-557C-4DA2-933E-AED7A9EBE48A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{B98B80CB-D3A3-437C-A61C-ED82C8C77B2F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B98B80CB-D3A3-437C-A61C-ED82C8C77B2F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B98B80CB-D3A3-437C-A61C-ED82C8C77B2F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B98B80CB-D3A3-437C-A61C-ED82C8C77B2F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{1D63E1B4-2386-4BEC-9090-C3F3CBF25703}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{1D63E1B4-2386-4BEC-9090-C3F3CBF25703}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{1D63E1B4-2386-4BEC-9090-C3F3CBF25703}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1D63E1B4-2386-4BEC-9090-C3F3CBF25703}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{D20FCB88-9DCA-49EA-9CC2-5B94DD935D30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D20FCB88-9DCA-49EA-9CC2-5B94DD935D30}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D20FCB88-9DCA-49EA-9CC2-5B94DD935D30}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D20FCB88-9DCA-49EA-9CC2-5B94DD935D30}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{E4B71DC4-3E73-49C3-9B4E-CA13909F222D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E4B71DC4-3E73-49C3-9B4E-CA13909F222D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E4B71DC4-3E73-49C3-9B4E-CA13909F222D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E4B71DC4-3E73-49C3-9B4E-CA13909F222D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{C4939482-9447-47D1-B6AF-E9F8C6323841}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C4939482-9447-47D1-B6AF-E9F8C6323841}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C4939482-9447-47D1-B6AF-E9F8C6323841}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C4939482-9447-47D1-B6AF-E9F8C6323841}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{823F80B6-E241-43F7-83BD-29FBB58A77F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{823F80B6-E241-43F7-83BD-29FBB58A77F9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{823F80B6-E241-43F7-83BD-29FBB58A77F9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{823F80B6-E241-43F7-83BD-29FBB58A77F9}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{79E85459-EF54-44D6-9508-1E68B8238D00}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{79E85459-EF54-44D6-9508-1E68B8238D00}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{79E85459-EF54-44D6-9508-1E68B8238D00}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{79E85459-EF54-44D6-9508-1E68B8238D00}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{6BB5EB72-AD9A-41ED-A6AA-0FF1093EA41B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{6BB5EB72-AD9A-41ED-A6AA-0FF1093EA41B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{6BB5EB72-AD9A-41ED-A6AA-0FF1093EA41B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{6BB5EB72-AD9A-41ED-A6AA-0FF1093EA41B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{18BE8F72-E528-4617-B1B1-07BD35337DFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{18BE8F72-E528-4617-B1B1-07BD35337DFC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{18BE8F72-E528-4617-B1B1-07BD35337DFC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{18BE8F72-E528-4617-B1B1-07BD35337DFC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{01DC21DD-C6E2-4B21-864E-97D29448F777}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{01DC21DD-C6E2-4B21-864E-97D29448F777}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{01DC21DD-C6E2-4B21-864E-97D29448F777}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{01DC21DD-C6E2-4B21-864E-97D29448F777}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{FC54EDBA-71FB-4A87-8FD5-54759DF77CCE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{FC54EDBA-71FB-4A87-8FD5-54759DF77CCE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{FC54EDBA-71FB-4A87-8FD5-54759DF77CCE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{FC54EDBA-71FB-4A87-8FD5-54759DF77CCE}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{E7C689EB-5AD6-4E91-A007-6116EEA702FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E7C689EB-5AD6-4E91-A007-6116EEA702FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E7C689EB-5AD6-4E91-A007-6116EEA702FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E7C689EB-5AD6-4E91-A007-6116EEA702FC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{150EF356-E8BC-4922-91C2-362017479409}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{150EF356-E8BC-4922-91C2-362017479409}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{150EF356-E8BC-4922-91C2-362017479409}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{150EF356-E8BC-4922-91C2-362017479409}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{EBD49CCA-5400-4C36-B5DF-7B28190AA323}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{EBD49CCA-5400-4C36-B5DF-7B28190AA323}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{EBD49CCA-5400-4C36-B5DF-7B28190AA323}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{EBD49CCA-5400-4C36-B5DF-7B28190AA323}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{E20238CE-5C64-4F87-8753-3B4E1EC9A740}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E20238CE-5C64-4F87-8753-3B4E1EC9A740}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E20238CE-5C64-4F87-8753-3B4E1EC9A740}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E20238CE-5C64-4F87-8753-3B4E1EC9A740}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
|
||||
{4CB34AB3-01C9-4911-8914-EABAA744EAD3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{4CB34AB3-01C9-4911-8914-EABAA744EAD3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{4CB34AB3-01C9-4911-8914-EABAA744EAD3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{4CB34AB3-01C9-4911-8914-EABAA744EAD3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{BB5819C7-434A-4AC5-8B0E-6C4FA672EBD5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BB5819C7-434A-4AC5-8B0E-6C4FA672EBD5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BB5819C7-434A-4AC5-8B0E-6C4FA672EBD5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{BB5819C7-434A-4AC5-8B0E-6C4FA672EBD5}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{44E0B699-A140-4551-A0E9-9FD9F171A9C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{44E0B699-A140-4551-A0E9-9FD9F171A9C2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{44E0B699-A140-4551-A0E9-9FD9F171A9C2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{44E0B699-A140-4551-A0E9-9FD9F171A9C2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{2DA042D6-1E3C-4B15-B48E-BF45426C74E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{2DA042D6-1E3C-4B15-B48E-BF45426C74E1}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{2DA042D6-1E3C-4B15-B48E-BF45426C74E1}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{2DA042D6-1E3C-4B15-B48E-BF45426C74E1}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{25015984-7F81-454C-AC6E-E6DC810A59E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{25015984-7F81-454C-AC6E-E6DC810A59E2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{25015984-7F81-454C-AC6E-E6DC810A59E2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{25015984-7F81-454C-AC6E-E6DC810A59E2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{DC9B6EEA-E692-4AF7-9A5A-870FAC4B5EB2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{DC9B6EEA-E692-4AF7-9A5A-870FAC4B5EB2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{DC9B6EEA-E692-4AF7-9A5A-870FAC4B5EB2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{DC9B6EEA-E692-4AF7-9A5A-870FAC4B5EB2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{04FD384F-1B78-4D4C-9815-F9FBDA1B9245}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{04FD384F-1B78-4D4C-9815-F9FBDA1B9245}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{04FD384F-1B78-4D4C-9815-F9FBDA1B9245}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{04FD384F-1B78-4D4C-9815-F9FBDA1B9245}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{EDD20103-2089-48D7-A445-6FA8183CA376}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{EDD20103-2089-48D7-A445-6FA8183CA376}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{EDD20103-2089-48D7-A445-6FA8183CA376}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{EDD20103-2089-48D7-A445-6FA8183CA376}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{8DD4F1E8-8AC8-4AB4-AC08-9456AA6EAF10}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{8DD4F1E8-8AC8-4AB4-AC08-9456AA6EAF10}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{8DD4F1E8-8AC8-4AB4-AC08-9456AA6EAF10}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{8DD4F1E8-8AC8-4AB4-AC08-9456AA6EAF10}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{F7181887-E6B5-4DA9-9598-8E9E806B5A20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{F7181887-E6B5-4DA9-9598-8E9E806B5A20}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F7181887-E6B5-4DA9-9598-8E9E806B5A20}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F7181887-E6B5-4DA9-9598-8E9E806B5A20}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{115DEB38-679F-467E-8F87-9E669DFD2EB8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{115DEB38-679F-467E-8F87-9E669DFD2EB8}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{115DEB38-679F-467E-8F87-9E669DFD2EB8}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{115DEB38-679F-467E-8F87-9E669DFD2EB8}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{D3440E66-A871-4AB0-A1E0-8B3864ACA16A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D3440E66-A871-4AB0-A1E0-8B3864ACA16A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D3440E66-A871-4AB0-A1E0-8B3864ACA16A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D3440E66-A871-4AB0-A1E0-8B3864ACA16A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{FC656D28-1AA3-462D-9B18-A10436E47C08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{FC656D28-1AA3-462D-9B18-A10436E47C08}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{FC656D28-1AA3-462D-9B18-A10436E47C08}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{FC656D28-1AA3-462D-9B18-A10436E47C08}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{DD607BC1-F9D9-4685-BC8F-A4056C2C31FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{DD607BC1-F9D9-4685-BC8F-A4056C2C31FA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{DD607BC1-F9D9-4685-BC8F-A4056C2C31FA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{DD607BC1-F9D9-4685-BC8F-A4056C2C31FA}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{2EC02600-8367-4B25-8243-CA4E53FA00FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{2EC02600-8367-4B25-8243-CA4E53FA00FA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{2EC02600-8367-4B25-8243-CA4E53FA00FA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{2EC02600-8367-4B25-8243-CA4E53FA00FA}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3BDA353A-660E-47FA-95F5-4F6BB8E6B8AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3BDA353A-660E-47FA-95F5-4F6BB8E6B8AD}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3BDA353A-660E-47FA-95F5-4F6BB8E6B8AD}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3BDA353A-660E-47FA-95F5-4F6BB8E6B8AD}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{AC6AA60A-393F-4D49-B3F1-44F567B18E22}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{AC6AA60A-393F-4D49-B3F1-44F567B18E22}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{AC6AA60A-393F-4D49-B3F1-44F567B18E22}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{AC6AA60A-393F-4D49-B3F1-44F567B18E22}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{8BB1B34D-E0FC-4804-9098-E7F8E35A749A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{8BB1B34D-E0FC-4804-9098-E7F8E35A749A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{8BB1B34D-E0FC-4804-9098-E7F8E35A749A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{8BB1B34D-E0FC-4804-9098-E7F8E35A749A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{15FDEF59-32F8-4F8F-AE10-B3D0FEE03049}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{15FDEF59-32F8-4F8F-AE10-B3D0FEE03049}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{15FDEF59-32F8-4F8F-AE10-B3D0FEE03049}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{15FDEF59-32F8-4F8F-AE10-B3D0FEE03049}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{795FF94C-F22C-45A3-9643-88EED173D6D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{795FF94C-F22C-45A3-9643-88EED173D6D4}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{795FF94C-F22C-45A3-9643-88EED173D6D4}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{795FF94C-F22C-45A3-9643-88EED173D6D4}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{7EC9B4E1-820E-4D53-B4E2-9815E31C7AE8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7EC9B4E1-820E-4D53-B4E2-9815E31C7AE8}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7EC9B4E1-820E-4D53-B4E2-9815E31C7AE8}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7EC9B4E1-820E-4D53-B4E2-9815E31C7AE8}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{C6A54F89-271D-402E-A38D-6C3A9DB7DF9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C6A54F89-271D-402E-A38D-6C3A9DB7DF9C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C6A54F89-271D-402E-A38D-6C3A9DB7DF9C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C6A54F89-271D-402E-A38D-6C3A9DB7DF9C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{F5124847-D046-4458-A89D-CD796FEDEE1A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{F5124847-D046-4458-A89D-CD796FEDEE1A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F5124847-D046-4458-A89D-CD796FEDEE1A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F5124847-D046-4458-A89D-CD796FEDEE1A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{0B147307-64FF-4496-9DC9-8F83013AC045}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{0B147307-64FF-4496-9DC9-8F83013AC045}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{0B147307-64FF-4496-9DC9-8F83013AC045}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{0B147307-64FF-4496-9DC9-8F83013AC045}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{935888CF-E871-42BB-A47D-5E1168269A03}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{935888CF-E871-42BB-A47D-5E1168269A03}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{935888CF-E871-42BB-A47D-5E1168269A03}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{935888CF-E871-42BB-A47D-5E1168269A03}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{EA1D7E39-D77D-4B13-BAD0-76BA30547019}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{EA1D7E39-D77D-4B13-BAD0-76BA30547019}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{EA1D7E39-D77D-4B13-BAD0-76BA30547019}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{EA1D7E39-D77D-4B13-BAD0-76BA30547019}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{0FC36CEC-35B3-4EB7-9DD7-0F2A1C4E9313}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{0FC36CEC-35B3-4EB7-9DD7-0F2A1C4E9313}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{0FC36CEC-35B3-4EB7-9DD7-0F2A1C4E9313}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{0FC36CEC-35B3-4EB7-9DD7-0F2A1C4E9313}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{E7BAECCC-CBF8-4975-93C4-6D3A8F94B000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E7BAECCC-CBF8-4975-93C4-6D3A8F94B000}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E7BAECCC-CBF8-4975-93C4-6D3A8F94B000}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E7BAECCC-CBF8-4975-93C4-6D3A8F94B000}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{823EB953-0B26-4D85-9B3F-14FCB476E987}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{823EB953-0B26-4D85-9B3F-14FCB476E987}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{823EB953-0B26-4D85-9B3F-14FCB476E987}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{823EB953-0B26-4D85-9B3F-14FCB476E987}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{83929B86-434B-4C24-9B02-1F944DF8D71C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{83929B86-434B-4C24-9B02-1F944DF8D71C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{83929B86-434B-4C24-9B02-1F944DF8D71C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{83929B86-434B-4C24-9B02-1F944DF8D71C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{EDE80D8C-4C1F-44A3-8D0E-6D0757439E1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{EDE80D8C-4C1F-44A3-8D0E-6D0757439E1C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{EDE80D8C-4C1F-44A3-8D0E-6D0757439E1C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{EDE80D8C-4C1F-44A3-8D0E-6D0757439E1C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{F958B682-5192-4287-BF80-CB7B30ECFC9E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{F958B682-5192-4287-BF80-CB7B30ECFC9E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F958B682-5192-4287-BF80-CB7B30ECFC9E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F958B682-5192-4287-BF80-CB7B30ECFC9E}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{F081EE15-7E1A-4E8C-B91F-5472ED565431}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{F081EE15-7E1A-4E8C-B91F-5472ED565431}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F081EE15-7E1A-4E8C-B91F-5472ED565431}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F081EE15-7E1A-4E8C-B91F-5472ED565431}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{1053BF2D-BCB6-4616-9773-7FF25F48ECA3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{1053BF2D-BCB6-4616-9773-7FF25F48ECA3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{1053BF2D-BCB6-4616-9773-7FF25F48ECA3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1053BF2D-BCB6-4616-9773-7FF25F48ECA3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{6837DB22-1F5C-42E1-A466-E4597AF6E91E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{6837DB22-1F5C-42E1-A466-E4597AF6E91E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{6837DB22-1F5C-42E1-A466-E4597AF6E91E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{6837DB22-1F5C-42E1-A466-E4597AF6E91E}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{A4DF29BD-95CC-4A86-96EC-FB6692270E68}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{A4DF29BD-95CC-4A86-96EC-FB6692270E68}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{A4DF29BD-95CC-4A86-96EC-FB6692270E68}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{A4DF29BD-95CC-4A86-96EC-FB6692270E68}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{FD2D1BD0-1229-4DCF-BE70-6BFD396DD489}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{FD2D1BD0-1229-4DCF-BE70-6BFD396DD489}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{FD2D1BD0-1229-4DCF-BE70-6BFD396DD489}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{FD2D1BD0-1229-4DCF-BE70-6BFD396DD489}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{EA3832C4-8079-4E84-AF8C-12744E4EFD44}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{EA3832C4-8079-4E84-AF8C-12744E4EFD44}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{EA3832C4-8079-4E84-AF8C-12744E4EFD44}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{EA3832C4-8079-4E84-AF8C-12744E4EFD44}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{AEA00027-F280-43A4-AC60-E2AF3014CF34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{AEA00027-F280-43A4-AC60-E2AF3014CF34}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{AEA00027-F280-43A4-AC60-E2AF3014CF34}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{AEA00027-F280-43A4-AC60-E2AF3014CF34}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{E0090EF3-C4A7-4262-9300-1D395BE25DD0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E0090EF3-C4A7-4262-9300-1D395BE25DD0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E0090EF3-C4A7-4262-9300-1D395BE25DD0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E0090EF3-C4A7-4262-9300-1D395BE25DD0}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{300EE2D5-54C5-46F2-AD03-BB43589EA074} = {35F44BE9-13D0-417C-A01A-F0787BEE6DC3}
|
||||
{3130C574-557C-4DA2-933E-AED7A9EBE48A} = {35F44BE9-13D0-417C-A01A-F0787BEE6DC3}
|
||||
{35F44BE9-13D0-417C-A01A-F0787BEE6DC3} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925}
|
||||
{B98B80CB-D3A3-437C-A61C-ED82C8C77B2F} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180}
|
||||
{1D63E1B4-2386-4BEC-9090-C3F3CBF25703} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180}
|
||||
{B43B546E-23F3-46E8-ACB7-D04F05CDA180} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925}
|
||||
{D20FCB88-9DCA-49EA-9CC2-5B94DD935D30} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180}
|
||||
{E4B71DC4-3E73-49C3-9B4E-CA13909F222D} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180}
|
||||
{C4939482-9447-47D1-B6AF-E9F8C6323841} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180}
|
||||
{5E5E1E84-DDBC-40D6-B891-0D563A15A44A} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925}
|
||||
{823F80B6-E241-43F7-83BD-29FBB58A77F9} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180}
|
||||
{79E85459-EF54-44D6-9508-1E68B8238D00} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180}
|
||||
{9C3C685E-3D7D-4638-A031-24F71CF74B52} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925}
|
||||
{6BB5EB72-AD9A-41ED-A6AA-0FF1093EA41B} = {35F44BE9-13D0-417C-A01A-F0787BEE6DC3}
|
||||
{18BE8F72-E528-4617-B1B1-07BD35337DFC} = {9C3C685E-3D7D-4638-A031-24F71CF74B52}
|
||||
{01DC21DD-C6E2-4B21-864E-97D29448F777} = {9C3C685E-3D7D-4638-A031-24F71CF74B52}
|
||||
{468E498C-59DB-4541-8D8A-0D89DE9083AB} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925}
|
||||
{FC54EDBA-71FB-4A87-8FD5-54759DF77CCE} = {468E498C-59DB-4541-8D8A-0D89DE9083AB}
|
||||
{0A3C36AB-2ACF-4175-A512-66B4C3DB9371} = {AB1AE008-6FD6-414C-8E88-D735F42E1FA6}
|
||||
{0A6747EA-7AC6-4B6F-BC0C-C40C8A80C44D} = {AB1AE008-6FD6-414C-8E88-D735F42E1FA6}
|
||||
{E7C689EB-5AD6-4E91-A007-6116EEA702FC} = {0A6747EA-7AC6-4B6F-BC0C-C40C8A80C44D}
|
||||
{7CD5C8D5-EC78-4A99-A514-F01CA7197AC8} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925}
|
||||
{E20238CE-5C64-4F87-8753-3B4E1EC9A740} = {7CD5C8D5-EC78-4A99-A514-F01CA7197AC8}
|
||||
{EBD49CCA-5400-4C36-B5DF-7B28190AA323} = {7CD5C8D5-EC78-4A99-A514-F01CA7197AC8}
|
||||
{150EF356-E8BC-4922-91C2-362017479409} = {7CD5C8D5-EC78-4A99-A514-F01CA7197AC8}
|
||||
{4CB34AB3-01C9-4911-8914-EABAA744EAD3} = {0A3C36AB-2ACF-4175-A512-66B4C3DB9371}
|
||||
{FC47A50F-03B2-47D8-AAFB-075314FBA186} = {AB1AE008-6FD6-414C-8E88-D735F42E1FA6}
|
||||
{BB5819C7-434A-4AC5-8B0E-6C4FA672EBD5} = {FC47A50F-03B2-47D8-AAFB-075314FBA186}
|
||||
{44E0B699-A140-4551-A0E9-9FD9F171A9C2} = {468E498C-59DB-4541-8D8A-0D89DE9083AB}
|
||||
{E43FB9E7-7851-4880-B7EE-12B8CEE628D0} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925}
|
||||
{2DA042D6-1E3C-4B15-B48E-BF45426C74E1} = {E43FB9E7-7851-4880-B7EE-12B8CEE628D0}
|
||||
{5583B236-794A-422C-B306-52BB7DFE7EBE} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925}
|
||||
{5837821B-CA71-40B6-A9F1-C25D318B4691} = {5583B236-794A-422C-B306-52BB7DFE7EBE}
|
||||
{25015984-7F81-454C-AC6E-E6DC810A59E2} = {5837821B-CA71-40B6-A9F1-C25D318B4691}
|
||||
{DC9B6EEA-E692-4AF7-9A5A-870FAC4B5EB2} = {5837821B-CA71-40B6-A9F1-C25D318B4691}
|
||||
{04FD384F-1B78-4D4C-9815-F9FBDA1B9245} = {5837821B-CA71-40B6-A9F1-C25D318B4691}
|
||||
{EDD20103-2089-48D7-A445-6FA8183CA376} = {5837821B-CA71-40B6-A9F1-C25D318B4691}
|
||||
{8DD4F1E8-8AC8-4AB4-AC08-9456AA6EAF10} = {5837821B-CA71-40B6-A9F1-C25D318B4691}
|
||||
{F7181887-E6B5-4DA9-9598-8E9E806B5A20} = {5837821B-CA71-40B6-A9F1-C25D318B4691}
|
||||
{115DEB38-679F-467E-8F87-9E669DFD2EB8} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180}
|
||||
{47EDFC14-BB99-44BF-A447-035D40D7347B} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925}
|
||||
{D3440E66-A871-4AB0-A1E0-8B3864ACA16A} = {47EDFC14-BB99-44BF-A447-035D40D7347B}
|
||||
{FC656D28-1AA3-462D-9B18-A10436E47C08} = {47EDFC14-BB99-44BF-A447-035D40D7347B}
|
||||
{DD607BC1-F9D9-4685-BC8F-A4056C2C31FA} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180}
|
||||
{E42743A0-FBDD-4150-9D53-6000496D9B87} = {5E5E1E84-DDBC-40D6-B891-0D563A15A44A}
|
||||
{FC9F520F-BA51-4AD2-BFEE-EF787798E734} = {5E5E1E84-DDBC-40D6-B891-0D563A15A44A}
|
||||
{22E75696-6FE9-436A-9097-EE21C603F818} = {5E5E1E84-DDBC-40D6-B891-0D563A15A44A}
|
||||
{2EC02600-8367-4B25-8243-CA4E53FA00FA} = {22E75696-6FE9-436A-9097-EE21C603F818}
|
||||
{3BDA353A-660E-47FA-95F5-4F6BB8E6B8AD} = {22E75696-6FE9-436A-9097-EE21C603F818}
|
||||
{AC6AA60A-393F-4D49-B3F1-44F567B18E22} = {22E75696-6FE9-436A-9097-EE21C603F818}
|
||||
{8BB1B34D-E0FC-4804-9098-E7F8E35A749A} = {22E75696-6FE9-436A-9097-EE21C603F818}
|
||||
{15FDEF59-32F8-4F8F-AE10-B3D0FEE03049} = {22E75696-6FE9-436A-9097-EE21C603F818}
|
||||
{795FF94C-F22C-45A3-9643-88EED173D6D4} = {22E75696-6FE9-436A-9097-EE21C603F818}
|
||||
{7EC9B4E1-820E-4D53-B4E2-9815E31C7AE8} = {FC9F520F-BA51-4AD2-BFEE-EF787798E734}
|
||||
{C6A54F89-271D-402E-A38D-6C3A9DB7DF9C} = {FC9F520F-BA51-4AD2-BFEE-EF787798E734}
|
||||
{F5124847-D046-4458-A89D-CD796FEDEE1A} = {FC9F520F-BA51-4AD2-BFEE-EF787798E734}
|
||||
{0B147307-64FF-4496-9DC9-8F83013AC045} = {FC9F520F-BA51-4AD2-BFEE-EF787798E734}
|
||||
{935888CF-E871-42BB-A47D-5E1168269A03} = {FC9F520F-BA51-4AD2-BFEE-EF787798E734}
|
||||
{EA1D7E39-D77D-4B13-BAD0-76BA30547019} = {FC9F520F-BA51-4AD2-BFEE-EF787798E734}
|
||||
{0FC36CEC-35B3-4EB7-9DD7-0F2A1C4E9313} = {FC9F520F-BA51-4AD2-BFEE-EF787798E734}
|
||||
{E7BAECCC-CBF8-4975-93C4-6D3A8F94B000} = {FC9F520F-BA51-4AD2-BFEE-EF787798E734}
|
||||
{823EB953-0B26-4D85-9B3F-14FCB476E987} = {FC9F520F-BA51-4AD2-BFEE-EF787798E734}
|
||||
{83929B86-434B-4C24-9B02-1F944DF8D71C} = {FC9F520F-BA51-4AD2-BFEE-EF787798E734}
|
||||
{EDE80D8C-4C1F-44A3-8D0E-6D0757439E1C} = {FC9F520F-BA51-4AD2-BFEE-EF787798E734}
|
||||
{F958B682-5192-4287-BF80-CB7B30ECFC9E} = {E42743A0-FBDD-4150-9D53-6000496D9B87}
|
||||
{F081EE15-7E1A-4E8C-B91F-5472ED565431} = {E42743A0-FBDD-4150-9D53-6000496D9B87}
|
||||
{1053BF2D-BCB6-4616-9773-7FF25F48ECA3} = {E42743A0-FBDD-4150-9D53-6000496D9B87}
|
||||
{6837DB22-1F5C-42E1-A466-E4597AF6E91E} = {E42743A0-FBDD-4150-9D53-6000496D9B87}
|
||||
{A4DF29BD-95CC-4A86-96EC-FB6692270E68} = {E42743A0-FBDD-4150-9D53-6000496D9B87}
|
||||
{FD2D1BD0-1229-4DCF-BE70-6BFD396DD489} = {E42743A0-FBDD-4150-9D53-6000496D9B87}
|
||||
{EA3832C4-8079-4E84-AF8C-12744E4EFD44} = {E42743A0-FBDD-4150-9D53-6000496D9B87}
|
||||
{AEA00027-F280-43A4-AC60-E2AF3014CF34} = {E42743A0-FBDD-4150-9D53-6000496D9B87}
|
||||
{E0090EF3-C4A7-4262-9300-1D395BE25DD0} = {22E75696-6FE9-436A-9097-EE21C603F818}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {8B0975FD-7050-48B0-88C5-48C33378E158}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.29509.3
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Core", "src\core\Elsa.Core\Elsa.Core.csproj", "{300EE2D5-54C5-46F2-AD03-BB43589EA074}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "solution", "solution", "{7165BB9E-F22C-40D2-B7B1-CA3EFA2529A0}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
.dockerignore = .dockerignore
|
||||
.editorconfig = .editorconfig
|
||||
.gitignore = .gitignore
|
||||
docker-compose.yaml = docker-compose.yaml
|
||||
Dockerfile = Dockerfile
|
||||
Nuget.Config = Nuget.Config
|
||||
README.md = README.md
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Abstractions", "src\core\Elsa.Abstractions\Elsa.Abstractions.csproj", "{3130C574-557C-4DA2-933E-AED7A9EBE48A}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "core", "core", "{35F44BE9-13D0-417C-A01A-F0787BEE6DC3}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Activities.Console", "src\activities\Elsa.Activities.Console\Elsa.Activities.Console.csproj", "{B98B80CB-D3A3-437C-A61C-ED82C8C77B2F}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Activities.Http", "src\activities\Elsa.Activities.Http\Elsa.Activities.Http.csproj", "{1D63E1B4-2386-4BEC-9090-C3F3CBF25703}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "activities", "activities", "{B43B546E-23F3-46E8-ACB7-D04F05CDA180}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Activities.Email", "src\activities\Elsa.Activities.Email\Elsa.Activities.Email.csproj", "{D20FCB88-9DCA-49EA-9CC2-5B94DD935D30}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Activities.Timers", "src\activities\Elsa.Activities.Timers\Elsa.Activities.Timers.csproj", "{E4B71DC4-3E73-49C3-9B4E-CA13909F222D}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Activities.MassTransit", "src\activities\Elsa.Activities.MassTransit\Elsa.Activities.MassTransit.csproj", "{C4939482-9447-47D1-B6AF-E9F8C6323841}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{5E5E1E84-DDBC-40D6-B891-0D563A15A44A}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Activities.UserTask", "src\activities\Elsa.Activities.UserTask\Elsa.Activities.UserTask.csproj", "{823F80B6-E241-43F7-83BD-29FBB58A77F9}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Activities.Dropbox", "src\activities\Elsa.Activities.Dropbox\Elsa.Activities.Dropbox.csproj", "{79E85459-EF54-44D6-9508-1E68B8238D00}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "scripting", "scripting", "{9C3C685E-3D7D-4638-A031-24F71CF74B52}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa", "src\core\Elsa\Elsa.csproj", "{6BB5EB72-AD9A-41ED-A6AA-0FF1093EA41B}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Scripting.JavaScript", "src\scripting\Elsa.Scripting.JavaScript\Elsa.Scripting.JavaScript.csproj", "{18BE8F72-E528-4617-B1B1-07BD35337DFC}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Scripting.Liquid", "src\scripting\Elsa.Scripting.Liquid\Elsa.Scripting.Liquid.csproj", "{01DC21DD-C6E2-4B21-864E-97D29448F777}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "server", "server", "{468E498C-59DB-4541-8D8A-0D89DE9083AB}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Server.Host", "src\server\Elsa.Server.Host\Elsa.Server.Host.csproj", "{FC54EDBA-71FB-4A87-8FD5-54759DF77CCE}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{AB1AE008-6FD6-414C-8E88-D735F42E1FA6}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "integration", "integration", "{0A3C36AB-2ACF-4175-A512-66B4C3DB9371}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "shared", "shared", "{0A6747EA-7AC6-4B6F-BC0C-C40C8A80C44D}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Testing.Shared", "test\shared\Elsa.Testing.Shared\Elsa.Testing.Shared.csproj", "{E7C689EB-5AD6-4E91-A007-6116EEA702FC}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.DistributedLocking.SqlServer", "src\providers\Elsa.DistributedLocking.SqlServer\Elsa.DistributedLocking.SqlServer.csproj", "{150EF356-E8BC-4922-91C2-362017479409}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.DistributedLocking.Redis", "src\providers\Elsa.DistributedLocking.Redis\Elsa.DistributedLocking.Redis.csproj", "{EBD49CCA-5400-4C36-B5DF-7B28190AA323}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.DistributedLocking.AzureBlob", "src\providers\Elsa.DistributedLocking.AzureBlob\Elsa.DistributedLocking.AzureBlob.csproj", "{E20238CE-5C64-4F87-8753-3B4E1EC9A740}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "locking", "locking", "{7CD5C8D5-EC78-4A99-A514-F01CA7197AC8}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Core.IntegrationTests", "test\integration\Elsa.Core.IntegrationTests\Elsa.Core.IntegrationTests.csproj", "{4CB34AB3-01C9-4911-8914-EABAA744EAD3}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "component", "component", "{FC47A50F-03B2-47D8-AAFB-075314FBA186}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.ComponentTests", "test\component\Elsa.ComponentTests\Elsa.ComponentTests.csproj", "{BB5819C7-434A-4AC5-8B0E-6C4FA672EBD5}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Server.Api", "src\server\Elsa.Server.Api\Elsa.Server.Api.csproj", "{44E0B699-A140-4551-A0E9-9FD9F171A9C2}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "clients", "clients", "{E43FB9E7-7851-4880-B7EE-12B8CEE628D0}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Client", "src\clients\Elsa.Client\Elsa.Client.csproj", "{2DA042D6-1E3C-4B15-B48E-BF45426C74E1}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "servicebus", "servicebus", "{47EDFC14-BB99-44BF-A447-035D40D7347B}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Rebus.AzureServiceBus", "src\servicebus\Elsa.Rebus.AzureServiceBus\Elsa.Rebus.AzureServiceBus.csproj", "{D3440E66-A871-4AB0-A1E0-8B3864ACA16A}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Rebus.RabbitMq", "src\servicebus\Elsa.Rebus.RabbitMq\Elsa.Rebus.RabbitMq.csproj", "{FC656D28-1AA3-462D-9B18-A10436E47C08}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Activities.AzureServiceBus", "src\activities\Elsa.Activities.AzureServiceBus\Elsa.Activities.AzureServiceBus.csproj", "{DD607BC1-F9D9-4685-BC8F-A4056C2C31FA}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "persistence", "persistence", "{5619F343-A270-4E31-9C52-7C85A4DD6D71}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Persistence.InMemory", "src\persistence\Elsa.Persistence.InMemory\Elsa.Persistence.InMemory.csproj", "{BA9EE5A2-632F-4489-B59D-C7283960BCCA}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Persistence.YesSql", "src\persistence\Elsa.Persistence.YesSql\Elsa.Persistence.YesSql.csproj", "{7E14324E-7AD3-4498-AECE-C7B80FB691BC}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Persistence.MongoDb", "src\persistence\Elsa.Persistence.MongoDb\Elsa.Persistence.MongoDb.csproj", "{09718131-4D0E-4EF3-B3FB-116EBE1D8702}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "worker", "worker", "{E42743A0-FBDD-4150-9D53-6000496D9B87}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "console", "console", "{FC9F520F-BA51-4AD2-BFEE-EF787798E734}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "aspnet", "aspnet", "{22E75696-6FE9-436A-9097-EE21C603F818}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ContextualWorkflowHttp", "src\samples\aspnet\Elsa.Samples.ContextualWorkflowHttp\Elsa.Samples.ContextualWorkflowHttp.csproj", "{2EC02600-8367-4B25-8243-CA4E53FA00FA}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.CorrelationHttp", "src\samples\aspnet\Elsa.Samples.CorrelationHttp\Elsa.Samples.CorrelationHttp.csproj", "{3BDA353A-660E-47FA-95F5-4F6BB8E6B8AD}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.CustomActivities", "src\samples\aspnet\Elsa.Samples.CustomActivities\Elsa.Samples.CustomActivities.csproj", "{AC6AA60A-393F-4D49-B3F1-44F567B18E22}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ForkJoinTimerAndSignalHttp", "src\samples\aspnet\Elsa.Samples.ForkJoinTimerAndSignalHttp\Elsa.Samples.ForkJoinTimerAndSignalHttp.csproj", "{8BB1B34D-E0FC-4804-9098-E7F8E35A749A}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.HelloWorldHttp", "src\samples\aspnet\Elsa.Samples.HelloWorldHttp\Elsa.Samples.HelloWorldHttp.csproj", "{15FDEF59-32F8-4F8F-AE10-B3D0FEE03049}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ReadModelHttp", "src\samples\aspnet\Elsa.Samples.ReadModelHttp\Elsa.Samples.ReadModelHttp.csproj", "{795FF94C-F22C-45A3-9643-88EED173D6D4}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.DeclarativeCompositeActivitiesConsole", "src\samples\console\Elsa.Samples.DeclarativeCompositeActivitiesConsole\Elsa.Samples.DeclarativeCompositeActivitiesConsole.csproj", "{7EC9B4E1-820E-4D53-B4E2-9815E31C7AE8}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.FileBasedWorkflow", "src\samples\console\Elsa.Samples.FileBasedWorkflow\Elsa.Samples.FileBasedWorkflow.csproj", "{C6A54F89-271D-402E-A38D-6C3A9DB7DF9C}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ForLoopConsole", "src\samples\console\Elsa.Samples.ForLoopConsole\Elsa.Samples.ForLoopConsole.csproj", "{F5124847-D046-4458-A89D-CD796FEDEE1A}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.GoBackConsole", "src\samples\console\Elsa.Samples.GoBackConsole\Elsa.Samples.GoBackConsole.csproj", "{0B147307-64FF-4496-9DC9-8F83013AC045}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.HelloWorldConsole", "src\samples\console\Elsa.Samples.HelloWorldConsole\Elsa.Samples.HelloWorldConsole.csproj", "{935888CF-E871-42BB-A47D-5E1168269A03}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.IfElseConsole", "src\samples\console\Elsa.Samples.IfElseConsole\Elsa.Samples.IfElseConsole.csproj", "{EA1D7E39-D77D-4B13-BAD0-76BA30547019}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ProgrammaticCompositeActivitiesConsole", "src\samples\console\Elsa.Samples.ProgrammaticCompositeActivitiesConsole\Elsa.Samples.ProgrammaticCompositeActivitiesConsole.csproj", "{0FC36CEC-35B3-4EB7-9DD7-0F2A1C4E9313}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ReadLineEchoConsole", "src\samples\console\Elsa.Samples.ReadLineEchoConsole\Elsa.Samples.ReadLineEchoConsole.csproj", "{E7BAECCC-CBF8-4975-93C4-6D3A8F94B000}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.Serialization", "src\samples\console\Elsa.Samples.Serialization\Elsa.Samples.Serialization.csproj", "{823EB953-0B26-4D85-9B3F-14FCB476E987}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.SignalingConsole", "src\samples\console\Elsa.Samples.SignalingConsole\Elsa.Samples.SignalingConsole.csproj", "{83929B86-434B-4C24-9B02-1F944DF8D71C}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.WhileLoopConsole", "src\samples\console\Elsa.Samples.WhileLoopConsole\Elsa.Samples.WhileLoopConsole.csproj", "{EDE80D8C-4C1F-44A3-8D0E-6D0757439E1C}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AzureServiceBusWorker", "src\samples\worker\Elsa.Samples.AzureServiceBusWorker\Elsa.Samples.AzureServiceBusWorker.csproj", "{F958B682-5192-4287-BF80-CB7B30ECFC9E}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.DistributedLock", "src\samples\worker\Elsa.Samples.DistributedLock\Elsa.Samples.DistributedLock.csproj", "{F081EE15-7E1A-4E8C-B91F-5472ED565431}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.MultiTenantChildWorker", "src\samples\worker\Elsa.Samples.MultiTenantChildWorker\Elsa.Samples.MultiTenantChildWorker.csproj", "{1053BF2D-BCB6-4616-9773-7FF25F48ECA3}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.RebusWorker", "src\samples\worker\Elsa.Samples.RebusWorker\Elsa.Samples.RebusWorker.csproj", "{6837DB22-1F5C-42E1-A466-E4597AF6E91E}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.RunChildWorkflowWorker", "src\samples\worker\Elsa.Samples.RunChildWorkflowWorker\Elsa.Samples.RunChildWorkflowWorker.csproj", "{A4DF29BD-95CC-4A86-96EC-FB6692270E68}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.Timers", "src\samples\worker\Elsa.Samples.Timers\Elsa.Samples.Timers.csproj", "{FD2D1BD0-1229-4DCF-BE70-6BFD396DD489}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.WhileLoopWorker", "src\samples\worker\Elsa.Samples.WhileLoopWorker\Elsa.Samples.WhileLoopWorker.csproj", "{EA3832C4-8079-4E84-AF8C-12744E4EFD44}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.CustomAttributesChildWorker", "src\samples\worker\Elsa.Samples.CustomAttributesChildWorker\Elsa.Samples.CustomAttributesChildWorker.csproj", "{AEA00027-F280-43A4-AC60-E2AF3014CF34}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.Interrupts", "src\samples\aspnet\Elsa.Samples.Interrupts\Elsa.Samples.Interrupts.csproj", "{E0090EF3-C4A7-4262-9300-1D395BE25DD0}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{300EE2D5-54C5-46F2-AD03-BB43589EA074}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{300EE2D5-54C5-46F2-AD03-BB43589EA074}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{300EE2D5-54C5-46F2-AD03-BB43589EA074}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{300EE2D5-54C5-46F2-AD03-BB43589EA074}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3130C574-557C-4DA2-933E-AED7A9EBE48A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3130C574-557C-4DA2-933E-AED7A9EBE48A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3130C574-557C-4DA2-933E-AED7A9EBE48A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3130C574-557C-4DA2-933E-AED7A9EBE48A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{B98B80CB-D3A3-437C-A61C-ED82C8C77B2F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B98B80CB-D3A3-437C-A61C-ED82C8C77B2F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B98B80CB-D3A3-437C-A61C-ED82C8C77B2F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B98B80CB-D3A3-437C-A61C-ED82C8C77B2F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{1D63E1B4-2386-4BEC-9090-C3F3CBF25703}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{1D63E1B4-2386-4BEC-9090-C3F3CBF25703}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{1D63E1B4-2386-4BEC-9090-C3F3CBF25703}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1D63E1B4-2386-4BEC-9090-C3F3CBF25703}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{D20FCB88-9DCA-49EA-9CC2-5B94DD935D30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D20FCB88-9DCA-49EA-9CC2-5B94DD935D30}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D20FCB88-9DCA-49EA-9CC2-5B94DD935D30}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D20FCB88-9DCA-49EA-9CC2-5B94DD935D30}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{E4B71DC4-3E73-49C3-9B4E-CA13909F222D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E4B71DC4-3E73-49C3-9B4E-CA13909F222D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E4B71DC4-3E73-49C3-9B4E-CA13909F222D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E4B71DC4-3E73-49C3-9B4E-CA13909F222D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{C4939482-9447-47D1-B6AF-E9F8C6323841}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C4939482-9447-47D1-B6AF-E9F8C6323841}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C4939482-9447-47D1-B6AF-E9F8C6323841}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C4939482-9447-47D1-B6AF-E9F8C6323841}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{823F80B6-E241-43F7-83BD-29FBB58A77F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{823F80B6-E241-43F7-83BD-29FBB58A77F9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{823F80B6-E241-43F7-83BD-29FBB58A77F9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{823F80B6-E241-43F7-83BD-29FBB58A77F9}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{79E85459-EF54-44D6-9508-1E68B8238D00}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{79E85459-EF54-44D6-9508-1E68B8238D00}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{79E85459-EF54-44D6-9508-1E68B8238D00}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{79E85459-EF54-44D6-9508-1E68B8238D00}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{6BB5EB72-AD9A-41ED-A6AA-0FF1093EA41B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{6BB5EB72-AD9A-41ED-A6AA-0FF1093EA41B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{6BB5EB72-AD9A-41ED-A6AA-0FF1093EA41B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{6BB5EB72-AD9A-41ED-A6AA-0FF1093EA41B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{18BE8F72-E528-4617-B1B1-07BD35337DFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{18BE8F72-E528-4617-B1B1-07BD35337DFC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{18BE8F72-E528-4617-B1B1-07BD35337DFC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{18BE8F72-E528-4617-B1B1-07BD35337DFC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{01DC21DD-C6E2-4B21-864E-97D29448F777}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{01DC21DD-C6E2-4B21-864E-97D29448F777}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{01DC21DD-C6E2-4B21-864E-97D29448F777}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{01DC21DD-C6E2-4B21-864E-97D29448F777}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{FC54EDBA-71FB-4A87-8FD5-54759DF77CCE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{FC54EDBA-71FB-4A87-8FD5-54759DF77CCE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{FC54EDBA-71FB-4A87-8FD5-54759DF77CCE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{FC54EDBA-71FB-4A87-8FD5-54759DF77CCE}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{E7C689EB-5AD6-4E91-A007-6116EEA702FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E7C689EB-5AD6-4E91-A007-6116EEA702FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E7C689EB-5AD6-4E91-A007-6116EEA702FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E7C689EB-5AD6-4E91-A007-6116EEA702FC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{150EF356-E8BC-4922-91C2-362017479409}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{150EF356-E8BC-4922-91C2-362017479409}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{150EF356-E8BC-4922-91C2-362017479409}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{150EF356-E8BC-4922-91C2-362017479409}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{EBD49CCA-5400-4C36-B5DF-7B28190AA323}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{EBD49CCA-5400-4C36-B5DF-7B28190AA323}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{EBD49CCA-5400-4C36-B5DF-7B28190AA323}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{EBD49CCA-5400-4C36-B5DF-7B28190AA323}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{E20238CE-5C64-4F87-8753-3B4E1EC9A740}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E20238CE-5C64-4F87-8753-3B4E1EC9A740}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E20238CE-5C64-4F87-8753-3B4E1EC9A740}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E20238CE-5C64-4F87-8753-3B4E1EC9A740}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{4CB34AB3-01C9-4911-8914-EABAA744EAD3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{4CB34AB3-01C9-4911-8914-EABAA744EAD3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{4CB34AB3-01C9-4911-8914-EABAA744EAD3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{4CB34AB3-01C9-4911-8914-EABAA744EAD3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{BB5819C7-434A-4AC5-8B0E-6C4FA672EBD5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BB5819C7-434A-4AC5-8B0E-6C4FA672EBD5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BB5819C7-434A-4AC5-8B0E-6C4FA672EBD5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{BB5819C7-434A-4AC5-8B0E-6C4FA672EBD5}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{44E0B699-A140-4551-A0E9-9FD9F171A9C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{44E0B699-A140-4551-A0E9-9FD9F171A9C2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{44E0B699-A140-4551-A0E9-9FD9F171A9C2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{44E0B699-A140-4551-A0E9-9FD9F171A9C2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{2DA042D6-1E3C-4B15-B48E-BF45426C74E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{2DA042D6-1E3C-4B15-B48E-BF45426C74E1}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{2DA042D6-1E3C-4B15-B48E-BF45426C74E1}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{2DA042D6-1E3C-4B15-B48E-BF45426C74E1}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{25015984-7F81-454C-AC6E-E6DC810A59E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{25015984-7F81-454C-AC6E-E6DC810A59E2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{25015984-7F81-454C-AC6E-E6DC810A59E2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{25015984-7F81-454C-AC6E-E6DC810A59E2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{DC9B6EEA-E692-4AF7-9A5A-870FAC4B5EB2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{DC9B6EEA-E692-4AF7-9A5A-870FAC4B5EB2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{DC9B6EEA-E692-4AF7-9A5A-870FAC4B5EB2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{DC9B6EEA-E692-4AF7-9A5A-870FAC4B5EB2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{04FD384F-1B78-4D4C-9815-F9FBDA1B9245}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{04FD384F-1B78-4D4C-9815-F9FBDA1B9245}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{04FD384F-1B78-4D4C-9815-F9FBDA1B9245}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{04FD384F-1B78-4D4C-9815-F9FBDA1B9245}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{EDD20103-2089-48D7-A445-6FA8183CA376}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{EDD20103-2089-48D7-A445-6FA8183CA376}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{EDD20103-2089-48D7-A445-6FA8183CA376}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{EDD20103-2089-48D7-A445-6FA8183CA376}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{8DD4F1E8-8AC8-4AB4-AC08-9456AA6EAF10}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{8DD4F1E8-8AC8-4AB4-AC08-9456AA6EAF10}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{8DD4F1E8-8AC8-4AB4-AC08-9456AA6EAF10}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{8DD4F1E8-8AC8-4AB4-AC08-9456AA6EAF10}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{F7181887-E6B5-4DA9-9598-8E9E806B5A20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{F7181887-E6B5-4DA9-9598-8E9E806B5A20}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F7181887-E6B5-4DA9-9598-8E9E806B5A20}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F7181887-E6B5-4DA9-9598-8E9E806B5A20}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{115DEB38-679F-467E-8F87-9E669DFD2EB8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{115DEB38-679F-467E-8F87-9E669DFD2EB8}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{115DEB38-679F-467E-8F87-9E669DFD2EB8}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{115DEB38-679F-467E-8F87-9E669DFD2EB8}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{D3440E66-A871-4AB0-A1E0-8B3864ACA16A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D3440E66-A871-4AB0-A1E0-8B3864ACA16A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D3440E66-A871-4AB0-A1E0-8B3864ACA16A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D3440E66-A871-4AB0-A1E0-8B3864ACA16A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{FC656D28-1AA3-462D-9B18-A10436E47C08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{FC656D28-1AA3-462D-9B18-A10436E47C08}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{FC656D28-1AA3-462D-9B18-A10436E47C08}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{FC656D28-1AA3-462D-9B18-A10436E47C08}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{DD607BC1-F9D9-4685-BC8F-A4056C2C31FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{DD607BC1-F9D9-4685-BC8F-A4056C2C31FA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{DD607BC1-F9D9-4685-BC8F-A4056C2C31FA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{DD607BC1-F9D9-4685-BC8F-A4056C2C31FA}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{BA9EE5A2-632F-4489-B59D-C7283960BCCA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BA9EE5A2-632F-4489-B59D-C7283960BCCA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BA9EE5A2-632F-4489-B59D-C7283960BCCA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{BA9EE5A2-632F-4489-B59D-C7283960BCCA}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{7E14324E-7AD3-4498-AECE-C7B80FB691BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7E14324E-7AD3-4498-AECE-C7B80FB691BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7E14324E-7AD3-4498-AECE-C7B80FB691BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7E14324E-7AD3-4498-AECE-C7B80FB691BC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{09718131-4D0E-4EF3-B3FB-116EBE1D8702}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{09718131-4D0E-4EF3-B3FB-116EBE1D8702}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{09718131-4D0E-4EF3-B3FB-116EBE1D8702}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{09718131-4D0E-4EF3-B3FB-116EBE1D8702}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{300EE2D5-54C5-46F2-AD03-BB43589EA074} = {35F44BE9-13D0-417C-A01A-F0787BEE6DC3}
|
||||
{3130C574-557C-4DA2-933E-AED7A9EBE48A} = {35F44BE9-13D0-417C-A01A-F0787BEE6DC3}
|
||||
{35F44BE9-13D0-417C-A01A-F0787BEE6DC3} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925}
|
||||
{B98B80CB-D3A3-437C-A61C-ED82C8C77B2F} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180}
|
||||
{1D63E1B4-2386-4BEC-9090-C3F3CBF25703} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180}
|
||||
{B43B546E-23F3-46E8-ACB7-D04F05CDA180} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925}
|
||||
{D20FCB88-9DCA-49EA-9CC2-5B94DD935D30} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180}
|
||||
{E4B71DC4-3E73-49C3-9B4E-CA13909F222D} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180}
|
||||
{C4939482-9447-47D1-B6AF-E9F8C6323841} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180}
|
||||
{5E5E1E84-DDBC-40D6-B891-0D563A15A44A} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925}
|
||||
{823F80B6-E241-43F7-83BD-29FBB58A77F9} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180}
|
||||
{79E85459-EF54-44D6-9508-1E68B8238D00} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180}
|
||||
{9C3C685E-3D7D-4638-A031-24F71CF74B52} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925}
|
||||
{6BB5EB72-AD9A-41ED-A6AA-0FF1093EA41B} = {35F44BE9-13D0-417C-A01A-F0787BEE6DC3}
|
||||
{18BE8F72-E528-4617-B1B1-07BD35337DFC} = {9C3C685E-3D7D-4638-A031-24F71CF74B52}
|
||||
{01DC21DD-C6E2-4B21-864E-97D29448F777} = {9C3C685E-3D7D-4638-A031-24F71CF74B52}
|
||||
{468E498C-59DB-4541-8D8A-0D89DE9083AB} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925}
|
||||
{FC54EDBA-71FB-4A87-8FD5-54759DF77CCE} = {468E498C-59DB-4541-8D8A-0D89DE9083AB}
|
||||
{0A3C36AB-2ACF-4175-A512-66B4C3DB9371} = {AB1AE008-6FD6-414C-8E88-D735F42E1FA6}
|
||||
{0A6747EA-7AC6-4B6F-BC0C-C40C8A80C44D} = {AB1AE008-6FD6-414C-8E88-D735F42E1FA6}
|
||||
{E7C689EB-5AD6-4E91-A007-6116EEA702FC} = {0A6747EA-7AC6-4B6F-BC0C-C40C8A80C44D}
|
||||
{150EF356-E8BC-4922-91C2-362017479409} = {7CD5C8D5-EC78-4A99-A514-F01CA7197AC8}
|
||||
{EBD49CCA-5400-4C36-B5DF-7B28190AA323} = {7CD5C8D5-EC78-4A99-A514-F01CA7197AC8}
|
||||
{E20238CE-5C64-4F87-8753-3B4E1EC9A740} = {7CD5C8D5-EC78-4A99-A514-F01CA7197AC8}
|
||||
{7CD5C8D5-EC78-4A99-A514-F01CA7197AC8} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925}
|
||||
{4CB34AB3-01C9-4911-8914-EABAA744EAD3} = {0A3C36AB-2ACF-4175-A512-66B4C3DB9371}
|
||||
{FC47A50F-03B2-47D8-AAFB-075314FBA186} = {AB1AE008-6FD6-414C-8E88-D735F42E1FA6}
|
||||
{BB5819C7-434A-4AC5-8B0E-6C4FA672EBD5} = {FC47A50F-03B2-47D8-AAFB-075314FBA186}
|
||||
{44E0B699-A140-4551-A0E9-9FD9F171A9C2} = {468E498C-59DB-4541-8D8A-0D89DE9083AB}
|
||||
{E43FB9E7-7851-4880-B7EE-12B8CEE628D0} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925}
|
||||
{2DA042D6-1E3C-4B15-B48E-BF45426C74E1} = {E43FB9E7-7851-4880-B7EE-12B8CEE628D0}
|
||||
{5583B236-794A-422C-B306-52BB7DFE7EBE} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925}
|
||||
{5837821B-CA71-40B6-A9F1-C25D318B4691} = {5583B236-794A-422C-B306-52BB7DFE7EBE}
|
||||
{25015984-7F81-454C-AC6E-E6DC810A59E2} = {5837821B-CA71-40B6-A9F1-C25D318B4691}
|
||||
{DC9B6EEA-E692-4AF7-9A5A-870FAC4B5EB2} = {5837821B-CA71-40B6-A9F1-C25D318B4691}
|
||||
{04FD384F-1B78-4D4C-9815-F9FBDA1B9245} = {5837821B-CA71-40B6-A9F1-C25D318B4691}
|
||||
{EDD20103-2089-48D7-A445-6FA8183CA376} = {5837821B-CA71-40B6-A9F1-C25D318B4691}
|
||||
{8DD4F1E8-8AC8-4AB4-AC08-9456AA6EAF10} = {5837821B-CA71-40B6-A9F1-C25D318B4691}
|
||||
{F7181887-E6B5-4DA9-9598-8E9E806B5A20} = {5837821B-CA71-40B6-A9F1-C25D318B4691}
|
||||
{115DEB38-679F-467E-8F87-9E669DFD2EB8} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180}
|
||||
{47EDFC14-BB99-44BF-A447-035D40D7347B} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925}
|
||||
{D3440E66-A871-4AB0-A1E0-8B3864ACA16A} = {47EDFC14-BB99-44BF-A447-035D40D7347B}
|
||||
{FC656D28-1AA3-462D-9B18-A10436E47C08} = {47EDFC14-BB99-44BF-A447-035D40D7347B}
|
||||
{DD607BC1-F9D9-4685-BC8F-A4056C2C31FA} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180}
|
||||
{E42743A0-FBDD-4150-9D53-6000496D9B87} = {5E5E1E84-DDBC-40D6-B891-0D563A15A44A}
|
||||
{FC9F520F-BA51-4AD2-BFEE-EF787798E734} = {5E5E1E84-DDBC-40D6-B891-0D563A15A44A}
|
||||
{22E75696-6FE9-436A-9097-EE21C603F818} = {5E5E1E84-DDBC-40D6-B891-0D563A15A44A}
|
||||
{2EC02600-8367-4B25-8243-CA4E53FA00FA} = {22E75696-6FE9-436A-9097-EE21C603F818}
|
||||
{3BDA353A-660E-47FA-95F5-4F6BB8E6B8AD} = {22E75696-6FE9-436A-9097-EE21C603F818}
|
||||
{AC6AA60A-393F-4D49-B3F1-44F567B18E22} = {22E75696-6FE9-436A-9097-EE21C603F818}
|
||||
{8BB1B34D-E0FC-4804-9098-E7F8E35A749A} = {22E75696-6FE9-436A-9097-EE21C603F818}
|
||||
{15FDEF59-32F8-4F8F-AE10-B3D0FEE03049} = {22E75696-6FE9-436A-9097-EE21C603F818}
|
||||
{795FF94C-F22C-45A3-9643-88EED173D6D4} = {22E75696-6FE9-436A-9097-EE21C603F818}
|
||||
{7EC9B4E1-820E-4D53-B4E2-9815E31C7AE8} = {FC9F520F-BA51-4AD2-BFEE-EF787798E734}
|
||||
{C6A54F89-271D-402E-A38D-6C3A9DB7DF9C} = {FC9F520F-BA51-4AD2-BFEE-EF787798E734}
|
||||
{F5124847-D046-4458-A89D-CD796FEDEE1A} = {FC9F520F-BA51-4AD2-BFEE-EF787798E734}
|
||||
{0B147307-64FF-4496-9DC9-8F83013AC045} = {FC9F520F-BA51-4AD2-BFEE-EF787798E734}
|
||||
{935888CF-E871-42BB-A47D-5E1168269A03} = {FC9F520F-BA51-4AD2-BFEE-EF787798E734}
|
||||
{EA1D7E39-D77D-4B13-BAD0-76BA30547019} = {FC9F520F-BA51-4AD2-BFEE-EF787798E734}
|
||||
{0FC36CEC-35B3-4EB7-9DD7-0F2A1C4E9313} = {FC9F520F-BA51-4AD2-BFEE-EF787798E734}
|
||||
{E7BAECCC-CBF8-4975-93C4-6D3A8F94B000} = {FC9F520F-BA51-4AD2-BFEE-EF787798E734}
|
||||
{823EB953-0B26-4D85-9B3F-14FCB476E987} = {FC9F520F-BA51-4AD2-BFEE-EF787798E734}
|
||||
{83929B86-434B-4C24-9B02-1F944DF8D71C} = {FC9F520F-BA51-4AD2-BFEE-EF787798E734}
|
||||
{EDE80D8C-4C1F-44A3-8D0E-6D0757439E1C} = {FC9F520F-BA51-4AD2-BFEE-EF787798E734}
|
||||
{F958B682-5192-4287-BF80-CB7B30ECFC9E} = {E42743A0-FBDD-4150-9D53-6000496D9B87}
|
||||
{F081EE15-7E1A-4E8C-B91F-5472ED565431} = {E42743A0-FBDD-4150-9D53-6000496D9B87}
|
||||
{1053BF2D-BCB6-4616-9773-7FF25F48ECA3} = {E42743A0-FBDD-4150-9D53-6000496D9B87}
|
||||
{6837DB22-1F5C-42E1-A466-E4597AF6E91E} = {E42743A0-FBDD-4150-9D53-6000496D9B87}
|
||||
{A4DF29BD-95CC-4A86-96EC-FB6692270E68} = {E42743A0-FBDD-4150-9D53-6000496D9B87}
|
||||
{FD2D1BD0-1229-4DCF-BE70-6BFD396DD489} = {E42743A0-FBDD-4150-9D53-6000496D9B87}
|
||||
{EA3832C4-8079-4E84-AF8C-12744E4EFD44} = {E42743A0-FBDD-4150-9D53-6000496D9B87}
|
||||
{AEA00027-F280-43A4-AC60-E2AF3014CF34} = {E42743A0-FBDD-4150-9D53-6000496D9B87}
|
||||
{E0090EF3-C4A7-4262-9300-1D395BE25DD0} = {22E75696-6FE9-436A-9097-EE21C603F818}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {8B0975FD-7050-48B0-88C5-48C33378E158}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
|
|
|||
|
|
@ -118,7 +118,13 @@ This models is then serialized to JSON and deserialized back into the model
|
|||
```csharp
|
||||
// Create a service container with Elsa services.
|
||||
var services = new ServiceCollection()
|
||||
.AddElsa(option => option.UsePersistence(db => db.UseSqLite("Data Source=elsa.db;Cache=Shared", IsolationLevel.ReadUncommitted)))
|
||||
.AddElsa()
|
||||
|
||||
// For tests
|
||||
.AddElsaPersistenceInMemory()
|
||||
// For productive use
|
||||
.AddElsaPersistenceYesSql((sp, config) => config.UseSqLite("Data Source=elsa.db;Cache=Shared", IsolationLevel.ReadUncommitted))
|
||||
|
||||
.AddConsoleActivities()
|
||||
.BuildServiceProvider();
|
||||
|
||||
|
|
|
|||
113
Samples.sln
113
Samples.sln
|
|
@ -64,47 +64,47 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.DistributedLocking.Sql
|
|||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.DistributedLocking.Redis", "src\providers\Elsa.DistributedLocking.Redis\Elsa.DistributedLocking.Redis.csproj", "{EBD49CCA-5400-4C36-B5DF-7B28190AA323}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.DistributedLocking.AzureBlob", "src\providers\Elsa.DistributedLocking.AzureBlob\Elsa.DistributedLocking.AzureBlob.csproj", "{E20238CE-5C64-4F87-8753-3B4E1EC9A740}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.DistributedLocking.AzureBlob", "src\providers\Elsa.DistributedLocking.AzureBlob\Elsa.DistributedLocking.AzureBlob.csproj", "{E20238CE-5C64-4F87-8753-3B4E1EC9A740}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "locking", "locking", "{7CD5C8D5-EC78-4A99-A514-F01CA7197AC8}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Core.IntegrationTests", "test\integration\Elsa.Core.IntegrationTests\Elsa.Core.IntegrationTests.csproj", "{4CB34AB3-01C9-4911-8914-EABAA744EAD3}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Core.IntegrationTests", "test\integration\Elsa.Core.IntegrationTests\Elsa.Core.IntegrationTests.csproj", "{4CB34AB3-01C9-4911-8914-EABAA744EAD3}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "component", "component", "{FC47A50F-03B2-47D8-AAFB-075314FBA186}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.ComponentTests", "test\component\Elsa.ComponentTests\Elsa.ComponentTests.csproj", "{BB5819C7-434A-4AC5-8B0E-6C4FA672EBD5}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.ComponentTests", "test\component\Elsa.ComponentTests\Elsa.ComponentTests.csproj", "{BB5819C7-434A-4AC5-8B0E-6C4FA672EBD5}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Server.Api", "src\server\Elsa.Server.Api\Elsa.Server.Api.csproj", "{44E0B699-A140-4551-A0E9-9FD9F171A9C2}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Server.Api", "src\server\Elsa.Server.Api\Elsa.Server.Api.csproj", "{44E0B699-A140-4551-A0E9-9FD9F171A9C2}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "clients", "clients", "{E43FB9E7-7851-4880-B7EE-12B8CEE628D0}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Client", "src\clients\Elsa.Client\Elsa.Client.csproj", "{2DA042D6-1E3C-4B15-B48E-BF45426C74E1}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Client", "src\clients\Elsa.Client\Elsa.Client.csproj", "{2DA042D6-1E3C-4B15-B48E-BF45426C74E1}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dashboards", "dashboards", "{5583B236-794A-422C-B306-52BB7DFE7EBE}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "blazor", "blazor", "{5837821B-CA71-40B6-A9F1-C25D318B4691}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElsaDashboard.Backend", "src\dashboards\blazor\ElsaDashboard.Backend\ElsaDashboard.Backend.csproj", "{25015984-7F81-454C-AC6E-E6DC810A59E2}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ElsaDashboard.Backend", "src\dashboards\blazor\ElsaDashboard.Backend\ElsaDashboard.Backend.csproj", "{25015984-7F81-454C-AC6E-E6DC810A59E2}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElsaDashboard.Shared", "src\dashboards\blazor\ElsaDashboard.Shared\ElsaDashboard.Shared.csproj", "{DC9B6EEA-E692-4AF7-9A5A-870FAC4B5EB2}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ElsaDashboard.Shared", "src\dashboards\blazor\ElsaDashboard.Shared\ElsaDashboard.Shared.csproj", "{DC9B6EEA-E692-4AF7-9A5A-870FAC4B5EB2}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElsaDashboard.WebAssembly", "src\dashboards\blazor\ElsaDashboard.WebAssembly\ElsaDashboard.WebAssembly.csproj", "{04FD384F-1B78-4D4C-9815-F9FBDA1B9245}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ElsaDashboard.WebAssembly", "src\dashboards\blazor\ElsaDashboard.WebAssembly\ElsaDashboard.WebAssembly.csproj", "{04FD384F-1B78-4D4C-9815-F9FBDA1B9245}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElsaDashboard.Application", "src\dashboards\blazor\ElsaDashboard.Application\ElsaDashboard.Application.csproj", "{EDD20103-2089-48D7-A445-6FA8183CA376}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ElsaDashboard.Application", "src\dashboards\blazor\ElsaDashboard.Application\ElsaDashboard.Application.csproj", "{EDD20103-2089-48D7-A445-6FA8183CA376}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElsaDashboard.Application.Server", "src\dashboards\blazor\ElsaDashboard.Application.Server\ElsaDashboard.Application.Server.csproj", "{8DD4F1E8-8AC8-4AB4-AC08-9456AA6EAF10}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ElsaDashboard.Application.Server", "src\dashboards\blazor\ElsaDashboard.Application.Server\ElsaDashboard.Application.Server.csproj", "{8DD4F1E8-8AC8-4AB4-AC08-9456AA6EAF10}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElsaDashboard.Application.WebAssembly", "src\dashboards\blazor\ElsaDashboard.Application.WebAssembly\ElsaDashboard.Application.WebAssembly.csproj", "{F7181887-E6B5-4DA9-9598-8E9E806B5A20}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ElsaDashboard.Application.WebAssembly", "src\dashboards\blazor\ElsaDashboard.Application.WebAssembly\ElsaDashboard.Application.WebAssembly.csproj", "{F7181887-E6B5-4DA9-9598-8E9E806B5A20}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Activities.Rebus", "src\activities\Elsa.Activities.Rebus\Elsa.Activities.Rebus.csproj", "{115DEB38-679F-467E-8F87-9E669DFD2EB8}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Activities.Rebus", "src\activities\Elsa.Activities.Rebus\Elsa.Activities.Rebus.csproj", "{115DEB38-679F-467E-8F87-9E669DFD2EB8}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "servicebus", "servicebus", "{47EDFC14-BB99-44BF-A447-035D40D7347B}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Rebus.AzureServiceBus", "src\servicebus\Elsa.Rebus.AzureServiceBus\Elsa.Rebus.AzureServiceBus.csproj", "{D3440E66-A871-4AB0-A1E0-8B3864ACA16A}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Rebus.AzureServiceBus", "src\servicebus\Elsa.Rebus.AzureServiceBus\Elsa.Rebus.AzureServiceBus.csproj", "{D3440E66-A871-4AB0-A1E0-8B3864ACA16A}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Rebus.RabbitMq", "src\servicebus\Elsa.Rebus.RabbitMq\Elsa.Rebus.RabbitMq.csproj", "{FC656D28-1AA3-462D-9B18-A10436E47C08}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Rebus.RabbitMq", "src\servicebus\Elsa.Rebus.RabbitMq\Elsa.Rebus.RabbitMq.csproj", "{FC656D28-1AA3-462D-9B18-A10436E47C08}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Activities.AzureServiceBus", "src\activities\Elsa.Activities.AzureServiceBus\Elsa.Activities.AzureServiceBus.csproj", "{DD607BC1-F9D9-4685-BC8F-A4056C2C31FA}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Activities.AzureServiceBus", "src\activities\Elsa.Activities.AzureServiceBus\Elsa.Activities.AzureServiceBus.csproj", "{DD607BC1-F9D9-4685-BC8F-A4056C2C31FA}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "worker", "worker", "{E42743A0-FBDD-4150-9D53-6000496D9B87}"
|
||||
EndProject
|
||||
|
|
@ -112,57 +112,65 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "console", "console", "{FC9F
|
|||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "aspnet", "aspnet", "{22E75696-6FE9-436A-9097-EE21C603F818}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ContextualWorkflowHttp", "src\samples\aspnet\Elsa.Samples.ContextualWorkflowHttp\Elsa.Samples.ContextualWorkflowHttp.csproj", "{2EC02600-8367-4B25-8243-CA4E53FA00FA}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.ContextualWorkflowHttp", "src\samples\aspnet\Elsa.Samples.ContextualWorkflowHttp\Elsa.Samples.ContextualWorkflowHttp.csproj", "{2EC02600-8367-4B25-8243-CA4E53FA00FA}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.CorrelationHttp", "src\samples\aspnet\Elsa.Samples.CorrelationHttp\Elsa.Samples.CorrelationHttp.csproj", "{3BDA353A-660E-47FA-95F5-4F6BB8E6B8AD}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.CorrelationHttp", "src\samples\aspnet\Elsa.Samples.CorrelationHttp\Elsa.Samples.CorrelationHttp.csproj", "{3BDA353A-660E-47FA-95F5-4F6BB8E6B8AD}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.CustomActivities", "src\samples\aspnet\Elsa.Samples.CustomActivities\Elsa.Samples.CustomActivities.csproj", "{AC6AA60A-393F-4D49-B3F1-44F567B18E22}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.CustomActivities", "src\samples\aspnet\Elsa.Samples.CustomActivities\Elsa.Samples.CustomActivities.csproj", "{AC6AA60A-393F-4D49-B3F1-44F567B18E22}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ForkJoinTimerAndSignalHttp", "src\samples\aspnet\Elsa.Samples.ForkJoinTimerAndSignalHttp\Elsa.Samples.ForkJoinTimerAndSignalHttp.csproj", "{8BB1B34D-E0FC-4804-9098-E7F8E35A749A}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.ForkJoinTimerAndSignalHttp", "src\samples\aspnet\Elsa.Samples.ForkJoinTimerAndSignalHttp\Elsa.Samples.ForkJoinTimerAndSignalHttp.csproj", "{8BB1B34D-E0FC-4804-9098-E7F8E35A749A}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.HelloWorldHttp", "src\samples\aspnet\Elsa.Samples.HelloWorldHttp\Elsa.Samples.HelloWorldHttp.csproj", "{15FDEF59-32F8-4F8F-AE10-B3D0FEE03049}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.HelloWorldHttp", "src\samples\aspnet\Elsa.Samples.HelloWorldHttp\Elsa.Samples.HelloWorldHttp.csproj", "{15FDEF59-32F8-4F8F-AE10-B3D0FEE03049}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ReadModelHttp", "src\samples\aspnet\Elsa.Samples.ReadModelHttp\Elsa.Samples.ReadModelHttp.csproj", "{795FF94C-F22C-45A3-9643-88EED173D6D4}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.ReadModelHttp", "src\samples\aspnet\Elsa.Samples.ReadModelHttp\Elsa.Samples.ReadModelHttp.csproj", "{795FF94C-F22C-45A3-9643-88EED173D6D4}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.DeclarativeCompositeActivitiesConsole", "src\samples\console\Elsa.Samples.DeclarativeCompositeActivitiesConsole\Elsa.Samples.DeclarativeCompositeActivitiesConsole.csproj", "{7EC9B4E1-820E-4D53-B4E2-9815E31C7AE8}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.DeclarativeCompositeActivitiesConsole", "src\samples\console\Elsa.Samples.DeclarativeCompositeActivitiesConsole\Elsa.Samples.DeclarativeCompositeActivitiesConsole.csproj", "{7EC9B4E1-820E-4D53-B4E2-9815E31C7AE8}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.FileBasedWorkflow", "src\samples\console\Elsa.Samples.FileBasedWorkflow\Elsa.Samples.FileBasedWorkflow.csproj", "{C6A54F89-271D-402E-A38D-6C3A9DB7DF9C}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.FileBasedWorkflow", "src\samples\console\Elsa.Samples.FileBasedWorkflow\Elsa.Samples.FileBasedWorkflow.csproj", "{C6A54F89-271D-402E-A38D-6C3A9DB7DF9C}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ForLoopConsole", "src\samples\console\Elsa.Samples.ForLoopConsole\Elsa.Samples.ForLoopConsole.csproj", "{F5124847-D046-4458-A89D-CD796FEDEE1A}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.ForLoopConsole", "src\samples\console\Elsa.Samples.ForLoopConsole\Elsa.Samples.ForLoopConsole.csproj", "{F5124847-D046-4458-A89D-CD796FEDEE1A}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.GoBackConsole", "src\samples\console\Elsa.Samples.GoBackConsole\Elsa.Samples.GoBackConsole.csproj", "{0B147307-64FF-4496-9DC9-8F83013AC045}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.GoBackConsole", "src\samples\console\Elsa.Samples.GoBackConsole\Elsa.Samples.GoBackConsole.csproj", "{0B147307-64FF-4496-9DC9-8F83013AC045}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.HelloWorldConsole", "src\samples\console\Elsa.Samples.HelloWorldConsole\Elsa.Samples.HelloWorldConsole.csproj", "{935888CF-E871-42BB-A47D-5E1168269A03}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.HelloWorldConsole", "src\samples\console\Elsa.Samples.HelloWorldConsole\Elsa.Samples.HelloWorldConsole.csproj", "{935888CF-E871-42BB-A47D-5E1168269A03}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.IfElseConsole", "src\samples\console\Elsa.Samples.IfElseConsole\Elsa.Samples.IfElseConsole.csproj", "{EA1D7E39-D77D-4B13-BAD0-76BA30547019}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.IfElseConsole", "src\samples\console\Elsa.Samples.IfElseConsole\Elsa.Samples.IfElseConsole.csproj", "{EA1D7E39-D77D-4B13-BAD0-76BA30547019}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ProgrammaticCompositeActivitiesConsole", "src\samples\console\Elsa.Samples.ProgrammaticCompositeActivitiesConsole\Elsa.Samples.ProgrammaticCompositeActivitiesConsole.csproj", "{0FC36CEC-35B3-4EB7-9DD7-0F2A1C4E9313}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.ProgrammaticCompositeActivitiesConsole", "src\samples\console\Elsa.Samples.ProgrammaticCompositeActivitiesConsole\Elsa.Samples.ProgrammaticCompositeActivitiesConsole.csproj", "{0FC36CEC-35B3-4EB7-9DD7-0F2A1C4E9313}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ReadLineEchoConsole", "src\samples\console\Elsa.Samples.ReadLineEchoConsole\Elsa.Samples.ReadLineEchoConsole.csproj", "{E7BAECCC-CBF8-4975-93C4-6D3A8F94B000}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.ReadLineEchoConsole", "src\samples\console\Elsa.Samples.ReadLineEchoConsole\Elsa.Samples.ReadLineEchoConsole.csproj", "{E7BAECCC-CBF8-4975-93C4-6D3A8F94B000}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.Serialization", "src\samples\console\Elsa.Samples.Serialization\Elsa.Samples.Serialization.csproj", "{823EB953-0B26-4D85-9B3F-14FCB476E987}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.Serialization", "src\samples\console\Elsa.Samples.Serialization\Elsa.Samples.Serialization.csproj", "{823EB953-0B26-4D85-9B3F-14FCB476E987}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.SignalingConsole", "src\samples\console\Elsa.Samples.SignalingConsole\Elsa.Samples.SignalingConsole.csproj", "{83929B86-434B-4C24-9B02-1F944DF8D71C}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.SignalingConsole", "src\samples\console\Elsa.Samples.SignalingConsole\Elsa.Samples.SignalingConsole.csproj", "{83929B86-434B-4C24-9B02-1F944DF8D71C}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.WhileLoopConsole", "src\samples\console\Elsa.Samples.WhileLoopConsole\Elsa.Samples.WhileLoopConsole.csproj", "{EDE80D8C-4C1F-44A3-8D0E-6D0757439E1C}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.WhileLoopConsole", "src\samples\console\Elsa.Samples.WhileLoopConsole\Elsa.Samples.WhileLoopConsole.csproj", "{EDE80D8C-4C1F-44A3-8D0E-6D0757439E1C}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AzureServiceBusWorker", "src\samples\worker\Elsa.Samples.AzureServiceBusWorker\Elsa.Samples.AzureServiceBusWorker.csproj", "{F958B682-5192-4287-BF80-CB7B30ECFC9E}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.AzureServiceBusWorker", "src\samples\worker\Elsa.Samples.AzureServiceBusWorker\Elsa.Samples.AzureServiceBusWorker.csproj", "{F958B682-5192-4287-BF80-CB7B30ECFC9E}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.DistributedLock", "src\samples\worker\Elsa.Samples.DistributedLock\Elsa.Samples.DistributedLock.csproj", "{F081EE15-7E1A-4E8C-B91F-5472ED565431}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.DistributedLock", "src\samples\worker\Elsa.Samples.DistributedLock\Elsa.Samples.DistributedLock.csproj", "{F081EE15-7E1A-4E8C-B91F-5472ED565431}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.MultiTenantChildWorker", "src\samples\worker\Elsa.Samples.MultiTenantChildWorker\Elsa.Samples.MultiTenantChildWorker.csproj", "{1053BF2D-BCB6-4616-9773-7FF25F48ECA3}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.MultiTenantChildWorker", "src\samples\worker\Elsa.Samples.MultiTenantChildWorker\Elsa.Samples.MultiTenantChildWorker.csproj", "{1053BF2D-BCB6-4616-9773-7FF25F48ECA3}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.RebusWorker", "src\samples\worker\Elsa.Samples.RebusWorker\Elsa.Samples.RebusWorker.csproj", "{6837DB22-1F5C-42E1-A466-E4597AF6E91E}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.RebusWorker", "src\samples\worker\Elsa.Samples.RebusWorker\Elsa.Samples.RebusWorker.csproj", "{6837DB22-1F5C-42E1-A466-E4597AF6E91E}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.RunChildWorkflowWorker", "src\samples\worker\Elsa.Samples.RunChildWorkflowWorker\Elsa.Samples.RunChildWorkflowWorker.csproj", "{A4DF29BD-95CC-4A86-96EC-FB6692270E68}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.RunChildWorkflowWorker", "src\samples\worker\Elsa.Samples.RunChildWorkflowWorker\Elsa.Samples.RunChildWorkflowWorker.csproj", "{A4DF29BD-95CC-4A86-96EC-FB6692270E68}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.Timers", "src\samples\worker\Elsa.Samples.Timers\Elsa.Samples.Timers.csproj", "{FD2D1BD0-1229-4DCF-BE70-6BFD396DD489}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.Timers", "src\samples\worker\Elsa.Samples.Timers\Elsa.Samples.Timers.csproj", "{FD2D1BD0-1229-4DCF-BE70-6BFD396DD489}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.WhileLoopWorker", "src\samples\worker\Elsa.Samples.WhileLoopWorker\Elsa.Samples.WhileLoopWorker.csproj", "{EA3832C4-8079-4E84-AF8C-12744E4EFD44}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.WhileLoopWorker", "src\samples\worker\Elsa.Samples.WhileLoopWorker\Elsa.Samples.WhileLoopWorker.csproj", "{EA3832C4-8079-4E84-AF8C-12744E4EFD44}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.CustomAttributesChildWorker", "src\samples\worker\Elsa.Samples.CustomAttributesChildWorker\Elsa.Samples.CustomAttributesChildWorker.csproj", "{AEA00027-F280-43A4-AC60-E2AF3014CF34}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.CustomAttributesChildWorker", "src\samples\worker\Elsa.Samples.CustomAttributesChildWorker\Elsa.Samples.CustomAttributesChildWorker.csproj", "{AEA00027-F280-43A4-AC60-E2AF3014CF34}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.Interrupts", "src\samples\aspnet\Elsa.Samples.Interrupts\Elsa.Samples.Interrupts.csproj", "{E0090EF3-C4A7-4262-9300-1D395BE25DD0}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.Interrupts", "src\samples\aspnet\Elsa.Samples.Interrupts\Elsa.Samples.Interrupts.csproj", "{E0090EF3-C4A7-4262-9300-1D395BE25DD0}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "persistence", "persistence", "{69AE8FC9-D851-42E7-AB27-672F2147C1E3}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Persistence.YesSql", "src\persistence\Elsa.Persistence.YesSql\Elsa.Persistence.YesSql.csproj", "{A49EEF61-95EA-4620-8C18-336FC2576A72}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Persistence.InMemory", "src\persistence\Elsa.Persistence.InMemory\Elsa.Persistence.InMemory.csproj", "{C1E1FA38-5284-44A5-9D69-4F42293B7EA0}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Persistence.MongoDb", "src\persistence\Elsa.Persistence.MongoDb\Elsa.Persistence.MongoDb.csproj", "{402EE264-5447-42B3-B9C8-A2AAC7E6B1B9}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
|
|
@ -238,7 +246,6 @@ Global
|
|||
{E20238CE-5C64-4F87-8753-3B4E1EC9A740}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E20238CE-5C64-4F87-8753-3B4E1EC9A740}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E20238CE-5C64-4F87-8753-3B4E1EC9A740}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
|
||||
{4CB34AB3-01C9-4911-8914-EABAA744EAD3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{4CB34AB3-01C9-4911-8914-EABAA744EAD3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{4CB34AB3-01C9-4911-8914-EABAA744EAD3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
|
|
@ -399,6 +406,18 @@ Global
|
|||
{E0090EF3-C4A7-4262-9300-1D395BE25DD0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E0090EF3-C4A7-4262-9300-1D395BE25DD0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E0090EF3-C4A7-4262-9300-1D395BE25DD0}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{A49EEF61-95EA-4620-8C18-336FC2576A72}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{A49EEF61-95EA-4620-8C18-336FC2576A72}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{A49EEF61-95EA-4620-8C18-336FC2576A72}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{A49EEF61-95EA-4620-8C18-336FC2576A72}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{C1E1FA38-5284-44A5-9D69-4F42293B7EA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C1E1FA38-5284-44A5-9D69-4F42293B7EA0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C1E1FA38-5284-44A5-9D69-4F42293B7EA0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C1E1FA38-5284-44A5-9D69-4F42293B7EA0}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{402EE264-5447-42B3-B9C8-A2AAC7E6B1B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{402EE264-5447-42B3-B9C8-A2AAC7E6B1B9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{402EE264-5447-42B3-B9C8-A2AAC7E6B1B9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{402EE264-5447-42B3-B9C8-A2AAC7E6B1B9}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
|
@ -425,10 +444,10 @@ Global
|
|||
{0A3C36AB-2ACF-4175-A512-66B4C3DB9371} = {AB1AE008-6FD6-414C-8E88-D735F42E1FA6}
|
||||
{0A6747EA-7AC6-4B6F-BC0C-C40C8A80C44D} = {AB1AE008-6FD6-414C-8E88-D735F42E1FA6}
|
||||
{E7C689EB-5AD6-4E91-A007-6116EEA702FC} = {0A6747EA-7AC6-4B6F-BC0C-C40C8A80C44D}
|
||||
{7CD5C8D5-EC78-4A99-A514-F01CA7197AC8} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925}
|
||||
{E20238CE-5C64-4F87-8753-3B4E1EC9A740} = {7CD5C8D5-EC78-4A99-A514-F01CA7197AC8}
|
||||
{EBD49CCA-5400-4C36-B5DF-7B28190AA323} = {7CD5C8D5-EC78-4A99-A514-F01CA7197AC8}
|
||||
{150EF356-E8BC-4922-91C2-362017479409} = {7CD5C8D5-EC78-4A99-A514-F01CA7197AC8}
|
||||
{EBD49CCA-5400-4C36-B5DF-7B28190AA323} = {7CD5C8D5-EC78-4A99-A514-F01CA7197AC8}
|
||||
{E20238CE-5C64-4F87-8753-3B4E1EC9A740} = {7CD5C8D5-EC78-4A99-A514-F01CA7197AC8}
|
||||
{7CD5C8D5-EC78-4A99-A514-F01CA7197AC8} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925}
|
||||
{4CB34AB3-01C9-4911-8914-EABAA744EAD3} = {0A3C36AB-2ACF-4175-A512-66B4C3DB9371}
|
||||
{FC47A50F-03B2-47D8-AAFB-075314FBA186} = {AB1AE008-6FD6-414C-8E88-D735F42E1FA6}
|
||||
{BB5819C7-434A-4AC5-8B0E-6C4FA672EBD5} = {FC47A50F-03B2-47D8-AAFB-075314FBA186}
|
||||
|
|
@ -477,6 +496,10 @@ Global
|
|||
{EA3832C4-8079-4E84-AF8C-12744E4EFD44} = {E42743A0-FBDD-4150-9D53-6000496D9B87}
|
||||
{AEA00027-F280-43A4-AC60-E2AF3014CF34} = {E42743A0-FBDD-4150-9D53-6000496D9B87}
|
||||
{E0090EF3-C4A7-4262-9300-1D395BE25DD0} = {22E75696-6FE9-436A-9097-EE21C603F818}
|
||||
{69AE8FC9-D851-42E7-AB27-672F2147C1E3} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925}
|
||||
{A49EEF61-95EA-4620-8C18-336FC2576A72} = {69AE8FC9-D851-42E7-AB27-672F2147C1E3}
|
||||
{C1E1FA38-5284-44A5-9D69-4F42293B7EA0} = {69AE8FC9-D851-42E7-AB27-672F2147C1E3}
|
||||
{402EE264-5447-42B3-B9C8-A2AAC7E6B1B9} = {69AE8FC9-D851-42E7-AB27-672F2147C1E3}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {8B0975FD-7050-48B0-88C5-48C33378E158}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ using System.Threading;
|
|||
using System.Threading.Tasks;
|
||||
using Elsa.Activities.Http.Models;
|
||||
using Elsa.Activities.Http.Services;
|
||||
using Elsa.Extensions;
|
||||
using Elsa.Repositories;
|
||||
using Elsa.Services;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
|
|
@ -14,16 +14,16 @@ namespace Elsa.Activities.Http.Controllers
|
|||
{
|
||||
private readonly ITokenService _tokenService;
|
||||
private readonly IWorkflowRunner _workflowRunner;
|
||||
private readonly IWorkflowInstanceManager _workflowInstanceManager;
|
||||
private readonly IWorkflowInstanceRepository _workflowInstanceManager;
|
||||
|
||||
public HttpWorkflowsController(
|
||||
ITokenService tokenService,
|
||||
IWorkflowRunner workflowRunner,
|
||||
IWorkflowInstanceManager workflowInstanceManager)
|
||||
IWorkflowInstanceRepository workflowInstanceRepository)
|
||||
{
|
||||
_tokenService = tokenService;
|
||||
_workflowRunner = workflowRunner;
|
||||
_workflowInstanceManager = workflowInstanceManager;
|
||||
_workflowInstanceManager = workflowInstanceRepository;
|
||||
}
|
||||
|
||||
[Route("trigger/{token}")]
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ using System.Net;
|
|||
using System.Threading.Tasks;
|
||||
using Elsa.Activities.Http.Extensions;
|
||||
using Elsa.Activities.Http.Triggers;
|
||||
using Elsa.Extensions;
|
||||
using Elsa.Repositories;
|
||||
using Elsa.Services;
|
||||
using Elsa.Triggers;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
|
|
@ -20,7 +20,7 @@ namespace Elsa.Activities.Http.Middleware
|
|||
_next = next;
|
||||
}
|
||||
|
||||
public async Task InvokeAsync(HttpContext httpContext, IWorkflowSelector workflowSelector, IWorkflowRunner workflowRunner, IWorkflowInstanceManager workflowInstanceManager)
|
||||
public async Task InvokeAsync(HttpContext httpContext, IWorkflowSelector workflowSelector, IWorkflowRunner workflowRunner, IWorkflowInstanceRepository workflowInstanceRepository)
|
||||
{
|
||||
var path = httpContext.Request.Path;
|
||||
var method = httpContext.Request.Method;
|
||||
|
|
@ -53,7 +53,7 @@ namespace Elsa.Activities.Http.Middleware
|
|||
}
|
||||
else
|
||||
{
|
||||
var workflowInstance = await workflowInstanceManager.GetByIdAsync(result.WorkflowInstanceId, cancellationToken);
|
||||
var workflowInstance = await workflowInstanceRepository.GetByIdAsync(result.WorkflowInstanceId, cancellationToken);
|
||||
|
||||
if (workflowInstance == null)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ using Elsa.Activities.Http.RequestHandlers.Results;
|
|||
using Elsa.Activities.Http.Services;
|
||||
using Elsa.Extensions;
|
||||
using Elsa.Models;
|
||||
using Elsa.Repositories;
|
||||
using Elsa.Services;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
|
||||
|
|
@ -13,19 +14,19 @@ namespace Elsa.Activities.Http.RequestHandlers.Handlers
|
|||
public class SignalRequestHandler : IRequestHandler
|
||||
{
|
||||
private readonly HttpContext _httpContext;
|
||||
private readonly IWorkflowInstanceManager _workflowInstanceManager;
|
||||
private readonly IWorkflowInstanceRepository _workflowInstanceManager;
|
||||
private readonly ITokenService _tokenService;
|
||||
private readonly CancellationToken _cancellationToken;
|
||||
private readonly IWorkflowRunner _workflowRunner;
|
||||
|
||||
public SignalRequestHandler(
|
||||
IWorkflowInstanceManager workflowInstanceManager,
|
||||
IWorkflowInstanceRepository workflowInstanceRepository,
|
||||
IHttpContextAccessor httpContextAccessor,
|
||||
ITokenService tokenService,
|
||||
IWorkflowRunner workflowRunner)
|
||||
{
|
||||
_httpContext = httpContextAccessor.HttpContext;
|
||||
_workflowInstanceManager = workflowInstanceManager;
|
||||
_workflowInstanceManager = workflowInstanceRepository;
|
||||
_tokenService = tokenService;
|
||||
_workflowRunner = workflowRunner;
|
||||
_cancellationToken = _httpContext.RequestAborted;
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ using System.Threading.Tasks;
|
|||
using Elsa.Activities.Timers.Services;
|
||||
using Elsa.ActivityResults;
|
||||
using Elsa.Attributes;
|
||||
using Elsa.Repositories;
|
||||
using Elsa.Services;
|
||||
using Elsa.Services.Models;
|
||||
using NodaTime;
|
||||
|
|
@ -17,13 +18,13 @@ namespace Elsa.Activities.Timers
|
|||
public class Cron : Activity
|
||||
{
|
||||
private readonly IClock _clock;
|
||||
private readonly IWorkflowInstanceManager _workflowInstanceManager;
|
||||
private readonly IWorkflowInstanceRepository _workflowInstanceManager;
|
||||
private readonly IWorkflowScheduler _workflowScheduler;
|
||||
|
||||
public Cron(IClock clock, IWorkflowInstanceManager workflowInstanceManager, IWorkflowScheduler workflowScheduler)
|
||||
public Cron(IClock clock, IWorkflowInstanceRepository workflowInstanceRepository, IWorkflowScheduler workflowScheduler)
|
||||
{
|
||||
_clock = clock;
|
||||
_workflowInstanceManager = workflowInstanceManager;
|
||||
_workflowInstanceManager = workflowInstanceRepository;
|
||||
_workflowScheduler = workflowScheduler;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ using System.Threading.Tasks;
|
|||
using Elsa.Activities.Timers.Services;
|
||||
using Elsa.ActivityResults;
|
||||
using Elsa.Attributes;
|
||||
using Elsa.Repositories;
|
||||
using Elsa.Services;
|
||||
using Elsa.Services.Models;
|
||||
using NodaTime;
|
||||
|
|
@ -18,12 +19,12 @@ namespace Elsa.Activities.Timers
|
|||
)]
|
||||
public class StartAt : Activity
|
||||
{
|
||||
private readonly IWorkflowInstanceManager _workflowInstanceManager;
|
||||
private readonly IWorkflowInstanceRepository _workflowInstanceManager;
|
||||
private readonly IWorkflowScheduler _workflowScheduler;
|
||||
|
||||
public StartAt(IWorkflowInstanceManager workflowInstanceManager, IWorkflowScheduler workflowScheduler)
|
||||
public StartAt(IWorkflowInstanceRepository workflowInstanceRepository, IWorkflowScheduler workflowScheduler)
|
||||
{
|
||||
_workflowInstanceManager = workflowInstanceManager;
|
||||
_workflowInstanceManager = workflowInstanceRepository;
|
||||
_workflowScheduler = workflowScheduler;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
using System.Threading;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Elsa.Activities.Timers.Services;
|
||||
using Elsa.ActivityResults;
|
||||
using Elsa.Models;
|
||||
using Elsa.Repositories;
|
||||
using Elsa.Services;
|
||||
using Elsa.Services.Models;
|
||||
using NodaTime;
|
||||
|
|
@ -21,9 +22,9 @@ namespace Elsa.Activities.Timers.ActivityResults
|
|||
public override async ValueTask ExecuteAsync(ActivityExecutionContext activityExecutionContext, CancellationToken cancellationToken)
|
||||
{
|
||||
var workflowInstance = activityExecutionContext.WorkflowExecutionContext.WorkflowInstance;
|
||||
var workflowInstanceManager = activityExecutionContext.GetService<IWorkflowInstanceManager>();
|
||||
var workflowInstanceRepository = activityExecutionContext.GetService<IWorkflowInstanceRepository>();
|
||||
var scheduler = activityExecutionContext.GetService<IWorkflowScheduler>();
|
||||
await workflowInstanceManager.SaveAsync(workflowInstance, cancellationToken);
|
||||
await workflowInstanceRepository.SaveAsync(workflowInstance, cancellationToken);
|
||||
await scheduler.ScheduleWorkflowAsync(activityExecutionContext.WorkflowExecutionContext.WorkflowBlueprint, workflowInstance.WorkflowInstanceId, activityExecutionContext.ActivityInstance.Id, ExecuteAt, cancellationToken);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
using System;
|
||||
using System;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Elsa.Extensions;
|
||||
using Elsa.Indexes;
|
||||
using Elsa.Models;
|
||||
using Elsa.Repositories;
|
||||
using Elsa.Services;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Quartz;
|
||||
|
|
@ -15,14 +15,14 @@ namespace Elsa.Activities.Timers.Jobs
|
|||
{
|
||||
private readonly IWorkflowRunner _workflowRunner;
|
||||
private readonly IWorkflowRegistry _workflowRegistry;
|
||||
private readonly IWorkflowInstanceManager _workflowInstanceManager;
|
||||
private readonly IWorkflowInstanceRepository _workflowInstanceManager;
|
||||
private readonly ILogger _logger;
|
||||
|
||||
public RunWorkflowJob(IWorkflowRunner workflowRunner, IWorkflowRegistry workflowRegistry, IWorkflowInstanceManager workflowInstanceManager, ILogger<RunWorkflowJob> logger)
|
||||
public RunWorkflowJob(IWorkflowRunner workflowRunner, IWorkflowRegistry workflowRegistry, IWorkflowInstanceRepository workflowInstanceRepository, ILogger<RunWorkflowJob> logger)
|
||||
{
|
||||
_workflowRunner = workflowRunner;
|
||||
_workflowRegistry = workflowRegistry;
|
||||
_workflowInstanceManager = workflowInstanceManager;
|
||||
_workflowInstanceManager = workflowInstanceRepository;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
|
|
@ -38,7 +38,7 @@ namespace Elsa.Activities.Timers.Jobs
|
|||
|
||||
if (workflowInstanceId == null)
|
||||
{
|
||||
if (workflowBlueprint.IsSingleton && await GetWorkflowIsAlreadyExecutingAsync(tenantId, workflowDefinitionId, cancellationToken))
|
||||
if (workflowBlueprint.IsSingleton && await _workflowInstanceManager.IsWorkflowIsAlreadyExecutingAsync(tenantId, workflowDefinitionId, cancellationToken))
|
||||
return;
|
||||
|
||||
await _workflowRunner.RunWorkflowAsync(workflowBlueprint, activityId, cancellationToken: cancellationToken);
|
||||
|
|
@ -60,16 +60,5 @@ namespace Elsa.Activities.Timers.Jobs
|
|||
await _workflowRunner.RunWorkflowAsync(workflowBlueprint, workflowInstance!, activityId, cancellationToken: cancellationToken);
|
||||
}
|
||||
}
|
||||
|
||||
private async Task<bool> GetWorkflowIsAlreadyExecutingAsync(string? tenantId, string workflowDefinitionId, CancellationToken cancellationToken)
|
||||
{
|
||||
Expression<Func<WorkflowInstanceIndex, bool>> query = index =>
|
||||
index.WorkflowDefinitionId == workflowDefinitionId
|
||||
&& index.TenantId == tenantId
|
||||
&& (index.WorkflowStatus == WorkflowStatus.Running || index.WorkflowStatus == WorkflowStatus.Suspended);
|
||||
|
||||
var workflowInstance = await _workflowInstanceManager.Query(query).FirstOrDefaultAsync();
|
||||
return workflowInstance != null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
|
|
@ -40,7 +40,6 @@
|
|||
<PackageReference Include="System.Linq.Async" Version="5.0.0" />
|
||||
<PackageReference Include="System.Text.Json" Version="5.0.0" />
|
||||
<PackageReference Include="System.Threading.Tasks.Extensions" Version="4.5.4" />
|
||||
<PackageReference Include="YesSql.Abstractions" Version="2.0.0-beta-1620" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using Elsa.Models;
|
||||
using Elsa.Repositories;
|
||||
|
||||
namespace Elsa.Extensions
|
||||
{
|
||||
public static class IWorkflowInstanceRepositoryExtensions
|
||||
{
|
||||
public static Task<IEnumerable<WorkflowInstance>> ListByDefinitionAndStatusAsync(
|
||||
this IWorkflowInstanceRepository manager,
|
||||
string workflowDefinitionId,
|
||||
WorkflowStatus workflowStatus,
|
||||
CancellationToken cancellationToken = default) =>
|
||||
manager.ListByDefinitionAndStatusAsync(workflowDefinitionId, default, workflowStatus, cancellationToken);
|
||||
|
||||
public static Task<IEnumerable<WorkflowInstance>> ListByDefinitionAsync(
|
||||
this IWorkflowInstanceRepository manager,
|
||||
string workflowDefinitionId,
|
||||
CancellationToken cancellationToken = default) =>
|
||||
manager.ListByDefinitionAsync(workflowDefinitionId, default, cancellationToken);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,16 +1,12 @@
|
|||
using Elsa.Data;
|
||||
using Elsa.Data;
|
||||
using Elsa.Services;
|
||||
using Elsa.Triggers;
|
||||
using YesSql.Indexes;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace Microsoft.Extensions.DependencyInjection
|
||||
{
|
||||
public static class ServiceCollectionExtensions
|
||||
{
|
||||
public static IServiceCollection AddIndexProvider<T>(this IServiceCollection services) where T : class, IIndexProvider => services.AddSingleton<IIndexProvider, T>();
|
||||
public static IServiceCollection AddScopedIndexProvider<T>(this IServiceCollection services) where T : class, IIndexProvider => services.AddScoped<IScopedIndexProvider>();
|
||||
public static IServiceCollection AddDataMigration<T>(this IServiceCollection services) where T : class, IDataMigration => services.AddScoped<IDataMigration, T>();
|
||||
{
|
||||
public static IServiceCollection AddWorkflowProvider<T>(this IServiceCollection services) where T : class, IWorkflowProvider => services.AddTransient<IWorkflowProvider, T>();
|
||||
public static IServiceCollection AddTriggerProvider<T>(this IServiceCollection services) where T : class, ITriggerProvider => services.AddTransient<ITriggerProvider, T>();
|
||||
public static IServiceCollection AddWorkflowContextProvider<T>(this IServiceCollection services) where T : class, IWorkflowContextProvider => services.AddTransient<IWorkflowContextProvider, T>();
|
||||
|
|
|
|||
|
|
@ -1,27 +1,20 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Elsa.Models;
|
||||
using YesSql;
|
||||
using YesSql.Indexes;
|
||||
|
||||
namespace Elsa.Services
|
||||
using Elsa.Models;
|
||||
|
||||
namespace Elsa.Repositories
|
||||
{
|
||||
public interface IWorkflowDefinitionManager
|
||||
public interface IWorkflowDefinitionRepository
|
||||
{
|
||||
|
||||
Task SaveAsync(WorkflowDefinition workflowDefinition, CancellationToken cancellationToken = default);
|
||||
Task DeleteAsync(WorkflowDefinition workflowDefinition, CancellationToken cancellationToken = default);
|
||||
Task<int> CountAsync(VersionOptions? version = default, CancellationToken cancellationToken = default);
|
||||
Task<IEnumerable<WorkflowDefinition>> ListAsync(int? skip = default, int? take = default, VersionOptions? version = default, CancellationToken cancellationToken = default);
|
||||
IQuery<WorkflowDefinition> Query();
|
||||
IQuery<WorkflowDefinition, TIndex> Query<TIndex>() where TIndex : class, IIndex;
|
||||
|
||||
IQuery<WorkflowDefinition, TIndex> Query<TIndex>(Expression<Func<TIndex, bool>> predicate)
|
||||
where TIndex : class, IIndex;
|
||||
|
||||
IQuery<WorkflowDefinition> ExecuteQuery(ICompiledQuery<WorkflowDefinition> query);
|
||||
Task<WorkflowDefinition> GetAsync(string workflowDefinitionId, VersionOptions version, CancellationToken cancellationToken = default);
|
||||
Task<WorkflowDefinition> GetByVersionIdAsync(string workflowDefinitionVersionId, CancellationToken cancellationToken = default);
|
||||
WorkflowDefinition Initialize(WorkflowDefinition workflowDefinition);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
using Elsa.Models;
|
||||
|
||||
namespace Elsa.Repositories
|
||||
{
|
||||
public static class IWorkflowDefinitionRepositoryExtensions
|
||||
{
|
||||
public static IEnumerable<WorkflowDefinition> WithVersion(this IEnumerable<WorkflowDefinition> query, VersionOptions? version = default)
|
||||
{
|
||||
var versionOption = version ?? VersionOptions.Latest;
|
||||
|
||||
if (versionOption.IsDraft)
|
||||
return query.Where(x => !x.IsPublished);
|
||||
else if (versionOption.IsLatest)
|
||||
return query.Where(x => x.IsLatest);
|
||||
else if (versionOption.IsPublished)
|
||||
return query.Where(x => x.IsPublished);
|
||||
else if (versionOption.IsLatestOrPublished)
|
||||
return query.Where(x => x.IsPublished || x.IsLatest);
|
||||
else if (versionOption.Version > 0)
|
||||
return query.Where(x => x.Version == versionOption.Version);
|
||||
|
||||
return query;
|
||||
}
|
||||
|
||||
public static IQueryable<WorkflowDefinition> WithVersion(this IQueryable<WorkflowDefinition> query, VersionOptions? version = default)
|
||||
{
|
||||
var versionOption = version ?? VersionOptions.Latest;
|
||||
|
||||
if (versionOption.IsDraft)
|
||||
return query.Where(x => !x.IsPublished);
|
||||
else if (versionOption.IsLatest)
|
||||
return query.Where(x => x.IsLatest);
|
||||
else if (versionOption.IsPublished)
|
||||
return query.Where(x => x.IsPublished);
|
||||
else if (versionOption.IsLatestOrPublished)
|
||||
return query.Where(x => x.IsPublished || x.IsLatest);
|
||||
else if (versionOption.Version > 0)
|
||||
return query.Where(x => x.Version == versionOption.Version);
|
||||
|
||||
return query;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using Elsa.Models;
|
||||
|
||||
|
||||
namespace Elsa.Repositories
|
||||
{
|
||||
public interface IWorkflowInstanceRepository
|
||||
{
|
||||
Task SaveAsync(WorkflowInstance workflowInstance, CancellationToken cancellationToken = default);
|
||||
Task DeleteAsync(WorkflowInstance workflowInstance, CancellationToken cancellationToken = default);
|
||||
|
||||
Task<bool> IsWorkflowIsAlreadyExecutingAsync(string? tenantId, string workflowDefinitionId, CancellationToken cancellationToken = default);
|
||||
|
||||
Task<WorkflowInstance> GetByIdAsync(string workflowInstanceId, CancellationToken cancellationToken = default);
|
||||
|
||||
Task<IEnumerable<WorkflowInstance>> ListAsync(int page, int pageSize, CancellationToken cancellationToken = default);
|
||||
|
||||
Task<IEnumerable<WorkflowInstance>> ListByBlockingActivityTypeAsync(string activityType, CancellationToken cancellationToken = default);
|
||||
|
||||
Task<IEnumerable<WorkflowInstance>> ListByDefinitionAndStatusAsync(string workflowDefinitionId, string? tenantId, WorkflowStatus workflowStatus, CancellationToken cancellationToken = default);
|
||||
|
||||
Task<IEnumerable<WorkflowInstance>> ListByStatusAsync(WorkflowStatus workflowStatus, CancellationToken cancellationToken = default);
|
||||
|
||||
Task<IEnumerable<WorkflowInstance>> ListByDefinitionAsync(string workflowDefinitionId,string? tenantId,CancellationToken cancellationToken = default);
|
||||
|
||||
Task<WorkflowInstance?> GetByCorrelationIdAsync(string correlationId, WorkflowStatus status,CancellationToken cancellationToken = default);
|
||||
|
||||
Task<IEnumerable<WorkflowInstance>> ListByCorrelationIdAsync(string correlationId,WorkflowStatus status,CancellationToken cancellationToken = default);
|
||||
Task<int> CountAsync(CancellationToken cancellationToken = default);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
using System;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Elsa.Models;
|
||||
using YesSql;
|
||||
using YesSql.Indexes;
|
||||
|
||||
namespace Elsa.Services
|
||||
{
|
||||
public interface IWorkflowInstanceManager
|
||||
{
|
||||
ValueTask SaveAsync(WorkflowInstance workflowInstance, CancellationToken cancellationToken = default);
|
||||
ValueTask DeleteAsync(WorkflowInstance workflowInstance, CancellationToken cancellationToken = default);
|
||||
IQuery<WorkflowInstance, TIndex> Query<TIndex>() where TIndex : class, IIndex;
|
||||
IQuery<WorkflowInstance, TIndex> Query<TIndex>(Expression<Func<TIndex, bool>> predicate) where TIndex : class, IIndex;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
using System.Threading.Tasks;
|
||||
using Elsa.ActivityResults;
|
||||
using Elsa.Attributes;
|
||||
using Elsa.Extensions;
|
||||
using Elsa.Repositories;
|
||||
using Elsa.Services;
|
||||
using Elsa.Services.Models;
|
||||
|
||||
|
|
@ -19,12 +19,12 @@ namespace Elsa.Activities.Signaling
|
|||
public class InterruptTrigger : Activity
|
||||
{
|
||||
private readonly IWorkflowTriggerInterruptor _workflowTriggerInterruptor;
|
||||
private readonly IWorkflowInstanceManager _workflowInstanceManager;
|
||||
private readonly IWorkflowInstanceRepository _workflowInstanceManager;
|
||||
|
||||
public InterruptTrigger(IWorkflowTriggerInterruptor workflowTriggerInterruptor, IWorkflowInstanceManager workflowInstanceManager)
|
||||
public InterruptTrigger(IWorkflowTriggerInterruptor workflowTriggerInterruptor, IWorkflowInstanceRepository workflowInstanceRepository)
|
||||
{
|
||||
_workflowTriggerInterruptor = workflowTriggerInterruptor;
|
||||
_workflowInstanceManager = workflowInstanceManager;
|
||||
_workflowInstanceManager = workflowInstanceRepository;
|
||||
}
|
||||
|
||||
[ActivityProperty(Hint = "The ID of the workflow instance to resume.")]
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
using System.Threading.Tasks;
|
||||
using Elsa.Exceptions;
|
||||
using Elsa.Extensions;
|
||||
using Elsa.Messages;
|
||||
using Elsa.Repositories;
|
||||
using Elsa.Services;
|
||||
using Rebus.Handlers;
|
||||
|
||||
|
|
@ -10,12 +10,12 @@ namespace Elsa.Consumers
|
|||
public class RunWorkflowConsumer : IHandleMessages<RunWorkflow>
|
||||
{
|
||||
private readonly IWorkflowRunner _workflowRunner;
|
||||
private readonly IWorkflowInstanceManager _workflowInstanceManager;
|
||||
private readonly IWorkflowInstanceRepository _workflowInstanceManager;
|
||||
|
||||
public RunWorkflowConsumer(IWorkflowRunner workflowRunner, IWorkflowInstanceManager workflowInstanceManager)
|
||||
public RunWorkflowConsumer(IWorkflowRunner workflowRunner, IWorkflowInstanceRepository workflowInstanceRepository)
|
||||
{
|
||||
_workflowRunner = workflowRunner;
|
||||
_workflowInstanceManager = workflowInstanceManager;
|
||||
_workflowInstanceManager = workflowInstanceRepository;
|
||||
}
|
||||
|
||||
public async Task Handle(RunWorkflow message)
|
||||
|
|
|
|||
|
|
@ -1,59 +0,0 @@
|
|||
using System;
|
||||
using System.Linq;
|
||||
using Elsa.Data.Services;
|
||||
using Elsa.Runtime;
|
||||
using Elsa.WorkflowProviders;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using YesSql;
|
||||
using YesSql.Indexes;
|
||||
using ISession = YesSql.ISession;
|
||||
|
||||
namespace Elsa.Data.Extensions
|
||||
{
|
||||
public static class PersistenceServiceCollectionExtensions
|
||||
{
|
||||
public static IServiceCollection AddPersistence(
|
||||
this IServiceCollection services,
|
||||
Action<IServiceProvider, IConfiguration> configure)
|
||||
{
|
||||
services
|
||||
.AddWorkflowProvider<DatabaseWorkflowProvider>()
|
||||
.AddSingleton(sp => CreateStore(sp, configure))
|
||||
.AddScoped(CreateSession)
|
||||
.AddScoped<IDataMigrationManager, DataMigrationManager>()
|
||||
.AddStartupTask<DatabaseInitializer>()
|
||||
.AddStartupTask<DataMigrationsRunner>()
|
||||
.AddDataMigration<Migrations>();
|
||||
|
||||
return services;
|
||||
}
|
||||
|
||||
private static IStore CreateStore(
|
||||
IServiceProvider serviceProvider,
|
||||
Action<IServiceProvider, Configuration> configure)
|
||||
{
|
||||
var configuration = new Configuration { ContentSerializer = new CustomJsonContentSerializer() };
|
||||
configure(serviceProvider, configuration);
|
||||
|
||||
// TODO: The following line is a temporary workaround until the bug in YesSql is fixed: https://github.com/sebastienros/yessql/pull/280
|
||||
var store = StoreFactory.CreateAndInitializeAsync(configuration).GetAwaiter().GetResult();
|
||||
//var store = StoreFactory.Create(configuration);
|
||||
|
||||
var indexes = serviceProvider.GetServices<IIndexProvider>();
|
||||
store.RegisterIndexes(indexes);
|
||||
|
||||
return store;
|
||||
}
|
||||
|
||||
private static ISession CreateSession(IServiceProvider serviceProvider)
|
||||
{
|
||||
var store = serviceProvider.GetRequiredService<IStore>();
|
||||
var session = store.CreateSession();
|
||||
var scopedServices = serviceProvider.GetServices<IScopedIndexProvider>().Cast<IIndexProvider>().ToArray();
|
||||
|
||||
session.RegisterIndexes(scopedServices);
|
||||
|
||||
return session;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
|
|
@ -51,7 +51,6 @@
|
|||
<PackageReference Include="System.Linq.Async" Version="5.0.0" />
|
||||
<PackageReference Include="YamlDotNet" Version="8.1.2" />
|
||||
<PackageReference Include="Rebus.ServiceProvider" Version="5.0.6" />
|
||||
<PackageReference Include="YesSql.Provider.Sqlite" Version="1.0.0-beta-1620" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
|||
|
|
@ -12,10 +12,8 @@ using Rebus.Logging;
|
|||
using Rebus.Persistence.InMem;
|
||||
using Rebus.Routing.TypeBased;
|
||||
using Rebus.Transport.InMem;
|
||||
using YesSql;
|
||||
using Storage.Net;
|
||||
using Storage.Net.Blobs;
|
||||
using YesSql.Provider.Sqlite;
|
||||
|
||||
namespace Elsa
|
||||
{
|
||||
|
|
@ -25,7 +23,6 @@ namespace Elsa
|
|||
{
|
||||
Services = services;
|
||||
|
||||
ConfigurePersistence = (sp, config) => config.UseSqLite("Data Source=elsa.db;Cache=Shared", IsolationLevel.ReadUncommitted);
|
||||
StorageFactory = sp => Storage.Net.StorageFactory.Blobs.InMemory();
|
||||
DistributedLockProviderFactory = sp => new DefaultLockProvider();
|
||||
SignalFactory = sp => new Signal();
|
||||
|
|
@ -52,7 +49,6 @@ namespace Elsa
|
|||
}
|
||||
|
||||
public IServiceCollection Services { get; }
|
||||
internal Action<IServiceProvider, IConfiguration> ConfigurePersistence { get; set; }
|
||||
internal Func<IServiceProvider, IBlobStorage> StorageFactory { get; set; }
|
||||
internal Func<IServiceProvider, IDistributedLockProvider> DistributedLockProviderFactory { get; private set; }
|
||||
internal Func<IServiceProvider, ISignal> SignalFactory { get; private set; }
|
||||
|
|
@ -73,14 +69,6 @@ namespace Elsa
|
|||
return this;
|
||||
}
|
||||
|
||||
public ElsaOptions UsePersistence(Action<IConfiguration> configure) => UsePersistence((sp, config) => configure(config));
|
||||
|
||||
public ElsaOptions UsePersistence(Action<IServiceProvider, IConfiguration> configure)
|
||||
{
|
||||
ConfigurePersistence = configure;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ElsaOptions UseStorage(Func<IBlobStorage> factory) => UseStorage(_ => factory());
|
||||
|
||||
public ElsaOptions UseStorage(Func<IServiceProvider, IBlobStorage> factory)
|
||||
|
|
|
|||
|
|
@ -10,11 +10,9 @@ using Elsa.ActivityTypeProviders;
|
|||
using Elsa.Builders;
|
||||
using Elsa.Consumers;
|
||||
using Elsa.Converters;
|
||||
using Elsa.Data.Extensions;
|
||||
using Elsa.Expressions;
|
||||
using Elsa.Extensions;
|
||||
using Elsa.HostedServices;
|
||||
using Elsa.Indexes;
|
||||
using Elsa.Mapping;
|
||||
using Elsa.Metadata;
|
||||
using Elsa.Metadata.Handlers;
|
||||
|
|
@ -44,8 +42,7 @@ namespace Microsoft.Extensions.DependencyInjection
|
|||
.AddSingleton(options)
|
||||
.AddSingleton(options.DistributedLockProviderFactory)
|
||||
.AddSingleton(options.SignalFactory)
|
||||
.AddSingleton(options.StorageFactory)
|
||||
.AddPersistence(options.ConfigurePersistence);
|
||||
.AddSingleton(options.StorageFactory);
|
||||
|
||||
options.AddWorkflowsCore();
|
||||
options.AddMediatR();
|
||||
|
|
@ -100,12 +97,8 @@ namespace Microsoft.Extensions.DependencyInjection
|
|||
.AddSingleton<IWorkflowBlueprintMaterializer, WorkflowBlueprintMaterializer>()
|
||||
.AddSingleton<IWorkflowBlueprintReflector, WorkflowBlueprintReflector>()
|
||||
.AddScoped<IWorkflowSelector, WorkflowSelector>()
|
||||
.AddScoped<IWorkflowDefinitionManager, WorkflowDefinitionManager>()
|
||||
.AddScoped<IWorkflowInstanceManager, WorkflowInstanceManager>()
|
||||
.AddScoped<IWorkflowPublisher, WorkflowPublisher>()
|
||||
.AddScoped<IWorkflowContextManager, WorkflowContextManager>()
|
||||
.AddIndexProvider<WorkflowDefinitionIndexProvider>()
|
||||
.AddIndexProvider<WorkflowInstanceIndexProvider>()
|
||||
.AddScoped<IWorkflowContextManager, WorkflowContextManager>()
|
||||
.AddStartupRunner()
|
||||
.AddSingleton<IActivityTypeService, ActivityTypeService>()
|
||||
.AddSingleton<IActivityTypeProvider, TypeBasedActivityProvider>()
|
||||
|
|
|
|||
|
|
@ -1,64 +0,0 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Elsa.Indexes;
|
||||
using Elsa.Models;
|
||||
using YesSql;
|
||||
|
||||
namespace Elsa.Extensions
|
||||
{
|
||||
public static class WorkflowDefinitionExtensions
|
||||
{
|
||||
public static IEnumerable<WorkflowDefinition> WithVersion(
|
||||
this IEnumerable<WorkflowDefinition> query,
|
||||
VersionOptions version)
|
||||
{
|
||||
return query.AsQueryable().WithVersion(version);
|
||||
}
|
||||
|
||||
public static IQueryable<WorkflowDefinition> WithVersion(
|
||||
this IQueryable<WorkflowDefinition> query,
|
||||
VersionOptions version)
|
||||
{
|
||||
if (version.IsDraft)
|
||||
query = query.Where(x => !x.IsPublished);
|
||||
else if (version.IsLatest)
|
||||
query = query.Where(x => x.IsLatest);
|
||||
else if (version.IsPublished)
|
||||
query = query.Where(x => x.IsPublished);
|
||||
else if (version.IsLatestOrPublished)
|
||||
query = query.Where(x => x.IsPublished || x.IsLatest);
|
||||
else if (version.AllVersions)
|
||||
{
|
||||
// Nothing to filter.
|
||||
}
|
||||
else if (version.Version > 0)
|
||||
query = query.Where(x => x.Version == version.Version);
|
||||
|
||||
return query.OrderByDescending(x => x.Version);
|
||||
}
|
||||
|
||||
public static IQuery<WorkflowDefinition> WithVersion(
|
||||
this IQuery<WorkflowDefinition> query,
|
||||
VersionOptions version)
|
||||
{
|
||||
var index = query.With<WorkflowDefinitionIndex>();
|
||||
|
||||
if (version.IsDraft)
|
||||
query = index.Where(x => !x.IsPublished);
|
||||
else if (version.IsLatest)
|
||||
query = index.Where(x => x.IsLatest);
|
||||
else if (version.IsPublished)
|
||||
query = index.Where(x => x.IsPublished);
|
||||
else if (version.IsLatestOrPublished)
|
||||
query = index.Where(x => x.IsPublished || x.IsLatest);
|
||||
else if (version.AllVersions)
|
||||
{
|
||||
// Nothing to filter.
|
||||
}
|
||||
else if (version.Version > 0)
|
||||
query = index.Where(x => x.Version == version.Version);
|
||||
|
||||
return index.OrderByDescending(x => x.Version);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Elsa.Indexes;
|
||||
using Elsa.Models;
|
||||
using Elsa.Services;
|
||||
using YesSql;
|
||||
|
||||
namespace Elsa.Extensions
|
||||
{
|
||||
public static class WorkflowDefinitionManagerExtensions
|
||||
{
|
||||
public static IQuery<WorkflowDefinition> QueryByIdAndVersion(this IWorkflowDefinitionManager manager, string workflowDefinitionId, VersionOptions versionOptions) =>
|
||||
manager.Query<WorkflowDefinitionIndex>(x => x.WorkflowDefinitionId == workflowDefinitionId).WithVersion(versionOptions);
|
||||
|
||||
public static IQuery<WorkflowDefinition> QueryByVersionId(this IWorkflowDefinitionManager manager, string workflowDefinitionVersionId) =>
|
||||
manager.Query<WorkflowDefinitionIndex>(x => x.WorkflowDefinitionVersionId == workflowDefinitionVersionId);
|
||||
|
||||
public static async Task<WorkflowDefinition?> GetAsync(
|
||||
this IWorkflowDefinitionManager manager,
|
||||
string workflowDefinitionId,
|
||||
VersionOptions versionOptions,
|
||||
CancellationToken cancellationToken = default) =>
|
||||
await manager.QueryByIdAndVersion(workflowDefinitionId, versionOptions).FirstOrDefaultAsync();
|
||||
|
||||
public static async Task<WorkflowDefinition?> GetByVersionIdAsync(
|
||||
this IWorkflowDefinitionManager manager,
|
||||
string workflowDefinitionVersionId,
|
||||
CancellationToken cancellationToken = default) =>
|
||||
await manager.QueryByVersionId(workflowDefinitionVersionId).FirstOrDefaultAsync();
|
||||
|
||||
public static Task<IEnumerable<WorkflowInstance>> ListByStatusAsync(
|
||||
this IWorkflowInstanceManager manager,
|
||||
WorkflowStatus workflowStatus,
|
||||
CancellationToken cancellationToken = default) =>
|
||||
manager
|
||||
.Query<WorkflowInstanceIndex>(x => x.WorkflowStatus == workflowStatus)
|
||||
.ListAsync();
|
||||
|
||||
public static Task<IEnumerable<WorkflowInstance>> ListByBlockingActivityTypeAsync(
|
||||
this IWorkflowInstanceManager manager,
|
||||
string activityType,
|
||||
CancellationToken cancellationToken = default) =>
|
||||
manager
|
||||
.Query<WorkflowInstanceBlockingActivitiesIndex>(x => x.ActivityType == activityType)
|
||||
.ListAsync();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,73 +0,0 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Elsa.Indexes;
|
||||
using Elsa.Models;
|
||||
using Elsa.Services;
|
||||
|
||||
namespace Elsa.Extensions
|
||||
{
|
||||
public static class WorkflowInstanceManagerExtensions
|
||||
{
|
||||
public static async Task<WorkflowInstance?> GetByIdAsync(
|
||||
this IWorkflowInstanceManager manager,
|
||||
string workflowInstanceId,
|
||||
CancellationToken cancellationToken = default) =>
|
||||
await manager.Query<WorkflowInstanceIndex>(x => x.WorkflowInstanceId == workflowInstanceId).FirstOrDefaultAsync();
|
||||
|
||||
public static async Task<WorkflowInstance?> GetByCorrelationIdAsync(
|
||||
this IWorkflowInstanceManager manager,
|
||||
string correlationId,
|
||||
WorkflowStatus status,
|
||||
CancellationToken cancellationToken = default) =>
|
||||
await manager.Query<WorkflowInstanceIndex>(x => x.CorrelationId == correlationId && x.WorkflowStatus == status).FirstOrDefaultAsync();
|
||||
|
||||
public static async Task<int> CountAsync(this IWorkflowInstanceManager manager, CancellationToken cancellationToken = default) => await manager.Query<WorkflowInstanceIndex>().CountAsync();
|
||||
|
||||
public static async Task<IEnumerable<WorkflowInstance>> ListAsync(
|
||||
this IWorkflowInstanceManager manager,
|
||||
int page,
|
||||
int pageSize,
|
||||
CancellationToken cancellationToken = default) =>
|
||||
await manager.Query<WorkflowInstanceIndex>().Skip(page * pageSize).Take(pageSize).ListAsync();
|
||||
|
||||
public static async Task<IEnumerable<WorkflowInstance>> ListByCorrelationIdAsync(
|
||||
this IWorkflowInstanceManager manager,
|
||||
string correlationId,
|
||||
WorkflowStatus status,
|
||||
CancellationToken cancellationToken = default) =>
|
||||
await manager.Query<WorkflowInstanceIndex>(x => x.CorrelationId == correlationId && x.WorkflowStatus == status).ListAsync();
|
||||
|
||||
public static Task<IEnumerable<WorkflowInstance>> ListByDefinitionAndStatusAsync(
|
||||
this IWorkflowInstanceManager manager,
|
||||
string workflowDefinitionId,
|
||||
string? tenantId,
|
||||
WorkflowStatus workflowStatus,
|
||||
CancellationToken cancellationToken = default)
|
||||
{
|
||||
return manager.Query<WorkflowInstanceIndex>(x => x.WorkflowDefinitionId == workflowDefinitionId && x.TenantId == tenantId && x.WorkflowStatus == workflowStatus).ListAsync();
|
||||
}
|
||||
|
||||
public static Task<IEnumerable<WorkflowInstance>> ListByDefinitionAndStatusAsync(
|
||||
this IWorkflowInstanceManager manager,
|
||||
string workflowDefinitionId,
|
||||
WorkflowStatus workflowStatus,
|
||||
CancellationToken cancellationToken = default) =>
|
||||
manager.ListByDefinitionAndStatusAsync(workflowDefinitionId, default, workflowStatus, cancellationToken);
|
||||
|
||||
public static Task<IEnumerable<WorkflowInstance>> ListByDefinitionAsync(
|
||||
this IWorkflowInstanceManager manager,
|
||||
string workflowDefinitionId,
|
||||
string? tenantId,
|
||||
CancellationToken cancellationToken = default)
|
||||
{
|
||||
return manager.Query<WorkflowInstanceIndex>(x => x.WorkflowDefinitionId == workflowDefinitionId && x.TenantId == tenantId).ListAsync();
|
||||
}
|
||||
|
||||
public static Task<IEnumerable<WorkflowInstance>> ListByDefinitionAsync(
|
||||
this IWorkflowInstanceManager manager,
|
||||
string workflowDefinitionId,
|
||||
CancellationToken cancellationToken = default) =>
|
||||
manager.ListByDefinitionAsync(workflowDefinitionId, default, cancellationToken);
|
||||
}
|
||||
}
|
||||
|
|
@ -2,7 +2,7 @@ using System.Threading;
|
|||
using System.Threading.Tasks;
|
||||
using Elsa.Events;
|
||||
using Elsa.Models;
|
||||
using Elsa.Services;
|
||||
using Elsa.Repositories;
|
||||
using Elsa.Services.Models;
|
||||
using MediatR;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
|
@ -15,12 +15,12 @@ namespace Elsa.Handlers
|
|||
INotificationHandler<ActivityExecuted>,
|
||||
INotificationHandler<WorkflowCompleted>
|
||||
{
|
||||
private readonly IWorkflowInstanceManager _workflowInstanceManager;
|
||||
private readonly IWorkflowInstanceRepository _workflowInstanceManager;
|
||||
private readonly ILogger _logger;
|
||||
|
||||
public PersistWorkflow(IWorkflowInstanceManager workflowInstanceManager, ILogger<PersistWorkflow> logger)
|
||||
public PersistWorkflow(IWorkflowInstanceRepository workflowInstanceRepository, ILogger<PersistWorkflow> logger)
|
||||
{
|
||||
_workflowInstanceManager = workflowInstanceManager;
|
||||
_workflowInstanceManager = workflowInstanceRepository;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,44 +0,0 @@
|
|||
using System;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Elsa.Data;
|
||||
using Elsa.Events;
|
||||
using Elsa.Models;
|
||||
using MediatR;
|
||||
using YesSql;
|
||||
using YesSql.Indexes;
|
||||
|
||||
namespace Elsa.Services
|
||||
{
|
||||
public class WorkflowInstanceManager : IWorkflowInstanceManager
|
||||
{
|
||||
private readonly ISession _session;
|
||||
private readonly IMediator _mediator;
|
||||
|
||||
public WorkflowInstanceManager(ISession session, IMediator mediator)
|
||||
{
|
||||
_session = session;
|
||||
_mediator = mediator;
|
||||
}
|
||||
|
||||
public async ValueTask SaveAsync(WorkflowInstance workflowInstance, CancellationToken cancellationToken = default)
|
||||
{
|
||||
_session.Save(workflowInstance, CollectionNames.WorkflowInstances);
|
||||
await _session.CommitAsync();
|
||||
await _mediator.Publish(new WorkflowInstanceSaved(workflowInstance), cancellationToken);
|
||||
}
|
||||
|
||||
public async ValueTask DeleteAsync(WorkflowInstance workflowInstance, CancellationToken cancellationToken = default)
|
||||
{
|
||||
_session.Delete(workflowInstance, CollectionNames.WorkflowInstances);
|
||||
await _session.CommitAsync();
|
||||
await _mediator.Publish(new WorkflowInstanceDeleted(workflowInstance), cancellationToken);
|
||||
}
|
||||
|
||||
public IQuery<WorkflowInstance> Query() => _session.Query<WorkflowInstance>(CollectionNames.WorkflowInstances);
|
||||
public IQuery<WorkflowInstance, TIndex> Query<TIndex>() where TIndex : class, IIndex => _session.Query<WorkflowInstance, TIndex>(CollectionNames.WorkflowInstances);
|
||||
public IQuery<WorkflowInstance, TIndex> Query<TIndex>(Expression<Func<TIndex, bool>> predicate) where TIndex : class, IIndex => _session.Query<WorkflowInstance, TIndex>(predicate, CollectionNames.WorkflowInstances);
|
||||
public IQuery<WorkflowInstance> ExecuteQuery(ICompiledQuery<WorkflowInstance> query) => _session.ExecuteQuery(query, CollectionNames.WorkflowInstances);
|
||||
}
|
||||
}
|
||||
|
|
@ -2,18 +2,19 @@ using System.Threading;
|
|||
using System.Threading.Tasks;
|
||||
using Elsa.Extensions;
|
||||
using Elsa.Models;
|
||||
using Elsa.Repositories;
|
||||
|
||||
namespace Elsa.Services
|
||||
{
|
||||
public class WorkflowPublisher : IWorkflowPublisher
|
||||
{
|
||||
private readonly IWorkflowDefinitionManager _workflowDefinitionManager;
|
||||
private readonly IWorkflowDefinitionRepository _workflowDefinitionRepository;
|
||||
private readonly IIdGenerator _idGenerator;
|
||||
private readonly ICloner _cloner;
|
||||
|
||||
public WorkflowPublisher(IWorkflowDefinitionManager workflowDefinitionManager, IIdGenerator idGenerator, ICloner cloner)
|
||||
public WorkflowPublisher(IWorkflowDefinitionRepository workflowDefinitionRepository, IIdGenerator idGenerator, ICloner cloner)
|
||||
{
|
||||
_workflowDefinitionManager = workflowDefinitionManager;
|
||||
_workflowDefinitionRepository = workflowDefinitionRepository;
|
||||
_idGenerator = idGenerator;
|
||||
_cloner = cloner;
|
||||
}
|
||||
|
|
@ -39,7 +40,7 @@ namespace Elsa.Services
|
|||
string workflowDefinitionId,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
var definition = await _workflowDefinitionManager.GetAsync(
|
||||
var definition = await _workflowDefinitionRepository.GetAsync(
|
||||
workflowDefinitionId,
|
||||
VersionOptions.Latest,
|
||||
cancellationToken);
|
||||
|
|
@ -52,7 +53,7 @@ namespace Elsa.Services
|
|||
|
||||
public async Task<WorkflowDefinition> PublishAsync(WorkflowDefinition workflowDefinition, CancellationToken cancellationToken)
|
||||
{
|
||||
var publishedDefinition = await _workflowDefinitionManager.GetAsync(
|
||||
var publishedDefinition = await _workflowDefinitionRepository.GetAsync(
|
||||
workflowDefinition.WorkflowDefinitionId,
|
||||
VersionOptions.Published,
|
||||
cancellationToken);
|
||||
|
|
@ -61,7 +62,7 @@ namespace Elsa.Services
|
|||
{
|
||||
publishedDefinition.IsPublished = false;
|
||||
publishedDefinition.IsLatest = false;
|
||||
await _workflowDefinitionManager.SaveAsync(publishedDefinition, cancellationToken);
|
||||
await _workflowDefinitionRepository.SaveAsync(publishedDefinition, cancellationToken);
|
||||
}
|
||||
|
||||
if (workflowDefinition.IsPublished)
|
||||
|
|
@ -76,14 +77,14 @@ namespace Elsa.Services
|
|||
workflowDefinition.IsLatest = true;
|
||||
workflowDefinition = Initialize(workflowDefinition);
|
||||
|
||||
await _workflowDefinitionManager.SaveAsync(workflowDefinition, cancellationToken);
|
||||
await _workflowDefinitionRepository.SaveAsync(workflowDefinition, cancellationToken);
|
||||
|
||||
return workflowDefinition;
|
||||
}
|
||||
|
||||
public async Task<WorkflowDefinition?> GetDraftAsync(string workflowDefinitionId, CancellationToken cancellationToken)
|
||||
{
|
||||
var definition = await _workflowDefinitionManager.GetAsync(
|
||||
var definition = await _workflowDefinitionRepository.GetAsync(
|
||||
workflowDefinitionId,
|
||||
VersionOptions.Latest,
|
||||
cancellationToken);
|
||||
|
|
@ -108,7 +109,7 @@ namespace Elsa.Services
|
|||
{
|
||||
var draft = workflowDefinition;
|
||||
|
||||
var latestVersion = await _workflowDefinitionManager.GetAsync(
|
||||
var latestVersion = await _workflowDefinitionRepository.GetAsync(
|
||||
workflowDefinition.WorkflowDefinitionId,
|
||||
VersionOptions.Latest,
|
||||
cancellationToken);
|
||||
|
|
@ -117,14 +118,14 @@ namespace Elsa.Services
|
|||
{
|
||||
latestVersion.IsLatest = false;
|
||||
|
||||
await _workflowDefinitionManager.SaveAsync(latestVersion, cancellationToken);
|
||||
await _workflowDefinitionRepository.SaveAsync(latestVersion, cancellationToken);
|
||||
}
|
||||
|
||||
draft.IsLatest = true;
|
||||
draft.IsPublished = false;
|
||||
draft = Initialize(draft);
|
||||
|
||||
await _workflowDefinitionManager.SaveAsync(draft, cancellationToken);
|
||||
await _workflowDefinitionRepository.SaveAsync(draft, cancellationToken);
|
||||
|
||||
return draft;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ using Elsa.ActivityResults;
|
|||
using Elsa.Builders;
|
||||
using Elsa.Events;
|
||||
using Elsa.Exceptions;
|
||||
using Elsa.Extensions;
|
||||
using Elsa.Models;
|
||||
using Elsa.Repositories;
|
||||
using Elsa.Services.Models;
|
||||
using Elsa.Triggers;
|
||||
using MediatR;
|
||||
|
|
@ -28,7 +28,7 @@ namespace Elsa.Services
|
|||
private readonly IWorkflowRegistry _workflowRegistry;
|
||||
private readonly IWorkflowFactory _workflowFactory;
|
||||
private readonly IWorkflowSelector _workflowSelector;
|
||||
private readonly IWorkflowInstanceManager _workflowInstanceManager;
|
||||
private readonly IWorkflowInstanceRepository _workflowInstanceManager;
|
||||
private readonly Func<IWorkflowBuilder> _workflowBuilderFactory;
|
||||
private readonly IWorkflowContextManager _workflowContextManager;
|
||||
private readonly IMediator _mediator;
|
||||
|
|
@ -43,7 +43,7 @@ namespace Elsa.Services
|
|||
IWorkflowContextManager workflowContextManager,
|
||||
IMediator mediator,
|
||||
IServiceProvider serviceProvider,
|
||||
ILogger<WorkflowRunner> logger, IWorkflowInstanceManager workflowInstanceManager)
|
||||
ILogger<WorkflowRunner> logger, IWorkflowInstanceRepository workflowInstanceRepository)
|
||||
{
|
||||
_workflowRegistry = workflowRegistry;
|
||||
_workflowFactory = workflowFactory;
|
||||
|
|
@ -52,7 +52,7 @@ namespace Elsa.Services
|
|||
_mediator = mediator;
|
||||
_serviceProvider = serviceProvider;
|
||||
_logger = logger;
|
||||
_workflowInstanceManager = workflowInstanceManager;
|
||||
_workflowInstanceManager = workflowInstanceRepository;
|
||||
_workflowSelector = workflowSelector;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
// public class WorkflowScheduler : IWorkflowScheduler, INotificationHandler<WorkflowCompleted>
|
||||
// {
|
||||
// private readonly ICommandSender _commandSender;
|
||||
// private readonly IWorkflowInstanceManager _workflowInstanceManager;
|
||||
// private readonly IWorkflowInstanceRepository _workflowInstanceManager;
|
||||
// private readonly IWorkflowFactory _workflowFactory;
|
||||
// private readonly IWorkflowSelector _workflowSelector;
|
||||
// private readonly IWorkflowRegistry _workflowRegistry;
|
||||
|
|
@ -28,14 +28,14 @@
|
|||
//
|
||||
// public WorkflowScheduler(
|
||||
// ICommandSender commandSender,
|
||||
// IWorkflowInstanceManager workflowInstanceManager,
|
||||
// IWorkflowInstanceRepository workflowInstanceRepository,
|
||||
// IWorkflowFactory workflowFactory,
|
||||
// IWorkflowSelector workflowSelector,
|
||||
// IWorkflowRegistry workflowRegistry,
|
||||
// IWorkflowSchedulerQueue queue)
|
||||
// {
|
||||
// _commandSender = commandSender;
|
||||
// _workflowInstanceManager = workflowInstanceManager;
|
||||
// _workflowInstanceManager = workflowInstanceRepository;
|
||||
// _workflowFactory = workflowFactory;
|
||||
// _workflowSelector = workflowSelector;
|
||||
// _workflowRegistry = workflowRegistry;
|
||||
|
|
|
|||
|
|
@ -1,11 +1,12 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Elsa.Exceptions;
|
||||
using Elsa.Extensions;
|
||||
|
||||
using Elsa.Models;
|
||||
using Elsa.Repositories;
|
||||
using Elsa.Services.Models;
|
||||
|
||||
namespace Elsa.Services
|
||||
|
|
@ -14,13 +15,13 @@ namespace Elsa.Services
|
|||
{
|
||||
private readonly IWorkflowRunner _workflowRunner;
|
||||
private readonly IWorkflowRegistry _workflowRegistry;
|
||||
private readonly IWorkflowInstanceManager _workflowInstanceManager;
|
||||
private readonly IWorkflowInstanceRepository _workflowInstanceManager;
|
||||
|
||||
public WorkflowTriggerInterruptor(IWorkflowRunner workflowRunner, IWorkflowRegistry workflowRegistry, IWorkflowInstanceManager workflowInstanceManager)
|
||||
public WorkflowTriggerInterruptor(IWorkflowRunner workflowRunner, IWorkflowRegistry workflowRegistry, IWorkflowInstanceRepository workflowInstanceRepository)
|
||||
{
|
||||
_workflowRunner = workflowRunner;
|
||||
_workflowRegistry = workflowRegistry;
|
||||
_workflowInstanceManager = workflowInstanceManager;
|
||||
_workflowInstanceManager = workflowInstanceRepository;
|
||||
}
|
||||
|
||||
public async Task<WorkflowInstance> InterruptActivityAsync(WorkflowInstance workflowInstance, string activityId, object? input, CancellationToken cancellationToken)
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ using System.Threading.Tasks;
|
|||
using Elsa.DistributedLock;
|
||||
using Elsa.Extensions;
|
||||
using Elsa.Models;
|
||||
using Elsa.Repositories;
|
||||
using Elsa.Services;
|
||||
|
||||
namespace Elsa.StartupTasks
|
||||
|
|
@ -13,16 +14,16 @@ namespace Elsa.StartupTasks
|
|||
/// </summary>
|
||||
public class ResumeRunningWorkflowsTask : IStartupTask
|
||||
{
|
||||
private readonly IWorkflowInstanceManager _workflowInstanceManager;
|
||||
private readonly IWorkflowInstanceRepository _workflowInstanceManager;
|
||||
private readonly IWorkflowRunner _workflowScheduler;
|
||||
private readonly IDistributedLockProvider _distributedLockProvider;
|
||||
|
||||
public ResumeRunningWorkflowsTask(
|
||||
IWorkflowInstanceManager workflowInstanceManager,
|
||||
IWorkflowInstanceRepository workflowInstanceRepository,
|
||||
IWorkflowRunner workflowScheduler,
|
||||
IDistributedLockProvider distributedLockProvider)
|
||||
{
|
||||
_workflowInstanceManager = workflowInstanceManager;
|
||||
_workflowInstanceManager = workflowInstanceRepository;
|
||||
_workflowScheduler = workflowScheduler;
|
||||
_distributedLockProvider = distributedLockProvider;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Elsa.Extensions;
|
||||
using Elsa.Models;
|
||||
using Elsa.Repositories;
|
||||
using Elsa.Services;
|
||||
using Elsa.Services.Models;
|
||||
using Microsoft.Extensions.Caching.Memory;
|
||||
|
|
@ -18,7 +18,7 @@ namespace Elsa.Triggers
|
|||
private const string CacheKey = "WorkflowSelector:Triggers";
|
||||
private readonly IWorkflowRegistry _workflowRegistry;
|
||||
private readonly IWorkflowFactory _workflowFactory;
|
||||
private readonly IWorkflowInstanceManager _workflowInstanceManager;
|
||||
private readonly IWorkflowInstanceRepository _workflowInstanceManager;
|
||||
private readonly IWorkflowContextManager _workflowContextManager;
|
||||
private readonly IEnumerable<ITriggerProvider> _triggerProviders;
|
||||
private readonly IMemoryCache _memoryCache;
|
||||
|
|
@ -28,7 +28,7 @@ namespace Elsa.Triggers
|
|||
public WorkflowSelector(
|
||||
IWorkflowRegistry workflowRegistry,
|
||||
IWorkflowFactory workflowFactory,
|
||||
IWorkflowInstanceManager workflowInstanceManager,
|
||||
IWorkflowInstanceRepository workflowInstanceRepository,
|
||||
IWorkflowContextManager workflowContextManager,
|
||||
IEnumerable<ITriggerProvider> triggerProviders,
|
||||
IMemoryCache memoryCache,
|
||||
|
|
@ -36,7 +36,7 @@ namespace Elsa.Triggers
|
|||
{
|
||||
_workflowRegistry = workflowRegistry;
|
||||
_workflowFactory = workflowFactory;
|
||||
_workflowInstanceManager = workflowInstanceManager;
|
||||
_workflowInstanceManager = workflowInstanceRepository;
|
||||
_workflowContextManager = workflowContextManager;
|
||||
_triggerProviders = triggerProviders;
|
||||
_memoryCache = memoryCache;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using Elsa.Repositories;
|
||||
using Elsa.Services;
|
||||
using Elsa.Services.Models;
|
||||
|
||||
|
|
@ -12,18 +14,18 @@ namespace Elsa.WorkflowProviders
|
|||
/// </summary>
|
||||
public class DatabaseWorkflowProvider : WorkflowProvider
|
||||
{
|
||||
private readonly IWorkflowDefinitionManager _workflowDefinitionManager;
|
||||
private readonly IWorkflowDefinitionRepository _workflowDefinitionRepository;
|
||||
private readonly IWorkflowBlueprintMaterializer _workflowBlueprintMaterializer;
|
||||
|
||||
public DatabaseWorkflowProvider(IWorkflowDefinitionManager workflowDefinitionManager, IWorkflowBlueprintMaterializer workflowBlueprintMaterializer)
|
||||
public DatabaseWorkflowProvider(IWorkflowDefinitionRepository workflowDefinitionRepository, IWorkflowBlueprintMaterializer workflowBlueprintMaterializer)
|
||||
{
|
||||
_workflowDefinitionManager = workflowDefinitionManager;
|
||||
_workflowDefinitionRepository = workflowDefinitionRepository;
|
||||
_workflowBlueprintMaterializer = workflowBlueprintMaterializer;
|
||||
}
|
||||
|
||||
protected override async ValueTask<IEnumerable<IWorkflowBlueprint>> OnGetWorkflowsAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
var workflowDefinitions = await _workflowDefinitionManager.ListAsync(cancellationToken: cancellationToken);
|
||||
var workflowDefinitions = await _workflowDefinitionRepository.ListAsync(cancellationToken: cancellationToken);
|
||||
return workflowDefinitions.Select(_workflowBlueprintMaterializer.CreateWorkflowBlueprint);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,33 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<LangVersion>latest</LangVersion>
|
||||
<RootNamespace>Elsa.Persistence.InMemory</RootNamespace>
|
||||
<PackageVersion>1.0.0</PackageVersion>
|
||||
<Authors>Elsa Contributors</Authors>
|
||||
<Description>
|
||||
Elsa is a set of workflow libraries and tools that enable super-fast workflowing capabilities in any .NET Core application.
|
||||
This package provides a InMemory persistence provider.
|
||||
</Description>
|
||||
<Copyright>2020</Copyright>
|
||||
<PackageProjectUrl>https://github.com/elsa-workflows/elsa-core</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/elsa-workflows/elsa-core</RepositoryUrl>
|
||||
<RepositoryType>GitHub</RepositoryType>
|
||||
<PackageTags>elsa, workflows, orchard</PackageTags>
|
||||
<PackageIcon>icon.png</PackageIcon>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="icon.png">
|
||||
<Pack>True</Pack>
|
||||
<PackagePath />
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\core\Elsa.Core\Elsa.Core.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
using Elsa.Repositories;
|
||||
using Elsa.WorkflowProviders;
|
||||
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
namespace Elsa.Persistence.InMemory
|
||||
{
|
||||
public static class IServiceCollectionExtensions
|
||||
{
|
||||
public static IServiceCollection AddElsaPersistenceInMemory(this IServiceCollection services)
|
||||
{
|
||||
// Scoped, because IMediator is registered as Scoped and IIdGenerator could also be registered as Scoped
|
||||
services.AddScoped<IWorkflowDefinitionRepository, InMemoryWorkflowDefinitionRepository>()
|
||||
.AddScoped<IWorkflowInstanceRepository, InMemoryWorkflowInstanceRepository>()
|
||||
.AddWorkflowProvider<DatabaseWorkflowProvider>();
|
||||
|
||||
return services;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using Elsa.Models;
|
||||
using Elsa.Repositories;
|
||||
using Elsa.Services;
|
||||
|
||||
namespace Elsa.Persistence.InMemory
|
||||
{
|
||||
public class InMemoryWorkflowDefinitionRepository : IWorkflowDefinitionRepository
|
||||
{
|
||||
private static readonly List<WorkflowDefinition> _definitions = new List<WorkflowDefinition>();
|
||||
private readonly IIdGenerator _idGenerator;
|
||||
|
||||
public InMemoryWorkflowDefinitionRepository(IIdGenerator idGenerator)
|
||||
{
|
||||
_idGenerator = idGenerator;
|
||||
}
|
||||
|
||||
public Task<int> CountAsync(VersionOptions? version = null, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return Task.FromResult(_definitions.WithVersion(version).Count());
|
||||
}
|
||||
|
||||
public Task DeleteAsync(WorkflowDefinition workflowDefinition, CancellationToken cancellationToken = default)
|
||||
{
|
||||
_definitions.Remove(workflowDefinition);
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
public Task<WorkflowDefinition> GetAsync(string workflowDefinitionId, VersionOptions version, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return Task.FromResult(_definitions.WithVersion(version).Where(x => x.WorkflowDefinitionId == workflowDefinitionId).FirstOrDefault());
|
||||
}
|
||||
|
||||
public Task<WorkflowDefinition> GetByVersionIdAsync(string workflowDefinitionVersionId, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return Task.FromResult(_definitions.Where(x => x.WorkflowDefinitionVersionId == workflowDefinitionVersionId).FirstOrDefault());
|
||||
}
|
||||
|
||||
public WorkflowDefinition Initialize(WorkflowDefinition workflowDefinition)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(workflowDefinition.WorkflowDefinitionId))
|
||||
workflowDefinition.WorkflowDefinitionId = _idGenerator.Generate();
|
||||
|
||||
if (workflowDefinition.Version == 0)
|
||||
workflowDefinition.Version = 1;
|
||||
|
||||
if (string.IsNullOrWhiteSpace(workflowDefinition.WorkflowDefinitionVersionId))
|
||||
workflowDefinition.WorkflowDefinitionVersionId = _idGenerator.Generate();
|
||||
|
||||
return workflowDefinition;
|
||||
}
|
||||
|
||||
public Task<IEnumerable<WorkflowDefinition>> ListAsync(int? skip = null, int? take = null, VersionOptions? version = null, CancellationToken cancellationToken = default)
|
||||
{
|
||||
var query = _definitions.WithVersion();
|
||||
|
||||
if(skip.HasValue)
|
||||
{
|
||||
query = query.Skip(skip.Value);
|
||||
}
|
||||
|
||||
if(take.HasValue)
|
||||
{
|
||||
query = query.Take(take.Value);
|
||||
}
|
||||
|
||||
return Task.FromResult(query);
|
||||
}
|
||||
|
||||
public Task SaveAsync(WorkflowDefinition workflowDefinition, CancellationToken cancellationToken = default)
|
||||
{
|
||||
workflowDefinition = Initialize(workflowDefinition);
|
||||
_definitions.Add(workflowDefinition);
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,111 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using Elsa.Events;
|
||||
using Elsa.Models;
|
||||
using Elsa.Repositories;
|
||||
|
||||
using MediatR;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace Elsa.Persistence.InMemory
|
||||
{
|
||||
public class InMemoryWorkflowInstanceRepository : IWorkflowInstanceRepository
|
||||
{
|
||||
private static readonly List<WorkflowInstance> _instances = new List<WorkflowInstance>();
|
||||
private readonly IMediator _mediator;
|
||||
|
||||
public InMemoryWorkflowInstanceRepository(IMediator mediator)
|
||||
{
|
||||
_mediator = mediator;
|
||||
}
|
||||
|
||||
public Task<int> CountAsync(CancellationToken cancellationToken = default)
|
||||
{
|
||||
return Task.FromResult(_instances.Count());
|
||||
}
|
||||
|
||||
public async Task DeleteAsync(WorkflowInstance workflowInstance, CancellationToken cancellationToken = default)
|
||||
{
|
||||
_instances.Remove(workflowInstance);
|
||||
await _mediator.Publish(new WorkflowInstanceDeleted(workflowInstance), cancellationToken);
|
||||
}
|
||||
|
||||
public Task<WorkflowInstance> GetByCorrelationIdAsync(string correlationId, WorkflowStatus status, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return Task.FromResult(_instances.FirstOrDefault(instance => instance.CorrelationId == correlationId && instance.Status == status));
|
||||
}
|
||||
|
||||
public Task<WorkflowInstance> GetByIdAsync(string workflowInstanceId, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return Task.FromResult(_instances
|
||||
.FirstOrDefault(instance => instance.WorkflowInstanceId == workflowInstanceId));
|
||||
}
|
||||
|
||||
public Task<bool> IsWorkflowIsAlreadyExecutingAsync(string tenantId, string workflowDefinitionId, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return Task.FromResult<bool>(_instances
|
||||
.Any(instance => instance.WorkflowDefinitionId == workflowDefinitionId
|
||||
&& (instance.Status == WorkflowStatus.Running || instance.Status == WorkflowStatus.Suspended)
|
||||
&& instance.TenantId == tenantId));
|
||||
}
|
||||
|
||||
public Task<IEnumerable<WorkflowInstance>> ListAsync(int page, int pageSize, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return Task.FromResult(_instances.Skip(page * pageSize).Take(pageSize));
|
||||
}
|
||||
|
||||
public Task<IEnumerable<WorkflowInstance>> ListByBlockingActivityTypeAsync(string activityType, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return Task.FromResult(_instances
|
||||
.Where(instance => instance.BlockingActivities.Any(a => a.ActivityType == activityType)));
|
||||
}
|
||||
|
||||
public Task<IEnumerable<WorkflowInstance>> ListByCorrelationIdAsync(string correlationId, WorkflowStatus status, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return Task.FromResult(_instances.Where(instance => instance.CorrelationId == correlationId && instance.Status == status));
|
||||
}
|
||||
|
||||
public Task<IEnumerable<WorkflowInstance>> ListByDefinitionAndStatusAsync(string workflowDefinitionId, string tenantId, WorkflowStatus workflowStatus, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return Task.FromResult(_instances
|
||||
.Where(instance => instance.WorkflowDefinitionId == workflowDefinitionId && instance.Status == workflowStatus
|
||||
&& instance.TenantId == tenantId));
|
||||
}
|
||||
|
||||
public Task<IEnumerable<WorkflowInstance>> ListByDefinitionAsync(string workflowDefinitionId, string tenantId, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return Task.FromResult(_instances.Where(x => x.WorkflowDefinitionId == workflowDefinitionId && x.TenantId == tenantId));
|
||||
}
|
||||
|
||||
public Task<IEnumerable<WorkflowInstance>> ListByStatusAsync(WorkflowStatus workflowStatus, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return Task.FromResult(_instances.Where(instance => instance.Status == workflowStatus));
|
||||
}
|
||||
|
||||
public async Task SaveAsync(WorkflowInstance workflowInstance, CancellationToken cancellationToken = default)
|
||||
{
|
||||
if (workflowInstance.Id == 0)
|
||||
{
|
||||
workflowInstance.Id = workflowInstance.WorkflowInstanceId.GetHashCode();
|
||||
_instances.Add(workflowInstance);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (var i = 0; i < _instances.Count; i++)
|
||||
{
|
||||
if (workflowInstance.WorkflowInstanceId == _instances[i].WorkflowInstanceId)
|
||||
{
|
||||
_instances[i] = workflowInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
await _mediator.Publish(new WorkflowInstanceSaved(workflowInstance), cancellationToken);
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
src/persistence/Elsa.Persistence.InMemory/icon.png
Normal file
BIN
src/persistence/Elsa.Persistence.InMemory/icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.6 KiB |
|
|
@ -0,0 +1,37 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<LangVersion>latest</LangVersion>
|
||||
<RootNamespace>Elsa.Persistence.MongoDb</RootNamespace>
|
||||
<PackageVersion>1.0.0</PackageVersion>
|
||||
<Authors>Elsa Contributors</Authors>
|
||||
<Description>
|
||||
Elsa is a set of workflow libraries and tools that enable super-fast workflowing capabilities in any .NET Core application.
|
||||
This package provides a MongoDb persistence provider.
|
||||
</Description>
|
||||
<Copyright>2020</Copyright>
|
||||
<PackageProjectUrl>https://github.com/elsa-workflows/elsa-core</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/elsa-workflows/elsa-core</RepositoryUrl>
|
||||
<RepositoryType>GitHub</RepositoryType>
|
||||
<PackageTags>elsa, workflows, orchard</PackageTags>
|
||||
<PackageIcon>icon.png</PackageIcon>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="icon.png">
|
||||
<Pack>True</Pack>
|
||||
<PackagePath />
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="MongoDB.Driver" Version="2.11.5" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\core\Elsa.Core\Elsa.Core.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
using Elsa.Data;
|
||||
using Elsa.Models;
|
||||
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
using MongoDB.Driver;
|
||||
|
||||
namespace Elsa.Persistence.MongoDb
|
||||
{
|
||||
public class ElsaMongoDbClient
|
||||
{
|
||||
private readonly MongoClient _mongoClient;
|
||||
private readonly IMongoDatabase _mongoDatabase;
|
||||
|
||||
public ElsaMongoDbClient(IOptions<ElsaMongoDbOptions> options)
|
||||
{
|
||||
_mongoClient = new MongoClient(options.Value.ConnectionString);
|
||||
_mongoDatabase = _mongoClient.GetDatabase(options.Value.Db);
|
||||
}
|
||||
|
||||
public IMongoCollection<WorkflowDefinition> WorkflowDefinitions => _mongoDatabase.GetCollection<WorkflowDefinition>(CollectionNames.WorkflowDefinitions);
|
||||
public IMongoCollection<WorkflowInstance> WorkflowInstances => _mongoDatabase.GetCollection<WorkflowInstance>(CollectionNames.WorkflowInstances);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Elsa.Persistence.MongoDb
|
||||
{
|
||||
public class ElsaMongoDbOptions
|
||||
{
|
||||
public string? ConnectionString { get; set; }
|
||||
public string? Db { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
using System;
|
||||
|
||||
using Elsa.Persistence.MongoDb.Services;
|
||||
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
using Microsoft.Extensions.Configuration;
|
||||
|
||||
using Elsa.Repositories;
|
||||
using Elsa.Runtime;
|
||||
using Elsa.WorkflowProviders;
|
||||
using Elsa.Models;
|
||||
using MongoDB.Driver;
|
||||
|
||||
namespace Elsa.Persistence.MongoDb
|
||||
{
|
||||
public static class IServiceCollectionExtensions
|
||||
{
|
||||
|
||||
public static IServiceCollection AddElsaPersistenceMongoDb(this IServiceCollection services, Action<ElsaMongoDbOptions> configureOptions)
|
||||
{
|
||||
AddCore(services);
|
||||
services.Configure<ElsaMongoDbOptions>(configureOptions);
|
||||
|
||||
return services;
|
||||
}
|
||||
|
||||
public static IServiceCollection AddElsaPersistenceMongoDb(this IServiceCollection services, IConfiguration options)
|
||||
{
|
||||
AddCore(services);
|
||||
services.Configure<ElsaMongoDbOptions>(options);
|
||||
return services;
|
||||
}
|
||||
|
||||
private static void AddCore(IServiceCollection services)
|
||||
{
|
||||
services.AddScoped<IWorkflowDefinitionRepository, MongoDbWorkflowDefinitionRepository>()
|
||||
.AddScoped<IWorkflowInstanceRepository, MongoDbWorkflowInstanceRepository>()
|
||||
.AddScoped<ElsaMongoDbClient>()
|
||||
.AddScoped<IMongoCollection<WorkflowDefinition>>(services => services.GetRequiredService<ElsaMongoDbClient>().WorkflowDefinitions)
|
||||
.AddScoped<IMongoCollection<WorkflowInstance>>(services => services.GetRequiredService<ElsaMongoDbClient>().WorkflowInstances)
|
||||
.AddWorkflowProvider<DatabaseWorkflowProvider>()
|
||||
.AddStartupTask<DatabaseInitializer>();
|
||||
|
||||
DatabaseRegister.RegisterMapsAndSerializers();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,104 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using Elsa.Models;
|
||||
using Elsa.Repositories;
|
||||
using Elsa.Services;
|
||||
|
||||
using MongoDB.Driver;
|
||||
using MongoDB.Driver.Linq;
|
||||
|
||||
namespace Elsa.Persistence.MongoDb
|
||||
{
|
||||
public class MongoDbWorkflowDefinitionRepository : IWorkflowDefinitionRepository
|
||||
{
|
||||
private readonly IMongoCollection<WorkflowDefinition> _workflowDefinitions;
|
||||
private readonly IIdGenerator _idGenerator;
|
||||
|
||||
|
||||
public MongoDbWorkflowDefinitionRepository(IMongoCollection<WorkflowDefinition> workflowDefinitions, IIdGenerator idGenerator)
|
||||
{
|
||||
_workflowDefinitions = workflowDefinitions;
|
||||
_idGenerator = idGenerator;
|
||||
}
|
||||
|
||||
public async Task<int> CountAsync(VersionOptions? version = null, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return await ((IMongoQueryable<WorkflowDefinition>)_workflowDefinitions.AsQueryable().WithVersion(version)).CountAsync();
|
||||
}
|
||||
|
||||
public async Task DeleteAsync(WorkflowDefinition workflowDefinition, CancellationToken cancellationToken = default)
|
||||
{
|
||||
var filter = GetFilterWorkflowDefinitionId(workflowDefinition.Id);
|
||||
await _workflowDefinitions.DeleteOneAsync(filter);
|
||||
}
|
||||
|
||||
public async Task<WorkflowDefinition> GetAsync(string workflowDefinitionId, VersionOptions versionOptions, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return await((IMongoQueryable<WorkflowDefinition>)_workflowDefinitions
|
||||
.AsQueryable()
|
||||
.Where(x => x.WorkflowDefinitionId == workflowDefinitionId)
|
||||
.WithVersion(versionOptions)).FirstOrDefaultAsync();
|
||||
}
|
||||
|
||||
public async Task<WorkflowDefinition> GetByVersionIdAsync(string workflowDefinitionVersionId, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return await((IMongoQueryable<WorkflowDefinition>)_workflowDefinitions
|
||||
.AsQueryable()
|
||||
.Where(x => x.WorkflowDefinitionVersionId == workflowDefinitionVersionId)).FirstOrDefaultAsync();
|
||||
}
|
||||
|
||||
public WorkflowDefinition Initialize(WorkflowDefinition workflowDefinition)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(workflowDefinition.WorkflowDefinitionId))
|
||||
workflowDefinition.WorkflowDefinitionId = _idGenerator.Generate();
|
||||
|
||||
if (workflowDefinition.Version == 0)
|
||||
workflowDefinition.Version = 1;
|
||||
|
||||
if (string.IsNullOrWhiteSpace(workflowDefinition.WorkflowDefinitionVersionId))
|
||||
workflowDefinition.WorkflowDefinitionVersionId = _idGenerator.Generate();
|
||||
|
||||
return workflowDefinition;
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<WorkflowDefinition>> ListAsync(int? skip = null, int? take = null, VersionOptions? version = null, CancellationToken cancellationToken = default)
|
||||
{
|
||||
var query = _workflowDefinitions
|
||||
.AsQueryable()
|
||||
.WithVersion(version);
|
||||
|
||||
if (skip != null)
|
||||
query = query.Skip(skip.Value);
|
||||
|
||||
if (take != null)
|
||||
query = query.Take(take.Value);
|
||||
|
||||
return await ((IMongoQueryable<WorkflowDefinition>)query).ToListAsync();
|
||||
}
|
||||
|
||||
public async Task SaveAsync(WorkflowDefinition workflowDefinition, CancellationToken cancellationToken = default)
|
||||
{
|
||||
if (workflowDefinition.Id == 0)
|
||||
{
|
||||
// If there is no instance yet, max throws an error
|
||||
if (await _workflowDefinitions.AsQueryable().AnyAsync())
|
||||
{
|
||||
workflowDefinition.Id = await _workflowDefinitions.AsQueryable().MaxAsync(x => x.Id) + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
workflowDefinition.Id = 1;
|
||||
}
|
||||
}
|
||||
|
||||
var filter = GetFilterWorkflowDefinitionId(workflowDefinition.Id);
|
||||
|
||||
await _workflowDefinitions.ReplaceOneAsync(filter, workflowDefinition, new ReplaceOptions { IsUpsert = true });
|
||||
}
|
||||
|
||||
private FilterDefinition<WorkflowDefinition> GetFilterWorkflowDefinitionId(int id) => Builders<WorkflowDefinition>.Filter.Where(x => x.Id == id);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,131 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using Elsa.Events;
|
||||
using Elsa.Models;
|
||||
using Elsa.Repositories;
|
||||
|
||||
using MediatR;
|
||||
|
||||
using MongoDB.Bson;
|
||||
using MongoDB.Driver;
|
||||
using MongoDB.Driver.Linq;
|
||||
|
||||
namespace Elsa.Persistence.MongoDb
|
||||
{
|
||||
public class MongoDbWorkflowInstanceRepository : IWorkflowInstanceRepository
|
||||
{
|
||||
private readonly IMongoCollection<WorkflowInstance> _workflowInstances;
|
||||
private readonly IMediator _mediator;
|
||||
|
||||
public MongoDbWorkflowInstanceRepository(IMediator mediator, IMongoCollection<WorkflowInstance> workflowInstances)
|
||||
{
|
||||
_mediator = mediator;
|
||||
_workflowInstances = workflowInstances;
|
||||
}
|
||||
|
||||
public async Task<int> CountAsync(CancellationToken cancellationToken = default)
|
||||
{
|
||||
var count = await _workflowInstances.CountDocumentsAsync(new BsonDocument());
|
||||
|
||||
return (int)count;
|
||||
}
|
||||
|
||||
public async Task DeleteAsync(WorkflowInstance workflowInstance, CancellationToken cancellationToken = default)
|
||||
{
|
||||
var filter = GetFilterWorkflowId(workflowInstance.Id);
|
||||
await _workflowInstances.DeleteOneAsync(filter);
|
||||
await _mediator.Publish(new WorkflowInstanceDeleted(workflowInstance), cancellationToken);
|
||||
}
|
||||
|
||||
public Task<WorkflowInstance?> GetByCorrelationIdAsync(string correlationId, WorkflowStatus status, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return _workflowInstances.AsQueryable()
|
||||
.FirstOrDefaultAsync(instance => instance.CorrelationId == correlationId && instance.Status == status);
|
||||
}
|
||||
|
||||
public async Task<WorkflowInstance> GetByIdAsync(string workflowInstanceId, CancellationToken cancellationToken = default)
|
||||
{
|
||||
|
||||
return await _workflowInstances
|
||||
.AsQueryable().FirstOrDefaultAsync(instance => instance.WorkflowInstanceId == workflowInstanceId);
|
||||
}
|
||||
|
||||
public Task<bool> IsWorkflowIsAlreadyExecutingAsync(string? tenantId, string workflowDefinitionId, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return _workflowInstances
|
||||
.AsQueryable().AnyAsync(instance => instance.WorkflowDefinitionId == workflowDefinitionId
|
||||
&& (instance.Status == WorkflowStatus.Running || instance.Status == WorkflowStatus.Suspended)
|
||||
&& instance.TenantId == tenantId);
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<WorkflowInstance>> ListAsync(int page, int pageSize, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return await _workflowInstances
|
||||
.AsQueryable().Skip(page * pageSize).Take(pageSize).ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<WorkflowInstance>> ListByBlockingActivityTypeAsync(string activityType, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return await _workflowInstances
|
||||
.AsQueryable().Where(instance => instance.BlockingActivities.Any(a => a.ActivityType == activityType)).ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<WorkflowInstance>> ListByCorrelationIdAsync(string correlationId, WorkflowStatus status, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return await _workflowInstances
|
||||
.AsQueryable()
|
||||
.Where(instance => instance.CorrelationId == correlationId && instance.Status == status).ToListAsync();
|
||||
}
|
||||
|
||||
public Task<IEnumerable<WorkflowInstance>> ListByDefinitionAndStatusAsync(string workflowDefinitionId, WorkflowStatus workflowStatus, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return ListByDefinitionAndStatusAsync(workflowDefinitionId, default, workflowStatus, cancellationToken);
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<WorkflowInstance>> ListByDefinitionAndStatusAsync(string workflowDefinitionId, string? tenantId, WorkflowStatus workflowStatus, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return await _workflowInstances
|
||||
.AsQueryable()
|
||||
.Where(instance => instance.WorkflowDefinitionId == workflowDefinitionId && instance.Status == workflowStatus
|
||||
&& instance.TenantId == tenantId).ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<WorkflowInstance>> ListByDefinitionAsync(string workflowDefinitionId, string? tenantId, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return await _workflowInstances
|
||||
.AsQueryable().Where(x => x.WorkflowDefinitionId == workflowDefinitionId && x.TenantId == tenantId).ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<WorkflowInstance>> ListByStatusAsync(WorkflowStatus workflowStatus, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return await _workflowInstances
|
||||
.AsQueryable()
|
||||
.Where(instance => instance.Status == workflowStatus).ToListAsync();
|
||||
}
|
||||
|
||||
public async Task SaveAsync(WorkflowInstance workflowInstance, CancellationToken cancellationToken = default)
|
||||
{
|
||||
if(workflowInstance.Id == 0)
|
||||
{
|
||||
// If there is no instance yet, max throws an error
|
||||
if (await _workflowInstances.AsQueryable().AnyAsync())
|
||||
{
|
||||
workflowInstance.Id = await _workflowInstances.AsQueryable().MaxAsync(x => x.Id) + 1;
|
||||
} else
|
||||
{
|
||||
workflowInstance.Id = 1;
|
||||
}
|
||||
}
|
||||
|
||||
var filter = GetFilterWorkflowId(workflowInstance.Id);
|
||||
|
||||
await _workflowInstances.ReplaceOneAsync(filter, workflowInstance, new ReplaceOptions { IsUpsert = true });
|
||||
await _mediator.Publish(new WorkflowInstanceSaved(workflowInstance), cancellationToken);
|
||||
}
|
||||
|
||||
private FilterDefinition<WorkflowInstance> GetFilterWorkflowId(int id) => Builders<WorkflowInstance>.Filter.Where(x => x.Id == id);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
using System;
|
||||
|
||||
using MongoDB.Bson.Serialization;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
||||
using NodaTime;
|
||||
using NodaTime.Serialization.JsonNet;
|
||||
|
||||
namespace Elsa.Persistence.MongoDb.Serializers
|
||||
{
|
||||
public class JsonSerializer : IBsonSerializer<JObject>
|
||||
{
|
||||
public static JsonSerializer Instance { get; } = new JsonSerializer();
|
||||
|
||||
private readonly JsonSerializerSettings serializerSettings = new JsonSerializerSettings
|
||||
{
|
||||
NullValueHandling = NullValueHandling.Ignore
|
||||
}.ConfigureForNodaTime(DateTimeZoneProviders.Tzdb);
|
||||
|
||||
public System.Type ValueType => typeof(JObject);
|
||||
|
||||
public void Serialize(BsonSerializationContext context, BsonSerializationArgs args, object value)
|
||||
{
|
||||
Serialize(context, args, (JObject)value);
|
||||
}
|
||||
|
||||
public void Serialize(BsonSerializationContext context, BsonSerializationArgs args, JObject value)
|
||||
{
|
||||
if ((value is JObject jObject) == false)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(value));
|
||||
}
|
||||
|
||||
var json = JsonConvert.SerializeObject(value, serializerSettings);
|
||||
context.Writer.WriteString(json);
|
||||
}
|
||||
|
||||
object IBsonSerializer.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
|
||||
{
|
||||
return Deserialize(context, args);
|
||||
}
|
||||
|
||||
public JObject Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
|
||||
{
|
||||
var jObjectStr = context.Reader.ReadString();
|
||||
|
||||
return JsonConvert.DeserializeObject<JObject>(jObjectStr, serializerSettings);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
using System;
|
||||
|
||||
using MongoDB.Bson;
|
||||
using MongoDB.Bson.Serialization;
|
||||
|
||||
using NodaTime.Text;
|
||||
|
||||
namespace Elsa.Persistence.MongoDb.Serializers
|
||||
{
|
||||
public class NodaTimeSerializer : IBsonSerializer<NodaTime.Instant>
|
||||
{
|
||||
public static NodaTimeSerializer Instance { get; } = new NodaTimeSerializer();
|
||||
|
||||
public Type ValueType => typeof(NodaTime.Instant);
|
||||
|
||||
object IBsonSerializer.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
|
||||
{
|
||||
return Deserialize(context, args);
|
||||
}
|
||||
|
||||
public void Serialize(BsonSerializationContext context, BsonSerializationArgs args, NodaTime.Instant value)
|
||||
{
|
||||
if (value == null)
|
||||
throw new ArgumentNullException(nameof(value));
|
||||
|
||||
context.Writer.WriteString(InstantPattern.CreateWithInvariantCulture("g").Format(value));
|
||||
}
|
||||
|
||||
public void Serialize(BsonSerializationContext context, BsonSerializationArgs args, object value)
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(value));
|
||||
}
|
||||
|
||||
Serialize(context, args, (NodaTime.Instant)value);
|
||||
}
|
||||
|
||||
public NodaTime.Instant Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
|
||||
{
|
||||
var bsonType = context.Reader.GetCurrentBsonType();
|
||||
|
||||
if (bsonType != BsonType.String)
|
||||
{
|
||||
throw new InvalidOperationException($"Cannot deserialize NodaTime.Instant from BsonType {bsonType}.");
|
||||
}
|
||||
|
||||
var nodaTimeString = context.Reader.ReadString();
|
||||
var parseResult = InstantPattern.CreateWithInvariantCulture("g").Parse(nodaTimeString);
|
||||
|
||||
if (!parseResult.Success)
|
||||
{
|
||||
throw parseResult.Exception;
|
||||
}
|
||||
|
||||
return parseResult.Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
using System;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using Elsa.Models;
|
||||
using Elsa.Persistence.MongoDb.Serializers;
|
||||
using Elsa.Services;
|
||||
|
||||
using MongoDB.Bson.Serialization;
|
||||
using MongoDB.Driver;
|
||||
|
||||
namespace Elsa.Persistence.MongoDb.Services
|
||||
{
|
||||
public class DatabaseInitializer : IStartupTask
|
||||
{
|
||||
private readonly ElsaMongoDbClient _workflowEngineMongoDbClient;
|
||||
|
||||
public DatabaseInitializer(ElsaMongoDbClient workflowEngineMongoDbClient)
|
||||
{
|
||||
_workflowEngineMongoDbClient = workflowEngineMongoDbClient;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Create Indexies
|
||||
/// </summary>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public async Task ExecuteAsync(CancellationToken cancellationToken = default)
|
||||
{
|
||||
await CreateWorkflowInstancesIndexies(cancellationToken);
|
||||
await CreateWorkflowDefinitionsIndexies(cancellationToken);
|
||||
}
|
||||
|
||||
|
||||
private async Task CreateWorkflowInstancesIndexies(CancellationToken cancellationToken)
|
||||
{
|
||||
var indexKeysDefinition = Builders<WorkflowInstance>.IndexKeys.Ascending(x => x.WorkflowInstanceId);
|
||||
await _workflowEngineMongoDbClient.WorkflowInstances.Indexes.CreateOneAsync(new CreateIndexModel<WorkflowInstance>(indexKeysDefinition),cancellationToken: cancellationToken);
|
||||
}
|
||||
|
||||
private async Task CreateWorkflowDefinitionsIndexies(CancellationToken cancellationToken)
|
||||
{
|
||||
var indexKeysDefinition = Builders<WorkflowDefinition>.IndexKeys.Ascending(x => x.WorkflowDefinitionId).Descending(x => x.Version);
|
||||
await _workflowEngineMongoDbClient.WorkflowDefinitions.Indexes.CreateOneAsync(new CreateIndexModel<WorkflowDefinition>(indexKeysDefinition), cancellationToken: cancellationToken);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
using System;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using Elsa.Models;
|
||||
using Elsa.Persistence.MongoDb.Serializers;
|
||||
using Elsa.Services;
|
||||
|
||||
using MongoDB.Bson.Serialization;
|
||||
|
||||
namespace Elsa.Persistence.MongoDb.Services
|
||||
{
|
||||
public static class DatabaseRegister
|
||||
{
|
||||
public static void RegisterMapsAndSerializers()
|
||||
{
|
||||
// In unit tests, the method is called several times, which throws an exception because the entity is already registered
|
||||
// If an error is thrown, the remaining registrations are no longer processed
|
||||
var firstPass = Map();
|
||||
if(firstPass == false)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
RegisterSerializers();
|
||||
}
|
||||
|
||||
private static bool Map()
|
||||
{
|
||||
if (BsonClassMap.IsClassMapRegistered(typeof(WorkflowDefinition)))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
BsonClassMap.RegisterClassMap<WorkflowDefinition>(cm =>
|
||||
{
|
||||
cm.AutoMap();
|
||||
cm.MapIdMember(x => x.Id);
|
||||
});
|
||||
|
||||
BsonClassMap.RegisterClassMap<WorkflowInstance>(cm =>
|
||||
{
|
||||
cm.AutoMap();
|
||||
cm.MapIdMember(x => x.Id);
|
||||
});
|
||||
|
||||
}
|
||||
catch (Exception) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private static void RegisterSerializers()
|
||||
{
|
||||
BsonSerializer.RegisterSerializer(JsonSerializer.Instance);
|
||||
BsonSerializer.RegisterSerializer(NodaTimeSerializer.Instance);
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
src/persistence/Elsa.Persistence.MongoDb/icon.png
Normal file
BIN
src/persistence/Elsa.Persistence.MongoDb/icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.6 KiB |
|
|
@ -1,11 +1,14 @@
|
|||
using System;
|
||||
using System;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Serialization;
|
||||
|
||||
using NodaTime;
|
||||
using NodaTime.Serialization.JsonNet;
|
||||
|
||||
using YesSql;
|
||||
|
||||
namespace Elsa.Data.Services
|
||||
namespace Elsa.Persistence.YesSql
|
||||
{
|
||||
public class CustomJsonContentSerializer : IContentSerializer
|
||||
{
|
||||
|
|
@ -32,4 +35,4 @@ namespace Elsa.Data.Services
|
|||
public dynamic? DeserializeDynamic(string content) => JsonConvert.DeserializeObject<dynamic>(content, JsonSettings);
|
||||
public string Serialize(object item) => JsonConvert.SerializeObject(item, JsonSettings);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
using YesSql.Sql;
|
||||
using YesSql.Sql;
|
||||
|
||||
namespace Elsa.Data
|
||||
namespace Elsa.Persistence.YesSql.Data
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents a database migration.
|
||||
|
|
@ -9,4 +9,4 @@ namespace Elsa.Data
|
|||
{
|
||||
public ISchemaBuilder SchemaBuilder { get; set; } = default!;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
using YesSql.Sql;
|
||||
using YesSql.Sql;
|
||||
|
||||
namespace Elsa.Data
|
||||
namespace Elsa.Persistence.YesSql.Data
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents a contract for a database migration.
|
||||
|
|
@ -12,4 +12,4 @@ namespace Elsa.Data
|
|||
/// </summary>
|
||||
ISchemaBuilder SchemaBuilder { get; set; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
using YesSql.Indexes;
|
||||
using YesSql.Indexes;
|
||||
|
||||
namespace Elsa.Data
|
||||
namespace Elsa.Persistence.YesSql.Data
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents a contract that used to denote an <see cref="IIndexProvider"/> that needs to be resolved by the DI and registered
|
||||
|
|
@ -9,4 +9,4 @@ namespace Elsa.Data
|
|||
public interface IScopedIndexProvider : IIndexProvider
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<LangVersion>latest</LangVersion>
|
||||
<RootNamespace>Elsa.Persistence.YesSql</RootNamespace>
|
||||
<PackageVersion>1.0.0</PackageVersion>
|
||||
<Authors>Elsa Contributors</Authors>
|
||||
<Description>
|
||||
Elsa is a set of workflow libraries and tools that enable super-fast workflowing capabilities in any .NET Core application.
|
||||
This package provides a YesSql persistence provider.
|
||||
</Description>
|
||||
<Copyright>2020</Copyright>
|
||||
<PackageProjectUrl>https://github.com/elsa-workflows/elsa-core</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/elsa-workflows/elsa-core</RepositoryUrl>
|
||||
<RepositoryType>GitHub</RepositoryType>
|
||||
<PackageTags>elsa, workflows, orchard</PackageTags>
|
||||
<PackageIcon>icon.png</PackageIcon>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="icon.png">
|
||||
<Pack>True</Pack>
|
||||
<PackagePath />
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="YesSql.Core" Version="2.0.0-beta-1637" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\core\Elsa.Core\Elsa.Core.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
using System;
|
||||
using System.Linq;
|
||||
|
||||
using Elsa.Data;
|
||||
using Elsa.Data.Services;
|
||||
using Elsa.Persistence.YesSql.Data;
|
||||
using Elsa.Persistence.YesSql.Indexes;
|
||||
using Elsa.Persistence.YesSql.Services;
|
||||
using Elsa.Repositories;
|
||||
using Elsa.Runtime;
|
||||
using Elsa.WorkflowProviders;
|
||||
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
using YesSql;
|
||||
using YesSql.Indexes;
|
||||
|
||||
namespace Elsa.Persistence.YesSql
|
||||
{
|
||||
public static class IServiceCollectionExtensions
|
||||
{
|
||||
public static IServiceCollection AddElsaPersistenceYesSql(this IServiceCollection services, Action<IServiceProvider, IConfiguration> configure)
|
||||
{
|
||||
// Scoped, because IMediator is registered as Scoped and IIdGenerator could also be registered as Scoped
|
||||
services.AddScoped<IWorkflowDefinitionRepository, YesSqlWorkflowDefinitionRepository>()
|
||||
.AddScoped<IWorkflowInstanceRepository, YesSqlWorkflowInstanceRepository>()
|
||||
.AddWorkflowProvider<DatabaseWorkflowProvider>()
|
||||
.AddSingleton(sp => CreateStore(sp, configure))
|
||||
.AddScoped(CreateSession)
|
||||
.AddScoped<IDataMigrationManager, DataMigrationManager>()
|
||||
.AddStartupTask<DatabaseInitializer>()
|
||||
.AddStartupTask<DataMigrationsRunner>()
|
||||
.AddDataMigration<Migrations>()
|
||||
.AddIndexProvider<WorkflowDefinitionIndexProvider>()
|
||||
.AddIndexProvider<WorkflowInstanceIndexProvider>();
|
||||
|
||||
return services;
|
||||
}
|
||||
|
||||
public static IServiceCollection AddIndexProvider<T>(this IServiceCollection services) where T : class, IIndexProvider => services.AddSingleton<IIndexProvider, T>();
|
||||
public static IServiceCollection AddScopedIndexProvider<T>(this IServiceCollection services) where T : class, IIndexProvider => services.AddScoped<IScopedIndexProvider>();
|
||||
public static IServiceCollection AddDataMigration<T>(this IServiceCollection services) where T : class, IDataMigration => services.AddScoped<IDataMigration, T>();
|
||||
|
||||
private static IStore CreateStore(
|
||||
IServiceProvider serviceProvider,
|
||||
Action<IServiceProvider, Configuration> configure)
|
||||
{
|
||||
var configuration = new Configuration { ContentSerializer = new CustomJsonContentSerializer() };
|
||||
configure(serviceProvider, configuration);
|
||||
|
||||
// TODO: The following line is a temporary workaround until the bug in YesSql is fixed: https://github.com/sebastienros/yessql/pull/280
|
||||
var store = StoreFactory.CreateAndInitializeAsync(configuration).GetAwaiter().GetResult();
|
||||
//var store = StoreFactory.Create(configuration);
|
||||
|
||||
var indexes = serviceProvider.GetServices<IIndexProvider>();
|
||||
store.RegisterIndexes(indexes);
|
||||
|
||||
return store;
|
||||
}
|
||||
|
||||
private static ISession CreateSession(IServiceProvider serviceProvider)
|
||||
{
|
||||
var store = serviceProvider.GetRequiredService<IStore>();
|
||||
var session = store.CreateSession();
|
||||
var scopedServices = serviceProvider.GetServices<IScopedIndexProvider>().Cast<IIndexProvider>().ToArray();
|
||||
|
||||
session.RegisterIndexes(scopedServices);
|
||||
|
||||
return session;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,8 +1,9 @@
|
|||
using Elsa.Data;
|
||||
using Elsa.Data;
|
||||
using Elsa.Models;
|
||||
|
||||
using YesSql.Indexes;
|
||||
|
||||
namespace Elsa.Indexes
|
||||
namespace Elsa.Persistence.YesSql.Indexes
|
||||
{
|
||||
public class WorkflowDefinitionIndex : MapIndex
|
||||
{
|
||||
|
|
@ -14,7 +15,7 @@ namespace Elsa.Indexes
|
|||
public bool IsPublished { get; set; }
|
||||
public bool IsEnabled { get; set; }
|
||||
}
|
||||
|
||||
|
||||
public class WorkflowDefinitionIndexProvider : IndexProvider<WorkflowDefinition>
|
||||
{
|
||||
public WorkflowDefinitionIndexProvider() => CollectionName = CollectionNames.WorkflowDefinitions;
|
||||
|
|
@ -36,4 +37,4 @@ namespace Elsa.Indexes
|
|||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +1,12 @@
|
|||
using System;
|
||||
using System.Linq;
|
||||
|
||||
using Elsa.Data;
|
||||
using Elsa.Models;
|
||||
|
||||
using YesSql.Indexes;
|
||||
|
||||
namespace Elsa.Indexes
|
||||
namespace Elsa.Persistence.YesSql.Indexes
|
||||
{
|
||||
public class WorkflowInstanceIndex : MapIndex
|
||||
{
|
||||
|
|
@ -50,7 +52,7 @@ namespace Elsa.Indexes
|
|||
{
|
||||
if (workflowInstance.Status != WorkflowStatus.Suspended || !workflowInstance.BlockingActivities.Any())
|
||||
return default;
|
||||
|
||||
|
||||
return workflowInstance.BlockingActivities
|
||||
.Select(
|
||||
activity => new WorkflowInstanceBlockingActivitiesIndex
|
||||
|
|
@ -65,4 +67,4 @@ namespace Elsa.Indexes
|
|||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,9 +1,11 @@
|
|||
using System.Data;
|
||||
using System.Data;
|
||||
using Elsa.Data;
|
||||
using Elsa.Indexes;
|
||||
using Elsa.Persistence.YesSql.Data;
|
||||
using Elsa.Persistence.YesSql.Indexes;
|
||||
|
||||
using YesSql.Sql;
|
||||
|
||||
namespace Elsa
|
||||
namespace Elsa.Persistence.YesSql
|
||||
{
|
||||
public class Migrations : DataMigration
|
||||
{
|
||||
|
|
@ -3,13 +3,18 @@ using System.Collections.Generic;
|
|||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using Elsa.Data;
|
||||
using Elsa.Data.Documents;
|
||||
using Elsa.Extensions;
|
||||
using Elsa.Persistence.YesSql.Data;
|
||||
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
using YesSql;
|
||||
using YesSql.Sql;
|
||||
|
||||
namespace Elsa.Data.Services
|
||||
namespace Elsa.Persistence.YesSql.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents a class that manages the database migrations.
|
||||
|
|
@ -241,4 +246,4 @@ namespace Elsa.Data.Services
|
|||
return returnType != null && (returnType == typeof(Task<int>) || returnType == typeof(int)) ? methodInfo : null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,9 +1,15 @@
|
|||
using System.Threading;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using Elsa.Data;
|
||||
using Elsa.Services;
|
||||
|
||||
using YesSql;
|
||||
|
||||
namespace Elsa.Data.Services
|
||||
namespace Elsa.Persistence.YesSql.Services
|
||||
{
|
||||
public class DatabaseInitializer : IStartupTask
|
||||
{
|
||||
|
|
@ -13,11 +19,11 @@ namespace Elsa.Data.Services
|
|||
{
|
||||
_store = store;
|
||||
}
|
||||
|
||||
|
||||
public async Task ExecuteAsync(CancellationToken cancellationToken = default)
|
||||
{
|
||||
await _store.InitializeCollectionAsync(CollectionNames.WorkflowDefinitions);
|
||||
await _store.InitializeCollectionAsync(CollectionNames.WorkflowInstances);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,22 +1,25 @@
|
|||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using Elsa.Data;
|
||||
using Elsa.Extensions;
|
||||
using Elsa.Models;
|
||||
using Elsa.Persistence.YesSql.Indexes;
|
||||
using Elsa.Repositories;
|
||||
|
||||
using YesSql;
|
||||
using YesSql.Indexes;
|
||||
|
||||
namespace Elsa.Services
|
||||
namespace Elsa.Persistence.YesSql
|
||||
{
|
||||
public class WorkflowDefinitionManager : IWorkflowDefinitionManager
|
||||
public class YesSqlWorkflowDefinitionRepository : IWorkflowDefinitionRepository
|
||||
{
|
||||
private readonly ISession _session;
|
||||
private readonly IIdGenerator _idGenerator;
|
||||
private readonly Elsa.Services.IIdGenerator _idGenerator;
|
||||
|
||||
public WorkflowDefinitionManager(ISession session, IIdGenerator idGenerator)
|
||||
public YesSqlWorkflowDefinitionRepository(ISession session, Elsa.Services.IIdGenerator idGenerator)
|
||||
{
|
||||
_session = session;
|
||||
_idGenerator = idGenerator;
|
||||
|
|
@ -36,20 +39,19 @@ namespace Elsa.Services
|
|||
}
|
||||
|
||||
public async Task<int> CountAsync(VersionOptions? version = default, CancellationToken cancellationToken = default) =>
|
||||
await Query()
|
||||
.WithVersion(version ?? VersionOptions.Latest)
|
||||
await WithVersion(Query(), version ?? VersionOptions.Latest)
|
||||
.CountAsync();
|
||||
|
||||
|
||||
public async Task<IEnumerable<WorkflowDefinition>> ListAsync(int? skip = default, int? take = default, VersionOptions? version = default, CancellationToken cancellationToken = default)
|
||||
{
|
||||
var query = Query().WithVersion(version ?? VersionOptions.Latest);
|
||||
var query = WithVersion(Query(), version ?? VersionOptions.Latest);
|
||||
|
||||
if (skip != null)
|
||||
query = query.Skip(skip.Value);
|
||||
|
||||
if (take != null)
|
||||
query = query.Take(take.Value);
|
||||
|
||||
|
||||
return await query.ListAsync();
|
||||
}
|
||||
|
||||
|
|
@ -71,5 +73,42 @@ namespace Elsa.Services
|
|||
|
||||
return workflowDefinition;
|
||||
}
|
||||
|
||||
public Task<WorkflowDefinition> GetAsync(string workflowDefinitionId, VersionOptions version, CancellationToken cancellationToken = default)
|
||||
{
|
||||
var query = Query<WorkflowDefinitionIndex>(x => x.WorkflowDefinitionId == workflowDefinitionId);
|
||||
|
||||
return WithVersion(query, version).FirstOrDefaultAsync();
|
||||
}
|
||||
|
||||
public Task<WorkflowDefinition> GetByVersionIdAsync(string workflowDefinitionVersionId, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return Query<WorkflowDefinitionIndex>(x => x.WorkflowDefinitionVersionId == workflowDefinitionVersionId).FirstOrDefaultAsync();
|
||||
}
|
||||
|
||||
private IQuery<WorkflowDefinition> WithVersion(IQuery<WorkflowDefinition> query,
|
||||
VersionOptions version)
|
||||
{
|
||||
var index = query.With<WorkflowDefinitionIndex>();
|
||||
|
||||
if (version.IsDraft)
|
||||
query = index.Where(x => !x.IsPublished);
|
||||
else if (version.IsLatest)
|
||||
query = index.Where(x => x.IsLatest);
|
||||
else if (version.IsPublished)
|
||||
query = index.Where(x => x.IsPublished);
|
||||
else if (version.IsLatestOrPublished)
|
||||
query = index.Where(x => x.IsPublished || x.IsLatest);
|
||||
else if (version.AllVersions)
|
||||
{
|
||||
// Nothing to filter.
|
||||
}
|
||||
else if (version.Version > 0)
|
||||
query = index.Where(x => x.Version == version.Version);
|
||||
|
||||
return index.OrderByDescending(x => x.Version);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,100 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using Elsa.Data;
|
||||
using Elsa.Events;
|
||||
using Elsa.Models;
|
||||
using Elsa.Persistence.YesSql.Indexes;
|
||||
using Elsa.Repositories;
|
||||
|
||||
using MediatR;
|
||||
|
||||
using YesSql;
|
||||
using YesSql.Indexes;
|
||||
|
||||
namespace Elsa.Persistence.YesSql
|
||||
{
|
||||
public class YesSqlWorkflowInstanceRepository : IWorkflowInstanceRepository
|
||||
{
|
||||
private readonly ISession _session;
|
||||
private readonly IMediator _mediator;
|
||||
|
||||
public YesSqlWorkflowInstanceRepository(ISession session, IMediator mediator)
|
||||
{
|
||||
_session = session;
|
||||
_mediator = mediator;
|
||||
}
|
||||
|
||||
public async Task SaveAsync(WorkflowInstance workflowInstance, CancellationToken cancellationToken = default)
|
||||
{
|
||||
_session.Save(workflowInstance, CollectionNames.WorkflowInstances);
|
||||
await _session.CommitAsync();
|
||||
await _mediator.Publish(new WorkflowInstanceSaved(workflowInstance), cancellationToken);
|
||||
}
|
||||
|
||||
public async Task DeleteAsync(WorkflowInstance workflowInstance, CancellationToken cancellationToken = default)
|
||||
{
|
||||
_session.Delete(workflowInstance, CollectionNames.WorkflowInstances);
|
||||
await _session.CommitAsync();
|
||||
await _mediator.Publish(new WorkflowInstanceDeleted(workflowInstance), cancellationToken);
|
||||
}
|
||||
|
||||
public async Task<bool> IsWorkflowIsAlreadyExecutingAsync(string? tenantId, string workflowDefinitionId, CancellationToken cancellationToken = default)
|
||||
{
|
||||
var instance = await Query<WorkflowInstanceIndex>(index => index.WorkflowDefinitionId == workflowDefinitionId && index.TenantId == tenantId && (index.WorkflowStatus == WorkflowStatus.Running || index.WorkflowStatus == WorkflowStatus.Suspended))
|
||||
.FirstOrDefaultAsync();
|
||||
|
||||
return instance != null;
|
||||
}
|
||||
|
||||
public Task<WorkflowInstance> GetByIdAsync(string workflowInstanceId, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return Query<WorkflowInstanceIndex>(x => x.WorkflowInstanceId == workflowInstanceId).FirstOrDefaultAsync();
|
||||
}
|
||||
|
||||
public Task<IEnumerable<WorkflowInstance>> ListAsync(int page, int pageSize, CancellationToken cancellationToken = default) {
|
||||
return Query<WorkflowInstanceIndex>().Skip(page * pageSize).Take(pageSize).ListAsync();
|
||||
}
|
||||
|
||||
public Task<IEnumerable<WorkflowInstance>> ListByBlockingActivityTypeAsync(string activityType, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return Query<WorkflowInstanceBlockingActivitiesIndex>(x => x.ActivityType == activityType).ListAsync();
|
||||
}
|
||||
|
||||
public Task<IEnumerable<WorkflowInstance>> ListByDefinitionAndStatusAsync(string workflowDefinitionId, string? tenantId, WorkflowStatus workflowStatus, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return Query<WorkflowInstanceIndex>(x => x.WorkflowDefinitionId == workflowDefinitionId && x.TenantId == tenantId && x.WorkflowStatus == workflowStatus).ListAsync();
|
||||
}
|
||||
|
||||
public Task<IEnumerable<WorkflowInstance>> ListByStatusAsync(WorkflowStatus workflowStatus, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return Query<WorkflowInstanceIndex>(x => x.WorkflowStatus == workflowStatus).ListAsync();
|
||||
}
|
||||
|
||||
public Task<IEnumerable<WorkflowInstance>> ListByDefinitionAsync( string workflowDefinitionId,string? tenantId,CancellationToken cancellationToken = default)
|
||||
{
|
||||
return Query<WorkflowInstanceIndex>(x => x.WorkflowDefinitionId == workflowDefinitionId && x.TenantId == tenantId).ListAsync();
|
||||
}
|
||||
|
||||
public Task<WorkflowInstance?> GetByCorrelationIdAsync(string correlationId, WorkflowStatus status, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return Query<WorkflowInstanceIndex>(x => x.CorrelationId == correlationId && x.WorkflowStatus == status).FirstOrDefaultAsync();
|
||||
}
|
||||
|
||||
public Task<IEnumerable<WorkflowInstance>> ListByCorrelationIdAsync(string correlationId, WorkflowStatus status, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return Query<WorkflowInstanceIndex>(x => x.CorrelationId == correlationId && x.WorkflowStatus == status).ListAsync();
|
||||
}
|
||||
|
||||
public Task<int> CountAsync(CancellationToken cancellationToken = default)
|
||||
{
|
||||
return Query<WorkflowInstanceIndex>().CountAsync();
|
||||
}
|
||||
|
||||
private IQuery<WorkflowInstance, TIndex> Query<TIndex>() where TIndex : class, IIndex => _session.Query<WorkflowInstance, TIndex>(CollectionNames.WorkflowInstances);
|
||||
private IQuery<WorkflowInstance, TIndex> Query<TIndex>(Expression<Func<TIndex, bool>> predicate) where TIndex : class, IIndex => _session.Query<WorkflowInstance, TIndex>(predicate, CollectionNames.WorkflowInstances);
|
||||
}
|
||||
}
|
||||
BIN
src/persistence/Elsa.Persistence.YesSql/icon.png
Normal file
BIN
src/persistence/Elsa.Persistence.YesSql/icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.6 KiB |
|
|
@ -6,8 +6,13 @@
|
|||
<IsPackable>false</IsPackable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="YesSql.Provider.Sqlite" Version="1.0.0-beta-1637" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\core\Elsa\Elsa.csproj" />
|
||||
<ProjectReference Include="..\..\..\persistence\Elsa.Persistence.YesSql\Elsa.Persistence.YesSql.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
using Elsa.Data;
|
||||
using Elsa.Data;
|
||||
using Elsa.Persistence.YesSql.Data;
|
||||
using Elsa.Samples.ContextualWorkflowHttp.Indexes;
|
||||
using YesSql.Sql;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,11 @@
|
|||
using Elsa.Samples.ContextualWorkflowHttp.Indexes;
|
||||
using Elsa.Samples.ContextualWorkflowHttp.WorkflowContextProviders;
|
||||
using Elsa.Samples.ContextualWorkflowHttp.Workflows;
|
||||
using Elsa.Persistence.YesSql;
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using YesSql.Provider.Sqlite;
|
||||
using System.Data;
|
||||
|
||||
namespace Elsa.Samples.ContextualWorkflowHttp
|
||||
{
|
||||
|
|
@ -12,6 +15,7 @@ namespace Elsa.Samples.ContextualWorkflowHttp
|
|||
{
|
||||
services
|
||||
.AddElsa()
|
||||
.AddElsaPersistenceYesSql((sp, config) => config.UseSqLite("Data Source=elsa.db;Cache=Shared", IsolationLevel.ReadUncommitted))
|
||||
.AddHttpActivities()
|
||||
.AddConsoleActivities()
|
||||
.AddDataMigration<Migrations>()
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\core\Elsa\Elsa.csproj" />
|
||||
<ProjectReference Include="..\..\..\persistence\Elsa.Persistence.InMemory\Elsa.Persistence.InMemory.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
using Elsa.Persistence.InMemory;
|
||||
using Elsa.Samples.CorrelationHttp.Workflows;
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
|
@ -10,6 +11,7 @@ namespace Elsa.Samples.CorrelationHttp
|
|||
{
|
||||
services
|
||||
.AddElsa()
|
||||
.AddElsaPersistenceInMemory()
|
||||
.AddHttpActivities()
|
||||
.AddConsoleActivities()
|
||||
.AddWorkflow<RegistrationWorkflow>();
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\core\Elsa\Elsa.csproj" />
|
||||
<ProjectReference Include="..\..\..\persistence\Elsa.Persistence.InMemory\Elsa.Persistence.InMemory.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
using Elsa.Persistence.InMemory;
|
||||
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using YesSql.Provider.Sqlite;
|
||||
|
||||
namespace Elsa.Samples.CustomActivities
|
||||
{
|
||||
|
|
@ -9,7 +10,8 @@ namespace Elsa.Samples.CustomActivities
|
|||
public void ConfigureServices(IServiceCollection services)
|
||||
{
|
||||
services
|
||||
.AddElsa(option => option.UsePersistence(db => db.UseSqLite("Data Source=elsa.db;Cache=Shared")))
|
||||
.AddElsa()
|
||||
.AddElsaPersistenceInMemory()
|
||||
.AddHttpActivities()
|
||||
.AddActivity<ReadQueryString>()
|
||||
.AddWorkflow<EchoQueryStringWorkflow>();
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\core\Elsa\Elsa.csproj"/>
|
||||
<ProjectReference Include="..\..\..\core\Elsa\Elsa.csproj" />
|
||||
<ProjectReference Include="..\..\..\persistence\Elsa.Persistence.InMemory\Elsa.Persistence.InMemory.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
using Elsa.Persistence.InMemory;
|
||||
using Elsa.Samples.ForkJoinTimerAndSignalHttp.BackgroundTasks;
|
||||
using Elsa.Samples.ForkJoinTimerAndSignalHttp.Workflows;
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
|
|
@ -14,6 +15,7 @@ namespace Elsa.Samples.ForkJoinTimerAndSignalHttp
|
|||
|
||||
services
|
||||
.AddElsa()
|
||||
.AddElsaPersistenceInMemory()
|
||||
.AddConsoleActivities()
|
||||
.AddTimerActivities()
|
||||
.AddHostedService<WorkflowStarter<DemoWorkflow>>()
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\core\Elsa\Elsa.csproj" />
|
||||
<ProjectReference Include="..\..\..\persistence\Elsa.Persistence.InMemory\Elsa.Persistence.InMemory.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
using Elsa.Persistence.InMemory;
|
||||
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
|
|
@ -9,6 +11,7 @@ namespace Elsa.Samples.HelloWorldHttp
|
|||
{
|
||||
services
|
||||
.AddElsa()
|
||||
.AddElsaPersistenceInMemory()
|
||||
.AddHttpActivities()
|
||||
.AddWorkflow<HelloHttpWorkflow>();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
using Elsa.Activities.Timers;
|
||||
using Elsa.Activities.Timers;
|
||||
using Elsa.Activities.Timers.Services;
|
||||
using Elsa.Attributes;
|
||||
using Elsa.Repositories;
|
||||
using Elsa.Services;
|
||||
using NodaTime;
|
||||
|
||||
|
|
@ -9,7 +10,7 @@ namespace Elsa.Samples.Interrupts.Activities
|
|||
[Activity]
|
||||
public class Sleep : Timer
|
||||
{
|
||||
public Sleep(IWorkflowInstanceManager workflowInstanceManager, IWorkflowScheduler workflowScheduler, IClock clock) : base(clock)
|
||||
public Sleep(IWorkflowInstanceRepository workflowInstanceRepository, IWorkflowScheduler workflowScheduler, IClock clock) : base(clock)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@
|
|||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\core\Elsa\Elsa.csproj" />
|
||||
<ProjectReference Include="..\..\..\persistence\Elsa.Persistence.InMemory\Elsa.Persistence.InMemory.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
using Elsa.Persistence.InMemory;
|
||||
using Elsa.Samples.Interrupts.Activities;
|
||||
using Elsa.Samples.Interrupts.Workflows;
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
|
|
@ -14,6 +15,7 @@ namespace Elsa.Samples.Interrupts
|
|||
|
||||
services
|
||||
.AddElsa()
|
||||
.AddElsaPersistenceInMemory()
|
||||
.AddConsoleActivities()
|
||||
.AddHttpActivities()
|
||||
.AddTimerActivities()
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\core\Elsa\Elsa.csproj"/>
|
||||
<ProjectReference Include="..\..\..\persistence\Elsa.Persistence.InMemory\Elsa.Persistence.InMemory.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
using Elsa.Persistence.InMemory;
|
||||
using Elsa.Samples.ReadModelHttp.Workflows;
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using YesSql.Provider.Sqlite;
|
||||
|
||||
namespace Elsa.Samples.ReadModelHttp
|
||||
{
|
||||
|
|
@ -10,7 +10,8 @@ namespace Elsa.Samples.ReadModelHttp
|
|||
public void ConfigureServices(IServiceCollection services)
|
||||
{
|
||||
services
|
||||
.AddElsa(option => option.UsePersistence(db => db.UseSqLite("Data Source=elsa.db;Cache=Shared")))
|
||||
.AddElsa()
|
||||
.AddElsaPersistenceInMemory()
|
||||
.AddHttpActivities()
|
||||
.AddConsoleActivities()
|
||||
.AddWorkflow<SaveContactWorkflow>();
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\core\Elsa\Elsa.csproj" />
|
||||
<ProjectReference Include="..\..\..\persistence\Elsa.Persistence.InMemory\Elsa.Persistence.InMemory.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
using System.Threading.Tasks;
|
||||
using System.Threading.Tasks;
|
||||
using Elsa.Models;
|
||||
using Elsa.Persistence.InMemory;
|
||||
using Elsa.Scripting.Liquid.Services;
|
||||
using Elsa.Serialization;
|
||||
using Elsa.Services;
|
||||
|
|
@ -17,6 +18,7 @@ namespace Elsa.Samples.DeclarativeCompositeActivitiesConsole
|
|||
// Create a service container with Elsa services.
|
||||
var services = new ServiceCollection()
|
||||
.AddElsa()
|
||||
.AddElsaPersistenceInMemory()
|
||||
.AddConsoleActivities()
|
||||
.BuildServiceProvider();
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\core\Elsa\Elsa.csproj" />
|
||||
<ProjectReference Include="..\..\..\persistence\Elsa.Persistence.InMemory\Elsa.Persistence.InMemory.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
using System.IO;
|
||||
using System.IO;
|
||||
using System.Threading.Tasks;
|
||||
using Elsa.Extensions;
|
||||
using Elsa.Models;
|
||||
using Elsa.Persistence.InMemory;
|
||||
using Elsa.Services;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Storage.Net;
|
||||
|
|
@ -21,6 +22,7 @@ namespace Elsa.Samples.FileBasedWorkflow
|
|||
// Create a service container with Elsa services.
|
||||
var services = new ServiceCollection()
|
||||
.AddElsa(options => options.UseStorage(() => StorageFactory.Blobs.DirectoryFiles(currentDirectory)))
|
||||
.AddElsaPersistenceInMemory()
|
||||
.AddConsoleActivities()
|
||||
.BuildServiceProvider();
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\core\Elsa\Elsa.csproj" />
|
||||
<ProjectReference Include="..\..\..\persistence\Elsa.Persistence.InMemory\Elsa.Persistence.InMemory.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
using System.Threading.Tasks;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using Elsa.Persistence.InMemory;
|
||||
using Elsa.Services;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
|
|
@ -14,6 +16,7 @@ namespace Elsa.Samples.ForLoopConsole
|
|||
// Create a service container with Elsa services.
|
||||
var services = new ServiceCollection()
|
||||
.AddElsa()
|
||||
.AddElsaPersistenceInMemory()
|
||||
.AddConsoleActivities()
|
||||
.AddWorkflow<LoopingWorkflow>()
|
||||
.BuildServiceProvider();
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\core\Elsa\Elsa.csproj" />
|
||||
<ProjectReference Include="..\..\..\persistence\Elsa.Persistence.InMemory\Elsa.Persistence.InMemory.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
using System.Threading.Tasks;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using Elsa.Persistence.InMemory;
|
||||
using Elsa.Samples.GoBackConsole.Activities;
|
||||
using Elsa.Samples.GoBackConsole.Workflows;
|
||||
using Elsa.Services;
|
||||
|
|
@ -16,6 +18,7 @@ namespace Elsa.Samples.GoBackConsole
|
|||
// Create a service container with Elsa services.
|
||||
var services = new ServiceCollection()
|
||||
.AddElsa()
|
||||
.AddElsaPersistenceInMemory()
|
||||
.AddConsoleActivities()
|
||||
.AddActivity<BrickWallActivity>()
|
||||
.AddWorkflow<WalkAroundWorkflow>()
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\core\Elsa\Elsa.csproj" />
|
||||
<ProjectReference Include="..\..\..\persistence\Elsa.Persistence.InMemory\Elsa.Persistence.InMemory.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
using System.Threading.Tasks;
|
||||
using System.Threading.Tasks;
|
||||
using Elsa.Extensions;
|
||||
using Elsa.Persistence.InMemory;
|
||||
using Elsa.Services;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
|
|
@ -12,6 +13,7 @@ namespace Elsa.Samples.HelloWorldConsole
|
|||
// Create a service container with Elsa services.
|
||||
var services = new ServiceCollection()
|
||||
.AddElsa()
|
||||
.AddElsaPersistenceInMemory()
|
||||
.AddConsoleActivities()
|
||||
.AddWorkflow<HelloWorld>()
|
||||
.AddAutoMapperProfiles<Program>()
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\core\Elsa\Elsa.csproj" />
|
||||
<ProjectReference Include="..\..\..\persistence\Elsa.Persistence.InMemory\Elsa.Persistence.InMemory.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
using System.Threading.Tasks;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using Elsa.Persistence.InMemory;
|
||||
using Elsa.Services;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
|
|
@ -14,6 +16,7 @@ namespace Elsa.Samples.IfElseConsole
|
|||
// Create a service container with Elsa services.
|
||||
var services = new ServiceCollection()
|
||||
.AddElsa()
|
||||
.AddElsaPersistenceInMemory()
|
||||
.AddConsoleActivities()
|
||||
.AddWorkflow<HappinessWorkflow>()
|
||||
.BuildServiceProvider();
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\core\Elsa\Elsa.csproj" />
|
||||
<ProjectReference Include="..\..\..\persistence\Elsa.Persistence.InMemory\Elsa.Persistence.InMemory.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
using System.Threading.Tasks;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using Elsa.Persistence.InMemory;
|
||||
using Elsa.Samples.ProgrammaticCompositeActivitiesConsole.Activities;
|
||||
using Elsa.Samples.ProgrammaticCompositeActivitiesConsole.Workflows;
|
||||
using Elsa.Services;
|
||||
|
|
@ -13,6 +15,7 @@ namespace Elsa.Samples.ProgrammaticCompositeActivitiesConsole
|
|||
// Create a service container with Elsa services.
|
||||
var services = new ServiceCollection()
|
||||
.AddElsa()
|
||||
.AddElsaPersistenceInMemory()
|
||||
.AddConsoleActivities()
|
||||
.AddActivity<CountDownActivity>()
|
||||
.AddWorkflow<CompositionWorkflow>()
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\core\Elsa\Elsa.csproj" />
|
||||
<ProjectReference Include="..\..\..\persistence\Elsa.Persistence.InMemory\Elsa.Persistence.InMemory.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
using System.Threading.Tasks;
|
||||
using System.Threading.Tasks;
|
||||
using Elsa.Activities.Console;
|
||||
using Elsa.Builders;
|
||||
using Elsa.Persistence.InMemory;
|
||||
using Elsa.Services;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
|
|
@ -13,6 +14,7 @@ namespace Elsa.Samples.ReadLineEchoConsole
|
|||
// Create a service container with Elsa services.
|
||||
var services = new ServiceCollection()
|
||||
.AddElsa()
|
||||
.AddElsaPersistenceInMemory()
|
||||
.AddConsoleActivities()
|
||||
.BuildServiceProvider();
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\core\Elsa\Elsa.csproj" />
|
||||
<ProjectReference Include="..\..\..\persistence\Elsa.Persistence.InMemory\Elsa.Persistence.InMemory.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
using System;
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using Elsa.Activities.Console;
|
||||
using Elsa.Models;
|
||||
using Elsa.Persistence.InMemory;
|
||||
using Elsa.Scripting.Liquid.Services;
|
||||
using Elsa.Serialization;
|
||||
using Elsa.Services;
|
||||
|
|
@ -23,6 +24,7 @@ namespace Elsa.Samples.Serialization
|
|||
// Create a service container with Elsa services.
|
||||
var services = new ServiceCollection()
|
||||
.AddElsa()
|
||||
.AddElsaPersistenceInMemory()
|
||||
.AddConsoleActivities()
|
||||
.BuildServiceProvider();
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\core\Elsa\Elsa.csproj" />
|
||||
<ProjectReference Include="..\..\..\persistence\Elsa.Persistence.InMemory\Elsa.Persistence.InMemory.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue