use of org.camunda.bpm.engine.impl.task.delegate.TaskListenerInvocation in project camunda-bpm-platform by camunda.
the class DelegateExpressionTaskListener method notify.
public void notify(DelegateTask delegateTask) {
// Note: we can't cache the result of the expression, because the
// execution can change: eg. delegateExpression='${mySpringBeanFactory.randomSpringBean()}'
VariableScope variableScope = delegateTask.getExecution();
if (variableScope == null) {
variableScope = delegateTask.getCaseExecution();
}
Object delegate = expression.getValue(variableScope);
applyFieldDeclaration(fieldDeclarations, delegate);
if (delegate instanceof TaskListener) {
try {
Context.getProcessEngineConfiguration().getDelegateInterceptor().handleInvocation(new TaskListenerInvocation((TaskListener) delegate, delegateTask));
} catch (Exception e) {
throw new ProcessEngineException("Exception while invoking TaskListener: " + e.getMessage(), e);
}
} else {
throw new ProcessEngineException("Delegate expression " + expression + " did not resolve to an implementation of " + TaskListener.class);
}
}
use of org.camunda.bpm.engine.impl.task.delegate.TaskListenerInvocation in project camunda-bpm-platform by camunda.
the class TaskEntity method fireEvent.
public void fireEvent(String taskEventName) {
List<TaskListener> taskEventListeners = getListenersForEvent(taskEventName);
if (taskEventListeners != null) {
for (TaskListener taskListener : taskEventListeners) {
CoreExecution execution = getExecution();
if (execution == null) {
execution = getCaseExecution();
}
if (execution != null) {
setEventName(taskEventName);
}
try {
TaskListenerInvocation listenerInvocation = new TaskListenerInvocation(taskListener, this, execution);
Context.getProcessEngineConfiguration().getDelegateInterceptor().handleInvocation(listenerInvocation);
} catch (Exception e) {
throw LOG.invokeTaskListenerException(e);
}
}
}
}
Aggregations