Skip to content

Commit a0f929e

Browse files
committed
tpl refinements
1 parent 9ba9fbf commit a0f929e

File tree

7 files changed

+24
-16
lines changed

7 files changed

+24
-16
lines changed

src/WorkflowCore/Models/WorkflowOptions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public WorkflowOptions()
2020
{
2121
//set defaults
2222
PollInterval = TimeSpan.FromSeconds(10);
23-
IdleTime = TimeSpan.FromMilliseconds(100);
23+
IdleTime = TimeSpan.FromMilliseconds(500);
2424
ErrorRetryInterval = TimeSpan.FromSeconds(60);
2525

2626
QueueFactory = new Func<IServiceProvider, IQueueProvider>(sp => new SingleNodeQueueProvider());

src/WorkflowCore/Services/WorkflowTask.cs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class WorkflowTask : IBackgroundTask
1616
private readonly IWorkflowExecutor _executor;
1717
private readonly IQueueProvider _queueProvider;
1818
private readonly ILogger _logger;
19-
private readonly Task _task;
19+
private readonly IList<Task> _tasks;
2020
private readonly WorkflowOptions _options;
2121
private readonly IDateTimeProvider _datetimeProvider;
2222
private bool _shutdown = true;
@@ -29,21 +29,27 @@ public WorkflowTask(IPersistenceProvider persistenceStore, IQueueProvider queueP
2929
_options = options;
3030
_logger = loggerFactory.CreateLogger<WorkflowTask>();
3131
_lockProvider = lockProvider;
32-
_task = new Task(RunWorkflows);
32+
33+
_tasks = new List<Task>();
34+
for (int i = 0; i < Environment.ProcessorCount; i++)
35+
_tasks.Add(new Task(RunWorkflows));
36+
3337
_datetimeProvider = datetimeProvider;
3438
persistenceStore.EnsureStoreExists();
3539
}
3640

3741
public void Start()
3842
{
3943
_shutdown = false;
40-
_task.Start();
44+
foreach (var task in _tasks)
45+
task.Start();
4146
}
4247

4348
public void Stop()
4449
{
4550
_shutdown = true;
46-
_task.Wait();
51+
foreach (var task in _tasks)
52+
task.Wait();
4753
}
4854

4955
/// <summary>
@@ -56,8 +62,9 @@ private async void RunWorkflows()
5662
try
5763
{
5864
var workflowId = await _queueProvider.DequeueWork(QueueType.Workflow);
65+
5966
if (workflowId != null)
60-
Parallel.Invoke(() => ProcessWorkflow(workflowId));
67+
await ProcessWorkflow(workflowId);
6168
else
6269
await Task.Delay(_options.IdleTime); //no work
6370
}
@@ -68,7 +75,7 @@ private async void RunWorkflows()
6875
}
6976
}
7077

71-
private async void ProcessWorkflow(string workflowId)
78+
private async Task ProcessWorkflow(string workflowId)
7279
{
7380
try
7481
{

src/WorkflowCore/WorkflowCore.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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.9</Version>
22-
<AssemblyVersion>1.2.9.0</AssemblyVersion>
23-
<FileVersion>1.2.9.0</FileVersion>
21+
<Version>1.3.0</Version>
22+
<AssemblyVersion>1.3.0.0</AssemblyVersion>
23+
<FileVersion>1.3.0.0</FileVersion>
2424
<PackageReleaseNotes></PackageReleaseNotes>
2525
</PropertyGroup>
2626

src/extensions/WorkflowCore.Users/WorkflowCore.Users.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@
1818
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
1919
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
2020
<Description>Provides extensions for Workflow Core to enable human workflows.</Description>
21-
<Version>1.2.9</Version>
22-
<AssemblyVersion>1.2.9.0</AssemblyVersion>
23-
<FileVersion>1.2.9.0</FileVersion>
21+
<Version>1.3.0</Version>
22+
<AssemblyVersion>1.3.0.0</AssemblyVersion>
23+
<FileVersion>1.3.0.0</FileVersion>
2424
</PropertyGroup>
2525

2626
<ItemGroup>

src/samples/WorkflowCore.Sample03/Program.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public static void Main(string[] args)
2626
initialData.Value2 = 3;
2727

2828
host.StartWorkflow("PassingDataWorkflow", 1, initialData);
29+
host.StartWorkflow("PassingDataWorkflow", 1, new MyDataClass() { Value1 = 3, Value2 = 3 });
2930

3031
Console.ReadLine();
3132
host.Stop();

src/samples/WorkflowCore.Sample03/Steps/AddNumbers.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
namespace WorkflowCore.Sample03.Steps
99
{
10-
public class AddNumbers : StepBody
10+
public class AddNumbers : StepBodyAsync
1111
{
1212
public int Input1 { get; set; }
1313

@@ -16,7 +16,7 @@ public class AddNumbers : StepBody
1616
public int Output { get; set; }
1717

1818

19-
public override ExecutionResult Run(IStepExecutionContext context)
19+
public override async Task<ExecutionResult> RunAsync(IStepExecutionContext context)
2020
{
2121
Output = (Input1 + Input2);
2222
return ExecutionResult.Next();

src/samples/WorkflowCore.Sample13/Program.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public static void Main(string[] args)
1717
host.Start();
1818

1919
Console.WriteLine("Starting workflow...");
20-
string workflowId = host.StartWorkflow("parallel-sample").Result;
20+
host.StartWorkflow("parallel-sample");
2121

2222
Console.ReadLine();
2323
host.Stop();

0 commit comments

Comments
 (0)