Skip to content

Commit 96b4b82

Browse files
committed
delay step
1 parent cfe8dfb commit 96b4b82

File tree

14 files changed

+88
-70
lines changed

14 files changed

+88
-70
lines changed

src/WorkflowCore/Interface/IStepBuilder.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,18 @@ public interface IStepBuilder<TData, TStepBody>
7676
/// </summary>
7777
/// <param name="eventName"></param>
7878
/// <param name="eventKey"></param>
79+
/// <param name="effectiveDate"></param>
7980
/// <returns></returns>
8081
IStepBuilder<TData, SubscriptionStepBody> WaitFor(string eventName, Expression<Func<TData, string>> eventKey, Expression<Func<TData, DateTime>> effectiveDate = null);
8182

8283
IStepBuilder<TData, TStep> End<TStep>(string name) where TStep : IStepBody;
8384

85+
/// <summary>
86+
/// Configure the behavior when this step throws an unhandled exception
87+
/// </summary>
88+
/// <param name="behavior"></param>
89+
/// <param name="retryInterval"></param>
90+
/// <returns></returns>
8491
IStepBuilder<TData, TStepBody> OnError(WorkflowErrorHandling behavior, TimeSpan? retryInterval = null);
8592

8693
/// <summary>
@@ -89,6 +96,13 @@ public interface IStepBuilder<TData, TStepBody>
8996
/// <returns></returns>
9097
IStepBuilder<TData, TStepBody> EndWorkflow();
9198

99+
/// <summary>
100+
/// Wait for a specified period
101+
/// </summary>
102+
/// <param name="period"></param>
103+
/// <returns></returns>
104+
IStepBuilder<TData, Delay> Delay(Expression<Func<TData, TimeSpan>> period);
105+
92106
IContainerStepBuilder<TData, Foreach, Foreach> ForEach(Expression<Func<TData, IEnumerable>> collection);
93107

94108
IContainerStepBuilder<TData, While, While> While(Expression<Func<TData, bool>> condition);
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Threading.Tasks;
5+
using WorkflowCore.Interface;
6+
using WorkflowCore.Models;
7+
8+
namespace WorkflowCore.Primitives
9+
{
10+
public class Delay : StepBody
11+
{
12+
public TimeSpan Period { get; set; }
13+
14+
public override ExecutionResult Run(IStepExecutionContext context)
15+
{
16+
if (context.PersistenceData != null)
17+
return ExecutionResult.Next();
18+
19+
return ExecutionResult.Sleep(Period, true);
20+
}
21+
}
22+
}

src/WorkflowCore/Services/StepBuilder.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,27 @@ public IStepBuilder<TData, TStepBody> EndWorkflow()
150150
return this;
151151
}
152152

153+
public IStepBuilder<TData, Delay> Delay(Expression<Func<TData, TimeSpan>> period)
154+
{
155+
var newStep = new WorkflowStep<Delay>();
156+
157+
Expression<Func<Delay, TimeSpan>> inputExpr = (x => x.Period);
158+
159+
var mapping = new DataMapping()
160+
{
161+
Source = period,
162+
Target = inputExpr
163+
};
164+
newStep.Inputs.Add(mapping);
165+
166+
WorkflowBuilder.AddStep(newStep);
167+
var stepBuilder = new StepBuilder<TData, Delay>(WorkflowBuilder, newStep);
168+
169+
Step.Outcomes.Add(new StepOutcome() { NextStep = newStep.Id });
170+
171+
return stepBuilder;
172+
}
173+
153174
public IContainerStepBuilder<TData, Foreach, Foreach> ForEach(Expression<Func<TData, IEnumerable>> collection)
154175
{
155176
var newStep = new WorkflowStep<Foreach>();

src/WorkflowCore/WorkflowCore.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<AssemblyTitle>Workflow Core</AssemblyTitle>
55
<VersionPrefix>1.1.0</VersionPrefix>
66
<Authors>Daniel Gerlag</Authors>
7-
<TargetFrameworks>netstandard1.3;net452</TargetFrameworks>
7+
<TargetFramework>netstandard1.3</TargetFramework>
88
<AssemblyName>WorkflowCore</AssemblyName>
99
<PackageId>WorkflowCore</PackageId>
1010
<PackageTags>workflow;.NET;Core;state machine</PackageTags>
@@ -18,9 +18,9 @@
1818
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
1919
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
2020
<Description>Workflow Core is a light weight workflow engine targeting .NET Standard.</Description>
21-
<Version>1.2.7</Version>
22-
<AssemblyVersion>1.2.7.0</AssemblyVersion>
23-
<FileVersion>1.2.7.0</FileVersion>
21+
<Version>1.2.8</Version>
22+
<AssemblyVersion>1.2.8.0</AssemblyVersion>
23+
<FileVersion>1.2.8.0</FileVersion>
2424
<PackageReleaseNotes></PackageReleaseNotes>
2525
</PropertyGroup>
2626

src/providers/WorkflowCore.LockProviders.Redlock/WorkflowCore.LockProviders.Redlock.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<AssemblyTitle>Workflow Core Redlock distributed lock manager</AssemblyTitle>
55
<VersionPrefix>1.1.0</VersionPrefix>
66
<Authors>Daniel Gerlag</Authors>
7-
<TargetFrameworks>netstandard1.3;net452</TargetFrameworks>
7+
<TargetFramework>netstandard1.3</TargetFramework>
88
<AssemblyName>WorkflowCore.LockProviders.Redlock</AssemblyName>
99
<PackageId>WorkflowCore.LockProviders.Redlock</PackageId>
1010
<PackageTags>workflow;.NET;Core;state machine;WorkflowCore;Redlock</PackageTags>

src/providers/WorkflowCore.LockProviders.ZeroMQ/WorkflowCore.LockProviders.ZeroMQ.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<AssemblyTitle>Workflow Core 0MQ distributed lock manager</AssemblyTitle>
55
<VersionPrefix>1.1.0</VersionPrefix>
66
<Authors>Daniel Gerlag</Authors>
7-
<TargetFrameworks>netstandard1.3;net452</TargetFrameworks>
7+
<TargetFramework>netstandard1.3</TargetFramework>
88
<AssemblyName>WorkflowCore.LockProviders.ZeroMQ</AssemblyName>
99
<PackageId>WorkflowCore.LockProviders.ZeroMQ</PackageId>
1010
<PackageTags>workflow;.NET;Core;state machine;WorkflowCore;0MQ</PackageTags>

src/providers/WorkflowCore.Persistence.EntityFramework/WorkflowCore.Persistence.EntityFramework.csproj

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<AssemblyTitle>Workflow Core EntityFramework Core Persistence Provider</AssemblyTitle>
55
<VersionPrefix>1.1.0</VersionPrefix>
66
<Authors>Daniel Gerlag</Authors>
7-
<TargetFrameworks>netstandard1.3;net452</TargetFrameworks>
7+
<TargetFramework>netstandard1.3</TargetFramework>
88
<AssemblyName>WorkflowCore.Persistence.EntityFramework</AssemblyName>
99
<PackageId>WorkflowCore.Persistence.EntityFramework</PackageId>
1010
<PackageTags>workflow;.NET;Core;state machine;WorkflowCore;EntityFramework;EntityFrameworkCore</PackageTags>
@@ -17,7 +17,7 @@
1717
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
1818
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
1919
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
20-
<Version>1.2.7</Version>
20+
<Version>1.2.8</Version>
2121
<Description>Base package for Workflow-core peristence providers using entity framework</Description>
2222
</PropertyGroup>
2323

@@ -31,9 +31,4 @@
3131
<PackageReference Include="Newtonsoft.Json" Version="9.0.1" />
3232
</ItemGroup>
3333

34-
<ItemGroup Condition=" '$(TargetFramework)' == 'net452' ">
35-
<Reference Include="System" />
36-
<Reference Include="Microsoft.CSharp" />
37-
</ItemGroup>
38-
3934
</Project>

src/providers/WorkflowCore.Persistence.MongoDB/WorkflowCore.Persistence.MongoDB.csproj

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<AssemblyTitle>Workflow Core MongoDB Persistence Provider</AssemblyTitle>
55
<VersionPrefix>1.1.0</VersionPrefix>
66
<Authors>Daniel Gerlag</Authors>
7-
<TargetFrameworks>netstandard1.3;net452</TargetFrameworks>
7+
<TargetFramework>netstandard1.3</TargetFramework>
88
<AssemblyName>WorkflowCore.Persistence.MongoDB</AssemblyName>
99
<PackageId>WorkflowCore.Persistence.MongoDB</PackageId>
1010
<PackageTags>workflow;.NET;Core;state machine;WorkflowCore;MongoDB;Mongo</PackageTags>
@@ -17,10 +17,10 @@
1717
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
1818
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
1919
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
20-
<Version>1.2.7</Version>
20+
<Version>1.2.8</Version>
2121
<Description>Provides support to persist workflows running on Workflow Core to a MongoDB database.</Description>
22-
<AssemblyVersion>1.2.7.0</AssemblyVersion>
23-
<FileVersion>1.2.7.0</FileVersion>
22+
<AssemblyVersion>1.2.8.0</AssemblyVersion>
23+
<FileVersion>1.2.8.0</FileVersion>
2424
</PropertyGroup>
2525

2626
<ItemGroup>
@@ -37,9 +37,5 @@
3737
<PackageReference Include="System.Reflection" Version="4.3.0" />
3838
</ItemGroup>
3939

40-
<ItemGroup Condition=" '$(TargetFramework)' == 'net452' ">
41-
<Reference Include="System" />
42-
<Reference Include="Microsoft.CSharp" />
43-
</ItemGroup>
4440

4541
</Project>

src/providers/WorkflowCore.Persistence.PostgreSQL/WorkflowCore.Persistence.PostgreSQL.csproj

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<AssemblyTitle>Workflow Core PostgreSQL Persistence Provider</AssemblyTitle>
55
<VersionPrefix>1.1.0</VersionPrefix>
66
<Authors>Daniel Gerlag</Authors>
7-
<TargetFrameworks>netstandard1.3;net452</TargetFrameworks>
7+
<TargetFramework>netstandard1.3</TargetFramework>
88
<AssemblyName>WorkflowCore.Persistence.PostgreSQL</AssemblyName>
99
<PackageId>WorkflowCore.Persistence.PostgreSQL</PackageId>
1010
<PackageTags>workflow;.NET;Core;state machine;WorkflowCore;PostgreSQL</PackageTags>
@@ -18,9 +18,9 @@
1818
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
1919
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
2020
<Description>Provides support to persist workflows running on Workflow Core to a PostgreSQL database.</Description>
21-
<Version>1.2.4</Version>
22-
<AssemblyVersion>1.2.4.0</AssemblyVersion>
23-
<FileVersion>1.2.4.0</FileVersion>
21+
<Version>1.2.8</Version>
22+
<AssemblyVersion>1.2.8.0</AssemblyVersion>
23+
<FileVersion>1.2.8.0</FileVersion>
2424
</PropertyGroup>
2525

2626
<ItemGroup>
@@ -38,11 +38,6 @@
3838
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL.Design" Version="1.1.0" />
3939
</ItemGroup>
4040

41-
<ItemGroup Condition=" '$(TargetFramework)' == 'net452' ">
42-
<Reference Include="System" />
43-
<Reference Include="Microsoft.CSharp" />
44-
</ItemGroup>
45-
4641
<ItemGroup>
4742
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0-msbuild3-final" />
4843
</ItemGroup>

src/providers/WorkflowCore.Persistence.SqlServer/WorkflowCore.Persistence.SqlServer.csproj

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<AssemblyTitle>Workflow Core SQL Server Persistence Provider</AssemblyTitle>
55
<VersionPrefix>1.1.0</VersionPrefix>
66
<Authors>Daniel Gerlag</Authors>
7-
<TargetFrameworks>netstandard1.3;net452</TargetFrameworks>
7+
<TargetFramework>netstandard1.3</TargetFramework>
88
<AssemblyName>WorkflowCore.Persistence.SqlServer</AssemblyName>
99
<PackageId>WorkflowCore.Persistence.SqlServer</PackageId>
1010
<PackageTags>workflow;.NET;Core;state machine;WorkflowCore</PackageTags>
@@ -17,10 +17,10 @@
1717
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
1818
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
1919
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
20-
<Version>1.2.4</Version>
20+
<Version>1.2.8</Version>
2121
<Description>Provides support to persist workflows running on Workflow Core to a SQL Server database.</Description>
22-
<AssemblyVersion>1.2.4.0</AssemblyVersion>
23-
<FileVersion>1.2.4.0</FileVersion>
22+
<AssemblyVersion>1.2.8.0</AssemblyVersion>
23+
<FileVersion>1.2.8.0</FileVersion>
2424
</PropertyGroup>
2525

2626
<ItemGroup>
@@ -36,11 +36,6 @@
3636
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="1.1.1" />
3737
</ItemGroup>
3838

39-
<ItemGroup Condition=" '$(TargetFramework)' == 'net452' ">
40-
<Reference Include="System" />
41-
<Reference Include="Microsoft.CSharp" />
42-
</ItemGroup>
43-
4439
<ItemGroup>
4540
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0-msbuild3-final" />
4641
</ItemGroup>

0 commit comments

Comments
 (0)