Skip to content

Commit fa4d37e

Browse files
committed
fix: added environment variables to disable workflows,workflows__{name}=false will remove the workflow schedule
1 parent 6d36157 commit fa4d37e

File tree

1 file changed

+27
-12
lines changed

1 file changed

+27
-12
lines changed

src/WorkflowEngine.Hangfire/WorkflowStarterBackgroundJob.cs

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using Hangfire;
2+
using Microsoft.Extensions.Configuration;
23
using Microsoft.Extensions.Hosting;
34
using System;
45
using System.Collections.Generic;
@@ -29,31 +30,45 @@ protected override async Task ExecuteAsync(CancellationToken stoppingToken)
2930

3031
var workflows = sp.GetRequiredService<IWorkflowRepository>();
3132
var jobs = sp.GetRequiredService<IRecurringJobManager>();
33+
var configuration = sp.GetRequiredService<IConfiguration>();
3234

3335
foreach (var workflow in await workflows.GetAllWorkflows())
3436
{
3537

3638
foreach (var trigger in workflow.Manifest.Triggers.Where(t => t.Value.Type == "TimerTrigger"))
3739
{
3840

41+
42+
3943
if (!trigger.Equals(default(KeyValuePair<string, TriggerMetadata>)))
4044
{
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+
}
4152

4253
workflow.Manifest = null;
4354

4455
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+
5772

5873
if (first && trigger.Value.Inputs.ContainsKey("runAtStartup") && (bool)trigger.Value.Inputs["runAtStartup"])
5974
jobs.Trigger(workflow.Id.ToString() + trigger.Key);

0 commit comments

Comments
 (0)