Hi, I've defined a workflow that is started by a method called "receive(...)" (annotated with @CreateProcess). In this method I outject a variable named "workEffortId" into the Business Process context.
My jPDL is rather short (start-node -> transition -> task-node -> transition -> end-node). In the 1st transition I have defined an action expression which calls a method called "assignToTimeSheet". In this method I inject variable "workEffortId" (Business Process context), but it is always null! If I call "assignToTimeSheet" in the 2nd transition, "workEffortId" gets the value that was outjected in "receive(...)". So, my assumption is that, because jBPM performs a transaction commit at the 1st wait-state (in this example at the task-node) and "assignToTimeSheet" is called before, Seam tries to read data that have not been committed yet, which results to a null value. Alternatively using an async node is not yet supported by Seam (see http://jira.jboss.com/jira/browse/JBSEAM-161). Does anybody has an idea how to solve this? Thx, Manuel PS. See my example code below (excerpts). Workflow "receiveWorkEffort" | <?xml version="1.0"?> | <process-definition name="receiveWorkEffort"> | | <start-state name="start"> | <transition to="enter"> | <action expression="#{workEffortReception.assignToTimeSheet}" /> | </transition> | </start-state> | | <task-node name="enter" end-tasks="true"> | <task name="enterDocumentation"> | <assignment actor-id="#{processInstance.contextInstance.variables['actorId']}"/> | </task> | <transition name="done" to="complete" /> | </task-node> | | <end-state name="complete"/> | </process-definition> | Methods "receive" and "assignToTimeSheet": | @Stateless | @Name("workEffortRecipient") | public class WorkEffortRecipientBean implements WorkEffortRecipient, | Serializable { | | // ... ... | | @In | private EntityManager entityManager; | | @In(scope = ScopeType.BUSINESS_PROCESS, required = false) | @Out(scope = ScopeType.BUSINESS_PROCESS, required = false) | private Long workEffortId; | | // ... ... | | | @CreateProcess(definition = "receiveWorkEffort") | public void receive(WorkEffortDTO effortDTO) { | | // ... ... | workEffortId = workEffort.getId(); | // ... ... | } | | public void assignToTimeSheet() { | // workEffortId is always null if called in the 1st transition | if (workEffortId != null) { | // ... ... | } | } | } | [/url] View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4028529#4028529 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4028529 _______________________________________________ jboss-user mailing list [email protected] https://lists.jboss.org/mailman/listinfo/jboss-user
