[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