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(); } } }
/// <summary> /// executing transaction /// </summary> /// <param name="cbm"></param> /// <param name="vo"></param> /// <returns></returns> internal static ValueObject Invoke(CbmController cbm, ValueObject vo, UserData userData, TransactionContextFactory trxFactory, string connectionString) { if (cbm == null) { MessageData messageData = new MessageData("ffce00001", Properties.Resources.ffce00001, System.Reflection.MethodBase.GetCurrentMethod().Name); logger.Error(messageData, new NullReferenceException()); throw new SystemException(messageData, new NullReferenceException()); } if (trxFactory == null) { //please write code here defaultTrxFactory.GetTransactionContext(userData); trxFactory = defaultTrxFactory; } IDbTransaction dbTransaction = null; IDbConnection connection = null; //Get TransactionContext TransactionContext trxContext = trxFactory.GetTransactionContext(userData); try { connection = new NpgsqlConnection(connectionString); trxContext.DbConnection = connection; trxContext.DbConnection.Open(); dbTransaction = trxContext.DbConnection.BeginTransaction(); //Get DB Processing Time CbmController GetDBProcessingTimeCbm = trxFactory.GetDBProcessingTimeCbm(); TimeVo time = (TimeVo)GetDBProcessingTimeCbm.Execute(trxContext, vo); trxContext.ProcessingDBDateTime = time.CurrentDateTime; //Start transaction ValueObject returnedVo = cbm.Execute(trxContext, vo); //commit dbTransaction.Commit(); return(returnedVo); } catch (ApplicationException appEx) { //rollback if (dbTransaction != null) { dbTransaction.Rollback(); } MessageData messageData = new MessageData("ffce00003", Properties.Resources.ffce00003, appEx.Message); logger.Error(messageData, appEx); throw appEx; } catch (SystemException sysEx) { //rollback if (dbTransaction != null) { dbTransaction.Rollback(); } MessageData messageData = new MessageData("ffce00003", Properties.Resources.ffce00003, sysEx.Message); logger.Error(messageData, sysEx); throw sysEx; } catch (Exception Ex) { //rollback if (dbTransaction != null) { dbTransaction.Rollback(); } MessageData messageData = new MessageData("ffce00003", Properties.Resources.ffce00003, Ex.Message); logger.Error(messageData, Ex); throw new SystemException(messageData); } finally { try { if (connection != null) { connection.Close(); } } catch (Exception ex) { //need to be implemented MessageData messageData = new MessageData("ffce00003", Properties.Resources.ffce00003, ex.Message); logger.Error(messageData, ex); throw new SystemException(messageData); } } }
public CommandContext(ProcessEngineConfigurationImpl processEngineConfiguration, TransactionContextFactory transactionContextFactory) { this.processEngineConfiguration = processEngineConfiguration; this.failedJobCommandFactory = processEngineConfiguration.FailedJobCommandFactory; sessionFactories = processEngineConfiguration.SessionFactories; this.transactionContext = transactionContextFactory.openTransactionContext(this); this.restrictUserOperationLogToAuthenticatedUsers = processEngineConfiguration.RestrictUserOperationLogToAuthenticatedUsers; }
/// <summary> /// invoking and executing transaction using userdata and transaxtioncontextfacctory /// </summary> /// <param name="cbm"></param> /// <param name="vo"></param> /// <param name="userData"></param> /// <param name="trxFactory"></param> /// <returns></returns> public static ValueObject Invoke(CbmController cbm, ValueObject vo, UserData userData, TransactionContextFactory trxFactory) { string connectionString = ConfigurationDataTypeEnum.CONNECTION_STRING.GetValue(); // Properties.Settings.Default.ConnectionString; return(Invoke(cbm, vo, userData, trxFactory, connectionString)); }
/// <summary> /// executing transaction /// </summary> /// <param name="cbm">cbm to be executed</param> /// <param name="vo">input vo for the cbm</param> /// <param name="userData">userdata</param> /// <param name="trxFactory">TransactionContextFactory to get transactioncontext using userdata</param> /// <param name="connectionString">connectionString for connecting with another database</param> /// <exception cref="Com.Nidec.Mes.Framework.ApplicationException">application exception handled in cbm access and cbm invoke</exception> /// <exception cref="Com.Nidec.Mes.Framework.SystemException">system exception handled in cbm access and cbm invoke</exception> /// <exception cref="System.Exception">Unhandled exception occured has been thrown as system exception in cbm access and cbm invoke</exception> /// <returns>output vo will be returned / exception will be thrown for error cases</returns> internal static ValueObject Invoke(CbmController cbm, ValueObject vo, UserData userData, TransactionContextFactory trxFactory, string connectionString) { if (cbm == null) { MessageData messageData = new MessageData("ffce00041", Properties.Resources.ffce00041, System.Reflection.MethodBase.GetCurrentMethod().Name); logger.Error(messageData, new NullReferenceException()); throw new SystemException(messageData, new NullReferenceException()); } if (trxFactory == null) { //please write code here defaultTrxFactory.GetTransactionContext(userData); trxFactory = defaultTrxFactory; } IDbTransaction dbTransaction = null; IDbConnection connection = null; //Get TransactionContext TransactionContext trxContext = trxFactory.GetTransactionContext(userData); try { connection = new MySqlConnection(connectionString); trxContext.DbConnection = connection; trxContext.DbConnection.Open(); dbTransaction = trxContext.DbConnection.BeginTransaction(); //Start transaction ValueObject returnedVo = cbm.Execute(trxContext, vo); //commit dbTransaction.Commit(); return(returnedVo); } catch (ApplicationException appEx) { //rollback DbTransactionRollback(dbTransaction); MessageData messageData = new MessageData("ffce00042", Properties.Resources.ffce00042, appEx.Message); logger.Error(messageData, appEx); throw appEx; //throw original app exception } catch (SystemException sysEx) { //rollback DbTransactionRollback(dbTransaction); MessageData messageData = new MessageData("ffce00043", Properties.Resources.ffce00043, sysEx.Message); logger.Error(messageData, sysEx); throw sysEx; //throw original sys exception } catch (Exception Ex) { //rollback DbTransactionRollback(dbTransaction); MessageData messageData = new MessageData("ffce00044", Properties.Resources.ffce00044, Ex.Message); logger.Error(messageData, Ex); throw new SystemException(messageData, Ex); //throw original exception as sys exception } finally { try { if (connection != null) { connection.Close(); } } catch (Exception ex) { //need to be implemented MessageData messageData = new MessageData("ffce00045", Properties.Resources.ffce00045, ex.Message); logger.Error(messageData, ex); throw new SystemException(messageData, ex); //throw original exception as sys exception } } }