@@ -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 , int , WorkflowDefinition ) > _registry = new BlockingCollection < ( string , int , WorkflowDefinition ) > ( ) ;
15
15
16
16
public WorkflowRegistry ( IServiceProvider serviceProvider )
17
17
{
@@ -20,23 +20,24 @@ 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
- return entry ? . Item3 ;
26
+ workflowEntry = _registry . FirstOrDefault ( x => x . Item1 == workflowId && x . Item2 == version . Value ) ;
27
27
}
28
28
else
29
29
{
30
- var entry = _registry . Where ( x => x . Item1 == workflowId ) . OrderByDescending ( x => x . Item2 )
31
- . FirstOrDefault ( ) ;
32
- return entry ? . Item3 ;
30
+ workflowEntry = _registry . Where ( x => x . Item1 == workflowId ) . OrderByDescending ( x => x . Item2 )
31
+ . FirstOrDefault ( ) ;
33
32
}
33
+
34
+ return workflowEntry != default ? workflowEntry . definition : default ;
34
35
}
35
36
36
37
public void DeregisterWorkflow ( string workflowId , int version )
37
38
{
38
39
var definition = _registry . FirstOrDefault ( x => x . Item1 == workflowId && x . Item2 == version ) ;
39
- if ( definition != null )
40
+ if ( definition != default )
40
41
{
41
42
_registry . TryTake ( out definition ) ;
42
43
}
@@ -49,10 +50,10 @@ public void RegisterWorkflow(IWorkflow workflow)
49
50
throw new InvalidOperationException ( $ "Workflow { workflow . Id } version { workflow . Version } is already registered") ;
50
51
}
51
52
52
- var builder = _serviceProvider . GetService < IWorkflowBuilder > ( ) . UseData < object > ( ) ;
53
+ var builder = _serviceProvider . GetService < IWorkflowBuilder > ( ) . UseData < object > ( ) ;
53
54
workflow . Build ( builder ) ;
54
55
var def = builder . Build ( workflow . Id , workflow . Version ) ;
55
- _registry . Add ( Tuple . Create ( workflow . Id , workflow . Version , def ) ) ;
56
+ _registry . Add ( ( workflow . Id , workflow . Version , def ) ) ;
56
57
}
57
58
58
59
public void RegisterWorkflow ( WorkflowDefinition definition )
@@ -62,7 +63,7 @@ public void RegisterWorkflow(WorkflowDefinition definition)
62
63
throw new InvalidOperationException ( $ "Workflow { definition . Id } version { definition . Version } is already registered") ;
63
64
}
64
65
65
- _registry . Add ( Tuple . Create ( definition . Id , definition . Version , definition ) ) ;
66
+ _registry . Add ( ( definition . Id , definition . Version , definition ) ) ;
66
67
}
67
68
68
69
public void RegisterWorkflow < TData > ( IWorkflow < TData > workflow )
@@ -76,18 +77,18 @@ public void RegisterWorkflow<TData>(IWorkflow<TData> workflow)
76
77
var builder = _serviceProvider . GetService < IWorkflowBuilder > ( ) . UseData < TData > ( ) ;
77
78
workflow . Build ( builder ) ;
78
79
var def = builder . Build ( workflow . Id , workflow . Version ) ;
79
- _registry . Add ( Tuple . Create ( workflow . Id , workflow . Version , def ) ) ;
80
+ _registry . Add ( ( workflow . Id , workflow . Version , def ) ) ;
80
81
}
81
82
82
83
public bool IsRegistered ( string workflowId , int version )
83
84
{
84
85
var definition = _registry . FirstOrDefault ( x => x . Item1 == workflowId && x . Item2 == version ) ;
85
- return ( definition != null ) ;
86
+ return definition != default ;
86
87
}
87
88
88
89
public IEnumerable < WorkflowDefinition > GetAllDefinitions ( )
89
90
{
90
91
return _registry . Select ( i => i . Item3 ) ;
91
92
}
92
93
}
93
- }
94
+ }
0 commit comments