jbpm 3.1: persistence problem?
mennen Feb 21, 2006 11:29 AMHi,
I have been trying to change a swimlane dynamically and when i'm done, i'm saving both the task instance to which to swimlane would be attached, as well as the process instance.
But i keep getting the following error:
ERROR [TaskMgmtSession] org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: org.jbpm.taskmgmt.exe.SwimlaneInstance
I can't figure out what's missing, because when i print out the taskInstance's actorId, I get the right value..
here is the error i get:
[exec] 17:09:12,675 DEBUG [Services] executing default save operations [exec] 17:09:12,675 DEBUG [HibernateSaveOperation] saving process instance [exec] 17:09:12,675 DEBUG [SaveLogsOperation] flushing logs to logging service. [exec] 17:09:12,675 DEBUG [CascadeSaveOperation] cascading save of 'org.jbpm.graph.exe.ProcessInstance@1e1fcd7' [exec] 17:09:12,675 DEBUG [GraphElement] event 'after-signal' on 'TaskNode(task1)' for 'Token(/)' [exec] 17:09:12,675 DEBUG [TaskBean] assignmentlogs: [] [exec] 17:09:12,675 DEBUG [Services] executing default save operations [exec] 17:09:12,675 DEBUG [HibernateSaveOperation] saving process instance [exec] 17:09:12,675 DEBUG [SaveLogsOperation] flushing logs to logging service. [exec] 17:09:12,675 INFO [STDOUT] Hibernate: insert into JBPM_LOG (INDEX_, DATE_, TOKEN_, PARENT_, TASKINSTANCE_, TASKACTORID_, CLASS_) values (?, ?, ?, ?, ?, ?, '1') [exec] 17:09:12,675 DEBUG [CascadeSaveOperation] cascading save of 'org.jbpm.graph.exe.ProcessInstance@1e1fcd7' [exec] 17:09:12,685 INFO [[/jbpm]] WARNING: Component _id19 just got an automatic id, because there was no id assigned yet. If this component was created dynamically (i.e. not by a JSP tag) you should assign it an explicit static id or assign it the id you get from the createUniqueId from the current UIViewRoot component right after creation! [exec] 17:09:12,685 INFO [STDOUT] Hibernate: insert into JBPM_TOKENVARIABLEMAP (TOKEN_, CONTEXTINSTANCE_) values (?, ?) [exec] 17:09:12,685 ERROR [TaskMgmtSession] org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: org.jbpm.taskmgmt.exe.SwimlaneInstance [exec] 17:09:12,695 ERROR [[jsp]] Servlet.service() for servlet jsp threw exception [exec] javax.faces.el.EvaluationException: Cannot get value for expression '#{homeBean.taskInstances}' [exec] at org.apache.myfaces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:399) [exec] at javax.faces.component.UIData.getValue(UIData.java:779)
Here is part of my process definition:
<task-node name="task3"> <task> <event type="task-create"> <action class="org.jbpm.mennen.CommandeAction2"/> </event> <controller> <variable name="Date_demande" access="read"/> <variable name="transition" access="read"/> </controller> </task> <transition name="" to="task4"></transition> </task-node>
Here is my action CommandeAction2:
ProcessInstance pi = executionContext.getProcessInstance(); Swimlane swimlane =(Swimlane) executionContext.getVariable("swimlane2"); SwimlaneInstance swimlaneInstance = new SwimlaneInstance(swimlane); executionContext.getTaskInstance().setSwimlaneInstance(swimlaneInstance); executionContext.getTaskInstance().getSwimlaneInstance().setActorId("luc"); executionContext.getJbpmContext().save( executionContext.getTaskInstance()); executionContext.getJbpmContext().save(pi);
I searched on the forum for similar problems on the forum but it didn't help out..
Thanks in advance,