Example #1
0
        protected internal virtual void initializeEntityCache()
        {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final org.camunda.bpm.engine.impl.jobexecutor.JobExecutorContext jobExecutorContext = org.camunda.bpm.engine.impl.context.Context.getJobExecutorContext();
            JobExecutorContext jobExecutorContext = Context.JobExecutorContext;
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final org.camunda.bpm.engine.impl.cfg.ProcessEngineConfigurationImpl processEngineConfiguration = org.camunda.bpm.engine.impl.context.Context.getProcessEngineConfiguration();
            ProcessEngineConfigurationImpl processEngineConfiguration = Context.ProcessEngineConfiguration;

            if (processEngineConfiguration != null && processEngineConfiguration.DbEntityCacheReuseEnabled && jobExecutorContext != null)
            {
                dbEntityCache = jobExecutorContext.EntityCache;
                if (dbEntityCache == null)
                {
                    dbEntityCache = new DbEntityCache(processEngineConfiguration.DbEntityCacheKeyMapping);
                    jobExecutorContext.EntityCache = dbEntityCache;
                }
            }
            else
            {
                if (processEngineConfiguration != null)
                {
                    dbEntityCache = new DbEntityCache(processEngineConfiguration.DbEntityCacheKeyMapping);
                }
                else
                {
                    dbEntityCache = new DbEntityCache();
                }
            }
        }
Example #2
0
        protected internal virtual bool IsSameMessageEventSubscriptionAlreadyPresent(EventSubscriptionDeclaration eventSubscription, string tenantId)
        {
            // look for subscriptions for the same name in db:
            IList <EventSubscriptionEntity> subscriptionsForSameMessageName = EventSubscriptionManager.FindEventSubscriptionsByNameAndTenantId(EventType.Message.Name, eventSubscription.UnresolvedEventName, tenantId);
            //TODO 缓存差异
            // also look for subscriptions created in the session: 源码有值
            IList <EventSubscriptionEntity> cachedSubscriptions = DbEntityCache.GetEntitiesByType <EventSubscriptionEntity>(typeof(EventSubscriptionEntity));

            foreach (EventSubscriptionEntity cachedSubscription in cachedSubscriptions)
            {
                //TODO HasTenantId subscriptions
                if (eventSubscription.UnresolvedEventName.Equals(cachedSubscription.EventName) && HasTenantId(cachedSubscription, tenantId) && !subscriptionsForSameMessageName.Contains(cachedSubscription))
                {
                    subscriptionsForSameMessageName.Add(cachedSubscription);
                }
            }

            // remove subscriptions deleted in the same command
            //subscriptionsForSameMessageName = DbEntityManager.PruneDeletedEntities(subscriptionsForSameMessageName);
            subscriptionsForSameMessageName = Context.CommandContext.PruneDeletedEntities <EventSubscriptionEntity>(subscriptionsForSameMessageName);

            // remove subscriptions for different type of event (i.e. remove intermediate message event subscriptions)
            subscriptionsForSameMessageName = FilterSubscriptionsOfDifferentType(eventSubscription, subscriptionsForSameMessageName);

            return(subscriptionsForSameMessageName.Count > 0);
        }