@@ -75,9 +75,7 @@ public WorkflowExecutorResult Execute(WorkflowInstance workflow, WorkflowOptions
75
75
} ) ;
76
76
continue ;
77
77
}
78
-
79
- ProcessInputs ( workflow , step , body ) ;
80
-
78
+
81
79
IStepExecutionContext context = new StepExecutionContext ( )
82
80
{
83
81
Workflow = workflow ,
@@ -87,6 +85,8 @@ public WorkflowExecutorResult Execute(WorkflowInstance workflow, WorkflowOptions
87
85
Item = pointer . ContextItem
88
86
} ;
89
87
88
+ ProcessInputs ( workflow , step , body , context ) ;
89
+
90
90
switch ( step . BeforeExecute ( wfResult , context , pointer , body ) )
91
91
{
92
92
case ExecutionPipelineDirective . Defer :
@@ -198,12 +198,26 @@ private void ProcessExecutionResult(WorkflowInstance workflow, WorkflowDefinitio
198
198
}
199
199
}
200
200
201
- private void ProcessInputs ( WorkflowInstance workflow , WorkflowStep step , IStepBody body )
201
+ private void ProcessInputs ( WorkflowInstance workflow , WorkflowStep step , IStepBody body , IStepExecutionContext context )
202
202
{
203
+ //TODO: Move to own class
203
204
foreach ( var input in step . Inputs )
204
205
{
205
206
var member = ( input . Target . Body as MemberExpression ) ;
206
- var resolvedValue = input . Source . Compile ( ) . DynamicInvoke ( workflow . Data ) ;
207
+ object resolvedValue = null ;
208
+
209
+ switch ( input . Source . Parameters . Count )
210
+ {
211
+ case 1 :
212
+ resolvedValue = input . Source . Compile ( ) . DynamicInvoke ( workflow . Data ) ;
213
+ break ;
214
+ case 2 :
215
+ resolvedValue = input . Source . Compile ( ) . DynamicInvoke ( workflow . Data , context ) ;
216
+ break ;
217
+ default :
218
+ throw new ArgumentException ( ) ;
219
+ }
220
+
207
221
step . BodyType . GetProperty ( member . Member . Name ) . SetValue ( body , resolvedValue ) ;
208
222
}
209
223
}
0 commit comments