I have a jBPM process, with actions fired from various nodes (to send notification emails).
My backing bean is a SFSB, that retrieve business process variables by injection.
The problem is that injection is working well from every action method cal, EXCEPT when action method is called from start node : injected variables are null, although they exist in the business process context.
My jBPM graph :
<process-definition name="EventApproval" xmlns="urn:jbpm.org:jpdl-3.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:jbpm.org:jpdl-3.1 http://jbpm.org/xsd/jpdl-3.1.xsd" > <start-state name="event submission"> <transition to="local head of business unit approval"> <action expression="#{processManager.sendMailTo('LOCAL_HEAD_OF_BUSINESS_UNIT')}"/> </transition> </start-state> <task-node name="local head of business unit approval"> ... </task-node> <decision name="decision1" expression="#{...}"> <transition to="event approved" name="? $10.000"></transition> <transition to="local head of business line approval" name="? $10.000"> <action expression="#{processManager.sendMailTo('LOCAL_HEAD_OF_BUSINESS_LINE')}"/> </transition> </decision> ...
@Stateful @Name("processManager") public class ProcessManagerAction implements ProcessManager { // // Business Process Variables // @In(required=false) @Out(scope=ScopeType.BUSINESS_PROCESS, required=false) @NotEmpty String eventName; @In(required=false) @Out(scope=ScopeType.BUSINESS_PROCESS, required=false) @NotEmpty Long requesterId; ... public void sendMailTo(Responsible resp) { // This is always working Context ctx = Contexts.getBusinessProcessContext(); Long requesterId = (Long) Contexts.getBusinessProcessContext().get("requesterId"); ... } }
Please file a jira issue with a runnable example/testcase.