|
1 | 1 | using Hangfire; |
| 2 | +using Microsoft.Extensions.Configuration; |
2 | 3 | using Microsoft.Extensions.Hosting; |
3 | 4 | using System; |
4 | 5 | using System.Collections.Generic; |
@@ -29,31 +30,45 @@ protected override async Task ExecuteAsync(CancellationToken stoppingToken) |
29 | 30 |
|
30 | 31 | var workflows = sp.GetRequiredService<IWorkflowRepository>(); |
31 | 32 | var jobs = sp.GetRequiredService<IRecurringJobManager>(); |
| 33 | + var configuration = sp.GetRequiredService<IConfiguration>(); |
32 | 34 |
|
33 | 35 | foreach (var workflow in await workflows.GetAllWorkflows()) |
34 | 36 | { |
35 | 37 |
|
36 | 38 | foreach (var trigger in workflow.Manifest.Triggers.Where(t => t.Value.Type == "TimerTrigger")) |
37 | 39 | { |
38 | 40 |
|
| 41 | + |
| 42 | + |
39 | 43 | if (!trigger.Equals(default(KeyValuePair<string, TriggerMetadata>))) |
40 | 44 | { |
| 45 | + if(configuration.GetSection($"Workflows:{workflow.GetType().Name}")?.Value == "false" || |
| 46 | + configuration.GetSection($"Workflows:{workflow.GetType().Name}:{trigger.Key}")?.Value == "false" |
| 47 | + ) |
| 48 | + { |
| 49 | + jobs.RemoveIfExists(workflow.Id.ToString() + trigger.Key); |
| 50 | + continue; |
| 51 | + } |
41 | 52 |
|
42 | 53 | workflow.Manifest = null; |
43 | 54 |
|
44 | 55 | jobs.AddOrUpdate(workflow.Id.ToString() + trigger.Key, |
45 | | - (System.Linq.Expressions.Expression<System.Action<IHangfireWorkflowExecutor>>)((executor) => executor.TriggerAsync(new TriggerContext |
46 | | - { |
47 | | - PrincipalId = "1b714972-8d0a-4feb-b166-08d93c6ae328", |
48 | | - Workflow = workflow, |
49 | | - Trigger = new Trigger |
50 | | - { |
51 | | - Inputs = trigger.Value.Inputs, |
52 | | - ScheduledTime = DateTimeOffset.UtcNow, |
53 | | - Type = trigger.Value.Type, |
54 | | - Key = trigger.Key |
55 | | - }, |
56 | | - }, null)), trigger.Value.Inputs["cronExpression"] as string,GetTimeZone(trigger) ); |
| 56 | + (System.Linq.Expressions.Expression<System.Action<IHangfireWorkflowExecutor>>) ((executor) => executor.TriggerAsync(new TriggerContext |
| 57 | + { |
| 58 | + PrincipalId = "1b714972-8d0a-4feb-b166-08d93c6ae328", |
| 59 | + Workflow = workflow, |
| 60 | + Trigger = new Trigger |
| 61 | + { |
| 62 | + Inputs = trigger.Value.Inputs, |
| 63 | + ScheduledTime = DateTimeOffset.UtcNow, |
| 64 | + Type = trigger.Value.Type, |
| 65 | + Key = trigger.Key |
| 66 | + }, |
| 67 | + }, null)), trigger.Value.Inputs["cronExpression"] as string,new RecurringJobOptions |
| 68 | + { |
| 69 | + TimeZone = GetTimeZone(trigger) |
| 70 | + }); |
| 71 | + |
57 | 72 |
|
58 | 73 | if (first && trigger.Value.Inputs.ContainsKey("runAtStartup") && (bool)trigger.Value.Inputs["runAtStartup"]) |
59 | 74 | jobs.Trigger(workflow.Id.ToString() + trigger.Key); |
|
0 commit comments