[jbpm-commits] JBoss JBPM SVN: r4305 - in jbpm4/trunk/modules: api/src/main/java/org/jbpm/task and 19 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Sat Mar 21 13:50:10 EDT 2009
Author: tom.baeyens at jboss.com
Date: 2009-03-21 13:50:09 -0400 (Sat, 21 Mar 2009)
New Revision: 4305
Added:
jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/swimlane/
jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/swimlane/TaskSwimlaneTest.java
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/model/TaskExtension.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/Assignable.java
Removed:
jbpm4/trunk/modules/api/src/main/java/org/jbpm/task/TaskExtension.java
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/StartActivities.java
Modified:
jbpm4/trunk/modules/api/src/main/java/org/jbpm/session/TaskDbSession.java
jbpm4/trunk/modules/api/src/main/resources/jpdl.xsd
jbpm4/trunk/modules/distro/src/main/resources/config-tool/hibernate/mapping.files/jbpm.definition.hbm.xml
jbpm4/trunk/modules/distro/src/main/resources/config-tool/hibernate/mapping.files/jbpm.execution.hbm.xml
jbpm4/trunk/modules/distro/src/main/resources/config-tool/hibernate/mapping.files/jbpm.jpdl.hbm.xml
jbpm4/trunk/modules/distro/src/main/resources/config-tool/hibernate/mapping.files/jbpm.task.hbm.xml
jbpm4/trunk/modules/examples/.project
jbpm4/trunk/modules/examples/src/test/resources/jbpm.definition.hbm.xml
jbpm4/trunk/modules/examples/src/test/resources/jbpm.execution.hbm.xml
jbpm4/trunk/modules/examples/src/test/resources/jbpm.jpdl.hbm.xml
jbpm4/trunk/modules/examples/src/test/resources/jbpm.task.hbm.xml
jbpm4/trunk/modules/examples/src/test/resources/org/jbpm/examples/task/swimlane/process.jpdl.xml
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/StartBinding.java
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskActivity.java
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskBinding.java
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/model/JpdlExecution.java
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/model/JpdlProcessDefinition.java
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java
jbpm4/trunk/modules/jpdl/src/test/resources/jbpm.definition.hbm.xml
jbpm4/trunk/modules/jpdl/src/test/resources/jbpm.execution.hbm.xml
jbpm4/trunk/modules/jpdl/src/test/resources/jbpm.jpdl.hbm.xml
jbpm4/trunk/modules/jpdl/src/test/resources/jbpm.task.hbm.xml
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/DeleteTaskCmd.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/NewTaskCmd.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/deploy/CheckProcessDeployer.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/deploy/DeployerManager.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/hibernate/HibernateTaskDbSession.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/ParticipantImpl.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/SwimlaneDefinitionImpl.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/SwimlaneImpl.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskDefinitionImpl.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskImpl.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/tx/StandardTransaction.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/HibernateSessionDescriptor.java
jbpm4/trunk/modules/pvm/src/test/resources/jbpm.definition.hbm.xml
jbpm4/trunk/modules/pvm/src/test/resources/jbpm.execution.hbm.xml
jbpm4/trunk/modules/pvm/src/test/resources/jbpm.task.hbm.xml
jbpm4/trunk/modules/test-db/src/test/resources/jbpm.definition.hbm.xml
jbpm4/trunk/modules/test-db/src/test/resources/jbpm.execution.hbm.xml
jbpm4/trunk/modules/test-db/src/test/resources/jbpm.jpdl.hbm.xml
jbpm4/trunk/modules/test-db/src/test/resources/jbpm.task.hbm.xml
Log:
JBPM-2080 JBPM-2024 JBPM-2104 added swimlanes
Modified: jbpm4/trunk/modules/api/src/main/java/org/jbpm/session/TaskDbSession.java
===================================================================
--- jbpm4/trunk/modules/api/src/main/java/org/jbpm/session/TaskDbSession.java 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/api/src/main/java/org/jbpm/session/TaskDbSession.java 2009-03-21 17:50:09 UTC (rev 4305)
@@ -30,7 +30,7 @@
*/
public interface TaskDbSession extends DbSession {
- Task newTask();
+ Task createTask();
Task findTaskByDbid(long taskDbid);
Deleted: jbpm4/trunk/modules/api/src/main/java/org/jbpm/task/TaskExtension.java
===================================================================
--- jbpm4/trunk/modules/api/src/main/java/org/jbpm/task/TaskExtension.java 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/api/src/main/java/org/jbpm/task/TaskExtension.java 2009-03-21 17:50:09 UTC (rev 4305)
@@ -1,39 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jbpm.task;
-
-
-/**
- * @author Tom Baeyens
- */
-public interface TaskExtension {
-
- TaskDefinition getTaskDefinition();
- TaskDefinition getTaskDefinition(String name);
-
- Task createTask(TaskDefinition taskDefinition);
-
- SwimlaneDefinition getSwimlaneDefinition(String name);
-
- Swimlane getSwimlane(String name);
- Swimlane createSwimlane(SwimlaneDefinition swimlaneDefinition);
-}
Modified: jbpm4/trunk/modules/api/src/main/resources/jpdl.xsd
===================================================================
--- jbpm4/trunk/modules/api/src/main/resources/jpdl.xsd 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/api/src/main/resources/jpdl.xsd 2009-03-21 17:50:09 UTC (rev 4305)
@@ -315,7 +315,7 @@
</documentation></annotation>
<complexType>
<sequence>
- <element name="handler" type="tns:wireObjectType"></element>
+ <element name="handler" minOccurs="0" type="tns:wireObjectType" />
<element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
</sequence>
<attributeGroup ref="tns:activityAttributes" />
@@ -661,11 +661,13 @@
<annotation><documentation>Elements of type swimlaneType will be used in the
process to enumerate all the participating swimlanes.
</documentation></annotation>
+ <sequence>
+ </sequence>
<attribute name="name" type="string"/>
<attributeGroup ref="tns:assignmentAttributes"></attributeGroup>
</complexType>
- <element name="swimlane" type="tns:swimlaneType">
+ <element name="swimlane" type="tns:swimlaneType" >
<annotation><documentation>A participating swimlane for this process
</documentation></annotation>
</element>
Modified: jbpm4/trunk/modules/distro/src/main/resources/config-tool/hibernate/mapping.files/jbpm.definition.hbm.xml
===================================================================
--- jbpm4/trunk/modules/distro/src/main/resources/config-tool/hibernate/mapping.files/jbpm.definition.hbm.xml 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/distro/src/main/resources/config-tool/hibernate/mapping.files/jbpm.definition.hbm.xml 2009-03-21 17:50:09 UTC (rev 4305)
@@ -4,11 +4,15 @@
<hibernate-mapping package="org.jbpm.pvm.internal.model" default-access="field">
<!-- ### PROCESS DEFINITION ############################################# -->
- <class name="ProcessDefinitionImpl" table="JBPM_PROCESS">
+ <class name="ProcessDefinitionImpl"
+ table="JBPM_PROCESS"
+ discriminator-value="pvm">
<!-- ProcessElementImpl part ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<id name="dbid" column="DBID_">
<generator class="native" />
</id>
+ <discriminator><column name="CLASS_" /></discriminator>
+
<version name="dbversion" column="DBVERSION_" />
<many-to-one name="properties"
class="WireProperties"
Modified: jbpm4/trunk/modules/distro/src/main/resources/config-tool/hibernate/mapping.files/jbpm.execution.hbm.xml
===================================================================
--- jbpm4/trunk/modules/distro/src/main/resources/config-tool/hibernate/mapping.files/jbpm.execution.hbm.xml 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/distro/src/main/resources/config-tool/hibernate/mapping.files/jbpm.execution.hbm.xml 2009-03-21 17:50:09 UTC (rev 4305)
@@ -19,10 +19,13 @@
</typedef>
<!-- ### PROCESS DEFINITION ############################################# -->
- <class name="ExecutionImpl" table="JBPM_EXECUTION">
+ <class name="ExecutionImpl"
+ table="JBPM_EXECUTION"
+ discriminator-value="pvm">
<id name="dbid" column="DBID_">
<generator class="native" />
</id>
+ <discriminator><column name="CLASS_" /></discriminator>
<version name="dbversion" column="DBVERSION_" />
<many-to-one name="activity"
@@ -34,8 +37,7 @@
<property name="hasVariables" column="HASVARS_" />
<map name="variables"
- cascade="all-delete-orphan"
- table="JBPM_VARIABLE">
+ cascade="all-delete-orphan">
<key foreign-key="FK_VAR_EXECUTION">
<column name="EXECUTION_" index="IDX_VAR_EXECUTION"/>
</key>
Modified: jbpm4/trunk/modules/distro/src/main/resources/config-tool/hibernate/mapping.files/jbpm.jpdl.hbm.xml
===================================================================
--- jbpm4/trunk/modules/distro/src/main/resources/config-tool/hibernate/mapping.files/jbpm.jpdl.hbm.xml 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/distro/src/main/resources/config-tool/hibernate/mapping.files/jbpm.jpdl.hbm.xml 2009-03-21 17:50:09 UTC (rev 4305)
@@ -3,13 +3,39 @@
<hibernate-mapping default-access="field">
- <joined-subclass name="org.jbpm.jpdl.internal.model.JpdlProcessDefinition" table="JBPM_JPDL_PROCDEF" extends="org.jbpm.pvm.internal.model.ProcessDefinitionImpl">
- <key column="DBID_"/>
- </joined-subclass>
+ <subclass name="org.jbpm.jpdl.internal.model.JpdlProcessDefinition"
+ extends="org.jbpm.pvm.internal.model.ProcessDefinitionImpl"
+ discriminator-value="jpdl">
+ <map name="swimlaneDefinitions"
+ cascade="all-delete-orphan">
+ <key foreign-key="FK_SWLDEF_PROCESS">
+ <column name="PROCESS_SWL_" index="IDX_SWLDEF_PROCESS"/>
+ </key>
+ <map-key type="string" column="NAME_" />
+ <one-to-many class="org.jbpm.pvm.internal.task.SwimlaneDefinitionImpl" />
+ </map>
+ <map name="taskDefinitions"
+ cascade="all-delete-orphan">
+ <key foreign-key="FK_TSKDEF_PROCESS">
+ <column name="PROCESS_" index="IDX_TSKDEF_PROCESS"/>
+ </key>
+ <map-key type="string" column="NAME_" />
+ <one-to-many class="org.jbpm.pvm.internal.task.TaskDefinitionImpl" />
+ </map>
+ </subclass>
- <joined-subclass name="org.jbpm.jpdl.internal.model.JpdlExecution" table="JBPM_JPDL_EXECUTION" extends="org.jbpm.pvm.internal.model.ExecutionImpl">
- <key column="DBID_"/>
- </joined-subclass>
+ <subclass name="org.jbpm.jpdl.internal.model.JpdlExecution"
+ extends="org.jbpm.pvm.internal.model.ExecutionImpl"
+ discriminator-value="jpdl">
+ <map name="swimlanes"
+ cascade="all-delete-orphan">
+ <key foreign-key="FK_SWIMLANE_EXEC">
+ <column name="EXECUTION_" index="IDX_SWIMLANE_EXEC"/>
+ </key>
+ <map-key type="string" column="NAME_" />
+ <one-to-many class="org.jbpm.pvm.internal.task.SwimlaneImpl" />
+ </map>
+ </subclass>
<class name="org.jbpm.jpdl.internal.activity.JpdlActivity" table="JBPM_JPDL_ACTIVITY" abstract="true" discriminator-value="X">
<id name="dbid" column="DBID_">
Modified: jbpm4/trunk/modules/distro/src/main/resources/config-tool/hibernate/mapping.files/jbpm.task.hbm.xml
===================================================================
--- jbpm4/trunk/modules/distro/src/main/resources/config-tool/hibernate/mapping.files/jbpm.task.hbm.xml 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/distro/src/main/resources/config-tool/hibernate/mapping.files/jbpm.task.hbm.xml 2009-03-21 17:50:09 UTC (rev 4305)
@@ -4,21 +4,19 @@
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping auto-import="false" package="org.jbpm.pvm.internal.task" default-access="field">
- <!-- ### TASK DEFINITION ################################################ -->
- <class name="TaskDefinitionImpl" discriminator-value="T">
+ <!-- ### SWIMLANE DEFINITION ############################################ -->
+ <class name="SwimlaneDefinitionImpl"
+ table="JBPM_TASKDEF"
+ discriminator-value="S" >
<id name="dbid" column="DBID_">
<generator class="native" />
</id>
- <discriminator type="char" column="CLASS_"/>
- <version name="dbversion" column="DBVERSION_" />
+ <discriminator><column name="CLASS_" /></discriminator>
+ <version name="dbversion" column="DBVERSION_" />
<property name="name" column="NAME_"/>
<property name="description" column="DESCR_"/>
- <property name="priority" column="PRIORITY_"/>
- <property name="dueDateDuration" column="DUEDATE_"/>
- <property name="isBlocking" column="BLOCK_"/>
- <property name="isSignalling" column="SIGNAL_"/>
<property name="assigneeExpression" column="ASS_EXPR_"/>
<property name="assigneeExpressionLanguage" column="ASS_EXPR_LANG_"/>
<property name="candidateUsersExpression" column="CNDUSR_EXPR_"/>
@@ -30,25 +28,35 @@
column="ASSIGNER_DESCR_"
cascade="all"
class="org.jbpm.pvm.internal.wire.descriptor.AbstractDescriptor"
- foreign-key="FK_TSK_ASIG_DESCR"
- index="IDX_TSK_ASIG_DESCR" />
+ foreign-key="FK_SWL_ASIG_DESCR"
+ index="IDX_SWL_ASIG_DESCR" />
- <many-to-one name="swimlaneDefinition"
- column="SWIMLANE_DEF_"
- cascade="all"
- class="SwimlaneDefinitionImpl"
- foreign-key="FK_TSK_SWIML_DEF"
- index="IDX_TSK_SWIML_DEF" />
-
- <list name="subTaskDefinitions" cascade="all-delete-orphan">
- <key column="TASKDEF_" />
- <list-index column="TASKDEF_IDX_" />
- <one-to-many class="TaskDefinitionImpl" />
- </list>
- </class>
+ <!-- ### TASK DEFINITION ################################################ -->
+ <subclass name="TaskDefinitionImpl" discriminator-value="T">
+ <property name="priority" column="PRIORITY_"/>
+ <property name="dueDateDuration" column="DUEDATE_"/>
+ <property name="isBlocking" column="BLOCK_"/>
+ <property name="isSignalling" column="SIGNAL_"/>
+
+ <many-to-one name="swimlaneDefinition"
+ column="SWIMLANE_DEF_"
+ cascade="all"
+ class="SwimlaneDefinitionImpl"
+ foreign-key="FK_TSK_SWIML_DEF"
+ index="IDX_TSK_SWIML_DEF" />
+
+ <list name="subTaskDefinitions" cascade="all-delete-orphan">
+ <key column="TASKDEF_" />
+ <list-index column="TASKDEF_IDX_" />
+ <one-to-many class="TaskDefinitionImpl" />
+ </list>
+ </subclass>
+ </class>
+
<!-- ### TASK ########################################################### -->
<class name="TaskImpl"
+ table="JBPM_TASK"
discriminator-value="T">
<id name="dbid" column="DBID_">
<generator class="native" />
@@ -109,7 +117,7 @@
</class>
<!-- ### PARTICIPANT #################################################### -->
- <class name="ParticipantImpl">
+ <class name="ParticipantImpl" table="JBPM_PARTICIPANT">
<id name="dbid" column="DBID_">
<generator class="native" />
</id>
@@ -132,19 +140,8 @@
</class>
- <!-- ### SWIMLANE DEFINITION ############################################ -->
- <class name="SwimlaneDefinitionImpl">
- <id name="dbid" column="DBID_">
- <generator class="native" />
- </id>
- <version name="dbversion" column="DBVERSION_" />
-
- <property name="name" column="NAME_"/>
- </class>
-
-
<!-- ### SWIMLANE ####################################################### -->
- <class name="SwimlaneImpl">
+ <class name="SwimlaneImpl" table="JBPM_SWIMLANE">
<id name="dbid" column="DBID_">
<generator class="native" />
</id>
@@ -161,7 +158,7 @@
<many-to-one name="execution"
class="org.jbpm.pvm.internal.model.ExecutionImpl"
column="EXECUTION_"
- foreign-key="FK_SWIMLANE_EXEC" />
+ foreign-key="none" />
<set name="participants" cascade="all-delete-orphan">
<key column="SWIMLANE_" />
@@ -169,8 +166,8 @@
</set>
</class>
+
-
<!-- ### QUERIES ######################################################## -->
<query name="findTasks">
Modified: jbpm4/trunk/modules/examples/.project
===================================================================
--- jbpm4/trunk/modules/examples/.project 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/examples/.project 2009-03-21 17:50:09 UTC (rev 4305)
@@ -11,8 +11,13 @@
</arguments>
</buildCommand>
<buildCommand>
- <name>org.maven.ide.eclipse.maven2Builder</name>
+ <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
+ <triggers>full,incremental,</triggers>
<arguments>
+ <dictionary>
+ <key>LaunchConfigHandle</key>
+ <value><project>/.externalToolBuilders/org.maven.ide.eclipse.maven2Builder.launch</value>
+ </dictionary>
</arguments>
</buildCommand>
</buildSpec>
Added: jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/swimlane/TaskSwimlaneTest.java
===================================================================
--- jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/swimlane/TaskSwimlaneTest.java (rev 0)
+++ jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/swimlane/TaskSwimlaneTest.java 2009-03-21 17:50:09 UTC (rev 4305)
@@ -0,0 +1,75 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.examples.task.swimlane;
+
+import java.util.List;
+
+import org.jbpm.task.Task;
+import org.jbpm.test.JbpmTestCase;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public class TaskSwimlaneTest extends JbpmTestCase {
+
+ public void testTaskSwimlane() {
+ // create johndoe and joesmoe as members of the sales group
+ String salesGroupId = identityService.createGroup("sales");
+
+ identityService.createUser("johndoe", "John", "Doe");
+ identityService.createMembership("johndoe", salesGroupId);
+
+ deployJpdlResource("org/jbpm/examples/task/swimlane/process.jpdl.xml");
+
+ executionService.startProcessInstanceByKey("TaskSwimlane");
+
+ List<Task> taskList = taskService.getGroupTaskList("johndoe", 0, 10);
+ assertEquals(1, taskList.size());
+ Task task = taskList.get(0);
+ long taskDbid = task.getDbid();
+ assertEquals("enter order data", task.getName());
+ assertNull(task.getAssignee());
+
+ // lets assume that johndoe takes the task
+ taskService.setUserId("johndoe");
+ taskService.takeTask(taskDbid);
+
+ // submit the task
+ taskService.submitTask(taskDbid);
+
+ // the next task will be created and assigned directly to johndoe
+ // this is because johndoe was the person that took the previous task
+ // in the salesRepresentative swimlane. so that person is most likely
+ // to know the context of this case
+
+ // we'll check that the group task lists for johndoe and joesmoe are empty
+ assertEquals(0, taskService.getGroupTaskList("johndoe", 0, 10).size());
+
+ // and that the task is directly assigned to johndoe
+ taskList = taskService.getPersonalTaskList("johndoe", 0, 10);
+ assertEquals(1, taskList.size());
+ task = taskList.get(0);
+ assertEquals("calculate quote", task.getName());
+ assertEquals("johndoe", task.getAssignee());
+ }
+}
Property changes on: jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/swimlane/TaskSwimlaneTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: jbpm4/trunk/modules/examples/src/test/resources/jbpm.definition.hbm.xml
===================================================================
--- jbpm4/trunk/modules/examples/src/test/resources/jbpm.definition.hbm.xml 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/examples/src/test/resources/jbpm.definition.hbm.xml 2009-03-21 17:50:09 UTC (rev 4305)
@@ -4,11 +4,15 @@
<hibernate-mapping package="org.jbpm.pvm.internal.model" default-access="field">
<!-- ### PROCESS DEFINITION ############################################# -->
- <class name="ProcessDefinitionImpl" table="JBPM_PROCESS">
+ <class name="ProcessDefinitionImpl"
+ table="JBPM_PROCESS"
+ discriminator-value="pvm">
<!-- ProcessElementImpl part ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<id name="dbid" column="DBID_">
<generator class="native" />
</id>
+ <discriminator><column name="CLASS_" /></discriminator>
+
<version name="dbversion" column="DBVERSION_" />
<many-to-one name="properties"
class="WireProperties"
Modified: jbpm4/trunk/modules/examples/src/test/resources/jbpm.execution.hbm.xml
===================================================================
--- jbpm4/trunk/modules/examples/src/test/resources/jbpm.execution.hbm.xml 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/examples/src/test/resources/jbpm.execution.hbm.xml 2009-03-21 17:50:09 UTC (rev 4305)
@@ -19,10 +19,13 @@
</typedef>
<!-- ### PROCESS DEFINITION ############################################# -->
- <class name="ExecutionImpl" table="JBPM_EXECUTION">
+ <class name="ExecutionImpl"
+ table="JBPM_EXECUTION"
+ discriminator-value="pvm">
<id name="dbid" column="DBID_">
<generator class="native" />
</id>
+ <discriminator><column name="CLASS_" /></discriminator>
<version name="dbversion" column="DBVERSION_" />
<many-to-one name="activity"
@@ -34,8 +37,7 @@
<property name="hasVariables" column="HASVARS_" />
<map name="variables"
- cascade="all-delete-orphan"
- table="JBPM_VARIABLE">
+ cascade="all-delete-orphan">
<key foreign-key="FK_VAR_EXECUTION">
<column name="EXECUTION_" index="IDX_VAR_EXECUTION"/>
</key>
@@ -203,7 +205,7 @@
<generator class="native" />
</id>
<version name="dbversion" column="DBVERSION_" />
- <property name="blob" type="blob" column="BLOB_VALUE_" />
+ <property name="blob" type="blob"><column name="BLOB_VALUE_" /></property>
<property name="bytes" type="binary" column="BINARY_VALUE_"/>
<property name="clob" type="clob" column="CLOB_VALUE_" />
<property name="text" type="text" column="TEXT_VALUE_"/>
Modified: jbpm4/trunk/modules/examples/src/test/resources/jbpm.jpdl.hbm.xml
===================================================================
--- jbpm4/trunk/modules/examples/src/test/resources/jbpm.jpdl.hbm.xml 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/examples/src/test/resources/jbpm.jpdl.hbm.xml 2009-03-21 17:50:09 UTC (rev 4305)
@@ -3,13 +3,39 @@
<hibernate-mapping default-access="field">
- <joined-subclass name="org.jbpm.jpdl.internal.model.JpdlProcessDefinition" table="JBPM_JPDL_PROCDEF" extends="org.jbpm.pvm.internal.model.ProcessDefinitionImpl">
- <key column="DBID_"/>
- </joined-subclass>
+ <subclass name="org.jbpm.jpdl.internal.model.JpdlProcessDefinition"
+ extends="org.jbpm.pvm.internal.model.ProcessDefinitionImpl"
+ discriminator-value="jpdl">
+ <map name="swimlaneDefinitions"
+ cascade="all-delete-orphan">
+ <key foreign-key="FK_SWLDEF_PROCESS">
+ <column name="PROCESS_SWL_" index="IDX_SWLDEF_PROCESS"/>
+ </key>
+ <map-key type="string" column="NAME_" />
+ <one-to-many class="org.jbpm.pvm.internal.task.SwimlaneDefinitionImpl" />
+ </map>
+ <map name="taskDefinitions"
+ cascade="all-delete-orphan">
+ <key foreign-key="FK_TSKDEF_PROCESS">
+ <column name="PROCESS_" index="IDX_TSKDEF_PROCESS"/>
+ </key>
+ <map-key type="string" column="NAME_" />
+ <one-to-many class="org.jbpm.pvm.internal.task.TaskDefinitionImpl" />
+ </map>
+ </subclass>
- <joined-subclass name="org.jbpm.jpdl.internal.model.JpdlExecution" table="JBPM_JPDL_EXECUTION" extends="org.jbpm.pvm.internal.model.ExecutionImpl">
- <key column="DBID_"/>
- </joined-subclass>
+ <subclass name="org.jbpm.jpdl.internal.model.JpdlExecution"
+ extends="org.jbpm.pvm.internal.model.ExecutionImpl"
+ discriminator-value="jpdl">
+ <map name="swimlanes"
+ cascade="all-delete-orphan">
+ <key foreign-key="FK_SWIMLANE_EXEC">
+ <column name="EXECUTION_" index="IDX_SWIMLANE_EXEC"/>
+ </key>
+ <map-key type="string" column="NAME_" />
+ <one-to-many class="org.jbpm.pvm.internal.task.SwimlaneImpl" />
+ </map>
+ </subclass>
<class name="org.jbpm.jpdl.internal.activity.JpdlActivity" table="JBPM_JPDL_ACTIVITY" abstract="true" discriminator-value="X">
<id name="dbid" column="DBID_">
Modified: jbpm4/trunk/modules/examples/src/test/resources/jbpm.task.hbm.xml
===================================================================
--- jbpm4/trunk/modules/examples/src/test/resources/jbpm.task.hbm.xml 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/examples/src/test/resources/jbpm.task.hbm.xml 2009-03-21 17:50:09 UTC (rev 4305)
@@ -4,21 +4,19 @@
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping auto-import="false" package="org.jbpm.pvm.internal.task" default-access="field">
- <!-- ### TASK DEFINITION ################################################ -->
- <class name="TaskDefinitionImpl" discriminator-value="T">
+ <!-- ### SWIMLANE DEFINITION ############################################ -->
+ <class name="SwimlaneDefinitionImpl"
+ table="JBPM_TASKDEF"
+ discriminator-value="S" >
<id name="dbid" column="DBID_">
<generator class="native" />
</id>
- <discriminator type="char" column="CLASS_"/>
- <version name="dbversion" column="DBVERSION_" />
+ <discriminator><column name="CLASS_" /></discriminator>
+ <version name="dbversion" column="DBVERSION_" />
<property name="name" column="NAME_"/>
<property name="description" column="DESCR_"/>
- <property name="priority" column="PRIORITY_"/>
- <property name="dueDateDuration" column="DUEDATE_"/>
- <property name="isBlocking" column="BLOCK_"/>
- <property name="isSignalling" column="SIGNAL_"/>
<property name="assigneeExpression" column="ASS_EXPR_"/>
<property name="assigneeExpressionLanguage" column="ASS_EXPR_LANG_"/>
<property name="candidateUsersExpression" column="CNDUSR_EXPR_"/>
@@ -30,25 +28,35 @@
column="ASSIGNER_DESCR_"
cascade="all"
class="org.jbpm.pvm.internal.wire.descriptor.AbstractDescriptor"
- foreign-key="FK_TSK_ASIG_DESCR"
- index="IDX_TSK_ASIG_DESCR" />
+ foreign-key="FK_SWL_ASIG_DESCR"
+ index="IDX_SWL_ASIG_DESCR" />
- <many-to-one name="swimlaneDefinition"
- column="SWIMLANE_DEF_"
- cascade="all"
- class="SwimlaneDefinitionImpl"
- foreign-key="FK_TSK_SWIML_DEF"
- index="IDX_TSK_SWIML_DEF" />
-
- <list name="subTaskDefinitions" cascade="all-delete-orphan">
- <key column="TASKDEF_" />
- <list-index column="TASKDEF_IDX_" />
- <one-to-many class="TaskDefinitionImpl" />
- </list>
- </class>
+ <!-- ### TASK DEFINITION ################################################ -->
+ <subclass name="TaskDefinitionImpl" discriminator-value="T">
+ <property name="priority" column="PRIORITY_"/>
+ <property name="dueDateDuration" column="DUEDATE_"/>
+ <property name="isBlocking" column="BLOCK_"/>
+ <property name="isSignalling" column="SIGNAL_"/>
+
+ <many-to-one name="swimlaneDefinition"
+ column="SWIMLANE_DEF_"
+ cascade="all"
+ class="SwimlaneDefinitionImpl"
+ foreign-key="FK_TSK_SWIML_DEF"
+ index="IDX_TSK_SWIML_DEF" />
+
+ <list name="subTaskDefinitions" cascade="all-delete-orphan">
+ <key column="TASKDEF_" />
+ <list-index column="TASKDEF_IDX_" />
+ <one-to-many class="TaskDefinitionImpl" />
+ </list>
+ </subclass>
+ </class>
+
<!-- ### TASK ########################################################### -->
<class name="TaskImpl"
+ table="JBPM_TASK"
discriminator-value="T">
<id name="dbid" column="DBID_">
<generator class="native" />
@@ -109,7 +117,7 @@
</class>
<!-- ### PARTICIPANT #################################################### -->
- <class name="ParticipantImpl">
+ <class name="ParticipantImpl" table="JBPM_PARTICIPANT">
<id name="dbid" column="DBID_">
<generator class="native" />
</id>
@@ -132,19 +140,8 @@
</class>
- <!-- ### SWIMLANE DEFINITION ############################################ -->
- <class name="SwimlaneDefinitionImpl">
- <id name="dbid" column="DBID_">
- <generator class="native" />
- </id>
- <version name="dbversion" column="DBVERSION_" />
-
- <property name="name" column="NAME_"/>
- </class>
-
-
<!-- ### SWIMLANE ####################################################### -->
- <class name="SwimlaneImpl">
+ <class name="SwimlaneImpl" table="JBPM_SWIMLANE">
<id name="dbid" column="DBID_">
<generator class="native" />
</id>
@@ -161,7 +158,7 @@
<many-to-one name="execution"
class="org.jbpm.pvm.internal.model.ExecutionImpl"
column="EXECUTION_"
- foreign-key="FK_SWIMLANE_EXEC" />
+ foreign-key="none" />
<set name="participants" cascade="all-delete-orphan">
<key column="SWIMLANE_" />
@@ -169,8 +166,8 @@
</set>
</class>
+
-
<!-- ### QUERIES ######################################################## -->
<query name="findTasks">
Modified: jbpm4/trunk/modules/examples/src/test/resources/org/jbpm/examples/task/swimlane/process.jpdl.xml
===================================================================
--- jbpm4/trunk/modules/examples/src/test/resources/org/jbpm/examples/task/swimlane/process.jpdl.xml 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/examples/src/test/resources/org/jbpm/examples/task/swimlane/process.jpdl.xml 2009-03-21 17:50:09 UTC (rev 4305)
@@ -1,26 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
-<process name="swimlane" xmlns="http://jbpm.org/4/jpdl">
+<process name="TaskSwimlane" xmlns="http://jbpm.org/4/jpdl">
- <swimlane name="customer"
- assignee="johndoe">
- </swimlane>
+ <swimlane name="sales representative"
+ candidate-groups="sales" />
<start g="20,20,48,48">
- <transition to="open case" />
+ <transition to="enter order data" />
</start>
- <task
- name="open case"
- swimlane="customer"
- g="96,16,127,52">
+ <task name="enter order data"
+ swimlane="sales representative"
+ g="96,16,127,52">
- <transition to="verify"/>
+ <transition to="calculate quote"/>
</task>
<task
- name="verify"
- swimlane="customer"
+ name="calculate quote"
+ swimlane="sales representative"
g="255,16,88,52">
</task>
Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/StartBinding.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/StartBinding.java 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/StartBinding.java 2009-03-21 17:50:09 UTC (rev 4305)
@@ -21,7 +21,7 @@
*/
package org.jbpm.jpdl.internal.activity;
-import org.jbpm.jpdl.internal.xml.StartActivities;
+import org.jbpm.jpdl.internal.model.JpdlProcessDefinition;
import org.jbpm.pvm.internal.model.ActivityImpl;
import org.jbpm.pvm.internal.xml.Parse;
import org.jbpm.pvm.internal.xml.Parser;
@@ -39,8 +39,15 @@
public Object parse(Element element, Parse parse, Parser parser) {
ActivityImpl startActivity = parse.findObject(ActivityImpl.class);
- StartActivities startActivities = parse.findObject(StartActivities.class);
- startActivities.add(startActivity);
+ JpdlProcessDefinition processDefinition = parse.findObject(JpdlProcessDefinition.class);
+
+ if (processDefinition.getInitial()==null) {
+ processDefinition.setInitial(startActivity);
+
+ } else {
+ parse.addProblem("multiple start events not yet supported");
+ }
+
return new StartActivity();
}
Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskActivity.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskActivity.java 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskActivity.java 2009-03-21 17:50:09 UTC (rev 4305)
@@ -26,8 +26,10 @@
import org.jbpm.JbpmException;
import org.jbpm.activity.ActivityExecution;
import org.jbpm.env.Environment;
+import org.jbpm.jpdl.internal.model.JpdlExecution;
import org.jbpm.model.Activity;
import org.jbpm.model.Transition;
+import org.jbpm.pvm.internal.task.SwimlaneDefinitionImpl;
import org.jbpm.pvm.internal.task.TaskDefinitionImpl;
import org.jbpm.pvm.internal.task.TaskImpl;
import org.jbpm.session.TaskDbSession;
@@ -44,15 +46,13 @@
public void execute(ActivityExecution execution) {
TaskDbSession taskDbSession = Environment.getFromCurrent(TaskDbSession.class);
- TaskImpl task = TaskImpl.create();
+ TaskImpl task = (TaskImpl) taskDbSession.createTask();
task.setExecution(execution);
+ task.setName(execution.getActivityName());
- taskDefinition.initialize(task);
+ JpdlExecution jpdlExecution = (JpdlExecution) execution;
+ jpdlExecution.initializeTask(task, taskDefinition);
- if (task.getName()==null) {
- task.setName(execution.getActivityName());
- }
-
taskDbSession.saveTask(task);
execution.historyTaskStart(task);
@@ -77,7 +77,7 @@
}
}
- public TaskDefinitionImpl getTaskDefinition() {
+ public SwimlaneDefinitionImpl getTaskDefinition() {
return taskDefinition;
}
public void setTaskDefinition(TaskDefinitionImpl taskDefinition) {
Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskBinding.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskBinding.java 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskBinding.java 2009-03-21 17:50:09 UTC (rev 4305)
@@ -21,13 +21,14 @@
*/
package org.jbpm.jpdl.internal.activity;
+import org.jbpm.jpdl.internal.model.JpdlProcessDefinition;
+import org.jbpm.pvm.internal.task.SwimlaneDefinitionImpl;
import org.jbpm.pvm.internal.task.TaskDefinitionImpl;
import org.jbpm.pvm.internal.util.XmlUtil;
import org.jbpm.pvm.internal.xml.Parse;
import org.jbpm.pvm.internal.xml.Parser;
import org.w3c.dom.Element;
-
/**
* @author Tom Baeyens
*/
@@ -50,25 +51,48 @@
public static TaskDefinitionImpl parseTaskDefinition(Element element, Parse parse, Parser parser) {
TaskDefinitionImpl taskDefinition = new TaskDefinitionImpl();
+
+ taskDefinition.setName(XmlUtil.attribute(element, "name"));
+
+ String swimlaneName = XmlUtil.attribute(element, "swimlane");
+ if (swimlaneName!=null) {
+ JpdlProcessDefinition jpdlProcessDefinition = parse.findObject(JpdlProcessDefinition.class);
+ SwimlaneDefinitionImpl swimlaneDefinition = jpdlProcessDefinition.getSwimlaneDefinition(swimlaneName);
+ if (swimlaneDefinition!=null) {
+ taskDefinition.setSwimlaneDefinition(swimlaneDefinition);
+ } else {
+ parse.addProblem("swimlane "+swimlaneName+" not declared");
+ }
+ }
+
+ parseAssignmentAttributes(element, taskDefinition);
+ return taskDefinition;
+ }
+
+ public static void parseAssignmentAttributes(Element element, SwimlaneDefinitionImpl swimlaneDefinition) {
+ Element descriptionElement = XmlUtil.element(element, "description");
+ if (descriptionElement!=null) {
+ String description = XmlUtil.getContentText(descriptionElement);
+ swimlaneDefinition.setDescription(description);
+ }
+
String assigneeExpression = XmlUtil.attribute(element, "assignee");
- taskDefinition.setAssigneeExpression(assigneeExpression);
+ swimlaneDefinition.setAssigneeExpression(assigneeExpression);
String assigneeExpressionLanguage = XmlUtil.attribute(element, "assignee-lang");
- taskDefinition.setAssigneeExpressionLanguage(assigneeExpressionLanguage);
+ swimlaneDefinition.setAssigneeExpressionLanguage(assigneeExpressionLanguage);
String candidateUsersExpression = XmlUtil.attribute(element, "candidate-users");
- taskDefinition.setCandidateUsersExpression(candidateUsersExpression);
+ swimlaneDefinition.setCandidateUsersExpression(candidateUsersExpression);
String candidateUsersExpressionLanguage = XmlUtil.attribute(element, "candidate-users-lang");
- taskDefinition.setCandidateUsersExpressionLanguage(candidateUsersExpressionLanguage);
+ swimlaneDefinition.setCandidateUsersExpressionLanguage(candidateUsersExpressionLanguage);
String candidateGroupsExpression = XmlUtil.attribute(element, "candidate-groups");
- taskDefinition.setCandidateGroupsExpression(candidateGroupsExpression);
+ swimlaneDefinition.setCandidateGroupsExpression(candidateGroupsExpression);
String candidateGroupsExpressionLanguage = XmlUtil.attribute(element, "candidate-groups-lang");
- taskDefinition.setCandidateGroupsExpressionLanguage(candidateGroupsExpressionLanguage);
-
- return taskDefinition;
+ swimlaneDefinition.setCandidateGroupsExpressionLanguage(candidateGroupsExpressionLanguage);
}
}
Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/model/JpdlExecution.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/model/JpdlExecution.java 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/model/JpdlExecution.java 2009-03-21 17:50:09 UTC (rev 4305)
@@ -22,21 +22,25 @@
package org.jbpm.jpdl.internal.model;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Map;
-import java.util.Set;
+import java.util.StringTokenizer;
+import org.hibernate.Session;
import org.jbpm.JbpmException;
import org.jbpm.env.Environment;
+import org.jbpm.internal.log.Log;
import org.jbpm.pvm.internal.model.ExecutionImpl;
+import org.jbpm.pvm.internal.script.ScriptManager;
+import org.jbpm.pvm.internal.task.Assignable;
+import org.jbpm.pvm.internal.task.ParticipantImpl;
+import org.jbpm.pvm.internal.task.SwimlaneDefinitionImpl;
import org.jbpm.pvm.internal.task.SwimlaneImpl;
+import org.jbpm.pvm.internal.task.TaskDefinitionImpl;
import org.jbpm.pvm.internal.task.TaskImpl;
import org.jbpm.session.TaskDbSession;
-import org.jbpm.task.Swimlane;
-import org.jbpm.task.SwimlaneDefinition;
-import org.jbpm.task.Task;
-import org.jbpm.task.TaskDefinition;
-import org.jbpm.task.TaskExtension;
+import org.jbpm.task.GroupRef;
+import org.jbpm.task.Participant;
+import org.jbpm.task.UserRef;
/**
* @author Tom Baeyens
@@ -44,22 +48,11 @@
public class JpdlExecution extends ExecutionImpl implements TaskExtension {
private static final long serialVersionUID = 1L;
+
+ private static Log log = Log.getLog(JpdlExecution.class.getName());
- protected Set<TaskImpl> tasks = new HashSet<TaskImpl>();
protected Map<String, SwimlaneImpl> swimlanes = new HashMap<String, SwimlaneImpl>();
- public <T> T getExtension(Class<T> extensionClass) {
- if (extensionClass==null) {
- throw new JbpmException("extensionClass is null.");
- }
-
- if (extensionClass.equals(TaskExtension.class)) {
- return (T) this;
- }
-
- throw new JbpmException("unsuppported extension "+extensionClass);
- }
-
public void deleting() {
TaskDbSession taskDbSession = Environment.getFromCurrent(TaskDbSession.class);
if (taskDbSession!=null) {
@@ -67,28 +60,98 @@
}
}
- public Swimlane createSwimlane(SwimlaneDefinition swimlaneDefinition) {
- return null;
- }
+ public void initializeTask(TaskImpl task, TaskDefinitionImpl taskDefinition) {
+ if (taskDefinition.getName()!=null) {
+ task.setName(taskDefinition.getName());
+ }
+ task.setDescription(taskDefinition.getDescription());
+ task.setBlocking(taskDefinition.isBlocking());
+ task.setSignalling(taskDefinition.isSignalling());
+ task.setPriority(taskDefinition.getPriority());
+
+ SwimlaneDefinitionImpl swimlaneDefinition = taskDefinition.getSwimlaneDefinition();
+ if (swimlaneDefinition!=null) {
+ SwimlaneImpl swimlane = getInitializedSwimlane(swimlaneDefinition);
+ task.setSwimlane(swimlane);
+
+ // copy the swimlane assignments to the task
+ task.setAssignee(swimlane.getAssignee());
+ for (ParticipantImpl participant: swimlane.getParticipants()) {
+ task.addParticipant(participant.getIdentityRef(), participant.getParticipation());
+ }
+ }
- public Swimlane getSwimlane(String name) {
- return null;
+ initializeAssignments(taskDefinition, task);
}
- public SwimlaneDefinition getSwimlaneDefinition(String name) {
- return null;
- }
+ public SwimlaneImpl getInitializedSwimlane(SwimlaneDefinitionImpl swimlaneDefinition) {
+ Session session = Environment.getFromCurrent(Session.class);
+ JpdlExecution jpdlProcessInstance = (JpdlExecution) session.load(JpdlExecution.class, getProcessInstance().getDbid());
+
+ String swimlaneName = swimlaneDefinition.getName();
+ SwimlaneImpl swimlane = jpdlProcessInstance.getSwimlanes().get(swimlaneName);
+ if (swimlane==null) {
+ // initialize swimlane
+ swimlane = new SwimlaneImpl();
+ swimlane.setName(swimlaneName);
+ swimlane.setExecution(this);
+ jpdlProcessInstance.getSwimlanes().put(swimlaneName, swimlane);
+ initializeAssignments(swimlaneDefinition, swimlane);
+ }
- public TaskDefinition getTaskDefinition() {
- return null;
+ return swimlane;
}
- public TaskDefinition getTaskDefinition(String name) {
- return null;
+ public void initializeAssignments(SwimlaneDefinitionImpl assignmentDefinition, Assignable assignable) {
+ String assigneeExpression = assignmentDefinition.getAssigneeExpression();
+ if (assigneeExpression!=null) {
+ String assignee = resolveAssignmentExpression(assigneeExpression,
+ assignmentDefinition.getAssigneeExpressionLanguage());
+ assignable.setAssignee(assignee);
+
+ if (log.isTraceEnabled()) log.trace("task "+name+" assigned to "+assignee+" using expression "+assigneeExpression);
+ }
+
+ String candidateUsersExpression = assignmentDefinition.getCandidateUsersExpression();
+ if (candidateUsersExpression!=null) {
+ String candidateUsers =
+ resolveAssignmentExpression(candidateUsersExpression,
+ assignmentDefinition.getCandidateUsersExpressionLanguage());
+ StringTokenizer tokenizer = new StringTokenizer(candidateUsers, ",");
+ while (tokenizer.hasMoreTokens()) {
+ String candidateUser = tokenizer.nextToken();
+ assignable.addParticipant(new UserRef(candidateUser), Participant.CANDIDATE);
+ }
+ }
+
+ String candidateGroupsExpression = assignmentDefinition.getCandidateGroupsExpression();
+ if (candidateGroupsExpression!=null) {
+ String candidateGroups =
+ resolveAssignmentExpression(candidateGroupsExpression,
+ assignmentDefinition.getCandidateGroupsExpressionLanguage());
+ StringTokenizer tokenizer = new StringTokenizer(candidateGroups, ",");
+ while (tokenizer.hasMoreTokens()) {
+ String candidateGroup = tokenizer.nextToken();
+ assignable.addParticipant(new GroupRef(candidateGroup), Participant.CANDIDATE);
+ }
+ }
}
- public Task createTask(TaskDefinition taskDefinition) {
- TaskDbSession taskDbSession = Environment.getFromCurrent(TaskDbSession.class);
- return null;
+ protected String resolveAssignmentExpression(String expression, String expressionLanguage) {
+ ScriptManager scriptManager = Environment.getFromCurrent(ScriptManager.class);
+ Object result = scriptManager.evaluateExpression(expression, this, expressionLanguage);
+ if ( (result ==null)
+ || (result instanceof String)
+ ) {
+ return (String) result;
+ }
+ throw new JbpmException("result of assignment expression "+expression+" is "+result+" ("+result.getClass().getName()+") instead of String");
}
+
+ public Map<String, SwimlaneImpl> getSwimlanes() {
+ return swimlanes;
+ }
+ public void setSwimlanes(Map<String, SwimlaneImpl> swimlanes) {
+ this.swimlanes = swimlanes;
+ }
}
Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/model/JpdlProcessDefinition.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/model/JpdlProcessDefinition.java 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/model/JpdlProcessDefinition.java 2009-03-21 17:50:09 UTC (rev 4305)
@@ -21,9 +21,13 @@
*/
package org.jbpm.jpdl.internal.model;
-import org.jbpm.client.ClientProcessInstance;
+import java.util.HashMap;
+import java.util.Map;
+
import org.jbpm.pvm.internal.model.ExecutionImpl;
import org.jbpm.pvm.internal.model.ProcessDefinitionImpl;
+import org.jbpm.pvm.internal.task.SwimlaneDefinitionImpl;
+import org.jbpm.pvm.internal.task.TaskDefinitionImpl;
/**
* @author Tom Baeyens
@@ -31,8 +35,31 @@
public class JpdlProcessDefinition extends ProcessDefinitionImpl {
private static final long serialVersionUID = 1L;
+
+ Map<String, SwimlaneDefinitionImpl> swimlaneDefinitions = new HashMap<String, SwimlaneDefinitionImpl>();
+ Map<String, TaskDefinitionImpl> taskDefinitions = new HashMap<String, TaskDefinitionImpl>();
protected ExecutionImpl newProcessInstance() {
return new JpdlExecution();
}
+
+ public SwimlaneDefinitionImpl createSwimlaneDefinition(String name) {
+ SwimlaneDefinitionImpl swimlaneDefinition = new SwimlaneDefinitionImpl();
+ swimlaneDefinitions.put(name, swimlaneDefinition);
+ return swimlaneDefinition;
+ }
+
+ public SwimlaneDefinitionImpl getSwimlaneDefinition(String name) {
+ return swimlaneDefinitions.get(name);
+ }
+
+ public TaskDefinitionImpl createTaskDefinition(String name) {
+ TaskDefinitionImpl taskDefinition = new TaskDefinitionImpl();
+ taskDefinitions.put(name, taskDefinition);
+ return taskDefinition;
+ }
+
+ public Map<String, TaskDefinitionImpl> getTaskDefinitions() {
+ return taskDefinitions;
+ }
}
Copied: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/model/TaskExtension.java (from rev 4304, jbpm4/trunk/modules/api/src/main/java/org/jbpm/task/TaskExtension.java)
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/model/TaskExtension.java (rev 0)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/model/TaskExtension.java 2009-03-21 17:50:09 UTC (rev 4305)
@@ -0,0 +1,31 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.jpdl.internal.model;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public interface TaskExtension {
+
+
+}
Property changes on: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/model/TaskExtension.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:mergeinfo
+
Name: svn:eol-style
+ LF
Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java 2009-03-21 17:50:09 UTC (rev 4305)
@@ -25,24 +25,18 @@
import java.util.Enumeration;
import java.util.List;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.SAXParser;
-
import org.jbpm.activity.ActivityBehaviour;
import org.jbpm.internal.log.Log;
import org.jbpm.jpdl.internal.activity.JpdlActivityBinding;
+import org.jbpm.jpdl.internal.activity.TaskBinding;
import org.jbpm.jpdl.internal.model.JpdlProcessDefinition;
import org.jbpm.pvm.internal.model.ActivityImpl;
-import org.jbpm.pvm.internal.model.ProcessDefinitionImpl;
+import org.jbpm.pvm.internal.task.SwimlaneDefinitionImpl;
import org.jbpm.pvm.internal.util.ReflectUtil;
import org.jbpm.pvm.internal.util.XmlUtil;
-import org.jbpm.pvm.internal.xml.DomBuilder;
import org.jbpm.pvm.internal.xml.Parse;
import org.jbpm.pvm.internal.xml.Parser;
-import org.w3c.dom.Document;
import org.w3c.dom.Element;
-import org.xml.sax.InputSource;
-import org.xml.sax.XMLReader;
/**
* @author Tom Baeyens
@@ -90,13 +84,13 @@
}
public Object parseDocumentElement(Element documentElement, Parse parse) {
- ProcessDefinitionImpl processDefinition = (ProcessDefinitionImpl) parse.getDocumentObject();
+ JpdlProcessDefinition processDefinition = (JpdlProcessDefinition) parse.getDocumentObject();
if (processDefinition==null) {
processDefinition = new JpdlProcessDefinition();
+ parse.setDocumentObject(processDefinition);
}
- StartActivities startActivities = new StartActivities();
- parse.pushObject(startActivities);
+ parse.pushObject(processDefinition);
try {
// process attribues
String name = XmlUtil.attribute(documentElement, "name", true, parse);
@@ -125,8 +119,16 @@
parse.pushObject(unresolvedTransitions);
// swimlanes
+ List<Element> swimlaneElements = XmlUtil.elements(documentElement, "swimlane");
+ for (Element swimlaneElement: swimlaneElements) {
+ String swimlaneName = XmlUtil.attribute(swimlaneElement, "name", true, parse);
+ if (swimlaneName!=null) {
+ SwimlaneDefinitionImpl swimlaneDefinition =
+ processDefinition.createSwimlaneDefinition(swimlaneName);
+ TaskBinding.parseAssignmentAttributes(swimlaneElement, swimlaneDefinition);
+ }
+ }
-
// activities
List<Element> elements = XmlUtil.elements(documentElement);
for (Element element: elements) {
@@ -156,14 +158,8 @@
}
- if (startActivities.size()==0) {
+ if (processDefinition.getInitial()==null) {
parse.addProblem("no start activity in process");
- } else if (startActivities.size()>1) {
- parse.addProblem("multiple start events not yet supported");
- // TODO verify that all start events have conditions
- } else {
- ActivityImpl uniqueStartEvent = startActivities.get(0);
- processDefinition.setInitial(uniqueStartEvent);
}
return processDefinition;
Deleted: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/StartActivities.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/StartActivities.java 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/StartActivities.java 2009-03-21 17:50:09 UTC (rev 4305)
@@ -1,50 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jbpm.jpdl.internal.xml;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.jbpm.pvm.internal.model.ActivityImpl;
-
-
-/**
- * @author Tom Baeyens
- */
-public class StartActivities {
-
- List<ActivityImpl> startEvents = new ArrayList<ActivityImpl>();
-
-
- public void add(ActivityImpl startEventActivity) {
- startEvents.add(startEventActivity);
- }
-
- public int size() {
- return startEvents.size();
- }
-
- public ActivityImpl get(int i) {
- return startEvents.get(i);
- }
-
-}
Modified: jbpm4/trunk/modules/jpdl/src/test/resources/jbpm.definition.hbm.xml
===================================================================
--- jbpm4/trunk/modules/jpdl/src/test/resources/jbpm.definition.hbm.xml 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/jpdl/src/test/resources/jbpm.definition.hbm.xml 2009-03-21 17:50:09 UTC (rev 4305)
@@ -4,11 +4,15 @@
<hibernate-mapping package="org.jbpm.pvm.internal.model" default-access="field">
<!-- ### PROCESS DEFINITION ############################################# -->
- <class name="ProcessDefinitionImpl" table="JBPM_PROCESS">
+ <class name="ProcessDefinitionImpl"
+ table="JBPM_PROCESS"
+ discriminator-value="pvm">
<!-- ProcessElementImpl part ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<id name="dbid" column="DBID_">
<generator class="native" />
</id>
+ <discriminator><column name="CLASS_" /></discriminator>
+
<version name="dbversion" column="DBVERSION_" />
<many-to-one name="properties"
class="WireProperties"
Modified: jbpm4/trunk/modules/jpdl/src/test/resources/jbpm.execution.hbm.xml
===================================================================
--- jbpm4/trunk/modules/jpdl/src/test/resources/jbpm.execution.hbm.xml 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/jpdl/src/test/resources/jbpm.execution.hbm.xml 2009-03-21 17:50:09 UTC (rev 4305)
@@ -19,10 +19,13 @@
</typedef>
<!-- ### PROCESS DEFINITION ############################################# -->
- <class name="ExecutionImpl" table="JBPM_EXECUTION">
+ <class name="ExecutionImpl"
+ table="JBPM_EXECUTION"
+ discriminator-value="pvm">
<id name="dbid" column="DBID_">
<generator class="native" />
</id>
+ <discriminator><column name="CLASS_" /></discriminator>
<version name="dbversion" column="DBVERSION_" />
<many-to-one name="activity"
@@ -34,8 +37,7 @@
<property name="hasVariables" column="HASVARS_" />
<map name="variables"
- cascade="all-delete-orphan"
- table="JBPM_VARIABLE">
+ cascade="all-delete-orphan">
<key foreign-key="FK_VAR_EXECUTION">
<column name="EXECUTION_" index="IDX_VAR_EXECUTION"/>
</key>
@@ -203,7 +205,7 @@
<generator class="native" />
</id>
<version name="dbversion" column="DBVERSION_" />
- <property name="blob" type="blob" column="BLOB_VALUE_" />
+ <property name="blob" type="blob"><column name="BLOB_VALUE_" /></property>
<property name="bytes" type="binary" column="BINARY_VALUE_"/>
<property name="clob" type="clob" column="CLOB_VALUE_" />
<property name="text" type="text" column="TEXT_VALUE_"/>
Modified: jbpm4/trunk/modules/jpdl/src/test/resources/jbpm.jpdl.hbm.xml
===================================================================
--- jbpm4/trunk/modules/jpdl/src/test/resources/jbpm.jpdl.hbm.xml 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/jpdl/src/test/resources/jbpm.jpdl.hbm.xml 2009-03-21 17:50:09 UTC (rev 4305)
@@ -3,13 +3,39 @@
<hibernate-mapping default-access="field">
- <joined-subclass name="org.jbpm.jpdl.internal.model.JpdlProcessDefinition" table="JBPM_JPDL_PROCDEF" extends="org.jbpm.pvm.internal.model.ProcessDefinitionImpl">
- <key column="DBID_"/>
- </joined-subclass>
+ <subclass name="org.jbpm.jpdl.internal.model.JpdlProcessDefinition"
+ extends="org.jbpm.pvm.internal.model.ProcessDefinitionImpl"
+ discriminator-value="jpdl">
+ <map name="swimlaneDefinitions"
+ cascade="all-delete-orphan">
+ <key foreign-key="FK_SWLDEF_PROCESS">
+ <column name="PROCESS_SWL_" index="IDX_SWLDEF_PROCESS"/>
+ </key>
+ <map-key type="string" column="NAME_" />
+ <one-to-many class="org.jbpm.pvm.internal.task.SwimlaneDefinitionImpl" />
+ </map>
+ <map name="taskDefinitions"
+ cascade="all-delete-orphan">
+ <key foreign-key="FK_TSKDEF_PROCESS">
+ <column name="PROCESS_" index="IDX_TSKDEF_PROCESS"/>
+ </key>
+ <map-key type="string" column="NAME_" />
+ <one-to-many class="org.jbpm.pvm.internal.task.TaskDefinitionImpl" />
+ </map>
+ </subclass>
- <joined-subclass name="org.jbpm.jpdl.internal.model.JpdlExecution" table="JBPM_JPDL_EXECUTION" extends="org.jbpm.pvm.internal.model.ExecutionImpl">
- <key column="DBID_"/>
- </joined-subclass>
+ <subclass name="org.jbpm.jpdl.internal.model.JpdlExecution"
+ extends="org.jbpm.pvm.internal.model.ExecutionImpl"
+ discriminator-value="jpdl">
+ <map name="swimlanes"
+ cascade="all-delete-orphan">
+ <key foreign-key="FK_SWIMLANE_EXEC">
+ <column name="EXECUTION_" index="IDX_SWIMLANE_EXEC"/>
+ </key>
+ <map-key type="string" column="NAME_" />
+ <one-to-many class="org.jbpm.pvm.internal.task.SwimlaneImpl" />
+ </map>
+ </subclass>
<class name="org.jbpm.jpdl.internal.activity.JpdlActivity" table="JBPM_JPDL_ACTIVITY" abstract="true" discriminator-value="X">
<id name="dbid" column="DBID_">
Modified: jbpm4/trunk/modules/jpdl/src/test/resources/jbpm.task.hbm.xml
===================================================================
--- jbpm4/trunk/modules/jpdl/src/test/resources/jbpm.task.hbm.xml 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/jpdl/src/test/resources/jbpm.task.hbm.xml 2009-03-21 17:50:09 UTC (rev 4305)
@@ -4,21 +4,19 @@
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping auto-import="false" package="org.jbpm.pvm.internal.task" default-access="field">
- <!-- ### TASK DEFINITION ################################################ -->
- <class name="TaskDefinitionImpl" discriminator-value="T">
+ <!-- ### SWIMLANE DEFINITION ############################################ -->
+ <class name="SwimlaneDefinitionImpl"
+ table="JBPM_TASKDEF"
+ discriminator-value="S" >
<id name="dbid" column="DBID_">
<generator class="native" />
</id>
- <discriminator type="char" column="CLASS_"/>
- <version name="dbversion" column="DBVERSION_" />
+ <discriminator><column name="CLASS_" /></discriminator>
+ <version name="dbversion" column="DBVERSION_" />
<property name="name" column="NAME_"/>
<property name="description" column="DESCR_"/>
- <property name="priority" column="PRIORITY_"/>
- <property name="dueDateDuration" column="DUEDATE_"/>
- <property name="isBlocking" column="BLOCK_"/>
- <property name="isSignalling" column="SIGNAL_"/>
<property name="assigneeExpression" column="ASS_EXPR_"/>
<property name="assigneeExpressionLanguage" column="ASS_EXPR_LANG_"/>
<property name="candidateUsersExpression" column="CNDUSR_EXPR_"/>
@@ -30,25 +28,35 @@
column="ASSIGNER_DESCR_"
cascade="all"
class="org.jbpm.pvm.internal.wire.descriptor.AbstractDescriptor"
- foreign-key="FK_TSK_ASIG_DESCR"
- index="IDX_TSK_ASIG_DESCR" />
+ foreign-key="FK_SWL_ASIG_DESCR"
+ index="IDX_SWL_ASIG_DESCR" />
- <many-to-one name="swimlaneDefinition"
- column="SWIMLANE_DEF_"
- cascade="all"
- class="SwimlaneDefinitionImpl"
- foreign-key="FK_TSK_SWIML_DEF"
- index="IDX_TSK_SWIML_DEF" />
-
- <list name="subTaskDefinitions" cascade="all-delete-orphan">
- <key column="TASKDEF_" />
- <list-index column="TASKDEF_IDX_" />
- <one-to-many class="TaskDefinitionImpl" />
- </list>
- </class>
+ <!-- ### TASK DEFINITION ################################################ -->
+ <subclass name="TaskDefinitionImpl" discriminator-value="T">
+ <property name="priority" column="PRIORITY_"/>
+ <property name="dueDateDuration" column="DUEDATE_"/>
+ <property name="isBlocking" column="BLOCK_"/>
+ <property name="isSignalling" column="SIGNAL_"/>
+
+ <many-to-one name="swimlaneDefinition"
+ column="SWIMLANE_DEF_"
+ cascade="all"
+ class="SwimlaneDefinitionImpl"
+ foreign-key="FK_TSK_SWIML_DEF"
+ index="IDX_TSK_SWIML_DEF" />
+
+ <list name="subTaskDefinitions" cascade="all-delete-orphan">
+ <key column="TASKDEF_" />
+ <list-index column="TASKDEF_IDX_" />
+ <one-to-many class="TaskDefinitionImpl" />
+ </list>
+ </subclass>
+ </class>
+
<!-- ### TASK ########################################################### -->
<class name="TaskImpl"
+ table="JBPM_TASK"
discriminator-value="T">
<id name="dbid" column="DBID_">
<generator class="native" />
@@ -109,7 +117,7 @@
</class>
<!-- ### PARTICIPANT #################################################### -->
- <class name="ParticipantImpl">
+ <class name="ParticipantImpl" table="JBPM_PARTICIPANT">
<id name="dbid" column="DBID_">
<generator class="native" />
</id>
@@ -132,19 +140,8 @@
</class>
- <!-- ### SWIMLANE DEFINITION ############################################ -->
- <class name="SwimlaneDefinitionImpl">
- <id name="dbid" column="DBID_">
- <generator class="native" />
- </id>
- <version name="dbversion" column="DBVERSION_" />
-
- <property name="name" column="NAME_"/>
- </class>
-
-
<!-- ### SWIMLANE ####################################################### -->
- <class name="SwimlaneImpl">
+ <class name="SwimlaneImpl" table="JBPM_SWIMLANE">
<id name="dbid" column="DBID_">
<generator class="native" />
</id>
@@ -161,7 +158,7 @@
<many-to-one name="execution"
class="org.jbpm.pvm.internal.model.ExecutionImpl"
column="EXECUTION_"
- foreign-key="FK_SWIMLANE_EXEC" />
+ foreign-key="none" />
<set name="participants" cascade="all-delete-orphan">
<key column="SWIMLANE_" />
@@ -169,8 +166,8 @@
</set>
</class>
+
-
<!-- ### QUERIES ######################################################## -->
<query name="findTasks">
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/DeleteTaskCmd.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/DeleteTaskCmd.java 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/DeleteTaskCmd.java 2009-03-21 17:50:09 UTC (rev 4305)
@@ -24,6 +24,7 @@
import org.jbpm.JbpmException;
import org.jbpm.cmd.Command;
import org.jbpm.env.Environment;
+import org.jbpm.pvm.internal.task.Assignable;
import org.jbpm.pvm.internal.task.TaskImpl;
import org.jbpm.session.DbSession;
@@ -42,7 +43,7 @@
public Void execute(Environment environment) throws Exception {
DbSession dbSession = environment.get(DbSession.class);
- TaskImpl task = (TaskImpl) dbSession.get(TaskImpl.class, taskDbid);
+ Assignable task = (Assignable) dbSession.get(TaskImpl.class, taskDbid);
if (task!=null) {
dbSession.delete(task);
} else {
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/NewTaskCmd.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/NewTaskCmd.java 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/NewTaskCmd.java 2009-03-21 17:50:09 UTC (rev 4305)
@@ -21,9 +21,9 @@
*/
package org.jbpm.pvm.internal.cmd;
-import org.jbpm.cmd.Command;
import org.jbpm.env.Environment;
import org.jbpm.pvm.internal.task.TaskImpl;
+import org.jbpm.session.TaskDbSession;
import org.jbpm.task.Task;
/**
@@ -40,7 +40,8 @@
}
public Task execute(Environment environment) throws Exception {
- TaskImpl task = TaskImpl.create();
+ TaskDbSession taskDbSession = environment.get(TaskDbSession.class);
+ TaskImpl task = (TaskImpl) taskDbSession.createTask();
task.setParentTaskDbid(parentTaskDbid);
return task;
}
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/deploy/CheckProcessDeployer.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/deploy/CheckProcessDeployer.java 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/deploy/CheckProcessDeployer.java 2009-03-21 17:50:09 UTC (rev 4305)
@@ -22,7 +22,6 @@
package org.jbpm.pvm.internal.deploy;
import java.io.Serializable;
-import java.util.List;
import org.jbpm.ProcessDefinition;
import org.jbpm.client.ClientProcessDefinition;
@@ -69,7 +68,7 @@
// A problem was already added by the JpdlParser
return;
}
-
+
checkKey((ProcessDefinitionImpl)processDefinition, deployment, pvmDbSession);
checkVersion((ProcessDefinitionImpl)processDefinition, deployment, pvmDbSession);
checkId((ProcessDefinitionImpl)processDefinition, deployment, pvmDbSession);
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/deploy/DeployerManager.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/deploy/DeployerManager.java 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/deploy/DeployerManager.java 2009-03-21 17:50:09 UTC (rev 4305)
@@ -57,7 +57,7 @@
}
for (Deployer deployer: deployers) {
- log.debug("applying deployer "+deployer+" to "+deployment);
+ if (log.isTraceEnabled()) log.trace("applying deployer "+deployer+" to "+deployment);
deployer.deploy(deployment);
}
}
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/hibernate/HibernateTaskDbSession.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/hibernate/HibernateTaskDbSession.java 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/hibernate/HibernateTaskDbSession.java 2009-03-21 17:50:09 UTC (rev 4305)
@@ -26,8 +26,10 @@
import org.hibernate.Query;
import org.jbpm.Execution;
import org.jbpm.internal.log.Log;
+import org.jbpm.pvm.internal.task.LifeCycle;
import org.jbpm.pvm.internal.task.SwimlaneImpl;
import org.jbpm.pvm.internal.task.TaskImpl;
+import org.jbpm.pvm.internal.util.Clock;
import org.jbpm.session.TaskDbSession;
import org.jbpm.task.Task;
@@ -62,10 +64,18 @@
}
}
- public Task newTask() {
- return TaskImpl.create();
+ public Task createTask() {
+ TaskImpl task = newTask();
+ task.setCreate(Clock.getCurrentTime());
+ task.setState(LifeCycle.initialise(task));
+ return task;
}
+ /** override to customize task type */
+ protected TaskImpl newTask() {
+ return new TaskImpl();
+ }
+
public void deletingExecution(Execution execution) {
deleteTasks(execution);
deleteSwimlanes(execution);
Added: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/Assignable.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/Assignable.java (rev 0)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/Assignable.java 2009-03-21 17:50:09 UTC (rev 4305)
@@ -0,0 +1,34 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.pvm.internal.task;
+
+import org.jbpm.task.IdentityRef;
+import org.jbpm.task.Participant;
+
+/**
+ * @author Tom Baeyens
+ */
+public interface Assignable {
+
+ void setAssignee(String assigned);
+ Participant addParticipant(IdentityRef identityRef, String participation);
+}
\ No newline at end of file
Property changes on: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/Assignable.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/ParticipantImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/ParticipantImpl.java 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/ParticipantImpl.java 2009-03-21 17:50:09 UTC (rev 4305)
@@ -43,7 +43,7 @@
protected String userId;
protected String groupId;
protected String participation;
- protected TaskImpl task;
+ protected Assignable task;
protected SwimlaneImpl swimlane;
public ParticipantImpl() {
@@ -75,10 +75,10 @@
}
}
- public TaskImpl getTask() {
+ public Assignable getTask() {
return task;
}
- public void setTask(TaskImpl task) {
+ public void setTask(Assignable task) {
this.task = task;
}
public long getDbid() {
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/SwimlaneDefinitionImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/SwimlaneDefinitionImpl.java 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/SwimlaneDefinitionImpl.java 2009-03-21 17:50:09 UTC (rev 4305)
@@ -22,35 +22,37 @@
package org.jbpm.pvm.internal.task;
import java.io.Serializable;
+import java.util.StringTokenizer;
+import org.jbpm.JbpmException;
+import org.jbpm.env.Environment;
+import org.jbpm.pvm.internal.model.ExecutionImpl;
+import org.jbpm.pvm.internal.model.ProcessElementImpl;
+import org.jbpm.pvm.internal.script.ScriptManager;
import org.jbpm.pvm.internal.util.EqualsUtil;
+import org.jbpm.pvm.internal.wire.Descriptor;
+import org.jbpm.task.GroupRef;
+import org.jbpm.task.Participant;
+import org.jbpm.task.UserRef;
/**
* is a process role (aka participant).
*/
-public class SwimlaneDefinitionImpl implements Serializable {
+public class SwimlaneDefinitionImpl extends ProcessElementImpl implements Serializable {
private static final long serialVersionUID = 1L;
- protected long dbid;
- protected int dbversion;
- protected String name = null;
+ protected String name;
+ protected String description;
- /**
- * expression that resolves to 1 single actorId.
- */
- protected String actorIdExpression = null;
+ protected String assigneeExpression;
+ protected String assigneeExpressionLanguage;
+ protected String candidateUsersExpression;
+ protected String candidateUsersExpressionLanguage;
+ protected String candidateGroupsExpression;
+ protected String candidateGroupsExpressionLanguage;
+ protected Descriptor assignerDescriptor;
- /**
- * expression that resolves to a comma separated list of actorIds.
- */
- protected String candidatesExpression = null;
-
- /**
- * expression that resolves to an AssignmentHandler implementation.
- */
- protected String assignmentExpression = null;
-
// equals ///////////////////////////////////////////////////////////////////
// hack to support comparing hibernate proxies against the real objects
// since this always falls back to ==, we don't need to overwrite the hashcode
@@ -58,41 +60,60 @@
return EqualsUtil.equals(this, o);
}
- public void setActorIdExpression(String actorIdExpression) {
- // Note: combination of actorIdExpression and candidatesExpression is allowed
- this.actorIdExpression = actorIdExpression;
- this.assignmentExpression = null;
- }
- public void setCandidatesExpression(String pooledActorsExpression) {
- // Note: combination of actorIdExpression and pooledActorsExpression is allowed
- this.candidatesExpression = pooledActorsExpression;
- this.assignmentExpression = null;
- }
- public void setAssignmentExpression(String assignmentExpression) {
- // assignment expressions and assignmentDelegation are mutually exclusive
- this.actorIdExpression = null;
- this.candidatesExpression = null;
- this.assignmentExpression = assignmentExpression;
- }
-
// getters and setters //////////////////////////////////////////////////////
- public long getDbid() {
- return dbid;
+ public String getAssigneeExpression() {
+ return assigneeExpression;
}
+ public String getName() {
+ return name;
+ }
public void setName(String name) {
this.name = name;
}
- public String getName() {
- return name;
+ public String getDescription() {
+ return description;
}
- public String getActorIdExpression() {
- return actorIdExpression;
+ public void setDescription(String description) {
+ this.description = description;
}
- public String getCandidatesExpression() {
- return candidatesExpression;
+ public void setAssigneeExpression(String assigneeExpression) {
+ this.assigneeExpression = assigneeExpression;
}
- public String getAssignmentExpression() {
- return assignmentExpression;
+ public Descriptor getAssignerDescriptor() {
+ return assignerDescriptor;
}
+ public void setAssignerDescriptor(Descriptor assignerDescriptor) {
+ this.assignerDescriptor = assignerDescriptor;
+ }
+ public String getAssigneeExpressionLanguage() {
+ return assigneeExpressionLanguage;
+ }
+ public void setAssigneeExpressionLanguage(String assigneeExpressionLanguage) {
+ this.assigneeExpressionLanguage = assigneeExpressionLanguage;
+ }
+ public String getCandidateUsersExpression() {
+ return candidateUsersExpression;
+ }
+ public void setCandidateUsersExpression(String candidateUsersExpression) {
+ this.candidateUsersExpression = candidateUsersExpression;
+ }
+ public String getCandidateUsersExpressionLanguage() {
+ return candidateUsersExpressionLanguage;
+ }
+ public void setCandidateUsersExpressionLanguage(String candidateUsersExpressionLanguage) {
+ this.candidateUsersExpressionLanguage = candidateUsersExpressionLanguage;
+ }
+ public String getCandidateGroupsExpression() {
+ return candidateGroupsExpression;
+ }
+ public void setCandidateGroupsExpression(String candidateGroupsExpression) {
+ this.candidateGroupsExpression = candidateGroupsExpression;
+ }
+ public String getCandidateGroupsExpressionLanguage() {
+ return candidateGroupsExpressionLanguage;
+ }
+ public void setCandidateGroupsExpressionLanguage(String candidateGroupsExpressionLanguage) {
+ this.candidateGroupsExpressionLanguage = candidateGroupsExpressionLanguage;
+ }
}
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/SwimlaneImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/SwimlaneImpl.java 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/SwimlaneImpl.java 2009-03-21 17:50:09 UTC (rev 4305)
@@ -36,7 +36,7 @@
/**
* runtime process role for a specific process instance.
*/
-public class SwimlaneImpl implements Serializable, Swimlane {
+public class SwimlaneImpl implements Serializable, Swimlane, Assignable {
private static final long serialVersionUID = 1L;
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskDefinitionImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskDefinitionImpl.java 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskDefinitionImpl.java 2009-03-21 17:50:09 UTC (rev 4305)
@@ -22,32 +22,17 @@
package org.jbpm.pvm.internal.task;
import java.io.Serializable;
-import java.util.Date;
import java.util.List;
-import java.util.StringTokenizer;
-import org.jbpm.JbpmException;
-import org.jbpm.env.Environment;
-import org.jbpm.pvm.internal.cal.Duration;
-import org.jbpm.pvm.internal.model.ExecutionImpl;
-import org.jbpm.pvm.internal.model.ProcessElementImpl;
-import org.jbpm.pvm.internal.script.ScriptManager;
import org.jbpm.pvm.internal.util.Priority;
-import org.jbpm.pvm.internal.wire.Descriptor;
-import org.jbpm.task.GroupRef;
-import org.jbpm.task.Participant;
-import org.jbpm.task.UserRef;
/**
* defines a task and how the actor(s) must be calculated at runtime.
*/
-public class TaskDefinitionImpl extends ProcessElementImpl implements Serializable {
+public class TaskDefinitionImpl extends SwimlaneDefinitionImpl implements Serializable {
private static final long serialVersionUID = 1L;
- protected String name;
- protected String description;
-
/** @see #isBlocking() */
protected boolean isBlocking;
@@ -59,102 +44,7 @@
protected List<TaskDefinitionImpl> subTaskDefinitions;
protected int priority = Priority.NORMAL;
protected SwimlaneDefinitionImpl swimlaneDefinition;
- protected String assigneeExpression;
- protected String assigneeExpressionLanguage;
- protected String candidateUsersExpression;
- protected String candidateUsersExpressionLanguage;
- protected String candidateGroupsExpression;
- protected String candidateGroupsExpressionLanguage;
- protected Descriptor assignerDescriptor;
- public void initialize(TaskImpl task) {
- task.setName(name);
- task.setDescription(description);
- task.setBlocking(isBlocking);
- task.setSignalling(isSignalling);
- task.setPriority(priority);
-
- // TODO duedate calculation
-
- if (assigneeExpression!=null) {
- String assignee = resolveAssignmentExpression(assigneeExpression, assigneeExpressionLanguage, task.getExecution());
- task.setAssignee(assignee);
- }
-
- if (candidateUsersExpression!=null) {
- String candidateUsers = resolveAssignmentExpression(candidateUsersExpression, candidateUsersExpressionLanguage, task.getExecution());
- StringTokenizer tokenizer = new StringTokenizer(candidateUsers, ",");
- while (tokenizer.hasMoreTokens()) {
- String candidateUser = tokenizer.nextToken();
- task.addParticipant(new UserRef(candidateUser), Participant.CANDIDATE);
- }
- }
-
- if (candidateGroupsExpression!=null) {
- String candidateGroups = resolveAssignmentExpression(candidateGroupsExpression, candidateGroupsExpressionLanguage, task.getExecution());
- StringTokenizer tokenizer = new StringTokenizer(candidateGroups, ",");
- while (tokenizer.hasMoreTokens()) {
- String candidateGroup = tokenizer.nextToken();
- task.addParticipant(new GroupRef(candidateGroup), Participant.CANDIDATE);
- }
- }
- }
-
- protected String resolveAssignmentExpression(String expression, String expressionLanguage, ExecutionImpl execution) {
- ScriptManager scriptManager = Environment.getFromCurrent(ScriptManager.class);
- Object result = scriptManager.evaluateExpression(expression, execution, expressionLanguage);
- if ( (result ==null)
- || (result instanceof String)
- ) {
- return (String) result;
- }
- throw new JbpmException("result of assignment expression is "+result.getClass().getName()+" instead of String");
- }
-
- // getters and setters //////////////////////////////////////////////////////
-
- public String getAssigneeExpression() {
- return assigneeExpression;
- }
- public void setAssigneeExpression(String assigneeExpression) {
- this.assigneeExpression = assigneeExpression;
- }
- public Descriptor getAssignerDescriptor() {
- return assignerDescriptor;
- }
- public void setAssignerDescriptor(Descriptor assignerDescriptor) {
- this.assignerDescriptor = assignerDescriptor;
- }
- public String getAssigneeExpressionLanguage() {
- return assigneeExpressionLanguage;
- }
- public void setAssigneeExpressionLanguage(String assigneeExpressionLanguage) {
- this.assigneeExpressionLanguage = assigneeExpressionLanguage;
- }
- public String getCandidateUsersExpression() {
- return candidateUsersExpression;
- }
- public void setCandidateUsersExpression(String candidateUsersExpression) {
- this.candidateUsersExpression = candidateUsersExpression;
- }
- public String getCandidateUsersExpressionLanguage() {
- return candidateUsersExpressionLanguage;
- }
- public void setCandidateUsersExpressionLanguage(String candidateUsersExpressionLanguage) {
- this.candidateUsersExpressionLanguage = candidateUsersExpressionLanguage;
- }
- public String getCandidateGroupsExpression() {
- return candidateGroupsExpression;
- }
- public void setCandidateGroupsExpression(String candidateGroupsExpression) {
- this.candidateGroupsExpression = candidateGroupsExpression;
- }
- public String getCandidateGroupsExpressionLanguage() {
- return candidateGroupsExpressionLanguage;
- }
- public void setCandidateGroupsExpressionLanguage(String candidateGroupsExpressionLanguage) {
- this.candidateGroupsExpressionLanguage = candidateGroupsExpressionLanguage;
- }
public boolean isBlocking() {
return isBlocking;
}
@@ -185,18 +75,6 @@
public void setSwimlaneDefinition(SwimlaneDefinitionImpl swimlaneDefinition) {
this.swimlaneDefinition = swimlaneDefinition;
}
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getDescription() {
- return description;
- }
- public void setDescription(String description) {
- this.description = description;
- }
public String getDueDateDuration() {
return dueDateDuration;
}
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskImpl.java 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskImpl.java 2009-03-21 17:50:09 UTC (rev 4305)
@@ -28,33 +28,40 @@
import java.util.HashSet;
import java.util.List;
import java.util.Set;
+import java.util.StringTokenizer;
import org.jbpm.Execution;
import org.jbpm.JbpmException;
+import org.jbpm.activity.ActivityExecution;
import org.jbpm.env.Environment;
+import org.jbpm.internal.log.Log;
import org.jbpm.model.Comment;
import org.jbpm.pvm.internal.env.Authentication;
import org.jbpm.pvm.internal.model.CommentImpl;
import org.jbpm.pvm.internal.model.ExecutionImpl;
import org.jbpm.pvm.internal.model.ScopeInstanceImpl;
+import org.jbpm.pvm.internal.script.ScriptManager;
import org.jbpm.pvm.internal.util.Clock;
import org.jbpm.pvm.internal.util.EqualsUtil;
import org.jbpm.pvm.internal.util.Priority;
+import org.jbpm.task.GroupRef;
import org.jbpm.task.IdentityRef;
import org.jbpm.task.Participant;
import org.jbpm.task.Swimlane;
import org.jbpm.task.Task;
+import org.jbpm.task.UserRef;
/**
* is one task instance that can be assigned to an actor (read: put in
* someones task list) and that can trigger the continuation of execution
* of the token upon completion.
*/
-public class TaskImpl extends ScopeInstanceImpl implements Serializable, Task {
+public class TaskImpl extends ScopeInstanceImpl implements Serializable, Task, Assignable {
private static final long serialVersionUID = 1L;
- // private static final Logger log = Logger.getLogger(TaskImpl.class.getName());
+ private static Log log = Log.getLog(TaskImpl.class.getName());
+
protected String id;
protected String name;
protected String description;
@@ -79,47 +86,47 @@
protected SwimlaneImpl swimlane;
- protected TaskImpl superTask;
+ protected Assignable superTask;
protected Set<TaskImpl> subTasks;
protected Long executionDbid;
protected Long parentTaskDbid;
- protected TaskImpl() {
+ public TaskImpl() {
}
- // creating a task
+ // parent for variable lookup ///////////////////////////////////////////////
- public static TaskImpl create() {
- TaskImpl task = new TaskImpl();
-
- /*
- // if a task class name is configured
- Environment environment = Environment.getCurrent();
- String taskClassName = environment!=null ? (String) environment.get(TaskImpl.CONTEXTKEY_TASK_CLASS_NAME, TaskImpl.SEARCHORDER_TASK_CLASS_NAME) : null;
- if (taskClassName!=null) {
- // dynamically instantiate it
- ClassLoader classLoader = environment.getClassLoader();
- Class<?> taskClass = ReflectUtil.loadClass(classLoader, taskClassName);
- task = (TaskImpl) ReflectUtil.newInstance(taskClass);
+ public ScopeInstanceImpl getParentVariableScope() {
+ return execution;
+ }
+
+ // assignment ///////////////////////////////////////////////////////////////
+
+ public void take() {
+ if (assignee!=null) {
+ throw new JbpmException("task "+dbid+" is already taken by "+assignee);
}
- // otherwise just use the default task implementation type
- else {
- task = new TaskImpl();
+ Authentication authentication = Environment.getFromCurrent(Authentication.class);
+ assignee = authentication.getUserId();
+ if (assignee==null) {
+ throw new JbpmException("no currently authenticated user");
}
- */
+ log.trace("user "+assignee+" takes "+this);
+
+ propagateAssigneeToSwimlane();
+ }
- task.setCreate(Clock.getCurrentTime());
+ public void setAssignee(String assigned) {
+ this.assignee = assigned;
+ propagateAssigneeToSwimlane();
+ }
- // initialise the task state
- task.state = LifeCycle.initialise(task);
-
- return task;
+ protected void propagateAssigneeToSwimlane() {
+ if (swimlane!=null) {
+ swimlane.setAssignee(assignee);
+ }
}
-
- public ScopeInstanceImpl getParentVariableScope() {
- return execution;
- }
// participants /////////////////////////////////////////////////////////////
@@ -150,7 +157,10 @@
if (participation==null) {
throw new JbpmException("participation is null");
}
- ParticipantImpl participant = new ParticipantImpl(identityRef, participation);
+ return addParticipant(new ParticipantImpl(identityRef, participation));
+ }
+
+ public Participant addParticipant(ParticipantImpl participant) {
participant.setTask(this);
if (participants==null) {
participants = new HashSet<ParticipantImpl>();
@@ -189,17 +199,6 @@
return null;
}
- public void take() {
- if (assignee!=null) {
- throw new JbpmException("task "+dbid+" is already taken by "+assignee);
- }
- Authentication authentication = Environment.getFromCurrent(Authentication.class);
- assignee = authentication.getUserId();
- if (assignee==null) {
- throw new JbpmException("no currently authenticated user");
- }
- }
-
// comments /////////////////////////////////////////////////////////////////
public List<Comment> getComments() {
@@ -364,19 +363,16 @@
public String getAssignee() {
return assignee;
}
- public void setAssignee(String assigned) {
- this.assignee = assigned;
- }
public Swimlane getSwimlane() {
return swimlane;
}
public void setSwimlane(SwimlaneImpl swimlane) {
this.swimlane = swimlane;
}
- public TaskImpl getSuperTask() {
+ public Assignable getSuperTask() {
return superTask;
}
- public void setSuperTask(TaskImpl superTask) {
+ public void setSuperTask(Assignable superTask) {
this.superTask = superTask;
}
public Integer getProgress() {
@@ -394,4 +390,16 @@
public void setParentTaskDbid(Long parentTaskDbid) {
this.parentTaskDbid = parentTaskDbid;
}
+ public void setParticipants(Set<ParticipantImpl> participants) {
+ this.participants = participants;
+ }
+ public void setState(String state) {
+ this.state = state;
+ }
+ public void setExecution(ExecutionImpl execution) {
+ this.execution = execution;
+ }
+ public void setSubTasks(Set<TaskImpl> subTasks) {
+ this.subTasks = subTasks;
+ }
}
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/tx/StandardTransaction.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/tx/StandardTransaction.java 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/tx/StandardTransaction.java 2009-03-21 17:50:09 UTC (rev 4305)
@@ -56,7 +56,7 @@
// methods for interceptor //////////////////////////////////////////////////
public void begin() {
- log.debug("beginning "+this);
+ if (log.isTraceEnabled()) log.trace("beginning "+this);
state = State.ACTIVE;
}
@@ -102,7 +102,7 @@
// prepare //////////////////////////////////////////////////////////////
// the prepare loop will be skipped at the first exception
for (StandardResource standardResource: resources) {
- log.trace("preparing resource "+standardResource);
+ if (log.isTraceEnabled()) log.trace("preparing resource "+standardResource);
standardResource.prepare();
}
}
@@ -110,7 +110,7 @@
// for any exception in the prepare phase, we'll rollback
} catch (Exception exception) {
try {
- log.debug("resource threw exception in prepare. rolling back.");
+ if (log.isTraceEnabled()) log.trace("resource threw exception in prepare. rolling back.");
rollbackResources();
} catch (Exception rollbackException) {
log.error("rollback failed as well", rollbackException);
@@ -134,7 +134,7 @@
// all the resources are commited
for (StandardResource standardResource: resources) {
try {
- log.trace("committing resource "+standardResource);
+ if (log.isTraceEnabled()) log.trace("committing resource "+standardResource);
standardResource.commit();
// Exceptions in the commit phase will not lead to rollback, since some resources
@@ -151,7 +151,7 @@
state = State.COMMITTED;
afterCompletion();
- log.debug("committed "+this);
+ if (log.isTraceEnabled()) log.trace("committed "+this);
if (commitException!=null) {
if (commitException instanceof RuntimeException) {
@@ -172,7 +172,7 @@
throw new TransactionException("rollback on transaction in state "+state);
}
- log.trace("rolling back "+this);
+ if (log.isTraceEnabled()) log.trace("rolling back "+this);
beforeCompletion();
rollbackResources();
@@ -183,7 +183,7 @@
if (resources!=null) {
for (StandardResource resource: resources) {
try {
- log.trace("rolling back resource "+resource);
+ if (log.isTraceEnabled()) log.trace("rolling back resource "+resource);
resource.rollback();
} catch (Exception e) {
log.error("rollback failed for resource "+resource);
@@ -195,7 +195,7 @@
afterCompletion();
- log.debug("rolled back");
+ if (log.isTraceEnabled()) log.trace("rolled back");
}
// synchronizations /////////////////////////////////////////////////////////
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/HibernateSessionDescriptor.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/HibernateSessionDescriptor.java 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/HibernateSessionDescriptor.java 2009-03-21 17:50:09 UTC (rev 4305)
@@ -69,16 +69,16 @@
// open the hibernate-session
Session session = null;
if (useCurrent) {
- log.debug("getting current hibernate session");
+ if (log.isTraceEnabled()) log.trace("getting current hibernate session");
session = sessionFactory.getCurrentSession();
} else if (connectionName!=null) {
Connection connection = (Connection) wireContext.get(connectionName);
- log.debug("creating hibernate session with connection "+connection);
+ if (log.isTraceEnabled()) log.trace("creating hibernate session with connection "+connection);
session = sessionFactory.openSession(connection);
} else {
- log.debug("creating hibernate session");
+ if (log.isTraceEnabled()) log.trace("creating hibernate session");
session = sessionFactory.openSession();
}
Modified: jbpm4/trunk/modules/pvm/src/test/resources/jbpm.definition.hbm.xml
===================================================================
--- jbpm4/trunk/modules/pvm/src/test/resources/jbpm.definition.hbm.xml 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/pvm/src/test/resources/jbpm.definition.hbm.xml 2009-03-21 17:50:09 UTC (rev 4305)
@@ -4,11 +4,15 @@
<hibernate-mapping package="org.jbpm.pvm.internal.model" default-access="field">
<!-- ### PROCESS DEFINITION ############################################# -->
- <class name="ProcessDefinitionImpl" table="JBPM_PROCESS">
+ <class name="ProcessDefinitionImpl"
+ table="JBPM_PROCESS"
+ discriminator-value="pvm">
<!-- ProcessElementImpl part ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<id name="dbid" column="DBID_">
<generator class="native" />
</id>
+ <discriminator><column name="CLASS_" /></discriminator>
+
<version name="dbversion" column="DBVERSION_" />
<many-to-one name="properties"
class="WireProperties"
Modified: jbpm4/trunk/modules/pvm/src/test/resources/jbpm.execution.hbm.xml
===================================================================
--- jbpm4/trunk/modules/pvm/src/test/resources/jbpm.execution.hbm.xml 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/pvm/src/test/resources/jbpm.execution.hbm.xml 2009-03-21 17:50:09 UTC (rev 4305)
@@ -19,10 +19,13 @@
</typedef>
<!-- ### PROCESS DEFINITION ############################################# -->
- <class name="ExecutionImpl" table="JBPM_EXECUTION">
+ <class name="ExecutionImpl"
+ table="JBPM_EXECUTION"
+ discriminator-value="pvm">
<id name="dbid" column="DBID_">
<generator class="native" />
</id>
+ <discriminator><column name="CLASS_" /></discriminator>
<version name="dbversion" column="DBVERSION_" />
<many-to-one name="activity"
@@ -34,8 +37,7 @@
<property name="hasVariables" column="HASVARS_" />
<map name="variables"
- cascade="all-delete-orphan"
- table="JBPM_VARIABLE">
+ cascade="all-delete-orphan">
<key foreign-key="FK_VAR_EXECUTION">
<column name="EXECUTION_" index="IDX_VAR_EXECUTION"/>
</key>
@@ -203,7 +205,7 @@
<generator class="native" />
</id>
<version name="dbversion" column="DBVERSION_" />
- <property name="blob" type="blob" column="BLOB_VALUE_" />
+ <property name="blob" type="blob"><column name="BLOB_VALUE_" /></property>
<property name="bytes" type="binary" column="BINARY_VALUE_"/>
<property name="clob" type="clob" column="CLOB_VALUE_" />
<property name="text" type="text" column="TEXT_VALUE_"/>
Modified: jbpm4/trunk/modules/pvm/src/test/resources/jbpm.task.hbm.xml
===================================================================
--- jbpm4/trunk/modules/pvm/src/test/resources/jbpm.task.hbm.xml 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/pvm/src/test/resources/jbpm.task.hbm.xml 2009-03-21 17:50:09 UTC (rev 4305)
@@ -4,21 +4,19 @@
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping auto-import="false" package="org.jbpm.pvm.internal.task" default-access="field">
- <!-- ### TASK DEFINITION ################################################ -->
- <class name="TaskDefinitionImpl" discriminator-value="T">
+ <!-- ### SWIMLANE DEFINITION ############################################ -->
+ <class name="SwimlaneDefinitionImpl"
+ table="JBPM_TASKDEF"
+ discriminator-value="S" >
<id name="dbid" column="DBID_">
<generator class="native" />
</id>
- <discriminator type="char" column="CLASS_"/>
- <version name="dbversion" column="DBVERSION_" />
+ <discriminator><column name="CLASS_" /></discriminator>
+ <version name="dbversion" column="DBVERSION_" />
<property name="name" column="NAME_"/>
<property name="description" column="DESCR_"/>
- <property name="priority" column="PRIORITY_"/>
- <property name="dueDateDuration" column="DUEDATE_"/>
- <property name="isBlocking" column="BLOCK_"/>
- <property name="isSignalling" column="SIGNAL_"/>
<property name="assigneeExpression" column="ASS_EXPR_"/>
<property name="assigneeExpressionLanguage" column="ASS_EXPR_LANG_"/>
<property name="candidateUsersExpression" column="CNDUSR_EXPR_"/>
@@ -30,25 +28,35 @@
column="ASSIGNER_DESCR_"
cascade="all"
class="org.jbpm.pvm.internal.wire.descriptor.AbstractDescriptor"
- foreign-key="FK_TSK_ASIG_DESCR"
- index="IDX_TSK_ASIG_DESCR" />
+ foreign-key="FK_SWL_ASIG_DESCR"
+ index="IDX_SWL_ASIG_DESCR" />
- <many-to-one name="swimlaneDefinition"
- column="SWIMLANE_DEF_"
- cascade="all"
- class="SwimlaneDefinitionImpl"
- foreign-key="FK_TSK_SWIML_DEF"
- index="IDX_TSK_SWIML_DEF" />
-
- <list name="subTaskDefinitions" cascade="all-delete-orphan">
- <key column="TASKDEF_" />
- <list-index column="TASKDEF_IDX_" />
- <one-to-many class="TaskDefinitionImpl" />
- </list>
- </class>
+ <!-- ### TASK DEFINITION ################################################ -->
+ <subclass name="TaskDefinitionImpl" discriminator-value="T">
+ <property name="priority" column="PRIORITY_"/>
+ <property name="dueDateDuration" column="DUEDATE_"/>
+ <property name="isBlocking" column="BLOCK_"/>
+ <property name="isSignalling" column="SIGNAL_"/>
+
+ <many-to-one name="swimlaneDefinition"
+ column="SWIMLANE_DEF_"
+ cascade="all"
+ class="SwimlaneDefinitionImpl"
+ foreign-key="FK_TSK_SWIML_DEF"
+ index="IDX_TSK_SWIML_DEF" />
+
+ <list name="subTaskDefinitions" cascade="all-delete-orphan">
+ <key column="TASKDEF_" />
+ <list-index column="TASKDEF_IDX_" />
+ <one-to-many class="TaskDefinitionImpl" />
+ </list>
+ </subclass>
+ </class>
+
<!-- ### TASK ########################################################### -->
<class name="TaskImpl"
+ table="JBPM_TASK"
discriminator-value="T">
<id name="dbid" column="DBID_">
<generator class="native" />
@@ -109,7 +117,7 @@
</class>
<!-- ### PARTICIPANT #################################################### -->
- <class name="ParticipantImpl">
+ <class name="ParticipantImpl" table="JBPM_PARTICIPANT">
<id name="dbid" column="DBID_">
<generator class="native" />
</id>
@@ -132,19 +140,8 @@
</class>
- <!-- ### SWIMLANE DEFINITION ############################################ -->
- <class name="SwimlaneDefinitionImpl">
- <id name="dbid" column="DBID_">
- <generator class="native" />
- </id>
- <version name="dbversion" column="DBVERSION_" />
-
- <property name="name" column="NAME_"/>
- </class>
-
-
<!-- ### SWIMLANE ####################################################### -->
- <class name="SwimlaneImpl">
+ <class name="SwimlaneImpl" table="JBPM_SWIMLANE">
<id name="dbid" column="DBID_">
<generator class="native" />
</id>
@@ -161,7 +158,7 @@
<many-to-one name="execution"
class="org.jbpm.pvm.internal.model.ExecutionImpl"
column="EXECUTION_"
- foreign-key="FK_SWIMLANE_EXEC" />
+ foreign-key="none" />
<set name="participants" cascade="all-delete-orphan">
<key column="SWIMLANE_" />
@@ -169,8 +166,8 @@
</set>
</class>
+
-
<!-- ### QUERIES ######################################################## -->
<query name="findTasks">
Modified: jbpm4/trunk/modules/test-db/src/test/resources/jbpm.definition.hbm.xml
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/resources/jbpm.definition.hbm.xml 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/test-db/src/test/resources/jbpm.definition.hbm.xml 2009-03-21 17:50:09 UTC (rev 4305)
@@ -4,11 +4,15 @@
<hibernate-mapping package="org.jbpm.pvm.internal.model" default-access="field">
<!-- ### PROCESS DEFINITION ############################################# -->
- <class name="ProcessDefinitionImpl" table="JBPM_PROCESS">
+ <class name="ProcessDefinitionImpl"
+ table="JBPM_PROCESS"
+ discriminator-value="pvm">
<!-- ProcessElementImpl part ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<id name="dbid" column="DBID_">
<generator class="native" />
</id>
+ <discriminator><column name="CLASS_" /></discriminator>
+
<version name="dbversion" column="DBVERSION_" />
<many-to-one name="properties"
class="WireProperties"
Modified: jbpm4/trunk/modules/test-db/src/test/resources/jbpm.execution.hbm.xml
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/resources/jbpm.execution.hbm.xml 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/test-db/src/test/resources/jbpm.execution.hbm.xml 2009-03-21 17:50:09 UTC (rev 4305)
@@ -19,10 +19,13 @@
</typedef>
<!-- ### PROCESS DEFINITION ############################################# -->
- <class name="ExecutionImpl" table="JBPM_EXECUTION">
+ <class name="ExecutionImpl"
+ table="JBPM_EXECUTION"
+ discriminator-value="pvm">
<id name="dbid" column="DBID_">
<generator class="native" />
</id>
+ <discriminator><column name="CLASS_" /></discriminator>
<version name="dbversion" column="DBVERSION_" />
<many-to-one name="activity"
@@ -34,8 +37,7 @@
<property name="hasVariables" column="HASVARS_" />
<map name="variables"
- cascade="all-delete-orphan"
- table="JBPM_VARIABLE">
+ cascade="all-delete-orphan">
<key foreign-key="FK_VAR_EXECUTION">
<column name="EXECUTION_" index="IDX_VAR_EXECUTION"/>
</key>
@@ -203,7 +205,7 @@
<generator class="native" />
</id>
<version name="dbversion" column="DBVERSION_" />
- <property name="blob" type="blob" column="BLOB_VALUE_" />
+ <property name="blob" type="blob"><column name="BLOB_VALUE_" /></property>
<property name="bytes" type="binary" column="BINARY_VALUE_"/>
<property name="clob" type="clob" column="CLOB_VALUE_" />
<property name="text" type="text" column="TEXT_VALUE_"/>
Modified: jbpm4/trunk/modules/test-db/src/test/resources/jbpm.jpdl.hbm.xml
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/resources/jbpm.jpdl.hbm.xml 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/test-db/src/test/resources/jbpm.jpdl.hbm.xml 2009-03-21 17:50:09 UTC (rev 4305)
@@ -3,13 +3,39 @@
<hibernate-mapping default-access="field">
- <joined-subclass name="org.jbpm.jpdl.internal.model.JpdlProcessDefinition" table="JBPM_JPDL_PROCDEF" extends="org.jbpm.pvm.internal.model.ProcessDefinitionImpl">
- <key column="DBID_"/>
- </joined-subclass>
+ <subclass name="org.jbpm.jpdl.internal.model.JpdlProcessDefinition"
+ extends="org.jbpm.pvm.internal.model.ProcessDefinitionImpl"
+ discriminator-value="jpdl">
+ <map name="swimlaneDefinitions"
+ cascade="all-delete-orphan">
+ <key foreign-key="FK_SWLDEF_PROCESS">
+ <column name="PROCESS_SWL_" index="IDX_SWLDEF_PROCESS"/>
+ </key>
+ <map-key type="string" column="NAME_" />
+ <one-to-many class="org.jbpm.pvm.internal.task.SwimlaneDefinitionImpl" />
+ </map>
+ <map name="taskDefinitions"
+ cascade="all-delete-orphan">
+ <key foreign-key="FK_TSKDEF_PROCESS">
+ <column name="PROCESS_" index="IDX_TSKDEF_PROCESS"/>
+ </key>
+ <map-key type="string" column="NAME_" />
+ <one-to-many class="org.jbpm.pvm.internal.task.TaskDefinitionImpl" />
+ </map>
+ </subclass>
- <joined-subclass name="org.jbpm.jpdl.internal.model.JpdlExecution" table="JBPM_JPDL_EXECUTION" extends="org.jbpm.pvm.internal.model.ExecutionImpl">
- <key column="DBID_"/>
- </joined-subclass>
+ <subclass name="org.jbpm.jpdl.internal.model.JpdlExecution"
+ extends="org.jbpm.pvm.internal.model.ExecutionImpl"
+ discriminator-value="jpdl">
+ <map name="swimlanes"
+ cascade="all-delete-orphan">
+ <key foreign-key="FK_SWIMLANE_EXEC">
+ <column name="EXECUTION_" index="IDX_SWIMLANE_EXEC"/>
+ </key>
+ <map-key type="string" column="NAME_" />
+ <one-to-many class="org.jbpm.pvm.internal.task.SwimlaneImpl" />
+ </map>
+ </subclass>
<class name="org.jbpm.jpdl.internal.activity.JpdlActivity" table="JBPM_JPDL_ACTIVITY" abstract="true" discriminator-value="X">
<id name="dbid" column="DBID_">
Modified: jbpm4/trunk/modules/test-db/src/test/resources/jbpm.task.hbm.xml
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/resources/jbpm.task.hbm.xml 2009-03-21 09:33:54 UTC (rev 4304)
+++ jbpm4/trunk/modules/test-db/src/test/resources/jbpm.task.hbm.xml 2009-03-21 17:50:09 UTC (rev 4305)
@@ -4,21 +4,19 @@
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping auto-import="false" package="org.jbpm.pvm.internal.task" default-access="field">
- <!-- ### TASK DEFINITION ################################################ -->
- <class name="TaskDefinitionImpl" discriminator-value="T">
+ <!-- ### SWIMLANE DEFINITION ############################################ -->
+ <class name="SwimlaneDefinitionImpl"
+ table="JBPM_TASKDEF"
+ discriminator-value="S" >
<id name="dbid" column="DBID_">
<generator class="native" />
</id>
- <discriminator type="char" column="CLASS_"/>
- <version name="dbversion" column="DBVERSION_" />
+ <discriminator><column name="CLASS_" /></discriminator>
+ <version name="dbversion" column="DBVERSION_" />
<property name="name" column="NAME_"/>
<property name="description" column="DESCR_"/>
- <property name="priority" column="PRIORITY_"/>
- <property name="dueDateDuration" column="DUEDATE_"/>
- <property name="isBlocking" column="BLOCK_"/>
- <property name="isSignalling" column="SIGNAL_"/>
<property name="assigneeExpression" column="ASS_EXPR_"/>
<property name="assigneeExpressionLanguage" column="ASS_EXPR_LANG_"/>
<property name="candidateUsersExpression" column="CNDUSR_EXPR_"/>
@@ -30,25 +28,35 @@
column="ASSIGNER_DESCR_"
cascade="all"
class="org.jbpm.pvm.internal.wire.descriptor.AbstractDescriptor"
- foreign-key="FK_TSK_ASIG_DESCR"
- index="IDX_TSK_ASIG_DESCR" />
+ foreign-key="FK_SWL_ASIG_DESCR"
+ index="IDX_SWL_ASIG_DESCR" />
- <many-to-one name="swimlaneDefinition"
- column="SWIMLANE_DEF_"
- cascade="all"
- class="SwimlaneDefinitionImpl"
- foreign-key="FK_TSK_SWIML_DEF"
- index="IDX_TSK_SWIML_DEF" />
-
- <list name="subTaskDefinitions" cascade="all-delete-orphan">
- <key column="TASKDEF_" />
- <list-index column="TASKDEF_IDX_" />
- <one-to-many class="TaskDefinitionImpl" />
- </list>
- </class>
+ <!-- ### TASK DEFINITION ################################################ -->
+ <subclass name="TaskDefinitionImpl" discriminator-value="T">
+ <property name="priority" column="PRIORITY_"/>
+ <property name="dueDateDuration" column="DUEDATE_"/>
+ <property name="isBlocking" column="BLOCK_"/>
+ <property name="isSignalling" column="SIGNAL_"/>
+
+ <many-to-one name="swimlaneDefinition"
+ column="SWIMLANE_DEF_"
+ cascade="all"
+ class="SwimlaneDefinitionImpl"
+ foreign-key="FK_TSK_SWIML_DEF"
+ index="IDX_TSK_SWIML_DEF" />
+
+ <list name="subTaskDefinitions" cascade="all-delete-orphan">
+ <key column="TASKDEF_" />
+ <list-index column="TASKDEF_IDX_" />
+ <one-to-many class="TaskDefinitionImpl" />
+ </list>
+ </subclass>
+ </class>
+
<!-- ### TASK ########################################################### -->
<class name="TaskImpl"
+ table="JBPM_TASK"
discriminator-value="T">
<id name="dbid" column="DBID_">
<generator class="native" />
@@ -109,7 +117,7 @@
</class>
<!-- ### PARTICIPANT #################################################### -->
- <class name="ParticipantImpl">
+ <class name="ParticipantImpl" table="JBPM_PARTICIPANT">
<id name="dbid" column="DBID_">
<generator class="native" />
</id>
@@ -132,19 +140,8 @@
</class>
- <!-- ### SWIMLANE DEFINITION ############################################ -->
- <class name="SwimlaneDefinitionImpl">
- <id name="dbid" column="DBID_">
- <generator class="native" />
- </id>
- <version name="dbversion" column="DBVERSION_" />
-
- <property name="name" column="NAME_"/>
- </class>
-
-
<!-- ### SWIMLANE ####################################################### -->
- <class name="SwimlaneImpl">
+ <class name="SwimlaneImpl" table="JBPM_SWIMLANE">
<id name="dbid" column="DBID_">
<generator class="native" />
</id>
@@ -161,7 +158,7 @@
<many-to-one name="execution"
class="org.jbpm.pvm.internal.model.ExecutionImpl"
column="EXECUTION_"
- foreign-key="FK_SWIMLANE_EXEC" />
+ foreign-key="none" />
<set name="participants" cascade="all-delete-orphan">
<key column="SWIMLANE_" />
@@ -169,8 +166,8 @@
</set>
</class>
+
-
<!-- ### QUERIES ######################################################## -->
<query name="findTasks">
More information about the jbpm-commits
mailing list