public static IApplicationBuilder UseWorkflow(this IApplicationBuilder app, IConfigurationRoot configuration)
        {
            // WorkflowInit static properties need to be setup before Configurator.Configure since
            // WorkflowRuntime.ForceInit is called.
            WorkflowInit.RuleProvider   = app.ApplicationServices.GetRequiredService <IWorkflowRuleProvider>();
            WorkflowInit.ActionProvider = app.ApplicationServices.GetRequiredService <IWorkflowActionProvider>();
            //DWKIT Init
            Configurator.Configure(
                (IHttpContextAccessor)app.ApplicationServices.GetService(typeof(IHttpContextAccessor)),
                (IHubContext <ClientNotificationHub>)app.ApplicationServices.GetService(typeof(IHubContext <ClientNotificationHub>)),
                configuration);

            WorkflowRuntime runtime         = app.ApplicationServices.GetService(typeof(WorkflowRuntime)) as WorkflowRuntime;
            var             workflowService = app.ApplicationServices.GetService(typeof(WorkflowActivityMonitorService)) as WorkflowActivityMonitorService;

            workflowService.RegisterEventHandlers(runtime);

            var CodeActionsDebugOn = GetIntVarOrDefault("DWKIT_CODE_ACTIONS_DEBUG", 0);

            if (CodeActionsDebugOn > 0)
            {
                var temp = GetVarOrDefault("TEMP", "unset");
                Log.Information($"DWKIT CodeActionDebugOn: TEMP={temp}");
                runtime.CodeActionsDebugOn();
            }


            RecurringJob.AddOrUpdate <WorkflowActivityMonitorService>("WorkflowActivityMonitor", service => service.CheckActivityStatus(), Cron.MinuteInterval(5));
            RecurringJob.AddOrUpdate <WorkflowSecuritySyncService>("WorkflowSecuritySync", service => service.SyncWorkflowSecurity(), Cron.MinuteInterval(5));
            BackgroundJob.Schedule <WorkflowValidationService>(service => service.validateWorkflows(), TimeSpan.FromSeconds(30));
            return(app);
        }