Size: a a a

Camunda BPM Group

2021 April 26

ШХ

Шамиль Хабибуллин... in Camunda BPM Group
Это помогло, еще раз огромное спасибо!
источник

MD

Maksim Davliatshin in Camunda BPM Group
🤝🙂
источник

V

Vasiliy in Camunda BPM Group
А в коннекторе можно как-то так же сделать?
источник
2021 April 27

DP

Dmitrii Pisarenko in Camunda BPM Group
Насколько я знаю, Камунда не рекомендует использовать коннекторы.
источник

DG

Dmitriy Gavrilenko in Camunda BPM Group
Всем привет. Есть распараллеливание процесса. Обе таски имеют одинаковый делегат, но разные входные данные. Используемый делегат проверяет наличие переменной, если она есть то использует ее и сохраняет в контексте.

Вот пример кода который может быть в делегате:

override fun execute(ctx: DelegateExecution) {
   var counter = 0
   if(ctx.hasVariable("counter")) {
       counter = ctx.getVariable("counter") as Int
   }
   
   counter++
   ctx.setVariable("counter", counter)
}

Проблема в том, что выполнение обеих задач будет происходить +- одновременно.
Если оба зайдут и не увидят переменную в hasVariable, то в конечном итоге значение counter будет  1, хотя ожидается 2.

Т.е. это явный пример "состояние гонки". Как на уровне кода/схемы сделать блокировку, чтобы не смотря на то, что блоки параллельны, выполнялись бы они по одному в момент времени?
PS: Галка asynchronous before в этом случае не спасает
источник

MP

Max Pustovalov in Camunda BPM Group
У них будет один и тот же ctx?
источник

DG

Dmitriy Gavrilenko in Camunda BPM Group
ctx - это в моем случае DelegateExecution передаваемый в execute



override fun execute(ctx: DelegateExecution) {
   var counter = 0
   if(ctx.hasVariable("counter")) {
       counter = ctx.getVariable("counter") as Int
   }
   
   counter++
   ctx.setVariable("counter", counter)
}
источник

MP

Max Pustovalov in Camunda BPM Group
Ну да. Я, на самом деле, не особо понимаю, но разве тут ctx не разный в них будет прилетать?
источник

DK

Denis Kotov in Camunda BPM Group
а зачем тут парралельность?
источник

DK

Denis Kotov in Camunda BPM Group
и кстати один и тот же делегат запрещено использовать
источник

DK

Denis Kotov in Camunda BPM Group
конвекцией о хорошом стиле
источник

DG

Dmitriy Gavrilenko in Camunda BPM Group
ctx мб и разный, но переменная одна
источник

DG

Dmitriy Gavrilenko in Camunda BPM Group
Такие требования бизнес процесса, скажем. Пришел заказ на кухню, надо сделать ланч, в ланче первое и второе. Оптимальнее делать 2 блюда одновременно
источник

DG

Dmitriy Gavrilenko in Camunda BPM Group
вот и разбегается процесс
источник

DK

Denis Kotov in Camunda BPM Group
Не подходит
источник

DK

Denis Kotov in Camunda BPM Group
Первое и второе что блочит общее?
источник

DG

Dmitriy Gavrilenko in Camunda BPM Group
в обоих нужна сковорода)
источник

DK

Denis Kotov in Camunda BPM Group
А она одна?
источник

DK

Denis Kotov in Camunda BPM Group
Что за кухня такая
источник

DG

Dmitriy Gavrilenko in Camunda BPM Group
да
источник