Search in sources :

Example 1 with DelegateListener

use of org.camunda.bpm.engine.delegate.DelegateListener 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 DelegateListener

use of org.camunda.bpm.engine.delegate.DelegateListener 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)

Aggregations

BaseDelegateExecution (org.camunda.bpm.engine.delegate.BaseDelegateExecution)2 DelegateListener (org.camunda.bpm.engine.delegate.DelegateListener)2 PvmException (org.camunda.bpm.engine.impl.pvm.PvmException)2 CoreModelElement (org.camunda.bpm.engine.impl.core.model.CoreModelElement)1 ScopeImpl (org.camunda.bpm.engine.impl.pvm.process.ScopeImpl)1