Author: alex.guizar(a)jboss.com
Date: 2008-10-21 23:19:19 -0400 (Tue, 21 Oct 2008)
New Revision: 2578
Modified:
jbpm3/trunk/modules/core/src/main/java/org/jbpm/graph/node/Join.java
jbpm3/trunk/modules/distribution/src/main/resources/database/hypersonic/jbpmDB.script
Log:
[JBPM-1755] added PARENTLOCKMODE_ column to JBPM_NODE table in distro hsql script
made some cleanup in Join
Modified: jbpm3/trunk/modules/core/src/main/java/org/jbpm/graph/node/Join.java
===================================================================
--- jbpm3/trunk/modules/core/src/main/java/org/jbpm/graph/node/Join.java 2008-10-22
03:08:09 UTC (rev 2577)
+++ jbpm3/trunk/modules/core/src/main/java/org/jbpm/graph/node/Join.java 2008-10-22
03:19:19 UTC (rev 2578)
@@ -41,7 +41,10 @@
private static final long serialVersionUID = 1L;
- /** specifies wether what type of hibernate lock should be acquired. null value
defaults to LockMode.Force */
+ /**
+ * specifies wether what type of hibernate lock should be acquired.
+ * null value defaults to LockMode.FORCE
+ */
String parentLockMode;
/**
@@ -111,13 +114,10 @@
JbpmContext jbpmContext = executionContext.getJbpmContext();
Session session = (jbpmContext!=null ? jbpmContext.getSession() : null);
if (session!=null) {
- LockMode lockMode = LockMode.FORCE;
- if (parentLockMode!=null) {
- lockMode = LockMode.parse(parentLockMode);
- }
- log.debug("forcing version increment on parent token "+parentToken);
- // TODO why is a flush needed?!
- // session.flush();
+ // force version increment by default (LockMode.FORCE)
+ LockMode lockMode = parentLockMode != null ? LockMode.parse(parentLockMode) :
LockMode.FORCE;
+ log.debug("acquiring " + lockMode + " lock on " +
parentToken);
+ // lock updates as appropriate, no need to flush here
session.lock(parentToken, lockMode);
}
@@ -125,10 +125,9 @@
// if this is a discriminator
if ( isDiscriminator ) {
- // reactivate the parent when the first token arrives in the
- // join. this must be the first token arriving because otherwise
- // the isAbleToReactivateParent() of this token should have been false
- // above.
+ // reactivate the parent when the first token arrives in the join.
+ // this must be the first token arriving, otherwise isAbleToReactivateParent()
+ // should have been false above.
reactivateParent = true;
// if a fixed set of tokenNames is specified at design time...
Modified:
jbpm3/trunk/modules/distribution/src/main/resources/database/hypersonic/jbpmDB.script
===================================================================
---
jbpm3/trunk/modules/distribution/src/main/resources/database/hypersonic/jbpmDB.script 2008-10-22
03:08:09 UTC (rev 2577)
+++
jbpm3/trunk/modules/distribution/src/main/resources/database/hypersonic/jbpmDB.script 2008-10-22
03:19:19 UTC (rev 2578)
@@ -26,7 +26,7 @@
CREATE INDEX IDX_MODDEF_PROCDF ON JBPM_MODULEDEFINITION(PROCESSDEFINITION_)
CREATE MEMORY TABLE JBPM_MODULEINSTANCE(ID_ BIGINT GENERATED BY DEFAULT AS IDENTITY(START
WITH 1) NOT NULL PRIMARY KEY,CLASS_ CHAR(1) NOT NULL,VERSION_ INTEGER NOT
NULL,PROCESSINSTANCE_ BIGINT,TASKMGMTDEFINITION_ BIGINT,NAME_ VARCHAR(255),CONSTRAINT
FK_TASKMGTINST_TMD FOREIGN KEY(TASKMGMTDEFINITION_) REFERENCES
JBPM_MODULEDEFINITION(ID_))
CREATE INDEX IDX_MODINST_PRINST ON JBPM_MODULEINSTANCE(PROCESSINSTANCE_)
-CREATE MEMORY TABLE JBPM_NODE(ID_ BIGINT GENERATED BY DEFAULT AS IDENTITY(START WITH 1)
NOT NULL PRIMARY KEY,CLASS_ CHAR(1) NOT NULL,NAME_ VARCHAR(255),DESCRIPTION_
VARCHAR(4000),PROCESSDEFINITION_ BIGINT,ISASYNC_ BOOLEAN,ISASYNCEXCL_ BOOLEAN,ACTION_
BIGINT,SUPERSTATE_ BIGINT,SUBPROCNAME_ VARCHAR(255),SUBPROCESSDEFINITION_
BIGINT,DECISIONEXPRESSION_ VARCHAR(255),DECISIONDELEGATION BIGINT,SCRIPT_ BIGINT,SIGNAL_
INTEGER,CREATETASKS_ BOOLEAN,ENDTASKS_ BOOLEAN,NODECOLLECTIONINDEX_ INTEGER,CONSTRAINT
FK_DECISION_DELEG FOREIGN KEY(DECISIONDELEGATION) REFERENCES
JBPM_DELEGATION(ID_),CONSTRAINT FK_NODE_ACTION FOREIGN KEY(ACTION_) REFERENCES
JBPM_ACTION(ID_),CONSTRAINT FK_NODE_SCRIPT FOREIGN KEY(SCRIPT_) REFERENCES
JBPM_ACTION(ID_),CONSTRAINT FK_NODE_SUPERSTATE FOREIGN KEY(SUPERSTATE_) REFERENCES
JBPM_NODE(ID_))
+CREATE MEMORY TABLE JBPM_NODE(ID_ BIGINT GENERATED BY DEFAULT AS IDENTITY(START WITH 1)
NOT NULL PRIMARY KEY,CLASS_ CHAR(1) NOT NULL,NAME_ VARCHAR(255),DESCRIPTION_
VARCHAR(4000),PROCESSDEFINITION_ BIGINT,ISASYNC_ BOOLEAN,ISASYNCEXCL_ BOOLEAN,ACTION_
BIGINT,SUPERSTATE_ BIGINT,SUBPROCNAME_ VARCHAR(255),SUBPROCESSDEFINITION_
BIGINT,DECISIONEXPRESSION_ VARCHAR(255),DECISIONDELEGATION BIGINT,SCRIPT_ BIGINT,SIGNAL_
INTEGER,CREATETASKS_ BOOLEAN,ENDTASKS_ BOOLEAN,NODECOLLECTIONINDEX_
INTEGER,PARENTLOCKMODE_ VARCHAR(255),CONSTRAINT FK_DECISION_DELEG FOREIGN
KEY(DECISIONDELEGATION) REFERENCES JBPM_DELEGATION(ID_),CONSTRAINT FK_NODE_ACTION FOREIGN
KEY(ACTION_) REFERENCES JBPM_ACTION(ID_),CONSTRAINT FK_NODE_SCRIPT FOREIGN KEY(SCRIPT_)
REFERENCES JBPM_ACTION(ID_),CONSTRAINT FK_NODE_SUPERSTATE FOREIGN KEY(SUPERSTATE_)
REFERENCES JBPM_NODE(ID_))
CREATE INDEX IDX_PSTATE_SBPRCDEF ON JBPM_NODE(SUBPROCESSDEFINITION_)
CREATE INDEX IDX_NODE_PROCDEF ON JBPM_NODE(PROCESSDEFINITION_)
CREATE INDEX IDX_NODE_ACTION ON JBPM_NODE(ACTION_)