Как смоделировать служебную задачу asyn c в camunda и реализовать ее при весенней загрузке - PullRequest
0 голосов
/ 26 мая 2020

Я использую Camunda в качестве движка bpmn в моем приложении весенней загрузки

Основная идея: Первый процесс запускается в контроллере, а после того, как ответ возвращается клиенту, Второй процесс должен начаться. Я делаю это с помощью @ Asyn c (Spring framework) для запуска второго процесса, и у меня есть две диаграммы bpmn: firstProcess secondProcess

Простая реализация идеи :

@RestController
public class SimpleController {
    @Autowired
    private CustomService asyncService;
    @Autowired
    private CustomService syncService;

    @GetMapping(value = "/request")
    public ResponseEntity<String> sendQuestion() {
        //start process described in first.bpmn
        syncService.startProcess("firstProcess");
        //start process described in second.bpmn asynchronously
        //controller responses to client without waiting for ending secondProcess
        asyncService.startProcess("secondProcess");
        return new ResponseEntity<>("OK", HttpStatus.OK);
    }
}
@Service
public class AsyncService implements CustomService {

    @Autowired
    private RuntimeService runtimeService;

    @Async
    public void startProcess(String key) {
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            //
        }
        runtimeService.startProcessInstanceByKey(key);
    }
}

Вопросы: Есть ли способ выполнить эти два процесса в одном процессе (как показано в обоих процессах)? Как мне реализовать это в приложении весенней загрузки? bothProcess

1 Ответ

0 голосов
/ 27 мая 2020

Вам необходимо использовать Call Activity Task, указав BPMN как CallActivity Type и соответствующие идентификаторы процессов в поле Called Element на панели свойств. Также не забудьте снять флажок Startable для ваших подпроцессов.

...