Jorge Ferreira [
http://community.jboss.org/people/imjorge] created the discussion
"Error deleting SwimlaneImpl when a task has swimlanes and events with timer"
To view the discussion, visit:
http://community.jboss.org/message/552375#552375
--------------------------------------------------------------
Hello,
+jBPM 4.3 running on a Windows XP SP2 box (same behavior for a Windows 7).+
We are having some difficulties configuring events together with timers and swimlanes.
There seems to be a problem when jBPM tries to delete a swimlane when completeTask is
called.
We configured a console application (attached to post) that reproduces this error. After
running the application the following error is shown:
org.hibernate.exception.ConstraintViolationException: could not delete:
org.jbpm.pvm.internal.task.SwimlaneImpl#15 org.jbpm.pvm.internal.task.SwimlaneImpl#15
http://community.jboss.org/message/552375#552375/...
http://community.jboss.org/message/552375#552375/... at
org.jbpm.pvm.internal.svc.TaskServiceImpl.completeTask(TaskServiceImpl.java:88) at
com.test.Main.main(Main.java:83)Caused by: java.sql.SQLException: Integrity constraint
violation FK_TASK_SWIML table: JBPM4_TASK in statement
http://community.jboss.org/message/552375#552375/delete from JBPM4_SWIMLANE where DBID_=?
and DBVERSION_=?
http://community.jboss.org/message/552375#552375/delete from
JBPM4_SWIMLANE where DBID_=? and DBVERSION_=? at
org.hsqldb.jdbc.Util.throwError(Unknown Source) at
org.hsqldb.jdbc.jdbcPreparedStatement.executeUpdate(Unknown Source) at
org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:2551)
... 54 moreException in thread "main"
org.hibernate.exception.ConstraintViolationException: could not delete:
org.jbpm.pvm.internal.task.SwimlaneImpl#15 org.jbpm.pvm.internal.task.SwimlaneImpl#15
http://community.jboss.org/message/552375#552375/...
http://community.jboss.org/message/552375#552375/... at
org.jbpm.pvm.internal.svc.TaskServiceImpl.completeTask(TaskServiceImpl.java:88) at
com.test.Main.main(Main.java:83)Caused by: java.sql.SQLException: Integrity constraint
violation FK_TASK_SWIML table: JBPM4_TASK in statement
http://community.jboss.org/message/552375#552375/delete from JBPM4_SWIMLANE where DBID_=?
and DBVERSION_=?
http://community.jboss.org/message/552375#552375/delete from
JBPM4_SWIMLANE where DBID_=? and DBVERSION_=? at
org.hsqldb.jdbc.Util.throwError(Unknown Source) at
org.hsqldb.jdbc.jdbcPreparedStatement.executeUpdate(Unknown Source) at
org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:2551)
... 54 more
The sequence of SQL statements (as logged by p6spy) are:
update JBPM4_TASK set DBVERSION_=3, NAME_='task2', DESCR_='',
STATE_='open', SUSPHISTSTATE_='', ASSIGNEE_='b', FORM_='',
PRIORITY_=0, CREATE_='2010-07-13 16:36:53.007', DUEDATE_='',
PROGRESS_='', SIGNALLING_='false', EXECUTION_ID_='test3.7.task2',
ACTIVITY_NAME_='task2', HASVARS_='false', SUPERTASK_='',
EXECUTION_=12, PROCINST_=7, SWIMLANE_=15, TASKDEFNAME_='task2' where DBID_=14 and
DBVERSION_=2
update JBPM4_EXECUTION set DBVERSION_=3, ACTIVITYNAME_='end1',
PROCDEFID_='test3-1', HASVARS_='true', NAME_='', KEY_='',
ID_='test3.7', STATE_='ended', SUSPHISTSTATE_='', PRIORITY_=0,
HISACTINST_=11, PARENT_='', INSTANCE_=7, SUPEREXEC_='',
SUBPROCINST_='' where DBID_=7 and DBVERSION_=2
update JBPM4_HIST_ACTINST set DBVERSION_=1, HPROCI_=7, TYPE_='task',
EXECUTION_='test3.7.task2', ACTIVITY_NAME_='task2', START_='2010-07-13
16:36:53.007', END_='2010-07-13 16:39:56.991', DURATION_=183984,
TRANSITION_='jbpm_no_task_outcome_specified_jbpm', NEXTIDX_=1, HTASK_=14 where
DBID_=20 and DBVERSION_=0
update JBPM4_HIST_TASK set DBVERSION_=2, EXECUTION_='test3.7.task2',
OUTCOME_='jbpm_no_task_outcome_specified_jbpm', ASSIGNEE_='b',
PRIORITY_=0, STATE_='completed', CREATE_='2010-07-13 16:36:53.007',
END_='2010-07-13 16:39:56.991', DURATION_=183984, NEXTIDX_=1 where DBID_=14 and
DBVERSION_=1
update JBPM4_HIST_PROCINST set DBVERSION_=1, ID_='test3.7',
PROCDEFID_='test3-1', KEY_='', START_='2010-07-13 16:36:52.337',
END_='2010-07-13 16:39:57.101', DURATION_=184764, STATE_='ended',
ENDACTIVITY_='end1', NEXTIDX_=1 where DBID_=7 and DBVERSION_=0
update JBPM4_SWIMLANE set EXECUTION_=null, NAME_=null where EXECUTION_=12
update JBPM4_PARTICIPATION set SWIMLANE_=null where SWIMLANE_=15
update JBPM4_EXECUTION set PARENT_=null, PARENT_IDX_=null where PARENT_=7
delete from JBPM4_PARTICIPATION where DBID_=17 and DBVERSION_=0
delete from JBPM4_PARTICIPATION where DBID_=16 and DBVERSION_=0
delete from JBPM4_SWIMLANE where DBID_=15 and DBVERSION_=1
The problem appears when the last line:
delete from JBPM4_SWIMLANE where DBID_=15 and DBVERSION_=1
is executed. This is caused because a record in table JBPM4_TASK still exists that points
to the JBPM4_SWIMLANE record that is being deleted. In this case I would guess that the
first SQL statement:
update JBPM4_TASK set DBVERSION_=3, NAME_='task2', DESCR_='',
STATE_='open', SUSPHISTSTATE_='', ASSIGNEE_='b', FORM_='',
PRIORITY_=0, CREATE_='2010-07-13 16:36:53.007', DUEDATE_='',
PROGRESS_='', SIGNALLING_='false', EXECUTION_ID_='test3.7.task2',
ACTIVITY_NAME_='task2', HASVARS_='false', SUPERTASK_='',
EXECUTION_=12, PROCINST_=7, SWIMLANE_=15, TASKDEFNAME_='task2' where DBID_=14 and
DBVERSION_=2
should have set swimlane_ to null so that the last delete would suceed. These SQL
statements are automatically generated by Hibernate. Is there something missing from the
hbm files that come with the jBPM distribution?
This only happens if the task has an <on event> with a timer configured and a
swimlane. If the <timer> is commented or if the swimlane is replaced by the
equivalent candidate-users the application does not fail with this error.
--------------------------------------------------------------
Reply to this message by going to Community
[
http://community.jboss.org/message/552375#552375]
Start a new discussion in jBPM Development at Community
[
http://community.jboss.org/choose-container!input.jspa?contentType=1&...]