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); }
private static void OnListenerLost(TransactionListener l) { lndTransactionListeners.TryRemove(l.ListenerId, out TransactionListener oldListener); }
public TransactionStateSynchronization(TransactionState transactionState, TransactionListener transactionListener, CommandContext commandContext) { this.transactionState = transactionState; this.transactionListener = transactionListener; this.commandContext = commandContext; }
public static void Init() { m_ioListener = new TransactionListener(); m_ioListener.Start(); }
//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); } }