[jbpm-commits] JBoss JBPM SVN: r1922 - in jbpm4/jpdl/trunk/modules/core/src/main/java/org/jbpm/jpdl: xml and 1 other directory.
do-not-reply at jboss.org
do-not-reply at jboss.org
Mon Aug 18 08:19:13 EDT 2008
Author: tom.baeyens at jboss.com
Date: 2008-08-18 08:19:12 -0400 (Mon, 18 Aug 2008)
New Revision: 1922
Modified:
jbpm4/jpdl/trunk/modules/core/src/main/java/org/jbpm/jpdl/activity/DecisionConditionActivity.java
jbpm4/jpdl/trunk/modules/core/src/main/java/org/jbpm/jpdl/activity/DecisionHandlerActivity.java
jbpm4/jpdl/trunk/modules/core/src/main/java/org/jbpm/jpdl/xml/DecisionBinding.java
Log:
decision condition refactoring
Modified: jbpm4/jpdl/trunk/modules/core/src/main/java/org/jbpm/jpdl/activity/DecisionConditionActivity.java
===================================================================
--- jbpm4/jpdl/trunk/modules/core/src/main/java/org/jbpm/jpdl/activity/DecisionConditionActivity.java 2008-08-18 11:50:23 UTC (rev 1921)
+++ jbpm4/jpdl/trunk/modules/core/src/main/java/org/jbpm/jpdl/activity/DecisionConditionActivity.java 2008-08-18 12:19:12 UTC (rev 1922)
@@ -49,7 +49,7 @@
Node node = execution.getNode();
List<Transition> outgoingTransitions = node.getOutgoingTransitions();
for (Transition transition : outgoingTransitions) {
- Condition condition = transition.getGuardCondition();
+ Condition condition = transition.getCondition();
if ( (condition==null)
|| (condition.evaluate(execution))
) {
Modified: jbpm4/jpdl/trunk/modules/core/src/main/java/org/jbpm/jpdl/activity/DecisionHandlerActivity.java
===================================================================
--- jbpm4/jpdl/trunk/modules/core/src/main/java/org/jbpm/jpdl/activity/DecisionHandlerActivity.java 2008-08-18 11:50:23 UTC (rev 1921)
+++ jbpm4/jpdl/trunk/modules/core/src/main/java/org/jbpm/jpdl/activity/DecisionHandlerActivity.java 2008-08-18 12:19:12 UTC (rev 1922)
@@ -72,4 +72,10 @@
execution.take(transition);
}
+ public void setDecisionHandlerName(String decisionHandlerName) {
+ this.decisionHandlerName = decisionHandlerName;
+ }
+ public void setDecisionHandlerDescriptor(Descriptor decisionHandlerDescriptor) {
+ this.decisionHandlerDescriptor = decisionHandlerDescriptor;
+ }
}
Modified: jbpm4/jpdl/trunk/modules/core/src/main/java/org/jbpm/jpdl/xml/DecisionBinding.java
===================================================================
--- jbpm4/jpdl/trunk/modules/core/src/main/java/org/jbpm/jpdl/xml/DecisionBinding.java 2008-08-18 11:50:23 UTC (rev 1921)
+++ jbpm4/jpdl/trunk/modules/core/src/main/java/org/jbpm/jpdl/xml/DecisionBinding.java 2008-08-18 12:19:12 UTC (rev 1922)
@@ -21,7 +21,17 @@
*/
package org.jbpm.jpdl.xml;
+import java.util.List;
+
import org.jbpm.jpdl.activity.DecisionExpressionActivity;
+import org.jbpm.jpdl.activity.DecisionHandlerActivity;
+import org.jbpm.pvm.internal.model.NodeImpl;
+import org.jbpm.pvm.internal.model.TransitionImpl;
+import org.jbpm.pvm.internal.util.XmlUtil;
+import org.jbpm.pvm.internal.wire.binding.ObjectBinding;
+import org.jbpm.pvm.internal.wire.descriptor.ExpressionDescriptor;
+import org.jbpm.pvm.internal.wire.descriptor.ObjectDescriptor;
+import org.jbpm.pvm.internal.wire.descriptor.ReferenceDescriptor;
import org.jbpm.pvm.internal.xml.Parse;
import org.jbpm.pvm.internal.xml.Parser;
import org.w3c.dom.Element;
@@ -32,6 +42,8 @@
*/
public class DecisionBinding extends JpdlActivityBinding {
+ static ObjectBinding objectBinding = new ObjectBinding();
+
public DecisionBinding() {
super("decision");
}
@@ -40,11 +52,63 @@
if (element.hasAttribute("expr")) {
DecisionExpressionActivity decisionExpressionActivity = new DecisionExpressionActivity();
String expr = element.getAttribute("expr");
- decisionExpressionActivity.setExpr(expr );
+ decisionExpressionActivity.setExpr(expr);
return decisionExpressionActivity;
}
+ if (element.hasAttribute("handler-ref")) {
+ String decisionHandlerName = element.getAttribute("handler-ref");
+ DecisionHandlerActivity decisionHandlerActivity = new DecisionHandlerActivity();
+ decisionHandlerActivity.setDecisionHandlerName(decisionHandlerName);
+ return decisionHandlerActivity;
+ }
+
+ Element handlerElement = XmlUtil.element(element, "handler");
+ if (handlerElement!=null) {
+ DecisionHandlerActivity decisionHandlerActivity = new DecisionHandlerActivity();
+ ObjectDescriptor decisionHandlerDescriptor = (ObjectDescriptor)
+ objectBinding.parse(handlerElement, parse, parser);
+ decisionHandlerActivity.setDecisionHandlerDescriptor(decisionHandlerDescriptor);
+ return decisionHandlerActivity;
+ }
+
+ boolean hasConditions = false;
+ List<Element> transitionElements = XmlUtil.elements(element, "transition");
+ if (transitionElements!=null) {
+ NodeImpl node = parse.findObject(NodeImpl.class);
+ List<TransitionImpl> transitions = (List) node.getOutgoingTransitions();
+
+ for (int i=0; i<transitionElements.size(); i++) {
+ TransitionImpl transition = transitions.get(i);
+ Element transitionElement = transitionElements.get(i);
+
+ Element conditionElement = XmlUtil.element(transitionElement, "condition");
+ if (conditionElement!=null) {
+ hasConditions = true;
+ }
+
+ if (conditionElement.hasAttribute("expr")) {
+ String expr = conditionElement.getAttribute("expr");
+ ExpressionDescriptor expressionDescriptor = new ExpressionDescriptor(expr);
+ transition.setConditionDescriptor(expressionDescriptor);
+
+ } else if (conditionElement.hasAttribute("ref")) {
+ String expr = conditionElement.getAttribute("ref");
+ ReferenceDescriptor refDescriptor = new ReferenceDescriptor(expr);
+ transition.setConditionDescriptor(refDescriptor);
+
+ } else if (ObjectBinding.isObjectDescriptor(conditionElement)) {
+ ObjectDescriptor conditionDescriptor = (ObjectDescriptor) objectBinding.parse(conditionElement, parse, parser);
+ transition.setConditionDescriptor(conditionDescriptor);
+
+ } else {
+ parse.addProblem("decision must have one of {expr attribute, handler-ref attribute, handler element or transition conditions}: "+XmlUtil.toString(element));
+ }
+ }
+ }
+
+ parse.addProblem("decision '"+element.getAttribute("name")+"' must have one of: expr attribute, handler attribute, handler element or condition expressions");
+
return null;
}
-
}
More information about the jbpm-commits
mailing list