Size: a a a

Camunda BPM Group

2021 August 18

IL

Ivan Lotoff in Camunda BPM Group
В тесте:
       HistoricVariableInstanceQuery query = historyService.createHistoricVariableInstanceQuery().processInstanceId(processId);
       HistoricVariableInstance status = query.variableName("status").singleResult();
источник

YK

Yuri Kolesnikov in Camunda BPM Group
Но вы же хотите на выходе получить "passed" вместо "some_status", верно?
источник

IL

Ivan Lotoff in Camunda BPM Group
да
источник

IL

Ivan Lotoff in Camunda BPM Group
и в моделере я ставлю execution listener
script
groovy
status = "passed"
но он не обновляет
источник

YK

Yuri Kolesnikov in Camunda BPM Group
попробуйте в скрипте вместо status = "passed"
написать
execution.setVariable("status","passed");
источник

IL

Ivan Lotoff in Camunda BPM Group
не помогло
источник

IL

Ivan Lotoff in Camunda BPM Group
а нет, помогло, спасибо. А можете объяснить разницу?
источник

IL

Ivan Lotoff in Camunda BPM Group
просто на проекте и так и так работает, а когда я сам играюсь с тестами, то сробатывает только ваш вариант, а понять почему так я не могу. Огромное спасибо за помощь
источник

YK

Yuri Kolesnikov in Camunda BPM Group
в скрипте переменные процесса доступны для чтения по идентификатору, но они передаются видимо по значению
поэтому простые присваивания не меняют исходные данные в процессе - только через вызов setVariable
источник

IL

Ivan Lotoff in Camunda BPM Group
а как-то можно их передать по ссылке?
источник

YK

Yuri Kolesnikov in Camunda BPM Group
Вряд ли
Ну или копать куда-то очень глубоко - перехватывая присваивание переменных в контексте выполнения скрипта
Общепринятое мнение состоит в том, что активное использование скриптинга вообще не очень хорошо - если требуется реализация какой-то логики, то лучше делать java-делегаты
источник

IL

Ivan Lotoff in Camunda BPM Group
но здесь же логика крайне примитивна
источник

YK

Yuri Kolesnikov in Camunda BPM Group
ну поэтому вполне достаточно работающего способа через execution 😊
источник

IL

Ivan Lotoff in Camunda BPM Group
да, вы абсолютно правы, просто интересно, почему на проекте работает вот так status ="passed"
источник

YK

Yuri Kolesnikov in Camunda BPM Group
Не знаю
У меня так нигде не работает
источник

НЩ

Николай Щепилов... in Camunda BPM Group
Если в "result" переменную поставить "status" и выражение будет последней строкой - то вроде сработает. В последнюю строку скрипта можно просто вписать "passed" и оно упадет в результат.
источник

YK

Yuri Kolesnikov in Camunda BPM Group
В ScriptTask есть Result Variable, а в Listeners нет
источник

НЩ

Николай Щепилов... in Camunda BPM Group
Упустил, что листнер, у меня только через сеттер работает.
источник

V

Vasiliy in Camunda BPM Group
Привет
Пытаюсь excamad спрятать за taeffik и выдать ему prefix типа host/excamad/
Но он роутит запросы на корень
Знаете как такое починить
источник

DK

Denis Kotov in Camunda BPM Group
Собрать себе свой из исходников
источник