Проблема с внедрением Spring bean-компонентов в служебной задаче Flowable - PullRequest
0 голосов
/ 04 августа 2020

У меня вопрос по поводу Spring Bean-инъекции в служебных задачах Flowable, почему сработала только такая инъекция с модификатором stati c, и что это за logi c?

I должен внедрить компонент Spring в служебную задачу Flowable java, и я протестировал какой-то другой вид инъекции Field, конструктор и инъекцию сеттера, в конечном итоге инъекция сеттера с модификатором stati c работала для меня следующим образом:

public class GetCurrentUserDlg implements JavaDelegate {

    private static PersonService personService;

    @Autowired
    public void setPersonService(PersonService personService) {
        this.personService = personService;
    }

    @Override
    public void execute(DelegateExecution execution) {
        personService.getCurrentUser();
    }
}

1 Ответ

0 голосов
/ 13 августа 2020

Хотя я не могу ответить на ваш вопрос, у меня отлично работает следующее:

public class SomeDelegate implements JavaDelegate {

    @Autowired
    private SomeBean bean;

    @Override
    public void execute(DelegateExecution execution) {
        System.out.println(this.bean);
    }
}

Затем класс используется в процессе через `flowable: class =" packages.SomeDelegate "

Но имейте в виду, что у вас могут возникнуть проблемы с зависимостями автоматического подключения в bean-компоненте SomeBean. Эти зависимости не вводятся с использованием атрибута flowable:class. Чтобы это работало, вы должны сделать SomeDelegate фактическим bean-компонентом (например, через @Service) и использовать его в своем определении процесса через flowable:delegateExpression="${someDelegate}":

@Service("someDelegate")
public class SomeDelegate implements JavaDelegate {
...

и

<serviceTask id="doSomething" name="Do Something" flowable:delegateExpression="${someDelegate}"/>
...