[jbpm-commits] JBoss JBPM SVN: r5136 - in jbpm4/trunk/modules: api/src/main/java/org/jbpm/api/task and 15 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Sat Jun 27 08:19:47 EDT 2009
Author: tom.baeyens at jboss.com
Date: 2009-06-27 08:19:46 -0400 (Sat, 27 Jun 2009)
New Revision: 5136
Added:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/GetActivityCoordinatesCmd.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/GetStartActivityNamesCmd.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/GetStartFormResourceNameCmd.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/FormBehaviour.java
jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/process/ProcessDefinitionStartFormTest.java
jbpm4/trunk/modules/test-db/src/test/resources/org/jbpm/test/process/ProcessDefinitionStartForm.form
Removed:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/GetActivityCoordinates.java
Modified:
jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/RepositoryService.java
jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/task/Task.java
jbpm4/trunk/modules/enterprise/src/test/java/org/jbpm/test/deployer/HTTP.java
jbpm4/trunk/modules/integration/console/src/main/java/org/jbpm/integration/console/ModelAdaptor.java
jbpm4/trunk/modules/integration/form-plugin/src/main/java/org/jbpm/integration/console/forms/Runner.java
jbpm4/trunk/modules/integration/form-plugin/src/main/java/org/jbpm/integration/console/forms/TaskDispatcherPluginImpl.java
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/StartActivity.java
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/xml/JpdlParser.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/Activity.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ActivityImpl.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/CompositeElement.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/CompositeElementImpl.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/RepositoryServiceImpl.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/session/RepositorySession.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/type/Converter.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/util/DOMWriter.java
jbpm4/trunk/modules/pvm/src/main/resources/jbpm.task.hbm.xml
Log:
JBPM-2365 adding engine and api support for start task forms
Modified: jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/RepositoryService.java
===================================================================
--- jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/RepositoryService.java 2009-06-26 15:29:08 UTC (rev 5135)
+++ jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/RepositoryService.java 2009-06-27 12:19:46 UTC (rev 5136)
@@ -22,18 +22,34 @@
package org.jbpm.api;
import java.io.InputStream;
+import java.util.List;
import org.jbpm.api.model.ActivityCoordinates;
-/**
+/** exposes the repository of deployments.
+ *
+ * <p>Deployments contain a set of named resources. Those
+ * resources can represent process definitions, forms, images and so on.
+ * </p>
+ *
+ * <p>The repository contains and manages the process definitions.
+ * </p>
+ *
* @author Tom Baeyens
*/
public interface RepositoryService {
+ /** create a new deployment. The deployment will only be deployed into
+ * the repository after invoking the {@link NewDeployment#deploy()}. */
NewDeployment createDeployment();
+ /** similar to deleting a deployment. The difference is that
+ * all the data remains in the database. So that the suspending
+ * can be undone with {@link #resumeDeployment(String)}. */
void suspendDeployment(String deploymentId);
+
+ /** resume a suspended deployment. */
void resumeDeployment(String deploymentId);
/** deletes a deployment if the process definitions don't have
@@ -45,10 +61,30 @@
* and their history information */
void deleteDeploymentCascade(String deploymentId);
+ /** obtain an InputStream to a resource in a deployment */
InputStream getResourceAsStream(String deploymentId, String resourceName);
+ /** create a query for process definitions */
ProcessDefinitionQuery createProcessDefinitionQuery();
+
+ /** create a query for deployments */
DeploymentQuery createDeploymentQuery();
+
+ /** find all the activity names of the start activities for a given
+ * process definition. Only top level activities are scanned.
+ * Every activity that doesn't have incoming transitions is considered
+ * a start activity. For the moment, jPDL only supports one
+ * start activity. Start activity names can be null. */
+ List<String> getStartActivityNames(String processDefinitionId);
+ /** the resource name for the given start activity. It is assumed that
+ * the ProcessDefinition is already retrieved. From the ProcessDefinition,
+ * the {@link ProcessDefinition#getId()} and the {@link ProcessDefinition#getDeploymentId()}
+ * can be retrieved. The activityName can be obtained via {@link #getStartActivityNames(String)}.
+ * An InputStream for the resource can be obtained with {@link #getResourceAsStream(String, String)} */
+ String getStartFormResourceName(String processDefinitionId, String activityName);
+
+ /** the coordinates for the activity on
+ * {@link ProcessDefinition#getImageResourceName() the process image}. */
ActivityCoordinates getActivityCoordinates(String processDefinitionId, String activityName);
}
Modified: jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/task/Task.java
===================================================================
--- jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/task/Task.java 2009-06-26 15:29:08 UTC (rev 5135)
+++ jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/task/Task.java 2009-06-27 12:19:46 UTC (rev 5136)
@@ -53,7 +53,5 @@
int getPriority();
void setPriority(int priority);
- String getForm();
- void setForm(String form);
-
+ String getFormResourceName();
}
\ No newline at end of file
Modified: jbpm4/trunk/modules/enterprise/src/test/java/org/jbpm/test/deployer/HTTP.java
===================================================================
--- jbpm4/trunk/modules/enterprise/src/test/java/org/jbpm/test/deployer/HTTP.java 2009-06-26 15:29:08 UTC (rev 5135)
+++ jbpm4/trunk/modules/enterprise/src/test/java/org/jbpm/test/deployer/HTTP.java 2009-06-27 12:19:46 UTC (rev 5136)
@@ -78,12 +78,12 @@
conn.setRequestProperty("Connection", "Keep-Alive");
- conn.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary);
+ conn.setRequestProperty("Content-Type", "multipart/formResourceName-data;boundary="+boundary);
dos = new DataOutputStream( conn.getOutputStream() );
dos.writeBytes(twoHyphens + boundary + lineEnd);
- dos.writeBytes("Content-Disposition: form-data; name=\"upload\";"
+ dos.writeBytes("Content-Disposition: formResourceName-data; name=\"upload\";"
+ " filename=\"" + UUID.randomUUID().toString() +"\"" + lineEnd);
dos.writeBytes(lineEnd);
@@ -92,7 +92,7 @@
bufferSize = Math.min(bytesAvailable, maxBufferSize);
buffer = new byte[bufferSize];
- // read file and write it into form...
+ // read file and write it into formResourceName...
bytesRead = inputStream.read(buffer, 0, bufferSize);
while (bytesRead > 0)
@@ -103,7 +103,7 @@
bytesRead = inputStream.read(buffer, 0, bufferSize);
}
- // send multipart form data necesssary after file data...
+ // send multipart formResourceName data necesssary after file data...
dos.writeBytes(lineEnd);
dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
Modified: jbpm4/trunk/modules/integration/console/src/main/java/org/jbpm/integration/console/ModelAdaptor.java
===================================================================
--- jbpm4/trunk/modules/integration/console/src/main/java/org/jbpm/integration/console/ModelAdaptor.java 2009-06-26 15:29:08 UTC (rev 5135)
+++ jbpm4/trunk/modules/integration/console/src/main/java/org/jbpm/integration/console/ModelAdaptor.java 2009-06-27 12:19:46 UTC (rev 5136)
@@ -160,8 +160,8 @@
task.setDueDate(t0.getDueDate());
task.setCreateDate(t0.getCreate());
- // task form url
- String url = t0.getForm()!=null ? t0.getForm() : "";
+ // task formResourceName url
+ String url = t0.getFormResourceName()!=null ? t0.getFormResourceName() : "";
task.setUrl( url );
return task;
Modified: jbpm4/trunk/modules/integration/form-plugin/src/main/java/org/jbpm/integration/console/forms/Runner.java
===================================================================
--- jbpm4/trunk/modules/integration/form-plugin/src/main/java/org/jbpm/integration/console/forms/Runner.java 2009-06-26 15:29:08 UTC (rev 5135)
+++ jbpm4/trunk/modules/integration/form-plugin/src/main/java/org/jbpm/integration/console/forms/Runner.java 2009-06-27 12:19:46 UTC (rev 5136)
@@ -37,7 +37,7 @@
"<body>\n" +
"\n" +
"<h2>Please enter your name</h2>\n" +
- "<form action=\"${form.action}\" method=\"POST\" enctype=\"multipart/form-data\">\n" +
+ "<formResourceName action=\"${formResourceName.action}\" method=\"POST\" enctype=\"multipart/formResourceName-data\">\n" +
"<input type=\"text\" name=\"name\" value=\"\"><br/>\n" +
"Outcomes:<br/>\n" +
"<ul>\n" +
@@ -46,7 +46,7 @@
"</#list>\n" +
"</ul> \n" +
"<input type=\"submit\">\n" +
- "</form>\n" +
+ "</formResourceName>\n" +
"</body>\n" +
"</html>";
@@ -60,7 +60,7 @@
o.getValues().add("transition1");
o.getValues().add("transition2");
- ctx.put("form", f);
+ ctx.put("formResourceName", f);
ctx.put("outcome", o);
r.execute(ctx, "testRun", new ByteArrayInputStream(template.getBytes()));
Modified: jbpm4/trunk/modules/integration/form-plugin/src/main/java/org/jbpm/integration/console/forms/TaskDispatcherPluginImpl.java
===================================================================
--- jbpm4/trunk/modules/integration/form-plugin/src/main/java/org/jbpm/integration/console/forms/TaskDispatcherPluginImpl.java 2009-06-26 15:29:08 UTC (rev 5135)
+++ jbpm4/trunk/modules/integration/form-plugin/src/main/java/org/jbpm/integration/console/forms/TaskDispatcherPluginImpl.java 2009-06-27 12:19:46 UTC (rev 5136)
@@ -153,10 +153,10 @@
Map<String, Object> renderContext = new HashMap<String,Object>();
- // form directive
+ // formResourceName directive
FormDirective formDirective = new FormDirective();
formDirective.setAction( action.toString() );
- renderContext.put("form", formDirective);
+ renderContext.put("formResourceName", formDirective);
// outcome directive
// TODO: Fix when https://jira.jboss.org/jira/browse/JBPM-2220 is done
Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/StartActivity.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/StartActivity.java 2009-06-26 15:29:08 UTC (rev 5135)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/StartActivity.java 2009-06-27 12:19:46 UTC (rev 5136)
@@ -22,15 +22,25 @@
package org.jbpm.jpdl.internal.activity;
import org.jbpm.api.activity.ActivityExecution;
+import org.jbpm.pvm.internal.task.FormBehaviour;
/**
* @author Tom Baeyens
*/
-public class StartActivity extends JpdlActivity {
+public class StartActivity extends JpdlActivity implements FormBehaviour {
private static final long serialVersionUID = 1L;
+
+ String formResourceName;
public void execute(ActivityExecution execution) {
}
+
+ public String getFormResourceName() {
+ return formResourceName;
+ }
+ public void setFormResourceName(String formResourceName) {
+ this.formResourceName = formResourceName;
+ }
}
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-06-26 15:29:08 UTC (rev 5135)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/StartBinding.java 2009-06-27 12:19:46 UTC (rev 5136)
@@ -23,6 +23,7 @@
import org.jbpm.jpdl.internal.model.JpdlProcessDefinition;
import org.jbpm.pvm.internal.model.ActivityImpl;
+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;
@@ -48,7 +49,11 @@
parse.addProblem("multiple start events not yet supported", element);
}
- return new StartActivity();
+ StartActivity startActivityBehaviour = new StartActivity();
+
+ startActivityBehaviour.setFormResourceName(XmlUtil.attribute(element, "form"));
+
+ return startActivityBehaviour;
}
public boolean isNameRequired() {
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-06-26 15:29:08 UTC (rev 5135)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java 2009-06-27 12:19:46 UTC (rev 5136)
@@ -456,8 +456,8 @@
String taskName = XmlUtil.attribute(element, "name");
taskDefinition.setName(taskName);
- String form = XmlUtil.attribute(element, "form");
- taskDefinition.setForm(form);
+ String form = XmlUtil.attribute(element, "formResourceName");
+ taskDefinition.setFormResourceName(form);
ProcessDefinitionImpl processDefinition = parse.findObject(ProcessDefinitionImpl.class);
if (processDefinition.getTaskDefinition(taskName)!=null) {
Deleted: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/GetActivityCoordinates.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/GetActivityCoordinates.java 2009-06-26 15:29:08 UTC (rev 5135)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/GetActivityCoordinates.java 2009-06-27 12:19:46 UTC (rev 5136)
@@ -1,59 +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.pvm.internal.cmd;
-
-import org.jbpm.api.JbpmException;
-import org.jbpm.api.model.ActivityCoordinates;
-import org.jbpm.pvm.internal.env.Environment;
-import org.jbpm.pvm.internal.model.ActivityImpl;
-import org.jbpm.pvm.internal.model.ProcessDefinitionImpl;
-import org.jbpm.pvm.internal.session.RepositorySession;
-
-
-/**
- * @author Tom Baeyens
- */
-public class GetActivityCoordinates implements Command<ActivityCoordinates> {
-
- private static final long serialVersionUID = 1L;
-
- String processDefinitionId;
- String activityName;
-
- public GetActivityCoordinates(String processDefinitionId, String activityName) {
- this.processDefinitionId = processDefinitionId;
- this.activityName = activityName;
- }
-
- public ActivityCoordinates execute(Environment environment) throws Exception {
- RepositorySession repositorySession = environment.get(RepositorySession.class);
- ProcessDefinitionImpl processDefinition = (ProcessDefinitionImpl) repositorySession.findProcessDefinitionById(processDefinitionId);
- if (processDefinition==null) {
- throw new JbpmException("process definition "+processDefinitionId+" doesn't exist");
- }
- ActivityImpl activity = processDefinition.findActivity(activityName);
- if (activity==null) {
- throw new JbpmException("activity '"+activityName+"' doesn't exist in process definition "+processDefinitionId);
- }
- return activity.getCoordinates();
- }
-}
Copied: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/GetActivityCoordinatesCmd.java (from rev 5134, jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/GetActivityCoordinates.java)
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/GetActivityCoordinatesCmd.java (rev 0)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/GetActivityCoordinatesCmd.java 2009-06-27 12:19:46 UTC (rev 5136)
@@ -0,0 +1,59 @@
+/*
+ * 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.cmd;
+
+import org.jbpm.api.JbpmException;
+import org.jbpm.api.model.ActivityCoordinates;
+import org.jbpm.pvm.internal.env.Environment;
+import org.jbpm.pvm.internal.model.ActivityImpl;
+import org.jbpm.pvm.internal.model.ProcessDefinitionImpl;
+import org.jbpm.pvm.internal.session.RepositorySession;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public class GetActivityCoordinatesCmd implements Command<ActivityCoordinates> {
+
+ private static final long serialVersionUID = 1L;
+
+ String processDefinitionId;
+ String activityName;
+
+ public GetActivityCoordinatesCmd(String processDefinitionId, String activityName) {
+ this.processDefinitionId = processDefinitionId;
+ this.activityName = activityName;
+ }
+
+ public ActivityCoordinates execute(Environment environment) throws Exception {
+ RepositorySession repositorySession = environment.get(RepositorySession.class);
+ ProcessDefinitionImpl processDefinition = (ProcessDefinitionImpl) repositorySession.findProcessDefinitionById(processDefinitionId);
+ if (processDefinition==null) {
+ throw new JbpmException("process definition "+processDefinitionId+" doesn't exist");
+ }
+ ActivityImpl activity = processDefinition.findActivity(activityName);
+ if (activity==null) {
+ throw new JbpmException("activity '"+activityName+"' doesn't exist in process definition "+processDefinitionId);
+ }
+ return activity.getCoordinates();
+ }
+}
Property changes on: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/GetActivityCoordinatesCmd.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/GetStartActivityNamesCmd.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/GetStartActivityNamesCmd.java (rev 0)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/GetStartActivityNamesCmd.java 2009-06-27 12:19:46 UTC (rev 5136)
@@ -0,0 +1,61 @@
+/*
+ * 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.cmd;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jbpm.pvm.internal.env.Environment;
+import org.jbpm.pvm.internal.model.ActivityImpl;
+import org.jbpm.pvm.internal.model.ProcessDefinitionImpl;
+import org.jbpm.pvm.internal.session.RepositorySession;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public class GetStartActivityNamesCmd implements Command<List<String>> {
+
+ private static final long serialVersionUID = 1L;
+
+ String processDefinitionId;
+
+ public GetStartActivityNamesCmd(String processDefinitionId) {
+ this.processDefinitionId = processDefinitionId;
+ }
+
+ public List<String> execute(Environment environment) {
+ List<String> activityNames = new ArrayList<String>();
+
+ RepositorySession repositorySession = Environment.getFromCurrent(RepositorySession.class);
+ ProcessDefinitionImpl processDefinition = repositorySession.findProcessDefinitionById(processDefinitionId);
+
+ for (ActivityImpl activity: (List<ActivityImpl>) processDefinition.getActivities()) {
+ if (activity.getIncomingTransitions().isEmpty()) {
+ activityNames.add(activity.getName());
+ }
+ }
+
+ return activityNames;
+ }
+
+}
Property changes on: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/GetStartActivityNamesCmd.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/GetStartFormResourceNameCmd.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/GetStartFormResourceNameCmd.java (rev 0)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/GetStartFormResourceNameCmd.java 2009-06-27 12:19:46 UTC (rev 5136)
@@ -0,0 +1,64 @@
+/*
+ * 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.cmd;
+
+import org.jbpm.api.JbpmException;
+import org.jbpm.api.activity.ActivityBehaviour;
+import org.jbpm.pvm.internal.env.Environment;
+import org.jbpm.pvm.internal.model.ActivityImpl;
+import org.jbpm.pvm.internal.model.ProcessDefinitionImpl;
+import org.jbpm.pvm.internal.session.RepositorySession;
+import org.jbpm.pvm.internal.task.FormBehaviour;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public class GetStartFormResourceNameCmd implements Command<String> {
+
+ private static final long serialVersionUID = 1L;
+
+ String processDefinitionId;
+ String activityName;
+
+ public GetStartFormResourceNameCmd(String processDefinitionId, String activityName) {
+ if (processDefinitionId==null) {
+ throw new JbpmException("processDefinitionId is null");
+ }
+ this.processDefinitionId = processDefinitionId;
+ this.activityName = activityName;
+ }
+
+ public String execute(Environment environment) {
+ RepositorySession repositorySession = Environment.getFromCurrent(RepositorySession.class);
+ ProcessDefinitionImpl processDefinition = repositorySession.findProcessDefinitionById(processDefinitionId);
+
+ ActivityImpl activity = processDefinition.getActivity(activityName);
+
+ ActivityBehaviour behaviour = activity.getBehaviour();
+ if (behaviour instanceof FormBehaviour) {
+ return ((FormBehaviour)behaviour).getFormResourceName();
+ }
+
+ return null;
+ }
+}
Property changes on: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/GetStartFormResourceNameCmd.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/Activity.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/Activity.java 2009-06-26 15:29:08 UTC (rev 5135)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/Activity.java 2009-06-27 12:19:46 UTC (rev 5136)
@@ -29,8 +29,8 @@
*
* <p>The activity supports both graph based process models as well as
* block structured (tree based) process models. First we describe
- * tranisions that can be used to form graph based process structures
- * and then we'll describe activity composition to form block structured
+ * tranisions that can be used to formResourceName graph based process structures
+ * and then we'll describe activity composition to formResourceName block structured
* process models. Both models can be combined as well.
* </p>
*
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ActivityImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ActivityImpl.java 2009-06-26 15:29:08 UTC (rev 5135)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ActivityImpl.java 2009-06-27 12:19:46 UTC (rev 5136)
@@ -347,10 +347,8 @@
if (activities!=null) {
map = new HashMap<String, ActivityImpl>();
for (ActivityImpl activity: activities) {
- if (activity.getName()!=null) {
- if (! map.containsKey(activity.getName())) {
- map.put(activity.getName(), activity);
- }
+ if (! map.containsKey(activity.getName())) {
+ map.put(activity.getName(), activity);
}
}
}
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/CompositeElement.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/CompositeElement.java 2009-06-26 15:29:08 UTC (rev 5135)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/CompositeElement.java 2009-06-27 12:19:46 UTC (rev 5136)
@@ -38,7 +38,7 @@
/** the list of direct composite activities. Recursively contained
* activities are not included in the list.
* Beware: the actual member is returned. No copy is made. */
- List<Activity> getActivities();
+ List<? extends Activity> getActivities();
/** indicates if an activity with the given name exists directly in
* this element. Only the direct contained activities are
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/CompositeElementImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/CompositeElementImpl.java 2009-06-26 15:29:08 UTC (rev 5135)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/CompositeElementImpl.java 2009-06-27 12:19:46 UTC (rev 5136)
@@ -125,7 +125,7 @@
/** the list of nested activities.
* Beware: the actual member is returned. No copy is made.
*/
- public List<Activity> getActivities() {
+ public List<? extends Activity> getActivities() {
return (List) activities;
}
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java 2009-06-26 15:29:08 UTC (rev 5135)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java 2009-06-27 12:19:46 UTC (rev 5136)
@@ -725,7 +725,7 @@
task.setDescription(taskDefinition.getDescription());
task.setPriority(taskDefinition.getPriority());
- task.setForm(taskDefinition.getForm());
+ task.setFormResourceName(taskDefinition.getFormResourceName());
// save task so that TaskDbSession.findTaskByExecution works for assign event listeners
dbSession.saveTask(task);
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/RepositoryServiceImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/RepositoryServiceImpl.java 2009-06-26 15:29:08 UTC (rev 5135)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/RepositoryServiceImpl.java 2009-06-27 12:19:46 UTC (rev 5136)
@@ -23,6 +23,7 @@
import java.io.ByteArrayInputStream;
import java.io.InputStream;
+import java.util.List;
import org.jbpm.api.DeploymentQuery;
import org.jbpm.api.NewDeployment;
@@ -33,8 +34,10 @@
import org.jbpm.pvm.internal.cmd.CreateDeploymentQueryCmd;
import org.jbpm.pvm.internal.cmd.CreateProcessDefinitionQueryCmd;
import org.jbpm.pvm.internal.cmd.DeleteDeploymentCmd;
-import org.jbpm.pvm.internal.cmd.GetActivityCoordinates;
+import org.jbpm.pvm.internal.cmd.GetActivityCoordinatesCmd;
import org.jbpm.pvm.internal.cmd.GetResourceAsStreamCmd;
+import org.jbpm.pvm.internal.cmd.GetStartActivityNamesCmd;
+import org.jbpm.pvm.internal.cmd.GetStartFormResourceNameCmd;
import org.jbpm.pvm.internal.cmd.ResumeDeploymentCmd;
import org.jbpm.pvm.internal.cmd.SuspendDeploymentCmd;
import org.jbpm.pvm.internal.query.DeploymentQueryImpl;
@@ -88,6 +91,14 @@
}
public ActivityCoordinates getActivityCoordinates(String processDefinitionId, String activityName) {
- return commandService.execute(new GetActivityCoordinates(processDefinitionId, activityName));
+ return commandService.execute(new GetActivityCoordinatesCmd(processDefinitionId, activityName));
}
+
+ public List<String> getStartActivityNames(String processDefinitionId) {
+ return commandService.execute(new GetStartActivityNamesCmd(processDefinitionId));
+ }
+
+ public String getStartFormResourceName(String processDefinitionId, String activityName) {
+ return commandService.execute(new GetStartFormResourceNameCmd(processDefinitionId, activityName));
+ }
}
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/session/RepositorySession.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/session/RepositorySession.java 2009-06-26 15:29:08 UTC (rev 5135)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/session/RepositorySession.java 2009-06-27 12:19:46 UTC (rev 5136)
@@ -22,7 +22,7 @@
package org.jbpm.pvm.internal.session;
import org.jbpm.api.NewDeployment;
-import org.jbpm.pvm.internal.client.ClientProcessDefinition;
+import org.jbpm.pvm.internal.model.ProcessDefinitionImpl;
import org.jbpm.pvm.internal.query.ProcessDefinitionQueryImpl;
import org.jbpm.pvm.internal.repository.DeploymentImpl;
@@ -43,7 +43,7 @@
/** create a process definition query */
ProcessDefinitionQueryImpl createProcessDefinitionQuery();
- ClientProcessDefinition findProcessDefinitionById(String processDefinitionId);
+ ProcessDefinitionImpl findProcessDefinitionById(String processDefinitionId);
- ClientProcessDefinition findProcessDefinitionByKey(String processDefinitionKey);
+ ProcessDefinitionImpl findProcessDefinitionByKey(String processDefinitionKey);
}
Added: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/FormBehaviour.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/FormBehaviour.java (rev 0)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/FormBehaviour.java 2009-06-27 12:19:46 UTC (rev 5136)
@@ -0,0 +1,32 @@
+/*
+ * 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;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public interface FormBehaviour {
+
+ String getFormResourceName();
+
+}
Property changes on: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/FormBehaviour.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
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-06-26 15:29:08 UTC (rev 5135)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskDefinitionImpl.java 2009-06-27 12:19:46 UTC (rev 5136)
@@ -36,7 +36,7 @@
private static final long serialVersionUID = 1L;
protected String dueDateDuration;
- protected String form;
+ protected String formResourceName;
protected List<TaskDefinitionImpl> subTaskDefinitions = new ArrayList<TaskDefinitionImpl>();
protected int priority = Priority.NORMAL;
protected SwimlaneDefinitionImpl swimlaneDefinition;
@@ -66,11 +66,11 @@
public void setDueDateDuration(String dueDateDuration) {
this.dueDateDuration = dueDateDuration;
}
- public String getForm() {
- return form;
+ public String getFormResourceName() {
+ return formResourceName;
}
- public void setForm(String form) {
- this.form = form;
+ public void setFormResourceName(String form) {
+ this.formResourceName = form;
}
public Descriptor getTaskHandlerDescriptor() {
return taskHandlerDescriptor;
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-06-26 15:29:08 UTC (rev 5135)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskImpl.java 2009-06-27 12:19:46 UTC (rev 5136)
@@ -70,7 +70,7 @@
protected String assignee;
protected Set<ParticipationImpl> participations = new HashSet<ParticipationImpl>();
- protected String form;
+ protected String formResourceName;
protected Date create;
protected Date dueDate;
protected Integer progress;
@@ -507,11 +507,11 @@
this.isSignalling = isSignalling;
}
- public String getForm() {
- return form;
+ public String getFormResourceName() {
+ return formResourceName;
}
- public void setForm(String form) {
- this.form = form;
+ public void setFormResourceName(String form) {
+ this.formResourceName = form;
}
}
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/type/Converter.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/type/Converter.java 2009-06-26 15:29:08 UTC (rev 5135)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/type/Converter.java 2009-06-27 12:19:46 UTC (rev 5136)
@@ -39,7 +39,7 @@
Object convert(Object o);
/**
- * reverts a persisted object to its original form.
+ * reverts a persisted object to its original formResourceName.
*/
Object revert(Object o);
}
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/util/DOMWriter.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/util/DOMWriter.java 2009-06-26 15:29:08 UTC (rev 5135)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/util/DOMWriter.java 2009-06-27 12:19:46 UTC (rev 5136)
@@ -15,7 +15,7 @@
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
- * 2. Redistributions in binary form must reproduce the above copyright
+ * 2. Redistributions in binary formResourceName must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
@@ -160,7 +160,7 @@
}
/**
- * Set wheter entities should appear in their canonical form.
+ * Set wheter entities should appear in their canonical formResourceName.
* The default is false.
*/
public DOMWriter setCanonical(boolean canonical)
Modified: jbpm4/trunk/modules/pvm/src/main/resources/jbpm.task.hbm.xml
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/resources/jbpm.task.hbm.xml 2009-06-26 15:29:08 UTC (rev 5135)
+++ jbpm4/trunk/modules/pvm/src/main/resources/jbpm.task.hbm.xml 2009-06-27 12:19:46 UTC (rev 5136)
@@ -19,7 +19,7 @@
<property name="state" column="STATE_"/>
<property name="suspendHistoryState" column="SUSPHISTSTATE_" />
<property name="assignee" column="ASSIGNEE_"/>
- <property name="form" column="FORM_"/>
+ <property name="formResourceName" column="FORM_"/>
<set name="participations" cascade="all-delete-orphan">
<key column="TASK_" />
Added: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/process/ProcessDefinitionStartFormTest.java
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/process/ProcessDefinitionStartFormTest.java (rev 0)
+++ jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/process/ProcessDefinitionStartFormTest.java 2009-06-27 12:19:46 UTC (rev 5136)
@@ -0,0 +1,111 @@
+/*
+ * 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.test.process;
+
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jbpm.api.ProcessDefinition;
+import org.jbpm.pvm.internal.util.IoUtil;
+import org.jbpm.test.JbpmTestCase;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public class ProcessDefinitionStartFormTest extends JbpmTestCase {
+
+ public void testFormInUnnamedStartActivity() {
+ String deploymentDbid =
+ repositoryService.createDeployment()
+ .addResourceFromString("xmlstring.jpdl.xml",
+ "<process name='make print'>" +
+ " <start form='org/jbpm/test/process/ProcessDefinitionStartForm.form' />" +
+ "</process>"
+ )
+ .addResourceFromClasspath("org/jbpm/test/process/ProcessDefinitionStartForm.form")
+ .deploy();
+
+ registerDeployment(deploymentDbid);
+
+ ProcessDefinition processDefinition =
+ repositoryService
+ .createProcessDefinitionQuery()
+ .processDefinitionName("make print")
+ .uniqueResult();
+
+ String processDefinitionId = processDefinition.getId();
+
+ List<String> startActivityNames = repositoryService.getStartActivityNames(processDefinitionId );
+ List<String> expectedStartActivityNames = new ArrayList<String>();
+ expectedStartActivityNames.add(null);
+
+ assertEquals(expectedStartActivityNames, startActivityNames);
+
+ String startFormResourceName = repositoryService.getStartFormResourceName(processDefinitionId, null);
+
+ assertEquals("org/jbpm/test/process/ProcessDefinitionStartForm.form", startFormResourceName);
+
+ InputStream formInputStream = repositoryService.getResourceAsStream(processDefinition.getDeploymentId(), startFormResourceName);
+
+ String formContents = new String(IoUtil.readBytes(formInputStream));
+ assertEquals("start task form", formContents);
+ }
+
+ public void testFormInNamedStartActivity() {
+ String deploymentDbid =
+ repositoryService.createDeployment()
+ .addResourceFromString("xmlstring.jpdl.xml",
+ "<process name='make print'>" +
+ " <start name='start' form='org/jbpm/test/process/ProcessDefinitionStartForm.form' />" +
+ "</process>"
+ )
+ .addResourceFromClasspath("org/jbpm/test/process/ProcessDefinitionStartForm.form")
+ .deploy();
+
+ registerDeployment(deploymentDbid);
+
+ ProcessDefinition processDefinition =
+ repositoryService
+ .createProcessDefinitionQuery()
+ .processDefinitionName("make print")
+ .uniqueResult();
+
+ String processDefinitionId = processDefinition.getId();
+
+ List<String> startActivityNames = repositoryService.getStartActivityNames(processDefinitionId );
+ List<String> expectedStartActivityNames = new ArrayList<String>();
+ expectedStartActivityNames.add("start");
+
+ assertEquals(expectedStartActivityNames, startActivityNames);
+
+ String startFormResourceName = repositoryService.getStartFormResourceName(processDefinitionId, "start");
+
+ assertEquals("org/jbpm/test/process/ProcessDefinitionStartForm.form", startFormResourceName);
+
+ InputStream formInputStream = repositoryService.getResourceAsStream(processDefinition.getDeploymentId(), startFormResourceName);
+
+ String formContents = new String(IoUtil.readBytes(formInputStream));
+ assertEquals("start task form", formContents);
+ }
+}
Property changes on: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/process/ProcessDefinitionStartFormTest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: jbpm4/trunk/modules/test-db/src/test/resources/org/jbpm/test/process/ProcessDefinitionStartForm.form
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/resources/org/jbpm/test/process/ProcessDefinitionStartForm.form (rev 0)
+++ jbpm4/trunk/modules/test-db/src/test/resources/org/jbpm/test/process/ProcessDefinitionStartForm.form 2009-06-27 12:19:46 UTC (rev 5136)
@@ -0,0 +1 @@
+start task form
\ No newline at end of file
More information about the jbpm-commits
mailing list