Size: a a a

Camunda BPM Group

2021 August 19

AK

Azat Kilibayev in Camunda BPM Group
В variables и localVariables вообще ничего не возвращаю
источник

R

Ruslan Kadyrbaev in Camunda BPM Group
да, лучше всего переменные просто создавать новые, так чтобы небыло гонок вообще за ресурсы
источник

R

Ruslan Kadyrbaev in Camunda BPM Group
а за что у вас борьба тогда? там в ошибке обычно сущность видно, на какой ошибка
источник

AY

Alexander Yakovlev in Camunda BPM Group
Тут можно только пофантазировать) например выставить не параллельно, а последовательно, точно проблема уйдёт) ну и ретраи наше все ;)
источник

R

Ruslan Kadyrbaev in Camunda BPM Group
можно логику изменить же, исключить мутации переменных (обновление), только добавление

а в конце выбрать из массива добавленных переменных то, что нужно (sum, max, min, avg и тд)

immutable структуры и фп рулят)
источник

AY

Alexander Yakovlev in Camunda BPM Group
Да, можно после Гейта таску сделать, которая выберет что надо в итоге
источник

ММ

Максим Монин... in Camunda BPM Group
В каждой таске паралеьной ставте просто AsyncAfter = true, тогда транзакция завершается до gateway
источник

ММ

Максим Монин... in Camunda BPM Group
и далее уже commit extrenal task уже не зависит до куда операция commit дальше дойдет.
источник

AK

Azat Kilibayev in Camunda BPM Group
так и сделал, все равно локи
источник

ММ

Максим Монин... in Camunda BPM Group
Просто нужно понимать что commit external task  поэтому и медленная... ибо автоматически стартует продолжение процесса до следующей точки останова... и поэтому так намного лучше
источник

AK

Azat Kilibayev in Camunda BPM Group
спасибо попробую
источник

ММ

Максим Монин... in Camunda BPM Group
тогда лок происходит в job executor, а иначе идет fail commit а это огромная разница
источник

R

Ruslan Kadyrbaev in Camunda BPM Group
а чем это лучше будет?
источник

R

Ruslan Kadyrbaev in Camunda BPM Group
job executor сам умеет ретраить?
источник

ММ

Максим Монин... in Camunda BPM Group
ну смотри... ты даешь коммит таски что завершилась. Камундла открывает новую транзакцию и идет вперед до gateway... и далее... например до след таски, всерасчитывает... и только дойдя до новой точки возвращает return value = commited.
источник

ММ

Максим Монин... in Camunda BPM Group
Если в момент этого произойдет error или optimistic locking commit не сработает и пойдет retry а нам это не интересно ибо нужно иногда исключить повторное исполнение того что уже отработало
источник

ММ

Максим Монин... in Camunda BPM Group
Поэтому Я всегда в паралельных ветках ставлю AsyncAfter = true, чтобы коммит только комитил саму таску. А далее передаю управление job exeucutor что начинает идти дальше lj gateway
источник

ММ

Максим Монин... in Camunda BPM Group
да
источник

R

Ruslan Kadyrbaev in Camunda BPM Group
ну логично, может еще откатываемая транзакция в СУБД будет поменьше размером (откат тяжелая операция)
источник

R

Ruslan Kadyrbaev in Camunda BPM Group
хотя хз как там в джаве сделаны транзакции)
источник