예제 #1
0
        protected internal virtual void hintJobExecutor(JobEntity job)
        {
            JobExecutor jobExecutor = Context.ProcessEngineConfiguration.JobExecutor;

            if (!jobExecutor.Active)
            {
                return;
            }

            JobExecutorContext  jobExecutorContext  = Context.JobExecutorContext;
            TransactionListener transactionListener = null;

            if (!job.Suspended && job.Exclusive && jobExecutorContext != null && jobExecutorContext.ExecutingExclusiveJob && areInSameProcessInstance(job, jobExecutorContext.CurrentJob))
            {
                // lock job & add to the queue of the current processor
                DateTime currentTime = ClockUtil.CurrentTime;
                job.LockExpirationTime = new DateTime(currentTime.Ticks + jobExecutor.LockTimeInMillis);
                job.LockOwner          = jobExecutor.LockOwner;
                transactionListener    = new ExclusiveJobAddedNotification(job.Id, jobExecutorContext);
            }
            else
            {
                // notify job executor:
                transactionListener = new MessageAddedNotification(jobExecutor);
            }
            Context.CommandContext.TransactionContext.addTransactionListener(TransactionState.COMMITTED, transactionListener);
        }
예제 #2
0
 private static void OnListenerLost(TransactionListener l)
 {
     lndTransactionListeners.TryRemove(l.ListenerId, out TransactionListener oldListener);
 }
예제 #3
0
 public TransactionStateSynchronization(TransactionState transactionState, TransactionListener transactionListener, CommandContext commandContext)
 {
     this.transactionState    = transactionState;
     this.transactionListener = transactionListener;
     this.commandContext      = commandContext;
 }
예제 #4
0
파일: AppContext.cs 프로젝트: Adel-dz/Hub
 public static void Init()
 {
     m_ioListener = new TransactionListener();
     m_ioListener.Start();
 }
예제 #5
0
//JAVA TO C# CONVERTER WARNING: 'final' parameters are not available in .NET:
//ORIGINAL LINE: public void addTransactionListener(org.camunda.bpm.engine.impl.cfg.TransactionState transactionState, final org.camunda.bpm.engine.impl.cfg.TransactionListener transactionListener)
        public virtual void addTransactionListener(TransactionState transactionState, TransactionListener transactionListener)
        {
            Transaction    transaction    = Transaction;
            CommandContext commandContext = Context.CommandContext;

            try
            {
                transaction.registerSynchronization(new TransactionStateSynchronization(transactionState, transactionListener, commandContext));
            }
            catch (Exception e)
            {
                throw LOG.exceptionWhileInteractingWithTransaction("registering synchronization", e);
            }
        }