Exemplo n.º 1
0
        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();
                }
            }
        }
Exemplo n.º 2
0
        /// <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);
                }
            }
        }
Exemplo n.º 3
0
 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;
 }
Exemplo n.º 4
0
        /// <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));
        }
Exemplo n.º 5
0
        /// <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
                }
            }
        }