Size: a a a

Camunda BPM Group

2020 March 27

EG

Evgeny Gultyaev in Camunda BPM Group
Serg D.
А время получения ответа под нагрузкой вас устроит?
Хороший вопрос, я о нем думал, но я просто не знаю как по другому сделать
источник

EG

Evgeny Gultyaev in Camunda BPM Group
В кафку запихать?
источник

SD

Serg D. in Camunda BPM Group
Делать без камунды по классике?
источник

EG

Evgeny Gultyaev in Camunda BPM Group
Сроки, сага нужна еще вчера, уже и так классика)
источник

EG

Evgeny Gultyaev in Camunda BPM Group
Ну и впринципе потом, пр желании можно камунду на весь проект бз проблм растянуть
источник

SD

Serg D. in Camunda BPM Group
Тогда смотрите, юзайте deferredresult. На ресте вы запускаете процесс и создаёте объект deferredresult , кладёте его в хранилище (можно потоконезависимую мапу), ключ бизнес кей или реквест гуид или что либо подобное. Когда процесс дойдёт до конца на последнем шаге он лезет в эту мапу, получает deferredresult по ключу и сетапит туда результат.удаляет объект из мапы. Съэкономите ресурсы.
источник

SD

Serg D. in Camunda BPM Group
И контроль выполнения только у БП. И не нужно постоянно проверять переменные.
источник

EG

Evgeny Gultyaev in Camunda BPM Group
Serg D.
И контроль выполнения только у БП. И не нужно постоянно проверять переменные.
Блаодарю, это то, что я искал
источник

SD

Serg D. in Camunda BPM Group
Evgeny Gultyaev
Блаодарю, это то, что я искал
На всякий случай: https://www.baeldung.com/spring-deferred-result
источник

EG

Evgeny Gultyaev in Camunda BPM Group
Serg D.
Тогда смотрите, юзайте deferredresult. На ресте вы запускаете процесс и создаёте объект deferredresult , кладёте его в хранилище (можно потоконезависимую мапу), ключ бизнес кей или реквест гуид или что либо подобное. Когда процесс дойдёт до конца на последнем шаге он лезет в эту мапу, получает deferredresult по ключу и сетапит туда результат.удаляет объект из мапы. Съэкономите ресурсы.
Я правильно понял, мапа лежит в отдельном делегате и занимается только сопоставлением респонсов?
источник

SD

Serg D. in Camunda BPM Group
Evgeny Gultyaev
Я правильно понял, мапа лежит в отдельном делегате и занимается только сопоставлением респонсов?
Мапа ничего сама не делает. Она только хранит связь requestId с объектом ответа. Это не делегат будет. Сделайте это сервисом (компонтентом) внутри камунды. В контроллере вы дергаете сервис :
 resultService.register(requestId)
. Сервис вам возвращает deferredResult, вы возвращаете его клиенту :
return deferredResult;
. Для БП делаете делегат, который будет вызываться на последнем шаге. Делегат будет делать что-то типа такого:
resultService.setResult(requestId, result);
Внутри сервиса будет вы из мапы (только не просто хэш мэп, будут проблемы) по requestId находите ранее созданный deferredResult, сетапите в него результат и удаляете из мапы. Несмотря на то, что ранее вы сделали
return deferredResult
клиент получит ответ только после этого.
источник

EG

Evgeny Gultyaev in Camunda BPM Group
Serg D.
Мапа ничего сама не делает. Она только хранит связь requestId с объектом ответа. Это не делегат будет. Сделайте это сервисом (компонтентом) внутри камунды. В контроллере вы дергаете сервис :
 resultService.register(requestId)
. Сервис вам возвращает deferredResult, вы возвращаете его клиенту :
return deferredResult;
. Для БП делаете делегат, который будет вызываться на последнем шаге. Делегат будет делать что-то типа такого:
resultService.setResult(requestId, result);
Внутри сервиса будет вы из мапы (только не просто хэш мэп, будут проблемы) по requestId находите ранее созданный deferredResult, сетапите в него результат и удаляете из мапы. Несмотря на то, что ранее вы сделали
return deferredResult
клиент получит ответ только после этого.
Точно, спасибо еще раз
источник

EG

Evgeny Gultyaev in Camunda BPM Group
Serg D.
Мапа ничего сама не делает. Она только хранит связь requestId с объектом ответа. Это не делегат будет. Сделайте это сервисом (компонтентом) внутри камунды. В контроллере вы дергаете сервис :
 resultService.register(requestId)
. Сервис вам возвращает deferredResult, вы возвращаете его клиенту :
return deferredResult;
. Для БП делаете делегат, который будет вызываться на последнем шаге. Делегат будет делать что-то типа такого:
resultService.setResult(requestId, result);
Внутри сервиса будет вы из мапы (только не просто хэш мэп, будут проблемы) по requestId находите ранее созданный deferredResult, сетапите в него результат и удаляете из мапы. Несмотря на то, что ранее вы сделали
return deferredResult
клиент получит ответ только после этого.
Наверное всеже вмсто мапки, лучше складывать в переменные камунды, на случай ребута мкс
источник

SD

Serg D. in Camunda BPM Group
Хозяин барин. Но мне кажется не лучшей идеей тащить это в контекст. Если МКС перезапустится, то клиент отвалится все равно
источник

EG

Evgeny Gultyaev in Camunda BPM Group
Это да, но там можно дернуть колбек
источник

SD

Serg D. in Camunda BPM Group
Делайте тогда все асинхронно через колбек, зачем вам тогда держать коннект?
источник

MK

Marat Kalibekov in Camunda BPM Group
У меня вопрос по смысловой нагрузки tenant, что подразумевается под этим свойством?
источник

AY

Alexander Yakovlev in Camunda BPM Group
Господа, вопрос есть. При комплите юзертаски через рест передается в одном из параметров дата в формате ISO 8601 (казалось бы общепринятый), но камунда говорит что дату не может распарсить. Может в каком то специфическом формате камунда дату ждет, кто-то знает?
источник

DK

Denis Kotov in Camunda BPM Group
Зависит от версии ядра, они меняли там подход к дате около 7.7
источник

DK

Denis Kotov in Camunda BPM Group
На форуме есть тред про это у них, погуглите
источник