private static void ApplicationStopping(IApplicationBuilder app, IHostApplicationLifetime lifetime) { lifetime.ApplicationStopping.Register((context) => { IApplicationBuilder builder = context as IApplicationBuilder; ProcessEngineFactory engineFact = builder.ApplicationServices.GetService <ProcessEngineFactory>(); engineFact.Destroy(); }, app, true); }
public virtual void Close() { ProcessEngineFactory.Unregister(this); if (asyncExecutor != null && asyncExecutor.Active) { asyncExecutor.Shutdown(); } commandExecutor.Execute(processEngineConfiguration.SchemaCommandConfig, new SchemaOperationProcessEngineClose()); if (processEngineConfiguration.ProcessEngineLifecycleListener != null) { processEngineConfiguration.ProcessEngineLifecycleListener.OnProcessEngineClosed(this); } processEngineConfiguration.EventDispatcher.DispatchEvent(ActivitiEventBuilder.CreateGlobalEvent(ActivitiEventType.ENGINE_CLOSED)); }
public ProcessEngineImpl(ProcessEngineConfigurationImpl processEngineConfiguration) { this.processEngineConfiguration = processEngineConfiguration; this.name = processEngineConfiguration.ProcessEngineName; this.repositoryService = processEngineConfiguration.RepositoryService; this.runtimeService = processEngineConfiguration.RuntimeService; this.historicDataService = processEngineConfiguration.HistoryService; this.taskService = processEngineConfiguration.TaskService; this.managementService = processEngineConfiguration.ManagementService; this.dynamicBpmnService = processEngineConfiguration.DynamicBpmnService; this.asyncExecutor = processEngineConfiguration.AsyncExecutor; this.commandExecutor = processEngineConfiguration.CommandExecutor; this.sessionFactories = processEngineConfiguration.SessionFactories; this.transactionContextFactory = processEngineConfiguration.TransactionContextFactory; if (processEngineConfiguration.UsingRelationalDatabase && processEngineConfiguration.DatabaseSchemaUpdate is object) { commandExecutor.Execute(processEngineConfiguration.SchemaCommandConfig, new SchemaOperationsProcessEngineBuild()); } if (name is null) { log.LogInformation("default activiti ProcessEngine created"); } else { log.LogInformation($"ProcessEngine {name} created"); } ProcessEngineFactory.RegisterProcessEngine(this); if (asyncExecutor != null && asyncExecutor.AutoActivate) { asyncExecutor.Start(); } if (processEngineConfiguration.ProcessEngineLifecycleListener != null) { processEngineConfiguration.ProcessEngineLifecycleListener.OnProcessEngineBuilt(this); } processEngineConfiguration.EventDispatcher.DispatchEvent(ActivitiEventBuilder.CreateGlobalEvent(ActivitiEventType.ENGINE_CREATED)); }
public static IProcessEngine UseProcessEngine(this IServiceProvider serviceProvider, IApplicationLifetime applicationLifetime, string processEngineName) { ProcessEngineServiceProvider.ServiceProvider = serviceProvider; if (string.IsNullOrWhiteSpace(processEngineName)) { return(serviceProvider.GetService <IProcessEngine>()); } ProcessEngineConfiguration processEngineConfig = serviceProvider.GetService <ProcessEngineConfiguration>(); processEngineConfig.ProcessEngineName = processEngineName; IProcessEngine engine = processEngineConfig.BuildProcessEngine(); ProcessEngineFactory.RegisterProcessEngine(engine); return(engine); }
/// <summary> /// /// </summary> /// <param name="app"></param> /// <returns></returns> public static IApplicationBuilder UseProcessEngine(this IApplicationBuilder app, IApplicationLifetime lifetime) { app.ApplicationServices.EnsureProcessEngineInit(); app.ApplicationServices.GetService <IOptionsMonitor <ProcessEngineOption> >() .OnChange((opts, prop) => { if (ProcessEngineOption.HasChanged()) { ProcessEngineFactory.Instance.Destroy(); app.ApplicationServices.EnsureProcessEngineInit(); } }); lifetime.ApplicationStopping.Register((context) => { IApplicationBuilder builder = context as IApplicationBuilder; ProcessEngineFactory engineFact = builder.ApplicationServices.GetService <ProcessEngineFactory>(); engineFact.Destroy(); }, app, true); return(app); }