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.