public class CommandContextInterceptor extends CommandInterceptor
Interceptor used for opening the CommandContext and CommandInvocationContext.
Since 7.1, this interceptor will not always open a new command context but instead reuse an existing
 command context if possible. This is required for supporting process engine public API access from
 delegation code (see ProcessEngineServicesAware.). However, for every command, a new
 command invocation context is created. While a command context holds resources that are
 shared between multiple commands, such as database sessions, a command invocation context holds
 resources specific for a single command.
The interceptor will check whether an open command context exists. If true, it will reuse the
 command context. If false, it will open a new one. We will always push the context to the
 Context stack. So ins some situations, you will see the same context being pushed to the sack
 multiple times. The rationale is that the size of  the stack should allow you to determine whether
 you are currently running an 'inner' command or an 'outer' command as well as your current stack size.
 Existing code may rely on this behavior.
The interceptor can be configured using the property alwaysOpenNew.
 If this property is set to true, we will always open a new context regardless whether there already
 exists an active context or not. This is required for properly supporting REQUIRES_NEW semantics for
 commands run through the ProcessEngineConfigurationImpl.getCommandInterceptorsTxRequiresNew()
 chain. In that context the 'inner' command must be able to succeed / fail independently from the
 'outer' command.
| Modifier and Type | Field and Description | 
|---|---|
protected boolean | 
alwaysOpenNew
if true, we will always open a new command context 
 | 
protected CommandContextFactory | 
commandContextFactory  | 
protected ProcessEngineConfigurationImpl | 
processEngineConfiguration  | 
next| Constructor and Description | 
|---|
CommandContextInterceptor()  | 
CommandContextInterceptor(CommandContextFactory commandContextFactory,
                         ProcessEngineConfigurationImpl processEngineConfiguration)  | 
CommandContextInterceptor(CommandContextFactory commandContextFactory,
                         ProcessEngineConfigurationImpl processEngineConfiguration,
                         boolean alwaysOpenNew)  | 
| Modifier and Type | Method and Description | 
|---|---|
<T> T | 
execute(Command<T> command)  | 
CommandContextFactory | 
getCommandContextFactory()  | 
ProcessEngineConfigurationImpl | 
getProcessEngineConfiguration()  | 
protected boolean | 
isFromSameEngine(CommandContext existingCommandContext)  | 
void | 
setCommandContextFactory(CommandContextFactory commandContextFactory)  | 
void | 
setProcessEngineContext(ProcessEngineConfigurationImpl processEngineContext)  | 
getNext, setNextprotected CommandContextFactory commandContextFactory
protected ProcessEngineConfigurationImpl processEngineConfiguration
protected boolean alwaysOpenNew
public CommandContextInterceptor()
public CommandContextInterceptor(CommandContextFactory commandContextFactory, ProcessEngineConfigurationImpl processEngineConfiguration)
public CommandContextInterceptor(CommandContextFactory commandContextFactory, ProcessEngineConfigurationImpl processEngineConfiguration, boolean alwaysOpenNew)
public <T> T execute(Command<T> command)
protected boolean isFromSameEngine(CommandContext existingCommandContext)
public CommandContextFactory getCommandContextFactory()
public void setCommandContextFactory(CommandContextFactory commandContextFactory)
public ProcessEngineConfigurationImpl getProcessEngineConfiguration()
public void setProcessEngineContext(ProcessEngineConfigurationImpl processEngineContext)
Copyright © 2019. All rights reserved.