Size: a a a

Camunda BPM Group

2021 January 27

AV

Anna Vekshina in Camunda BPM Group
спасибо
источник
2021 January 28

DG

Dmitriy Gavrilenko in Camunda BPM Group
Привет всем. Вопрос по подкапотной камунды. В делегатах которые навешаны на таски есть DelegateExecution в методе execute. Через него можно получать\задавать локальные\глобальные переменные.
Вопрос собственно вот в чем: на момент вызова метода getVariable[Local] данные уже загружены в память или камунда при каждом вызове этого метода лезет в базу за значениями?
источник

DK

Denis Kotov in Camunda BPM Group
Чот опасно это в памяти хранить по размерам, а ещё оно меняться может,да ещё и на разных нодах как синхрить. а в базе у нас оптимистик Лок выручает. Каждый раз из базы берет получается. Но вопрос выдает что вы чот странное задумали)
источник

DG

Dmitriy Gavrilenko in Camunda BPM Group
Denis Kotov
Чот опасно это в памяти хранить по размерам, а ещё оно меняться может,да ещё и на разных нодах как синхрить. а в базе у нас оптимистик Лок выручает. Каждый раз из базы берет получается. Но вопрос выдает что вы чот странное задумали)
источник

DG

Dmitriy Gavrilenko in Camunda BPM Group
Denis Kotov
Чот опасно это в памяти хранить по размерам, а ещё оно меняться может,да ещё и на разных нодах как синхрить. а в базе у нас оптимистик Лок выручает. Каждый раз из базы берет получается. Но вопрос выдает что вы чот странное задумали)
Вот тоже есть мысли, что глобальные из базы берет. А что касается локальных? По идеи они зафиксированы на схеме и в базе хранить их смысла нет или хотя бы закешировать в память при первом чтении схемы. Правда есть setVariableLocal, но я пока не разбирался нафиг он вообще нужен
источник

DG

Dmitriy Gavrilenko in Camunda BPM Group
Мало того, что в доках нет инфы, так еще и в github issues отключены
источник

EI

Evgenii Izmestev in Camunda BPM Group
Локальные или глобальные - они лежат в бд и читаются каждый раз когда нужно создать новый объект execution. A global или local это контекст, который определяет область видимости . Например, есть мультиинстанс и у каждого инстанса этого мультиинстанса есть свои переменные, которые видны только ему.
источник

DG

Dmitriy Gavrilenko in Camunda BPM Group
Evgenii Izmestev
Локальные или глобальные - они лежат в бд и читаются каждый раз когда нужно создать новый объект execution. A global или local это контекст, который определяет область видимости . Например, есть мультиинстанс и у каждого инстанса этого мультиинстанса есть свои переменные, которые видны только ему.
Т.е. DelegateExecution.getVariableLocal достает данные из памяти?
источник

EI

Evgenii Izmestev in Camunda BPM Group
Да, и getVariable тоже. Но надо понимать, что они будут актуальны только в текущем потоке
источник

EI

Evgenii Izmestev in Camunda BPM Group
источник

EI

Evgenii Izmestev in Camunda BPM Group
Про скоупы можно по ссылке почитать
источник

EZ

Edward Zakharov in Camunda BPM Group
Evgenii Izmestev
Про скоупы можно по ссылке почитать
Фига у тебя тут ава)
источник

DG

Dmitriy Gavrilenko in Camunda BPM Group
Evgenii Izmestev
Про скоупы можно по ссылке почитать
Да со скоупами понятно все. Единственное не понятно, что за кейсы такие, в которых setVariableLocal используется.
Есть конечно мысль: в определенный блок с назначенным делегатом можно попадать несколько раз (схематично) и читать измененное в прошлый раз значение локальной переменной
источник

EI

Evgenii Izmestev in Camunda BPM Group
Мне ни разу не пригодилось. Единственное, что могу придумать, это пример с мультиинстансом. Про делегат - хз, local var привязывается к execution, а не к конкретному activity. Ну и локальные переменные из базы удаляются, когда выполнение из их скоупа выходит.
источник

DG

Dmitriy Gavrilenko in Camunda BPM Group
Evgenii Izmestev
Мне ни разу не пригодилось. Единственное, что могу придумать, это пример с мультиинстансом. Про делегат - хз, local var привязывается к execution, а не к конкретному activity. Ну и локальные переменные из базы удаляются, когда выполнение из их скоупа выходит.
Еще один момент. Переменные под капотом execution хранятся в десериализованом виде?
источник

EZ

Edward Zakharov in Camunda BPM Group
Evgenii Izmestev
Мне ни разу не пригодилось. Единственное, что могу придумать, это пример с мультиинстансом. Про делегат - хз, local var привязывается к execution, а не к конкретному activity. Ну и локальные переменные из базы удаляются, когда выполнение из их скоупа выходит.
Кейс когда тебе переменная нужна только в процессе выполнения одного элемента бпмн. Например в листенерах и делегатах. Ну и мультиинстансы да
источник

EZ

Edward Zakharov in Camunda BPM Group
Dmitriy Gavrilenko
Еще один момент. Переменные под капотом execution хранятся в десериализованом виде?
Там в экзекьюшене они хранятся в линкед хэшмапе
источник

EI

Evgenii Izmestev in Camunda BPM Group
Dmitriy Gavrilenko
Еще один момент. Переменные под капотом execution хранятся в десериализованом виде?
Нет. Они десериализуются, когда getVariable вызывается
источник

DG

Dmitriy Gavrilenko in Camunda BPM Group
Evgenii Izmestev
Нет. Они десериализуются, когда getVariable вызывается
Отлично если так. А можно узнать от куда инфа? Чтобы в следующий раз ни кого не дергать
источник

EI

Evgenii Izmestev in Camunda BPM Group
Dmitriy Gavrilenko
Отлично если так. А можно узнать от куда инфа? Чтобы в следующий раз ни кого не дергать
Дебаг и профайлер :)
источник