[jbpm-commits] JBoss JBPM SVN: r4579 - in jbpm4/trunk/modules: api/src/main/java/org/jbpm/api/session and 9 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Sat Apr 18 15:47:17 EDT 2009
Author: tom.baeyens at jboss.com
Date: 2009-04-18 15:47:17 -0400 (Sat, 18 Apr 2009)
New Revision: 4579
Modified:
jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/activity/ActivityBehaviour.java
jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/session/RepositorySession.java
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/SubProcessActivity.java
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/SubProcessBinding.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/xml/JpdlParser.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/VariableBuilder.java
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/StartProcessInstanceCmd.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/StartProcessInstanceInLatestCmd.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/model/ScopeInstanceImpl.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/VariableDefinitionImpl.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/VariableOutDefinitionImpl.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/VariableOutDefinitionSet.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/query/ProcessDefinitionQueryImpl.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/RepositorySessionImpl.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/SwimlaneImpl.java
Log:
JBPM-2025 started parsing and implementation of sub-process
Modified: jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/activity/ActivityBehaviour.java
===================================================================
--- jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/activity/ActivityBehaviour.java 2009-04-18 17:43:48 UTC (rev 4578)
+++ jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/activity/ActivityBehaviour.java 2009-04-18 19:47:17 UTC (rev 4579)
@@ -24,7 +24,7 @@
import java.io.Serializable;
/** piece of Java code that is to be included in a process as the runtime
- * activity behaviour or as a hidden listener to process events.
+ * activity behaviour.
*
* @author Tom Baeyens
*/
Modified: jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/session/RepositorySession.java
===================================================================
--- jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/session/RepositorySession.java 2009-04-18 17:43:48 UTC (rev 4578)
+++ jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/session/RepositorySession.java 2009-04-18 19:47:17 UTC (rev 4579)
@@ -41,5 +41,7 @@
ProcessDefinitionQuery createProcessDefinitionQuery();
- ClientProcessDefinition loadProcessDefinitionById(String processDefinitionId);
+ ClientProcessDefinition findProcessDefinitionById(String processDefinitionId);
+
+ ClientProcessDefinition findProcessDefinitionByKey(String processDefinitionKey);
}
Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/SubProcessActivity.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/SubProcessActivity.java 2009-04-18 17:43:48 UTC (rev 4578)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/SubProcessActivity.java 2009-04-18 19:47:17 UTC (rev 4579)
@@ -25,7 +25,13 @@
import java.util.Map;
import org.jbpm.api.activity.ActivityExecution;
+import org.jbpm.api.client.ClientProcessDefinition;
+import org.jbpm.api.env.Environment;
+import org.jbpm.api.session.RepositorySession;
+import org.jbpm.jpdl.internal.model.JpdlExecution;
import org.jbpm.pvm.internal.model.VariableDefinitionImpl;
+import org.jbpm.pvm.internal.model.VariableOutDefinitionImpl;
+import org.jbpm.pvm.internal.task.SwimlaneImpl;
/**
@@ -35,31 +41,78 @@
private static final long serialVersionUID = 1L;
- protected Map<String, String> inSwimlaneMappings;
- protected List<VariableDefinitionImpl> inDefinitions;
- protected List<VariableDefinitionImpl> outDefinitions;
- protected Map<String, String> outcomeStateMappings;
- protected Map<String, String> outcomeVariableMappings;
+ protected String subProcessKey;
+ protected String subProcessId;
+ protected Map<String, String> swimlaneMappings;
+ protected List<VariableDefinitionImpl> variableDefinitions;
- public void execute(ActivityExecution execution) throws Exception {
+ protected List<VariableOutDefinitionImpl> variableOutDefinitions;
+ protected Map<String, String> outcomeActivityMappings;
+ protected String outcomeExpression;
+ protected Map<Object, String> outcomeVariableMappings;
+
+ public void execute(ActivityExecution execution) {
+ JpdlExecution jpdlExecution = execution.getExtension(JpdlExecution.class);
+
+ RepositorySession repositorySession = Environment.getFromCurrent(RepositorySession.class);
+
+ ClientProcessDefinition processDefinition = null;
+
+ if (subProcessId!=null) {
+ processDefinition = repositorySession.findProcessDefinitionById(subProcessId);
+ } else {
+ processDefinition = repositorySession.findProcessDefinitionByKey(subProcessKey);
+ }
+
+ JpdlExecution subProcessInstance = (JpdlExecution) processDefinition.createProcessInstance();
+
+ subProcessInstance.setSuperProcessExecution(jpdlExecution);
+ jpdlExecution.setSubProcessInstance(subProcessInstance);
+
+ for (String swimlaneName: swimlaneMappings.keySet()) {
+ String subSwimlaneName = swimlaneMappings.get(swimlaneName);
+ SwimlaneImpl subSwimlane = subProcessInstance.createSwimlane(subSwimlaneName);
+ SwimlaneImpl swimlane = jpdlExecution.getSwimlane(swimlaneName);
+ if (swimlane!=null) {
+ subSwimlane.initialize(swimlane);
+ }
+ }
+
+ for (VariableDefinitionImpl variableDefinition: variableDefinitions) {
+ String variableName = variableDefinition.getName();
+ Object value = variableDefinition.getInitValue(jpdlExecution);
+ subProcessInstance.setVariable(variableName, value);
+ }
+
+ subProcessInstance.start();
}
- public void signal(ActivityExecution execution, String signalName, Map<String, Object> parameters) throws Exception {
+ public void signal(ActivityExecution execution, String signalName, Map<String, Object> parameters) {
+ // see VariableOutDefinitionSet: that is currently not yet used
}
- public void setInSwimlaneMappings(Map<String, String> inSwimlaneMappings) {
- this.inSwimlaneMappings = inSwimlaneMappings;
+ public void setSwimlaneMappings(Map<String, String> swimlaneMappings) {
+ this.swimlaneMappings = swimlaneMappings;
}
- public void setInDefinitions(List<VariableDefinitionImpl> inDefinitions) {
- this.inDefinitions = inDefinitions;
+ public void setOutcomeActivityMappings(Map<String, String> outcomeActivityMappings) {
+ this.outcomeActivityMappings = outcomeActivityMappings;
}
- public void setOutDefinitions(List<VariableDefinitionImpl> outDefinitions) {
- this.outDefinitions = outDefinitions;
+ public void setOutcomeVariableMappings(Map<Object, String> outcomeVariableMappings) {
+ this.outcomeVariableMappings = outcomeVariableMappings;
}
- public void setOutcomeStateMappings(Map<String, String> outcomeStateMappings) {
- this.outcomeStateMappings = outcomeStateMappings;
+ public void setSubProcessKey(String subProcessKey) {
+ this.subProcessKey = subProcessKey;
}
- public void setOutcomeVariableMappings(Map<String, String> outcomeVariableMappings) {
- this.outcomeVariableMappings = outcomeVariableMappings;
+ public void setSubProcessId(String subProcessId) {
+ this.subProcessId = subProcessId;
}
+ public void setVariableDefinitions(List<VariableDefinitionImpl> variableDefinitions) {
+ this.variableDefinitions = variableDefinitions;
+ }
+ public void setVariableOutDefinitions(List<VariableOutDefinitionImpl> variableOutDefinitions) {
+ this.variableOutDefinitions = variableOutDefinitions;
+ }
+ public void setOutcomeExpression(String outcomeExpression) {
+ this.outcomeExpression = outcomeExpression;
+ }
}
Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/SubProcessBinding.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/SubProcessBinding.java 2009-04-18 17:43:48 UTC (rev 4578)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/SubProcessBinding.java 2009-04-18 19:47:17 UTC (rev 4579)
@@ -21,7 +21,17 @@
*/
package org.jbpm.jpdl.internal.activity;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.jbpm.jpdl.internal.xml.JpdlParser;
+import org.jbpm.pvm.internal.model.VariableDefinitionImpl;
+import org.jbpm.pvm.internal.model.VariableOutDefinitionImpl;
import org.jbpm.pvm.internal.util.XmlUtil;
+import org.jbpm.pvm.internal.wire.Descriptor;
+import org.jbpm.pvm.internal.wire.WireContext;
+import org.jbpm.pvm.internal.wire.xml.WireParser;
import org.jbpm.pvm.internal.xml.Parse;
import org.jbpm.pvm.internal.xml.Parser;
import org.w3c.dom.Element;
@@ -37,13 +47,77 @@
}
public Object parse(Element element, Parse parse, Parser parser) {
+ SubProcessActivity subProcessActivity = new SubProcessActivity();
String subProcessKey = XmlUtil.attribute(element, "process-key");
+ subProcessActivity.setSubProcessKey(subProcessKey);
+
String subProcessId = XmlUtil.attribute(element, "process-id");
+ subProcessActivity.setSubProcessId(subProcessId);
+ List<VariableDefinitionImpl> variableDefinitions = JpdlParser.parseVariableDefinitions(element, parse, true);
+ subProcessActivity.setVariableDefinitions(variableDefinitions);
+ List<VariableOutDefinitionImpl> variableOutDefinitions = JpdlParser.parseVariableOutDefinitions(element, parse);
+ subProcessActivity.setVariableOutDefinitions(variableOutDefinitions);
- return null;
+ Map<String, String> swimlaneMappings = parseSwimlaneMappings(element, parse);
+ subProcessActivity.setSwimlaneMappings(swimlaneMappings);
+
+ Map<String, String> outcomeActivityMappings = new HashMap<String, String>();
+ Map<Object, String> outcomeVariableMappings = new HashMap<Object, String>();
+
+ String outcomeExpression = XmlUtil.attribute(element, "outcome");
+ if (outcomeExpression!=null) {
+ for (Element transitionElement: XmlUtil.elements(element, "transition")) {
+ Element outcomeValueElement = XmlUtil.element(transitionElement, "outcome-value");
+ if (outcomeValueElement!=null) {
+ String transitionName = XmlUtil.attribute(transitionElement, "name");
+ if (transitionName==null) {
+ parse.addProblem("transitions with an outcome-value must have a name", transitionElement);
+ }
+ Element valueElement = XmlUtil.element(outcomeValueElement);
+ if (valueElement!=null) {
+ Descriptor descriptor = (Descriptor) WireParser.getInstance().parseElement(valueElement, parse);
+ Object value = WireContext.create(descriptor);
+ outcomeVariableMappings.put(value, transitionName);
+ } else {
+ parse.addProblem("outcome-value must contain exactly one element", outcomeValueElement);
+ }
+ }
+ }
+
+ } else { // no outcome expression
+
+ // search for end activity mappings
+ for (Element transitionElement: XmlUtil.elements(element, "transition")) {
+ Element outcomeElement = XmlUtil.element(transitionElement, "outcome");
+ if (outcomeElement!=null) {
+ String transitionName = XmlUtil.attribute(transitionElement, "name");
+ if (transitionName==null) {
+ parse.addProblem("transitions with an outcome must have a name", transitionElement);
+ }
+ String activity = XmlUtil.attribute(outcomeElement, "activity");
+ if (activity!=null) {
+ outcomeActivityMappings.put(activity, transitionName);
+ }
+ }
+ }
+ }
+
+ return subProcessActivity;
}
+ public static Map<String, String> parseSwimlaneMappings(Element element, Parse parse) {
+ Map<String, String> swimlaneMappings = new HashMap<String, String>();
+
+ for (Element inElement: XmlUtil.elements(element, "swimlane-mapping")) {
+ String swimlane = XmlUtil.attribute(inElement, "swimlane", true, parse);
+ String subSwimlane = XmlUtil.attribute(inElement, "sub-swimlane", true, parse);
+
+ swimlaneMappings.put(swimlane, subSwimlane);
+ }
+
+ return swimlaneMappings;
+ }
}
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-04-18 17:43:48 UTC (rev 4578)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/model/JpdlExecution.java 2009-04-18 19:47:17 UTC (rev 4579)
@@ -172,6 +172,13 @@
swimlane.setExecution(this);
}
+ public SwimlaneImpl getSwimlane(String swimlaneName) {
+ if (swimlanes==null) {
+ return null;
+ }
+ return swimlanes.get(swimlaneName);
+ }
+
public void removeSwimlane(SwimlaneImpl swimlane) {
swimlanes.remove(swimlane.getName());
swimlane.setExecution(null);
@@ -186,14 +193,18 @@
SwimlaneImpl swimlane = swimlanes.get(swimlaneName);
if (swimlane==null) {
- // initialize swimlane
- swimlane = new SwimlaneImpl();
- swimlane.setName(swimlaneName);
- swimlane.setExecution(this);
- swimlanes.put(swimlaneName, swimlane);
+ swimlane = createSwimlane(swimlaneName);
initializeAssignments(swimlaneDefinition, swimlane);
}
return swimlane;
}
+
+ public SwimlaneImpl createSwimlane(String swimlaneName) {
+ SwimlaneImpl swimlane = new SwimlaneImpl();
+ swimlane.setName(swimlaneName);
+ swimlane.setExecution(this);
+ swimlanes.put(swimlaneName, swimlane);
+ return swimlane;
+ }
}
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-04-18 17:43:48 UTC (rev 4578)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java 2009-04-18 19:47:17 UTC (rev 4579)
@@ -45,6 +45,7 @@
import org.jbpm.pvm.internal.model.ScopeElementImpl;
import org.jbpm.pvm.internal.model.TimerDefinitionImpl;
import org.jbpm.pvm.internal.model.VariableDefinitionImpl;
+import org.jbpm.pvm.internal.model.VariableOutDefinitionImpl;
import org.jbpm.pvm.internal.task.AssignableDefinitionImpl;
import org.jbpm.pvm.internal.task.SwimlaneDefinitionImpl;
import org.jbpm.pvm.internal.task.TaskDefinitionImpl;
@@ -450,14 +451,14 @@
String initExpr = XmlUtil.attribute(inElement, "init");
if (initExpr!=null) {
- variableDefinition.setInExpression(initExpr);
+ variableDefinition.setInitExpression(initExpr);
sources++;
}
- Element initElement = XmlUtil.element(inElement, "init");
- if (initElement!=null) {
- Descriptor initValueDescriptor = (Descriptor) WireParser.getInstance().parseElement(initElement, parse);
- variableDefinition.setInDescriptor(initValueDescriptor);
+ Element valueElement = XmlUtil.element(inElement);
+ if (valueElement!=null) {
+ Descriptor initValueDescriptor = (Descriptor) WireParser.getInstance().parseElement(valueElement, parse);
+ variableDefinition.setInitDescriptor(initValueDescriptor);
sources++;
}
@@ -472,4 +473,22 @@
return variableDefinitions;
}
+ public static List<VariableOutDefinitionImpl> parseVariableOutDefinitions(Element element, Parse parse) {
+ List<VariableOutDefinitionImpl> variableOutDefinitions = new ArrayList<VariableOutDefinitionImpl>();
+
+ for (Element inElement: XmlUtil.elements(element, "out-variable")) {
+ VariableOutDefinitionImpl variableOutDefinition = new VariableOutDefinitionImpl();
+
+ String name = XmlUtil.attribute(inElement, "name", true, parse);
+ variableOutDefinition.setName(name);
+
+ String expression = XmlUtil.attribute(inElement, "init");
+ if (expression!=null) {
+ variableOutDefinition.setExpression(expression);
+ }
+ }
+
+ return variableOutDefinitions;
+ }
+
}
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/VariableBuilder.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/VariableBuilder.java 2009-04-18 17:43:48 UTC (rev 4578)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/VariableBuilder.java 2009-04-18 19:47:17 UTC (rev 4579)
@@ -49,22 +49,16 @@
}
public VariableBuilder initialValue(Descriptor initialValueDescriptor) {
- variableDefinition.setInDescriptor(initialValueDescriptor);
+ variableDefinition.setInitDescriptor(initialValueDescriptor);
return this;
}
public VariableBuilder initialExpression(String initialExpression) {
- variableDefinition.setInExpression(initialExpression);
+ variableDefinition.setInitExpression(initialExpression);
return this;
}
- public VariableBuilder initialVariable(String initialVariable) {
- variableDefinition.setInVariableName(initialVariable);
- return this;
- }
-
public CompositeBuilder endVariable() {
return compositeBuilder;
}
-
}
Modified: 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-04-18 17:43:48 UTC (rev 4578)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/GetActivityCoordinates.java 2009-04-18 19:47:17 UTC (rev 4579)
@@ -47,7 +47,7 @@
public ActivityCoordinates execute(Environment environment) throws Exception {
RepositorySession repositorySession = environment.get(RepositorySession.class);
- ProcessDefinitionImpl processDefinition = (ProcessDefinitionImpl) repositorySession.loadProcessDefinitionById(processDefinitionId);
+ ProcessDefinitionImpl processDefinition = (ProcessDefinitionImpl) repositorySession.findProcessDefinitionById(processDefinitionId);
if (processDefinition==null) {
throw new JbpmException("process definition "+processDefinitionId+" doesn't exist");
}
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/StartProcessInstanceCmd.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/StartProcessInstanceCmd.java 2009-04-18 17:43:48 UTC (rev 4578)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/StartProcessInstanceCmd.java 2009-04-18 19:47:17 UTC (rev 4579)
@@ -51,7 +51,7 @@
RepositorySession repositorySession = environment.get(RepositorySession.class);
ClientProcessDefinition processDefinition = (ClientProcessDefinition)
- repositorySession.loadProcessDefinitionById(processDefinitionId);
+ repositorySession.findProcessDefinitionById(processDefinitionId);
if (processDefinition==null) {
throw new JbpmException("no process definition with id '"+processDefinitionId+"'");
}
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/StartProcessInstanceInLatestCmd.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/StartProcessInstanceInLatestCmd.java 2009-04-18 17:43:48 UTC (rev 4578)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/StartProcessInstanceInLatestCmd.java 2009-04-18 19:47:17 UTC (rev 4579)
@@ -56,18 +56,8 @@
ClientProcessDefinition processDefinition = null;
RepositorySession repositorySession = environment.get(RepositorySession.class);
- processDefinition = (ClientProcessDefinition) repositorySession.createProcessDefinitionQuery()
- .key(processDefinitionKey)
- .orderDesc(ProcessDefinitionQuery.PROPERTY_VERSION)
- .page(0, 1)
- .uniqueResult();
+ processDefinition = (ClientProcessDefinition) repositorySession.findProcessDefinitionByKey(processDefinitionKey);
- if (processDefinition==null) {
- throw new JbpmException("no process definition with key '"+processDefinitionKey+"'");
- }
-
- processDefinition = repositorySession.loadProcessDefinitionById(processDefinition.getId());
-
ClientProcessInstance processInstance = processDefinition.createProcessInstance(executionKey);
processInstance.setVariables(variables);
processInstance.start();
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-04-18 17:43:48 UTC (rev 4578)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java 2009-04-18 19:47:17 UTC (rev 4579)
@@ -1063,7 +1063,7 @@
&& (processDefinitionId!=null)
) {
RepositorySession repositorySession = Environment.getFromCurrent(RepositorySession.class);
- processDefinition = (ProcessDefinitionImpl) repositorySession.loadProcessDefinitionById(processDefinitionId);
+ processDefinition = (ProcessDefinitionImpl) repositorySession.findProcessDefinitionById(processDefinitionId);
if (processDefinition==null) {
throw new JbpmException("couldn't find process definition "+processDefinitionId+" in the repository");
}
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ScopeInstanceImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ScopeInstanceImpl.java 2009-04-18 17:43:48 UTC (rev 4578)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ScopeInstanceImpl.java 2009-04-18 19:47:17 UTC (rev 4579)
@@ -76,7 +76,7 @@
variables = new HashMap<String, Variable>();
for (VariableDefinitionImpl variableDefinition: variableDefinitions) {
String key = variableDefinition.getName();
- Object value = variableDefinition.getInValue(outerExecution);
+ Object value = variableDefinition.getInitValue(outerExecution);
String typeName = variableDefinition.getTypeName();
createVariable(key, value, typeName);
}
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/VariableDefinitionImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/VariableDefinitionImpl.java 2009-04-18 17:43:48 UTC (rev 4578)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/VariableDefinitionImpl.java 2009-04-18 19:47:17 UTC (rev 4579)
@@ -42,18 +42,14 @@
protected String name;
protected String typeName;
- protected String inVariableName;
- protected String inExpression;
- protected Descriptor inDescriptor;
+ protected String initExpression;
+ protected Descriptor initDescriptor;
- public Object getInValue(ExecutionImpl execution) {
- if (inDescriptor!=null) {
- return WireContext.create(inDescriptor);
+ public Object getInitValue(ExecutionImpl execution) {
+ if (initDescriptor!=null) {
+ return WireContext.create(initDescriptor);
}
- if (inVariableName!=null) {
- return execution.getVariable(name);
- }
- if (inExpression!=null) {
+ if (initExpression!=null) {
throw new UnsupportedOperationException("TODO add variable in expression resolution");
}
return null;
@@ -65,24 +61,18 @@
public void setName(String name) {
this.name = name;
}
- public String getInVariableName() {
- return inVariableName;
+ public String getInitExpression() {
+ return initExpression;
}
- public void setInVariableName(String inVariableName) {
- this.inVariableName = inVariableName;
+ public void setInitExpression(String initExpression) {
+ this.initExpression = initExpression;
}
- public String getInExpression() {
- return inExpression;
+ public Descriptor getInitDescriptor() {
+ return initDescriptor;
}
- public void setInExpression(String inExpression) {
- this.inExpression = inExpression;
+ public void setInitDescriptor(Descriptor inDescriptor) {
+ this.initDescriptor = inDescriptor;
}
- public Descriptor getInDescriptor() {
- return inDescriptor;
- }
- public void setInDescriptor(Descriptor inDescriptor) {
- this.inDescriptor = inDescriptor;
- }
public String getTypeName() {
return typeName;
}
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/VariableOutDefinitionImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/VariableOutDefinitionImpl.java 2009-04-18 17:43:48 UTC (rev 4578)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/VariableOutDefinitionImpl.java 2009-04-18 19:47:17 UTC (rev 4579)
@@ -34,7 +34,7 @@
private static final long serialVersionUID = 1L;
- protected String variableName;
+ protected String name;
protected String expression;
protected String language;
@@ -43,11 +43,11 @@
return scriptManager.evaluateExpression(expression, execution, language);
}
- public String getVariableName() {
- return variableName;
+ public String getName() {
+ return name;
}
- public void setVariableName(String variableName) {
- this.variableName = variableName;
+ public void setName(String name) {
+ this.name = name;
}
public String getExpression() {
return expression;
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/VariableOutDefinitionSet.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/VariableOutDefinitionSet.java 2009-04-18 17:43:48 UTC (rev 4578)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/VariableOutDefinitionSet.java 2009-04-18 19:47:17 UTC (rev 4579)
@@ -39,10 +39,10 @@
// loop over all variable definitions
if (hasVariableOutDefinitions()) {
for (VariableOutDefinitionImpl variableOutDefinition: variableOutDefinitions) {
- String destination = variableOutDefinition.getVariableName();
- if (destination!=null) {
+ String variableName = variableOutDefinition.getName();
+ if (variableName!=null) {
Object value = variableOutDefinition.getOutValue(outerExecution);
- outerExecution.setVariable(destination, value);
+ outerExecution.setVariable(variableName, value);
}
}
}
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/query/ProcessDefinitionQueryImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/query/ProcessDefinitionQueryImpl.java 2009-04-18 17:43:48 UTC (rev 4578)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/query/ProcessDefinitionQueryImpl.java 2009-04-18 19:47:17 UTC (rev 4579)
@@ -30,12 +30,23 @@
import org.jbpm.api.ProcessDefinition;
import org.jbpm.api.ProcessDefinitionQuery;
import org.jbpm.api.cmd.CommandService;
+import org.jbpm.api.session.RepositorySession;
import org.jbpm.pvm.internal.model.ProcessDefinitionImpl;
import org.jbpm.pvm.internal.repository.DeploymentImpl;
import org.jbpm.pvm.internal.repository.DeploymentProperty;
-/**
+/** returns partially initialized ProcessDefinitionImpl's that can only be exposed
+ * as {@link ProcessDefinition}.
+ *
+ * To get the properly initialized {@link ProcessDefinitionImpl} objects,
+ * use {@link RepositorySession#findProcessDefinitionById(String)} or
+ * {@link RepositorySession#findProcessDefinitionByKey(String)}
+ *
+ * You can use the query query capabilities in this class to find the id
+ * and then use {@link RepositorySession#findProcessDefinitionById(String)}
+ * to get the properly initialized ProcessDefinitionImpl.
+ *
* @author Tom Baeyens
*/
public class ProcessDefinitionQueryImpl extends AbstractQuery implements ProcessDefinitionQuery {
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/RepositorySessionImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/RepositorySessionImpl.java 2009-04-18 17:43:48 UTC (rev 4578)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/RepositorySessionImpl.java 2009-04-18 19:47:17 UTC (rev 4579)
@@ -28,6 +28,7 @@
import org.jbpm.api.Deployment;
import org.jbpm.api.JbpmException;
import org.jbpm.api.Problem;
+import org.jbpm.api.ProcessDefinition;
import org.jbpm.api.ProcessDefinitionQuery;
import org.jbpm.api.client.ClientProcessDefinition;
import org.jbpm.api.session.RepositorySession;
@@ -101,8 +102,22 @@
public ProcessDefinitionQuery createProcessDefinitionQuery() {
return new ProcessDefinitionQueryImpl(session);
}
+
+ public ClientProcessDefinition findProcessDefinitionByKey(String processDefinitionKey) {
+ ProcessDefinition processDefinition = createProcessDefinitionQuery()
+ .key(processDefinitionKey)
+ .orderDesc(ProcessDefinitionQuery.PROPERTY_VERSION)
+ .page(0, 1)
+ .uniqueResult();
- public ClientProcessDefinition loadProcessDefinitionById(String processDefinitionId) {
+ if (processDefinition!=null) {
+ return findProcessDefinitionById(processDefinition.getId());
+ }
+
+ return null;
+ }
+
+ public ClientProcessDefinition findProcessDefinitionById(String processDefinitionId) {
DeploymentProperty deploymentProperty = (DeploymentProperty) session.createQuery(
"select deploymentProperty " +
"from "+DeploymentProperty.class.getName()+" as deploymentProperty " +
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-04-18 17:43:48 UTC (rev 4578)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/SwimlaneImpl.java 2009-04-18 19:47:17 UTC (rev 4579)
@@ -48,6 +48,23 @@
protected Set<ParticipationImpl> participations = null;
protected SwimlaneDefinitionImpl swimlaneDefinition = null;
+ // cloning //////////////////////////////////////////////////////////////////
+
+ /** initialize this swimlane's assignee and participations from the
+ * other swimlane. */
+ public void initialize(SwimlaneImpl other) {
+ this.assignee = other.getAssignee();
+ if (other.getParticipations()!=null) {
+ for (ParticipationImpl otherParticipation: other.getParticipations()) {
+ addParticipation(
+ otherParticipation.getUserId(),
+ otherParticipation.getGroupId(),
+ otherParticipation.getType()
+ );
+ }
+ }
+ }
+
// assignment methods ///////////////////////////////////////////////////////
public String getAssignee() {
@@ -76,16 +93,16 @@
}
public Participation addParticipation(String userId, String groupId, String type) {
- return addParticipant(new ParticipationImpl(userId, groupId, type));
+ return addParticipation(new ParticipationImpl(userId, groupId, type));
}
- private Participation addParticipant(ParticipationImpl participant) {
- participant.setSwimlane(this);
+ private Participation addParticipation(ParticipationImpl participation) {
+ participation.setSwimlane(this);
if (participations ==null) {
participations = new HashSet<ParticipationImpl>();
}
- participations.add(participant);
- return participant;
+ participations.add(participation);
+ return participation;
}
public void removeParticipant(ParticipationImpl participant) {
More information about the jbpm-commits
mailing list