Внешний таскхандлер Camunda 7 с сохранением состоянияJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Внешний таскхандлер Camunda 7 с сохранением состояния

Сообщение Anonymous »

безопасно ли следующее с точки зрения повторного использования экземпляра ExternalTaskHandler движком Camunda 7?

Код: Выделить всё

public class ExampleTaskHandler implements ExternalTaskHandler {

private ExternalTask externalTask;
private VariableMap taskVariables;

@Override
public void execute(ExternalTask externalTask, ExternalTaskService externalTaskService) {
this.externalTask = externalTask;
this.taskVariables = new VariableMapImpl();
try {
executeTask();
externalTaskService.complete(externalTask, taskVariables);
} finally {
this.externalTask = null;
this.taskVariables = null;
}
}

private void executeTask() {
// do stuff and use externalTask and taskVariables
}

...

}
Отладка показала, что экземпляры ExternalTaskHandler повторно используются/разделяются между вызовами. Вот почему мы обнуляем ссылочные переменные в последнем блоке выполнения в качестве меры безопасности. Возможно, это излишество.
Подходят ли обычные переменные экземпляра или нам рекомендуется использовать ThreadLocal?
Или нам следует вообще воздерживаться от реализаций ExternalTaskHandler с сохранением состояния ? Последнее означало бы, что нам придется снова и снова передавать данные в параметрах метода, чего нам хотелось бы избежать.
Спасибо за помощь!

Подробнее здесь: https://stackoverflow.com/questions/785 ... askhandler
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»