public ProcessEngineImpl(ProcessEngineConfigurationImpl processEngineConfiguration) { this.processEngineConfiguration = processEngineConfiguration; this.name = processEngineConfiguration.ProcessEngineName; this.repositoryService = processEngineConfiguration.RepositoryService; this.runtimeService = processEngineConfiguration.RuntimeService; this.historicDataService = processEngineConfiguration.HistoryService; this.identityService = processEngineConfiguration.IdentityService; this.taskService = processEngineConfiguration.TaskService; this.formService = processEngineConfiguration.FormService; this.managementService = processEngineConfiguration.ManagementService; this.authorizationService = processEngineConfiguration.AuthorizationService; this.caseService = processEngineConfiguration.CaseService; this.filterService = processEngineConfiguration.FilterService; this.externalTaskService = processEngineConfiguration.ExternalTaskService; this.decisionService = processEngineConfiguration.DecisionService; this.databaseSchemaUpdate = processEngineConfiguration.DatabaseSchemaUpdate; this.jobExecutor = processEngineConfiguration.JobExecutor; this.commandExecutor = processEngineConfiguration.CommandExecutorTxRequired; commandExecutorSchemaOperations = processEngineConfiguration.CommandExecutorSchemaOperations; this.sessionFactories = processEngineConfiguration.SessionFactories; this.historyLevel = processEngineConfiguration.HistoryLevel; this.transactionContextFactory = processEngineConfiguration.TransactionContextFactory; executeSchemaOperations(); if (string.ReferenceEquals(name, null)) { LOG.processEngineCreated(ProcessEngines.NAME_DEFAULT); } else { LOG.processEngineCreated(name); } ProcessEngines.registerProcessEngine(this); if ((jobExecutor != null)) { // register process engine with Job Executor jobExecutor.registerProcessEngine(this); } if (processEngineConfiguration.MetricsEnabled) { string reporterId = processEngineConfiguration.MetricsReporterIdProvider.provideId(this); DbMetricsReporter dbMetricsReporter = processEngineConfiguration.DbMetricsReporter; dbMetricsReporter.ReporterId = reporterId; if (processEngineConfiguration.DbMetricsReporterActivate) { dbMetricsReporter.start(); } } }