@@ -11,7 +11,7 @@ namespace WorkflowCore.Services
11
11
public class WorkflowRegistry : IWorkflowRegistry
12
12
{
13
13
private readonly IServiceProvider _serviceProvider ;
14
- private readonly BlockingCollection < Tuple < string , int , WorkflowDefinition > > _registry = new BlockingCollection < Tuple < string , int , WorkflowDefinition > > ( ) ;
14
+ private readonly BlockingCollection < ( string workflowId , int version , WorkflowDefinition definition ) > _registry = new BlockingCollection < ( string , int , WorkflowDefinition ) > ( ) ;
15
15
16
16
public WorkflowRegistry ( IServiceProvider serviceProvider )
17
17
{
@@ -20,75 +20,75 @@ public WorkflowRegistry(IServiceProvider serviceProvider)
20
20
21
21
public WorkflowDefinition GetDefinition ( string workflowId , int ? version = null )
22
22
{
23
+ ( string workflowId , int version , WorkflowDefinition definition ) workflowEntry ;
23
24
if ( version . HasValue )
24
25
{
25
- var entry = _registry . FirstOrDefault ( x => x . Item1 == workflowId && x . Item2 == version . Value ) ;
26
- // TODO: What in the heck does Item3 mean?
27
- return entry ? . Item3 ;
26
+ workflowEntry = _registry . FirstOrDefault ( x => x . workflowId == workflowId && x . version == version . Value ) ;
28
27
}
29
28
else
30
29
{
31
- var entry = _registry . Where ( x => x . Item1 == workflowId ) . OrderByDescending ( x => x . Item2 )
32
- . FirstOrDefault ( ) ;
33
- return entry ? . Item3 ;
30
+ workflowEntry = _registry . Where ( x => x . workflowId == workflowId ) . OrderByDescending ( x => x . version )
31
+ . FirstOrDefault ( ) ;
34
32
}
33
+
34
+ return workflowEntry != default ? workflowEntry . definition : default ;
35
35
}
36
36
37
37
public void DeregisterWorkflow ( string workflowId , int version )
38
38
{
39
- var definition = _registry . FirstOrDefault ( x => x . Item1 == workflowId && x . Item2 == version ) ;
40
- if ( definition != null )
39
+ var definition = _registry . FirstOrDefault ( x => x . workflowId == workflowId && x . version == version ) ;
40
+ if ( definition != default )
41
41
{
42
42
_registry . TryTake ( out definition ) ;
43
43
}
44
44
}
45
45
46
46
public void RegisterWorkflow ( IWorkflow workflow )
47
47
{
48
- if ( _registry . Any ( x => x . Item1 == workflow . Id && x . Item2 == workflow . Version ) )
48
+ if ( _registry . Any ( x => x . workflowId == workflow . Id && x . version == workflow . Version ) )
49
49
{
50
50
throw new InvalidOperationException ( $ "Workflow { workflow . Id } version { workflow . Version } is already registered") ;
51
51
}
52
52
53
- var builder = _serviceProvider . GetService < IWorkflowBuilder > ( ) . UseData < object > ( ) ;
53
+ var builder = _serviceProvider . GetService < IWorkflowBuilder > ( ) . UseData < object > ( ) ;
54
54
workflow . Build ( builder ) ;
55
55
var def = builder . Build ( workflow . Id , workflow . Version ) ;
56
- _registry . Add ( Tuple . Create ( workflow . Id , workflow . Version , def ) ) ;
56
+ _registry . Add ( ( workflow . Id , workflow . Version , def ) ) ;
57
57
}
58
58
59
59
public void RegisterWorkflow ( WorkflowDefinition definition )
60
60
{
61
- if ( _registry . Any ( x => x . Item1 == definition . Id && x . Item2 == definition . Version ) )
61
+ if ( _registry . Any ( x => x . workflowId == definition . Id && x . version == definition . Version ) )
62
62
{
63
63
throw new InvalidOperationException ( $ "Workflow { definition . Id } version { definition . Version } is already registered") ;
64
64
}
65
65
66
- _registry . Add ( Tuple . Create ( definition . Id , definition . Version , definition ) ) ;
66
+ _registry . Add ( ( definition . Id , definition . Version , definition ) ) ;
67
67
}
68
68
69
69
public void RegisterWorkflow < TData > ( IWorkflow < TData > workflow )
70
70
where TData : new ( )
71
71
{
72
- if ( _registry . Any ( x => x . Item1 == workflow . Id && x . Item2 == workflow . Version ) )
72
+ if ( _registry . Any ( x => x . workflowId == workflow . Id && x . version == workflow . Version ) )
73
73
{
74
74
throw new InvalidOperationException ( $ "Workflow { workflow . Id } version { workflow . Version } is already registered") ;
75
75
}
76
76
77
77
var builder = _serviceProvider . GetService < IWorkflowBuilder > ( ) . UseData < TData > ( ) ;
78
78
workflow . Build ( builder ) ;
79
79
var def = builder . Build ( workflow . Id , workflow . Version ) ;
80
- _registry . Add ( Tuple . Create ( workflow . Id , workflow . Version , def ) ) ;
80
+ _registry . Add ( ( workflow . Id , workflow . Version , def ) ) ;
81
81
}
82
82
83
83
public bool IsRegistered ( string workflowId , int version )
84
84
{
85
- var definition = _registry . FirstOrDefault ( x => x . Item1 == workflowId && x . Item2 == version ) ;
86
- return ( definition != null ) ;
85
+ var definition = _registry . FirstOrDefault ( x => x . workflowId == workflowId && x . version == version ) ;
86
+ return definition != default ;
87
87
}
88
88
89
89
public IEnumerable < WorkflowDefinition > GetAllDefinitions ( )
90
90
{
91
- return _registry . Select ( i => i . Item3 ) ;
91
+ return _registry . Select ( i => i . definition ) ;
92
92
}
93
93
}
94
- }
94
+ }
0 commit comments