@@ -59,7 +59,7 @@ public IStepBuilder<TData, TStep> Then<TStep>(IStepBuilder<TData, TStep> newStep
59
59
}
60
60
61
61
public IStepBuilder < TData , InlineStepBody > Then ( Func < IStepExecutionContext , ExecutionResult > body )
62
- {
62
+ {
63
63
WorkflowStepInline newStep = new WorkflowStepInline ( ) ;
64
64
newStep . Body = body ;
65
65
WorkflowBuilder . AddStep ( newStep ) ;
@@ -100,7 +100,7 @@ public IStepOutcomeBuilder<TData> When(object outcomeValue, string label = null)
100
100
var outcomeBuilder = new StepOutcomeBuilder < TData > ( WorkflowBuilder , result ) ;
101
101
return outcomeBuilder ;
102
102
}
103
-
103
+
104
104
public IStepBuilder < TData , TStepBody > Branch < TStep > ( object outcomeValue , IStepBuilder < TData , TStep > branch ) where TStep : IStepBody
105
105
{
106
106
if ( branch . WorkflowBuilder . Steps . Count == 0 )
@@ -123,10 +123,10 @@ public IStepBuilder<TData, TStepBody> Branch<TStep>(Expression<Func<TData, objec
123
123
if ( branch . WorkflowBuilder . Steps . Count == 0 )
124
124
return this ;
125
125
126
- WorkflowBuilder . AttachBranch ( branch . WorkflowBuilder ) ;
126
+ WorkflowBuilder . AttachBranch ( branch . WorkflowBuilder ) ;
127
127
128
128
Step . Outcomes . Add ( new ExpressionOutcome < TData > ( outcomeExpression )
129
- {
129
+ {
130
130
NextStep = branch . WorkflowBuilder . Steps [ 0 ] . Id
131
131
} ) ;
132
132
@@ -155,7 +155,7 @@ public IStepBuilder<TData, TStepBody> Input(Action<TStepBody, TData, IStepExecut
155
155
{
156
156
Step . Inputs . Add ( new ActionParameter < TStepBody , TData > ( action ) ) ;
157
157
return this ;
158
- }
158
+ }
159
159
160
160
public IStepBuilder < TData , TStepBody > Output < TOutput > ( Expression < Func < TData , TOutput > > dataProperty , Expression < Func < TStepBody , object > > value )
161
161
{
@@ -206,7 +206,7 @@ public IStepBuilder<TData, WaitFor> WaitFor(string eventName, Expression<Func<TD
206
206
Step . Outcomes . Add ( new ValueOutcome { NextStep = newStep . Id } ) ;
207
207
return stepBuilder ;
208
208
}
209
-
209
+
210
210
public IStepBuilder < TData , TStep > End < TStep > ( string name ) where TStep : IStepBody
211
211
{
212
212
var ancestor = IterateParents ( Step . Id , name ) ;
@@ -294,12 +294,12 @@ public IStepBuilder<TData, Decide> Decide(Expression<Func<TData, object>> expres
294
294
public IContainerStepBuilder < TData , Foreach , Foreach > ForEach ( Expression < Func < TData , IEnumerable > > collection )
295
295
{
296
296
var newStep = new WorkflowStep < Foreach > ( ) ;
297
-
297
+
298
298
Expression < Func < Foreach , IEnumerable > > inputExpr = ( x => x . Collection ) ;
299
- newStep . Inputs . Add ( new MemberMapParameter ( collection , inputExpr ) ) ;
299
+ newStep . Inputs . Add ( new MemberMapParameter ( collection , inputExpr ) ) ;
300
300
301
301
WorkflowBuilder . AddStep ( newStep ) ;
302
- var stepBuilder = new StepBuilder < TData , Foreach > ( WorkflowBuilder , newStep ) ;
302
+ var stepBuilder = new StepBuilder < TData , Foreach > ( WorkflowBuilder , newStep ) ;
303
303
304
304
Step . Outcomes . Add ( new ValueOutcome { NextStep = newStep . Id } ) ;
305
305
@@ -324,6 +324,23 @@ public IContainerStepBuilder<TData, Foreach, Foreach> ForEach(Expression<Func<TD
324
324
return stepBuilder ;
325
325
}
326
326
327
+ public IContainerStepBuilder < TData , Foreach , Foreach > ForEach ( Expression < Func < TData , IStepExecutionContext , IEnumerable > > collection , Expression < Func < TData , bool > > runParallel )
328
+ {
329
+ var newStep = new WorkflowStep < Foreach > ( ) ;
330
+
331
+ Expression < Func < Foreach , IEnumerable > > inputExpr = ( x => x . Collection ) ;
332
+ newStep . Inputs . Add ( new MemberMapParameter ( collection , inputExpr ) ) ;
333
+
334
+ Expression < Func < Foreach , bool > > pExpr = ( x => x . RunParallel ) ;
335
+ newStep . Inputs . Add ( new MemberMapParameter ( runParallel , pExpr ) ) ;
336
+
337
+ WorkflowBuilder . AddStep ( newStep ) ;
338
+ var stepBuilder = new StepBuilder < TData , Foreach > ( WorkflowBuilder , newStep ) ;
339
+
340
+ Step . Outcomes . Add ( new ValueOutcome { NextStep = newStep . Id } ) ;
341
+
342
+ return stepBuilder ;
343
+ }
327
344
328
345
public IContainerStepBuilder < TData , While , While > While ( Expression < Func < TData , bool > > condition )
329
346
{
@@ -340,6 +357,21 @@ public IContainerStepBuilder<TData, While, While> While(Expression<Func<TData, b
340
357
return stepBuilder ;
341
358
}
342
359
360
+ public IContainerStepBuilder < TData , While , While > While ( Expression < Func < TData , IStepExecutionContext , bool > > condition )
361
+ {
362
+ var newStep = new WorkflowStep < While > ( ) ;
363
+
364
+ Expression < Func < While , bool > > inputExpr = ( x => x . Condition ) ;
365
+ newStep . Inputs . Add ( new MemberMapParameter ( condition , inputExpr ) ) ;
366
+
367
+ WorkflowBuilder . AddStep ( newStep ) ;
368
+ var stepBuilder = new StepBuilder < TData , While > ( WorkflowBuilder , newStep ) ;
369
+
370
+ Step . Outcomes . Add ( new ValueOutcome { NextStep = newStep . Id } ) ;
371
+
372
+ return stepBuilder ;
373
+ }
374
+
343
375
public IContainerStepBuilder < TData , If , If > If ( Expression < Func < TData , bool > > condition )
344
376
{
345
377
var newStep = new WorkflowStep < If > ( ) ;
@@ -354,7 +386,22 @@ public IContainerStepBuilder<TData, If, If> If(Expression<Func<TData, bool>> con
354
386
355
387
return stepBuilder ;
356
388
}
357
-
389
+
390
+ public IContainerStepBuilder < TData , If , If > If ( Expression < Func < TData , IStepExecutionContext , bool > > condition )
391
+ {
392
+ var newStep = new WorkflowStep < If > ( ) ;
393
+
394
+ Expression < Func < If , bool > > inputExpr = ( x => x . Condition ) ;
395
+ newStep . Inputs . Add ( new MemberMapParameter ( condition , inputExpr ) ) ;
396
+
397
+ WorkflowBuilder . AddStep ( newStep ) ;
398
+ var stepBuilder = new StepBuilder < TData , If > ( WorkflowBuilder , newStep ) ;
399
+
400
+ Step . Outcomes . Add ( new ValueOutcome { NextStep = newStep . Id } ) ;
401
+
402
+ return stepBuilder ;
403
+ }
404
+
358
405
public IContainerStepBuilder < TData , When , OutcomeSwitch > When ( Expression < Func < TData , object > > outcomeValue , string label = null )
359
406
{
360
407
var newStep = new WorkflowStep < When > ( ) ;
@@ -378,7 +425,7 @@ public IContainerStepBuilder<TData, When, OutcomeSwitch> When(Expression<Func<TD
378
425
{
379
426
switchBuilder = ( this as IStepBuilder < TData , OutcomeSwitch > ) ;
380
427
}
381
-
428
+
382
429
WorkflowBuilder . AddStep ( newStep ) ;
383
430
var stepBuilder = new ReturnStepBuilder < TData , When , OutcomeSwitch > ( WorkflowBuilder , newStep , switchBuilder ) ;
384
431
switchBuilder . Step . Children . Add ( newStep . Id ) ;
@@ -512,10 +559,10 @@ public IStepBuilder<TData, Activity> Activity(string activityName, Expression<Fu
512
559
WorkflowBuilder . AddStep ( newStep ) ;
513
560
var stepBuilder = new StepBuilder < TData , Activity > ( WorkflowBuilder , newStep ) ;
514
561
stepBuilder . Input ( ( step ) => step . ActivityName , ( data ) => activityName ) ;
515
-
562
+
516
563
if ( parameters != null )
517
564
stepBuilder . Input ( ( step ) => step . Parameters , parameters ) ;
518
-
565
+
519
566
if ( effectiveDate != null )
520
567
stepBuilder . Input ( ( step ) => step . EffectiveDate , effectiveDate ) ;
521
568
0 commit comments