Skip to content

Commit 40b6086

Browse files
committed
upgrade tooling
refactor for readability
1 parent 0e13848 commit 40b6086

File tree

115 files changed

+1542
-2001
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

115 files changed

+1542
-2001
lines changed

.gitignore

+2-1
Original file line numberDiff line numberDiff line change
@@ -242,4 +242,5 @@ ModelManifest.xml
242242
.paket/paket.exe
243243

244244
# FAKE - F# Make
245-
.fake/
245+
.fake/
246+
*.migration_in_place_backup

WorkflowCore.sln

+35-36
Original file line numberDiff line numberDiff line change
@@ -1,79 +1,78 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio 14
4-
VisualStudioVersion = 14.0.25420.1
3+
# Visual Studio 15
4+
VisualStudioVersion = 15.0.26206.0
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{EF47161E-E399-451C-BDE8-E92AAD3BD761}"
77
EndProject
88
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F6AC9AEB-24EF-475A-B190-AA4D9E01270A}"
99
ProjectSection(SolutionItems) = preProject
10-
global.json = global.json
1110
readme.md = readme.md
1211
EndProjectSection
1312
EndProject
14-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "WorkflowCore", "src\WorkflowCore\WorkflowCore.xproj", "{B7B2EA4D-E7F0-43E2-942A-3A5AA8F57272}"
15-
EndProject
1613
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{5080DB09-CBE8-4C45-9957-C3BB7651755E}"
1714
EndProject
1815
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "providers", "providers", "{2EEE6ABD-EE9B-473F-AF2D-6DABB85D7BA2}"
1916
EndProject
20-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "WorkflowCore.Persistence.MongoDB", "src\providers\WorkflowCore.Persistence.MongoDB\WorkflowCore.Persistence.MongoDB.xproj", "{DD26E7B4-9D3A-4E1E-8585-862DB6DE21EB}"
17+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{E6CEAD8D-F565-471E-A0DC-676F54EAEDEB}"
2118
EndProject
22-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "WorkflowCore.Sample01", "src\samples\WorkflowCore.Sample01\WorkflowCore.Sample01.xproj", "{660FEDAB-D085-476B-9E16-73E42F66DB4F}"
19+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "extensions", "extensions", "{6803696C-B19A-4B27-9193-082A02B6F205}"
2320
EndProject
24-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "WorkflowCore.Sample02", "src\samples\WorkflowCore.Sample02\WorkflowCore.Sample02.xproj", "{BC6F28F1-9F47-4FFE-AD06-2B74CB89E76B}"
21+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkflowCore", "src\WorkflowCore\WorkflowCore.csproj", "{B7B2EA4D-E7F0-43E2-942A-3A5AA8F57272}"
2522
EndProject
26-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "WorkflowCore.Sample03", "src\samples\WorkflowCore.Sample03\WorkflowCore.Sample03.xproj", "{FB738255-0304-4A25-B256-22E36EDF9507}"
23+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkflowCore.Persistence.MongoDB", "src\providers\WorkflowCore.Persistence.MongoDB\WorkflowCore.Persistence.MongoDB.csproj", "{DD26E7B4-9D3A-4E1E-8585-862DB6DE21EB}"
2724
EndProject
28-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "WorkflowCore.Sample04", "src\samples\WorkflowCore.Sample04\WorkflowCore.Sample04.xproj", "{91301F52-E589-499E-97DE-91FA074B790C}"
25+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkflowCore.Sample01", "src\samples\WorkflowCore.Sample01\WorkflowCore.Sample01.csproj", "{660FEDAB-D085-476B-9E16-73E42F66DB4F}"
2926
EndProject
30-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "WorkflowCore.Sample05", "src\samples\WorkflowCore.Sample05\WorkflowCore.Sample05.xproj", "{68883A5C-BD59-404D-A394-18104D6F472C}"
27+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkflowCore.Sample02", "src\samples\WorkflowCore.Sample02\WorkflowCore.Sample02.csproj", "{BC6F28F1-9F47-4FFE-AD06-2B74CB89E76B}"
3128
EndProject
32-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "WorkflowCore.Persistence.EntityFramework", "src\providers\WorkflowCore.Persistence.EntityFramework\WorkflowCore.Persistence.EntityFramework.xproj", "{FE54AD67-817A-4CC6-A9EF-C9F7A5122CA4}"
29+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkflowCore.Sample03", "src\samples\WorkflowCore.Sample03\WorkflowCore.Sample03.csproj", "{FB738255-0304-4A25-B256-22E36EDF9507}"
3330
EndProject
34-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "WorkflowCore.Persistence.SqlServer", "src\providers\WorkflowCore.Persistence.SqlServer\WorkflowCore.Persistence.SqlServer.xproj", "{1DE96D4F-F2CA-4740-8764-BADD1000040A}"
31+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkflowCore.Sample04", "src\samples\WorkflowCore.Sample04\WorkflowCore.Sample04.csproj", "{91301F52-E589-499E-97DE-91FA074B790C}"
3532
EndProject
36-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "WorkflowCore.Persistence.PostgreSQL", "src\providers\WorkflowCore.Persistence.PostgreSQL\WorkflowCore.Persistence.PostgreSQL.xproj", "{9274B938-3996-4FBA-AE2F-0C82009B1116}"
33+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkflowCore.Sample05", "src\samples\WorkflowCore.Sample05\WorkflowCore.Sample05.csproj", "{68883A5C-BD59-404D-A394-18104D6F472C}"
3734
EndProject
38-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "WorkflowCore.Persistence.Sqlite", "src\providers\WorkflowCore.Persistence.Sqlite\WorkflowCore.Persistence.Sqlite.xproj", "{86BC1E05-E9CE-4E53-B324-885A2FDBCE74}"
35+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkflowCore.Persistence.EntityFramework", "src\providers\WorkflowCore.Persistence.EntityFramework\WorkflowCore.Persistence.EntityFramework.csproj", "{FE54AD67-817A-4CC6-A9EF-C9F7A5122CA4}"
3936
EndProject
40-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "WorkflowCore.LockProviders.Redlock", "src\providers\WorkflowCore.LockProviders.Redlock\WorkflowCore.LockProviders.Redlock.xproj", "{05250D58-A59E-4212-8D55-E7BC0396E9F5}"
37+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkflowCore.Persistence.SqlServer", "src\providers\WorkflowCore.Persistence.SqlServer\WorkflowCore.Persistence.SqlServer.csproj", "{1DE96D4F-F2CA-4740-8764-BADD1000040A}"
4138
EndProject
42-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "WorkflowCore.LockProviders.ZooKeeper", "src\providers\WorkflowCore.LockProviders.ZooKeeper\WorkflowCore.LockProviders.ZooKeeper.xproj", "{3BBA51EE-765A-4772-A940-7F853E1010FC}"
39+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkflowCore.Persistence.PostgreSQL", "src\providers\WorkflowCore.Persistence.PostgreSQL\WorkflowCore.Persistence.PostgreSQL.csproj", "{9274B938-3996-4FBA-AE2F-0C82009B1116}"
4340
EndProject
44-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "WorkflowCore.QueueProviders.RabbitMQ", "src\providers\WorkflowCore.QueueProviders.RabbitMQ\WorkflowCore.QueueProviders.RabbitMQ.xproj", "{AFAD87C7-B2EE-451E-BA7E-3F5A91358C48}"
41+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkflowCore.Persistence.Sqlite", "src\providers\WorkflowCore.Persistence.Sqlite\WorkflowCore.Persistence.Sqlite.csproj", "{86BC1E05-E9CE-4E53-B324-885A2FDBCE74}"
4542
EndProject
46-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "WorkflowCore.Sample06", "src\samples\WorkflowCore.Sample06\WorkflowCore.Sample06.xproj", "{8FEAFD74-C304-4F75-BA38-4686BE55C891}"
43+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkflowCore.LockProviders.Redlock", "src\providers\WorkflowCore.LockProviders.Redlock\WorkflowCore.LockProviders.Redlock.csproj", "{05250D58-A59E-4212-8D55-E7BC0396E9F5}"
4744
EndProject
48-
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{E6CEAD8D-F565-471E-A0DC-676F54EAEDEB}"
45+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkflowCore.LockProviders.ZooKeeper", "src\providers\WorkflowCore.LockProviders.ZooKeeper\WorkflowCore.LockProviders.ZooKeeper.csproj", "{3BBA51EE-765A-4772-A940-7F853E1010FC}"
4946
EndProject
50-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "WorkflowCore.UnitTests", "test\WorkflowCore.UnitTests\WorkflowCore.UnitTests.xproj", "{37B598A8-B054-4ABA-884D-96AEF2511600}"
47+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkflowCore.QueueProviders.RabbitMQ", "src\providers\WorkflowCore.QueueProviders.RabbitMQ\WorkflowCore.QueueProviders.RabbitMQ.csproj", "{AFAD87C7-B2EE-451E-BA7E-3F5A91358C48}"
5148
EndProject
52-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "WorkflowCore.TestAssets", "test\WorkflowCore.TestAssets\WorkflowCore.TestAssets.xproj", "{17C270A8-EC88-4883-9318-74BB28EFF508}"
49+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkflowCore.Sample06", "src\samples\WorkflowCore.Sample06\WorkflowCore.Sample06.csproj", "{8FEAFD74-C304-4F75-BA38-4686BE55C891}"
5350
EndProject
54-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "WorkflowCore.Sample07", "src\samples\WorkflowCore.Sample07\WorkflowCore.Sample07.xproj", "{0631B4BA-D5DD-4C9E-8842-0D370A3D714A}"
51+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkflowCore.UnitTests", "test\WorkflowCore.UnitTests\WorkflowCore.UnitTests.csproj", "{37B598A8-B054-4ABA-884D-96AEF2511600}"
5552
EndProject
56-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "WorkflowCore.QueueProviders.ZeroMQ", "src\providers\WorkflowCore.QueueProviders.ZeroMQ\WorkflowCore.QueueProviders.ZeroMQ.xproj", "{F33E89F6-BC8A-4E11-BEA1-C9A80E815DE8}"
53+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkflowCore.TestAssets", "test\WorkflowCore.TestAssets\WorkflowCore.TestAssets.csproj", "{17C270A8-EC88-4883-9318-74BB28EFF508}"
5754
EndProject
58-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "WorkflowCore.LockProviders.ZeroMQ", "src\providers\WorkflowCore.LockProviders.ZeroMQ\WorkflowCore.LockProviders.ZeroMQ.xproj", "{4DC2200D-BA4F-4508-8426-F0CAE5EE90B5}"
55+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkflowCore.Sample07", "src\samples\WorkflowCore.Sample07\WorkflowCore.Sample07.csproj", "{0631B4BA-D5DD-4C9E-8842-0D370A3D714A}"
5956
EndProject
60-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "WorkflowCore.Tests.ZeroMQ", "test\WorkflowCore.Tests.ZeroMQ\WorkflowCore.Tests.ZeroMQ.xproj", "{15FB5CB9-075B-4A54-98EC-2A1F5C40BE48}"
57+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkflowCore.QueueProviders.ZeroMQ", "src\providers\WorkflowCore.QueueProviders.ZeroMQ\WorkflowCore.QueueProviders.ZeroMQ.csproj", "{F33E89F6-BC8A-4E11-BEA1-C9A80E815DE8}"
6158
EndProject
62-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "ScratchPad", "test\ScratchPad\ScratchPad.xproj", "{6B1C4B1E-AB43-4E87-A137-3AD9F534F059}"
59+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkflowCore.LockProviders.ZeroMQ", "src\providers\WorkflowCore.LockProviders.ZeroMQ\WorkflowCore.LockProviders.ZeroMQ.csproj", "{4DC2200D-BA4F-4508-8426-F0CAE5EE90B5}"
6360
EndProject
64-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "WorkflowCore.IntegrationTests", "test\WorkflowCore.IntegrationTests\WorkflowCore.IntegrationTests.xproj", "{9162B6AD-AD06-4C64-9032-0E727643B1B9}"
61+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkflowCore.Tests.ZeroMQ", "test\WorkflowCore.Tests.ZeroMQ\WorkflowCore.Tests.ZeroMQ.csproj", "{15FB5CB9-075B-4A54-98EC-2A1F5C40BE48}"
6562
EndProject
66-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "WorkflowCore.Tests.MongoDB", "test\WorkflowCore.Tests.MongoDB\WorkflowCore.Tests.MongoDB.xproj", "{58EC09C7-EC0A-4708-9B6F-FBE6243CEB49}"
63+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ScratchPad", "test\ScratchPad\ScratchPad.csproj", "{6B1C4B1E-AB43-4E87-A137-3AD9F534F059}"
6764
EndProject
68-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "WorkflowCore.Tests.PostgreSQL", "test\WorkflowCore.Tests.PostgreSQL\WorkflowCore.Tests.PostgreSQL.xproj", "{8C2BD4D2-43EC-4930-9364-CDA938C01803}"
65+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkflowCore.IntegrationTests", "test\WorkflowCore.IntegrationTests\WorkflowCore.IntegrationTests.csproj", "{9162B6AD-AD06-4C64-9032-0E727643B1B9}"
6966
EndProject
70-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "WorkflowCore.Users", "src\extensions\WorkflowCore.Users\WorkflowCore.Users.xproj", "{4C4DE624-9D91-484F-8BF7-2D71264EAB8B}"
67+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkflowCore.Tests.MongoDB", "test\WorkflowCore.Tests.MongoDB\WorkflowCore.Tests.MongoDB.csproj", "{58EC09C7-EC0A-4708-9B6F-FBE6243CEB49}"
7168
EndProject
72-
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "extensions", "extensions", "{6803696C-B19A-4B27-9193-082A02B6F205}"
69+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkflowCore.Tests.PostgreSQL", "test\WorkflowCore.Tests.PostgreSQL\WorkflowCore.Tests.PostgreSQL.csproj", "{8C2BD4D2-43EC-4930-9364-CDA938C01803}"
7370
EndProject
74-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "WorkflowCore.Sample08", "src\samples\WorkflowCore.Sample08\WorkflowCore.Sample08.xproj", "{ED5074AF-A09E-4357-A419-FE3476C0FAE7}"
71+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkflowCore.Users", "src\extensions\WorkflowCore.Users\WorkflowCore.Users.csproj", "{4C4DE624-9D91-484F-8BF7-2D71264EAB8B}"
7572
EndProject
76-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "WorkflowCore.WebAPI", "src\extensions\WorkflowCore.WebAPI\WorkflowCore.WebAPI.xproj", "{FBF8D151-A3BF-4EB3-8F80-D71618696362}"
73+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkflowCore.Sample08", "src\samples\WorkflowCore.Sample08\WorkflowCore.Sample08.csproj", "{ED5074AF-A09E-4357-A419-FE3476C0FAE7}"
74+
EndProject
75+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkflowCore.WebAPI", "src\extensions\WorkflowCore.WebAPI\WorkflowCore.WebAPI.csproj", "{FBF8D151-A3BF-4EB3-8F80-D71618696362}"
7776
EndProject
7877
Global
7978
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -198,9 +197,10 @@ Global
198197
HideSolutionNode = FALSE
199198
EndGlobalSection
200199
GlobalSection(NestedProjects) = preSolution
201-
{B7B2EA4D-E7F0-43E2-942A-3A5AA8F57272} = {EF47161E-E399-451C-BDE8-E92AAD3BD761}
202200
{5080DB09-CBE8-4C45-9957-C3BB7651755E} = {EF47161E-E399-451C-BDE8-E92AAD3BD761}
203201
{2EEE6ABD-EE9B-473F-AF2D-6DABB85D7BA2} = {EF47161E-E399-451C-BDE8-E92AAD3BD761}
202+
{6803696C-B19A-4B27-9193-082A02B6F205} = {EF47161E-E399-451C-BDE8-E92AAD3BD761}
203+
{B7B2EA4D-E7F0-43E2-942A-3A5AA8F57272} = {EF47161E-E399-451C-BDE8-E92AAD3BD761}
204204
{DD26E7B4-9D3A-4E1E-8585-862DB6DE21EB} = {2EEE6ABD-EE9B-473F-AF2D-6DABB85D7BA2}
205205
{660FEDAB-D085-476B-9E16-73E42F66DB4F} = {5080DB09-CBE8-4C45-9957-C3BB7651755E}
206206
{BC6F28F1-9F47-4FFE-AD06-2B74CB89E76B} = {5080DB09-CBE8-4C45-9957-C3BB7651755E}
@@ -226,7 +226,6 @@ Global
226226
{58EC09C7-EC0A-4708-9B6F-FBE6243CEB49} = {E6CEAD8D-F565-471E-A0DC-676F54EAEDEB}
227227
{8C2BD4D2-43EC-4930-9364-CDA938C01803} = {E6CEAD8D-F565-471E-A0DC-676F54EAEDEB}
228228
{4C4DE624-9D91-484F-8BF7-2D71264EAB8B} = {6803696C-B19A-4B27-9193-082A02B6F205}
229-
{6803696C-B19A-4B27-9193-082A02B6F205} = {EF47161E-E399-451C-BDE8-E92AAD3BD761}
230229
{ED5074AF-A09E-4357-A419-FE3476C0FAE7} = {5080DB09-CBE8-4C45-9957-C3BB7651755E}
231230
{FBF8D151-A3BF-4EB3-8F80-D71618696362} = {6803696C-B19A-4B27-9193-082A02B6F205}
232231
EndGlobalSection

global.json

+1-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1 @@
1-
{
2-
"projects": [ "src", "test", "src/providers", "src/extensions" ],
3-
"sdk": {
4-
"version": "1.0.0-preview2-003131"
5-
}
6-
}
1+
{"projects":["src","test","src/providers","src/extensions"]}

src/WorkflowCore/ExtensionMethods.cs

-27
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+

2+
namespace WorkflowCore.Interface
3+
{
4+
public interface IBackgroundWorker
5+
{
6+
void Start();
7+
void Stop();
8+
}
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+

2+
namespace WorkflowCore.Interface
3+
{
4+
interface IPublishThread : IBackgroundWorker
5+
{
6+
}
7+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+

2+
namespace WorkflowCore.Interface
3+
{
4+
interface IRunnablePoller : IBackgroundWorker
5+
{
6+
}
7+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+

2+
namespace WorkflowCore.Interface
3+
{
4+
interface IWorkflowThread : IBackgroundWorker
5+
{
6+
}
7+
}

src/WorkflowCore/Models/WorkflowStep.cs

+14
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections.Generic;
33
using System.Linq;
44
using System.Linq.Expressions;
5+
using System.Reflection;
56
using System.Threading.Tasks;
67
using WorkflowCore.Interface;
78

@@ -39,6 +40,19 @@ public virtual void AfterExecute(IWorkflowHost host, IPersistenceProvider persis
3940
{
4041
}
4142

43+
public virtual IStepBody ConstructBody(IServiceProvider serviceProvider)
44+
{
45+
IStepBody body = (serviceProvider.GetService(BodyType) as IStepBody);
46+
if (body == null)
47+
{
48+
var stepCtor = BodyType.GetConstructor(new Type[] { });
49+
if (stepCtor != null)
50+
body = (stepCtor.Invoke(null) as IStepBody);
51+
}
52+
53+
return body;
54+
}
55+
4256
}
4357

4458
public enum ExecutionPipelineDirective { Next = 0, Defer = 1 }

src/WorkflowCore/Models/WorkflowStepInline.cs

+5
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,10 @@ namespace WorkflowCore.Models
1010
public class WorkflowStepInline : WorkflowStep<InlineStepBody>
1111
{
1212
public Func<IStepExecutionContext, ExecutionResult> Body { get; set; }
13+
14+
public override IStepBody ConstructBody(IServiceProvider serviceProvider)
15+
{
16+
return new InlineStepBody(Body);
17+
}
1318
}
1419
}

src/WorkflowCore/ServiceCollectionExtensions.cs

+7-10
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,18 @@ public static void AddWorkflow(this IServiceCollection services, Action<Workflow
1818
if (setupAction != null)
1919
setupAction.Invoke(options);
2020
services.AddTransient<IPersistenceProvider>(options.PersistanceFactory);
21-
services.AddTransient<IQueueProvider>(options.QueueFactory);
21+
services.AddSingleton<IQueueProvider>(options.QueueFactory);
2222
services.AddSingleton<IDistributedLockProvider>(options.LockFactory);
2323
services.AddSingleton<IWorkflowRegistry, WorkflowRegistry>();
24+
services.AddSingleton<WorkflowOptions>(options);
25+
26+
services.AddSingleton<IWorkflowHost, WorkflowHost>();
2427

25-
services.AddSingleton<IWorkflowHost, WorkflowHost>(sp =>
26-
new WorkflowHost(sp.GetService<IPersistenceProvider>(),
27-
sp.GetService<IQueueProvider>(),
28-
options,
29-
sp.GetService<ILoggerFactory>(),
30-
sp,
31-
sp.GetService<IWorkflowRegistry>(),
32-
sp.GetService<IDistributedLockProvider>())
33-
);
3428
services.AddTransient<IWorkflowExecutor, WorkflowExecutor>();
3529
services.AddTransient<IWorkflowBuilder, WorkflowBuilder>();
30+
services.AddTransient<IWorkflowThread, WorkflowThread>();
31+
services.AddTransient<IPublishThread, PublishThread>();
32+
services.AddTransient<IRunnablePoller, RunnablePoller>();
3633
}
3734
}
3835
}

src/WorkflowCore/Services/MemoryPersistenceProvider.cs

+3
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
namespace WorkflowCore.Services
1010
{
11+
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously
1112
/// <summary>
1213
/// In-memory implementation of IPersistenceProvider for demo and testing purposes
1314
/// </summary>
@@ -18,6 +19,7 @@ public class MemoryPersistenceProvider : IPersistenceProvider
1819
private static List<EventSubscription> _subscriptions = new List<EventSubscription>();
1920
private static List<EventPublication> _unpublishedEvents = new List<EventPublication>();
2021

22+
2123
public async Task<string> CreateNewWorkflow(WorkflowInstance workflow)
2224
{
2325
workflow.Id = Guid.NewGuid().ToString();
@@ -103,4 +105,5 @@ public async Task<IEnumerable<EventPublication>> GetUnpublishedEvents()
103105
return _unpublishedEvents;
104106
}
105107
}
108+
#pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously
106109
}

0 commit comments

Comments
 (0)