use of org.activiti.engine.delegate.BaseExecutionListener in project Activiti by Activiti.
the class ListenerNotificationHelper method executeExecutionListeners.
public void executeExecutionListeners(HasExecutionListeners elementWithExecutionListeners, DelegateExecution execution, String eventType) {
List<ActivitiListener> listeners = elementWithExecutionListeners.getExecutionListeners();
if (listeners != null && listeners.size() > 0) {
ListenerFactory listenerFactory = Context.getProcessEngineConfiguration().getListenerFactory();
for (ActivitiListener activitiListener : listeners) {
if (eventType.equals(activitiListener.getEvent())) {
BaseExecutionListener executionListener = null;
if (ImplementationType.IMPLEMENTATION_TYPE_CLASS.equalsIgnoreCase(activitiListener.getImplementationType())) {
executionListener = listenerFactory.createClassDelegateExecutionListener(activitiListener);
} else if (ImplementationType.IMPLEMENTATION_TYPE_EXPRESSION.equalsIgnoreCase(activitiListener.getImplementationType())) {
executionListener = listenerFactory.createExpressionExecutionListener(activitiListener);
} else if (ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION.equalsIgnoreCase(activitiListener.getImplementationType())) {
if (activitiListener.getOnTransaction() != null) {
executionListener = listenerFactory.createTransactionDependentDelegateExpressionExecutionListener(activitiListener);
} else {
executionListener = listenerFactory.createDelegateExpressionExecutionListener(activitiListener);
}
} else if (ImplementationType.IMPLEMENTATION_TYPE_INSTANCE.equalsIgnoreCase(activitiListener.getImplementationType())) {
executionListener = (ExecutionListener) activitiListener.getInstance();
}
if (executionListener != null) {
if (activitiListener.getOnTransaction() != null) {
planTransactionDependentExecutionListener(listenerFactory, execution, (TransactionDependentExecutionListener) executionListener, activitiListener);
} else {
// eventName is used to differentiate the event when reusing an execution listener for various events
execution.setEventName(eventType);
execution.setCurrentActivitiListener(activitiListener);
((ExecutionListener) executionListener).notify(execution);
execution.setEventName(null);
execution.setCurrentActivitiListener(null);
}
}
}
}
}
}
Aggregations