Я работаю с Camunda BPMN и Java 8 и столкнулся с двумя разными подходами реализации Java delegates в сервисных задачах. Хочу понять, какой подход считается лучшей практикой и почему.
Подход 1: Внедрение через Spring Bean
<serviceTask id="SampleDelegateST" camunda:delegateExpression="${sampleDelegate}"/>
Соответствующий Spring компонент:
@Component("sampleDelegate")
public class SampleDelegate implements JavaDelegate {
@Autowired
private SomeService service;
@Override
public void execute(DelegateExecution execution) throws Exception {
// бизнес-логика
}
}
Подход 2: Прямое создание класса
<code lang="html">
<serviceTask id="SampleDelegateV2ST" camunda:class="ru.schoolservice.arm.delegate.SampleDelegateV2"/>
</code>
Соответствующий Spring компонент:
public class SampleDelegateV2 implements JavaDelegate {
@Override
public void execute(DelegateExecution execution) throws Exception {
// бизнес-логика без DI
}
}
Мои вопросы:
- Какой подход считается текущей лучшей практикой в Camunda и почему?
- Какие конкретные преимущества/недостатки у каждого метода?
- Есть ли конкретные сценарии, где один подход предпочтительнее другого?