Variables set in process builder can't be seen by delegates


When I start a process like this:

Map<String, Object> processVariables = new HashMap<>();
processVariables.put("hello", "World");
ProcessInstance processInstance = runtimeService.createProcessInstanceBuilder().

and try to read the variable inside a JavaDelegate belonging to the flow:

log.debug("Hello {}", (String) execution.getVariable("hello"));

I get null. Why? Bonus question: why the business key is also null?


Hey @rajish,

This should work.

Can you please share your BPMN XML?


Hi @filiphr,

Unfortunately, I can’t share the XMLs as they contain a proprietary business flow. All I can say they consist of three levels of sub-flows and at one point there’s a text annotation like IN: hello. In that case, the variable can be seen by the delegate with that annotation with proper value, while other variables passed in the same map are null.

I was able to do some debugging and found out that in this line the execution parent contains only the annotated variable while all other variables exist in commandContext.command.variables but they’re not passed to the delegate.

Is it possible that it’s a bug in the Flowable Engine?