Внешний таскхандлер 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

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