Search in sources :

Example 1 with BaseDelegateExecution

use of org.camunda.bpm.engine.delegate.BaseDelegateExecution in project camunda-bpm-platform by camunda.

the class AbstractEventAtomicOperation method execute.

public void execute(T execution) {
    CoreModelElement scope = getScope(execution);
    List<DelegateListener<? extends BaseDelegateExecution>> listeners = getListeners(scope, execution);
    int listenerIndex = execution.getListenerIndex();
    if (listenerIndex == 0) {
        execution = eventNotificationsStarted(execution);
    }
    if (!isSkipNotifyListeners(execution)) {
        if (listeners.size() > listenerIndex) {
            execution.setEventName(getEventName());
            execution.setEventSource(scope);
            DelegateListener<? extends BaseDelegateExecution> listener = listeners.get(listenerIndex);
            try {
                execution.setListenerIndex(listenerIndex + 1);
                execution.invokeListener(listener);
            } catch (RuntimeException e) {
                throw e;
            } catch (Exception e) {
                throw new PvmException("couldn't execute event listener : " + e.getMessage(), e);
            }
            execution.performOperationSync(this);
        } else {
            execution.setListenerIndex(0);
            execution.setEventName(null);
            execution.setEventSource(null);
            eventNotificationsCompleted(execution);
        }
    } else {
        eventNotificationsCompleted(execution);
    }
}
Also used : BaseDelegateExecution(org.camunda.bpm.engine.delegate.BaseDelegateExecution) DelegateListener(org.camunda.bpm.engine.delegate.DelegateListener) CoreModelElement(org.camunda.bpm.engine.impl.core.model.CoreModelElement) PvmException(org.camunda.bpm.engine.impl.pvm.PvmException) PvmException(org.camunda.bpm.engine.impl.pvm.PvmException)

Example 2 with BaseDelegateExecution

use of org.camunda.bpm.engine.delegate.BaseDelegateExecution in project camunda-bpm-platform by camunda.

the class FoxAtomicOperationDeleteCascadeFireActivityEnd method execute.

@Override
public void execute(PvmExecutionImpl execution) {
    ScopeImpl scope = getScope(execution);
    int executionListenerIndex = execution.getListenerIndex();
    List<DelegateListener<? extends BaseDelegateExecution>> executionListeners = scope.getListeners(getEventName());
    for (DelegateListener<? extends BaseDelegateExecution> listener : executionListeners) {
        execution.setEventName(getEventName());
        execution.setEventSource(scope);
        try {
            execution.invokeListener(listener);
        } catch (RuntimeException e) {
            throw e;
        } catch (Exception e) {
            throw new PvmException("couldn't execute event listener : " + e.getMessage(), e);
        }
        executionListenerIndex += 1;
        execution.setListenerIndex(executionListenerIndex);
    }
    execution.setListenerIndex(0);
    execution.setEventName(null);
    execution.setEventSource(null);
    eventNotificationsCompleted(execution);
}
Also used : BaseDelegateExecution(org.camunda.bpm.engine.delegate.BaseDelegateExecution) DelegateListener(org.camunda.bpm.engine.delegate.DelegateListener) ScopeImpl(org.camunda.bpm.engine.impl.pvm.process.ScopeImpl) PvmException(org.camunda.bpm.engine.impl.pvm.PvmException) PvmException(org.camunda.bpm.engine.impl.pvm.PvmException)

Example 3 with BaseDelegateExecution

use of org.camunda.bpm.engine.delegate.BaseDelegateExecution in project camunda-bpm-platform by camunda.

the class DefaultDelegateInterceptor method handleInvocationInContext.

protected void handleInvocationInContext(final DelegateInvocation invocation) throws Exception {
    CommandContext commandContext = Context.getCommandContext();
    boolean oldValue = commandContext.isAuthorizationCheckEnabled();
    BaseDelegateExecution contextExecution = invocation.getContextExecution();
    ProcessEngineConfigurationImpl configuration = Context.getProcessEngineConfiguration();
    boolean popExecutionContext = false;
    try {
        if (!configuration.isAuthorizationEnabledForCustomCode()) {
            // the custom code should be executed without authorization
            commandContext.disableAuthorizationCheck();
        }
        try {
            commandContext.disableUserOperationLog();
            try {
                if (contextExecution != null && !isCurrentContextExecution(contextExecution)) {
                    popExecutionContext = setExecutionContext(contextExecution);
                }
                invocation.proceed();
            } finally {
                if (popExecutionContext) {
                    Context.removeExecutionContext();
                }
            }
        } finally {
            commandContext.enableUserOperationLog();
        }
    } finally {
        if (oldValue) {
            commandContext.enableAuthorizationCheck();
        }
    }
}
Also used : BaseDelegateExecution(org.camunda.bpm.engine.delegate.BaseDelegateExecution) CommandContext(org.camunda.bpm.engine.impl.interceptor.CommandContext) ProcessEngineConfigurationImpl(org.camunda.bpm.engine.impl.cfg.ProcessEngineConfigurationImpl)

Example 4 with BaseDelegateExecution

use of org.camunda.bpm.engine.delegate.BaseDelegateExecution in project camunda-bpm-platform by camunda.

the class DefaultDelegateInterceptor method getProcessApplicationForInvocation.

protected ProcessApplicationReference getProcessApplicationForInvocation(final DelegateInvocation invocation) {
    BaseDelegateExecution contextExecution = invocation.getContextExecution();
    ResourceDefinitionEntity contextResource = invocation.getContextResource();
    if (contextExecution != null) {
        return ProcessApplicationContextUtil.getTargetProcessApplication((CoreExecution) contextExecution);
    } else if (contextResource != null) {
        return ProcessApplicationContextUtil.getTargetProcessApplication(contextResource);
    } else {
        return null;
    }
}
Also used : BaseDelegateExecution(org.camunda.bpm.engine.delegate.BaseDelegateExecution) ResourceDefinitionEntity(org.camunda.bpm.engine.impl.repository.ResourceDefinitionEntity)

Aggregations

BaseDelegateExecution (org.camunda.bpm.engine.delegate.BaseDelegateExecution)4 DelegateListener (org.camunda.bpm.engine.delegate.DelegateListener)2 PvmException (org.camunda.bpm.engine.impl.pvm.PvmException)2 ProcessEngineConfigurationImpl (org.camunda.bpm.engine.impl.cfg.ProcessEngineConfigurationImpl)1 CoreModelElement (org.camunda.bpm.engine.impl.core.model.CoreModelElement)1 CommandContext (org.camunda.bpm.engine.impl.interceptor.CommandContext)1 ScopeImpl (org.camunda.bpm.engine.impl.pvm.process.ScopeImpl)1 ResourceDefinitionEntity (org.camunda.bpm.engine.impl.repository.ResourceDefinitionEntity)1