[jbpm-commits] JBoss JBPM SVN: r4873 - in jbpm4/branches/jimma/modules/migration/src: main/java/org/jbpm/jpdl/internal/convert/util and 2 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Fri May 22 06:03:01 EDT 2009


Author: jim.ma
Date: 2009-05-22 06:03:00 -0400 (Fri, 22 May 2009)
New Revision: 4873

Added:
   jbpm4/branches/jimma/modules/migration/src/main/java/org/jbpm/jpdl/internal/convert/util/DecisionConverter.java
   jbpm4/branches/jimma/modules/migration/src/test/resources/testDecision.xml
Modified:
   jbpm4/branches/jimma/modules/migration/src/main/java/org/jbpm/jpdl/internal/convert/JpdlConverter.java
   jbpm4/branches/jimma/modules/migration/src/main/java/org/jbpm/jpdl/internal/convert/util/TransitionConverter.java
   jbpm4/branches/jimma/modules/migration/src/test/java/org/jbpm/jpdl/internal/convert/JpdlConverterTest.java
Log:
Added DecisionConverter

Modified: jbpm4/branches/jimma/modules/migration/src/main/java/org/jbpm/jpdl/internal/convert/JpdlConverter.java
===================================================================
--- jbpm4/branches/jimma/modules/migration/src/main/java/org/jbpm/jpdl/internal/convert/JpdlConverter.java	2009-05-22 09:58:21 UTC (rev 4872)
+++ jbpm4/branches/jimma/modules/migration/src/main/java/org/jbpm/jpdl/internal/convert/JpdlConverter.java	2009-05-22 10:03:00 UTC (rev 4873)
@@ -21,6 +21,15 @@
  */
 package org.jbpm.jpdl.internal.convert;
 
+import static org.jbpm.graph.def.Node.NodeType.StartState;
+import static org.jbpm.graph.def.Node.NodeType.State;
+import static org.jbpm.graph.def.Node.NodeType.Decision;
+import static org.jbpm.graph.def.Node.NodeType.EndState;
+import static org.jbpm.graph.def.Node.NodeType.Fork;
+import static org.jbpm.graph.def.Node.NodeType.Join;
+import static org.jbpm.graph.def.Node.NodeType.Node;
+import static org.jbpm.graph.def.Node.NodeType.Task;
+
 import java.net.URL;
 import java.util.Iterator;
 import java.util.Map;
@@ -34,6 +43,7 @@
 import org.jbpm.graph.node.StartState;
 import org.jbpm.graph.node.State;
 import org.jbpm.graph.node.TaskNode;
+import org.jbpm.jpdl.internal.convert.util.DecisionConverter;
 import org.jbpm.jpdl.internal.convert.util.EndStateConverter;
 import org.jbpm.jpdl.internal.convert.util.ForkConverter;
 import org.jbpm.jpdl.internal.convert.util.JoinConverter;
@@ -82,37 +92,48 @@
 			}
 		}
 		for (Node node : def.getNodes()) {
-			// map start state node
-			if (node.getNodeType().equals(Node.NodeType.StartState)) {
-				StartState jpdl3start = (StartState) node;
+			Node.NodeType nodeType = node.getNodeType();
+			switch(node.getNodeType()) {
+			case StartState :
+				org.jbpm.graph.node.StartState jpdl3start = ( org.jbpm.graph.node.StartState) node;
 				Process.Start start = StartStateConverter.run(jpdl3start);
 				process.getSwimlaneAndOnAndTimer().add(start);
-			} else if (node.getNodeType().equals(Node.NodeType.State)) {
-				State jpdl3state = (State) node;
+				break;
+			case State:
+				org.jbpm.graph.node.State jpdl3state = (org.jbpm.graph.node.State) node;
 				Process.State state = StateConverter.run(jpdl3state);
 				process.getSwimlaneAndOnAndTimer().add(state);
-			} else if (node.getNodeType().equals(Node.NodeType.EndState)) {
-				EndState jpdl3end = (EndState) node;
+				break;
+			case EndState:
+				org.jbpm.graph.node.EndState jpdl3end = (org.jbpm.graph.node.EndState) node;
 				Process.End end = EndStateConverter.run(jpdl3end);
 				process.getSwimlaneAndOnAndTimer().add(end);
-			} else if (node.getNodeType().equals(Node.NodeType.Task)) {
+				break;
+			case Task:
 				//TaskNode
 				if (node instanceof TaskNode) {
-					TaskNode taskNode = (TaskNode)node;
+					org.jbpm.graph.node.TaskNode taskNode = (org.jbpm.graph.node.TaskNode)node;
 					Set<Process.Task> tasks = TaskNodeConverter.run(taskNode);
 					process.getSwimlaneAndOnAndTimer().addAll(tasks);
-				}				
-			} else if (node.getNodeType().equals(Node.NodeType.Fork)) {
-				Fork fork = (Fork)node;
+				}
+				break;				
+			case Fork:
+				org.jbpm.graph.node.Fork fork = (org.jbpm.graph.node.Fork)node;
 			    process.getSwimlaneAndOnAndTimer().add(ForkConverter.run(fork));
-			} else if (node.getNodeType().equals(Node.NodeType.Join)) {
-				Join join = (Join)node;
+			    break;
+			case Join:
+				org.jbpm.graph.node.Join join = (org.jbpm.graph.node.Join)node;
 				process.getSwimlaneAndOnAndTimer().add(JoinConverter.run(join));				
-			} else if (node.getNodeType().equals(Node.NodeType.Node)) {
-				Node tmpNode = (Node)node;
+                break;
+			case Node:
+				org.jbpm.graph.def.Node tmpNode = (org.jbpm.graph.def.Node)node;
 				process.getSwimlaneAndOnAndTimer().add(NodeConverter.run(tmpNode));
+				break;
+			case Decision :
+				org.jbpm.graph.node.Decision decision = (org.jbpm.graph.node.Decision)node;
+				process.getSwimlaneAndOnAndTimer().add(DecisionConverter.run(decision));
 			}
-
+			
 		}
 		return process;
 	}

Added: jbpm4/branches/jimma/modules/migration/src/main/java/org/jbpm/jpdl/internal/convert/util/DecisionConverter.java
===================================================================
--- jbpm4/branches/jimma/modules/migration/src/main/java/org/jbpm/jpdl/internal/convert/util/DecisionConverter.java	                        (rev 0)
+++ jbpm4/branches/jimma/modules/migration/src/main/java/org/jbpm/jpdl/internal/convert/util/DecisionConverter.java	2009-05-22 10:03:00 UTC (rev 4873)
@@ -0,0 +1,41 @@
+/*
+ * 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.convert.util;
+
+import org.jbpm.graph.def.Transition;
+import org.jbpm.graph.node.Decision;
+import org.jbpm.jpdl4.model.Process;
+
+public class DecisionConverter {
+	public static Process.Decision run(Decision node) {
+		Process.Decision result = new Process.Decision();
+		result.setName(node.getName());
+		//TODO: talk to Tom to find out if we should support separate DecisionCondition's
+		//node.getDecisionConditions()
+		for (Transition trans : node.getLeavingTransitions()) {
+			result.getTransition().add(TransitionConverter.run(trans, Process.Decision.Transition.class));
+		}
+		
+		return result;
+	}
+
+}

Modified: jbpm4/branches/jimma/modules/migration/src/main/java/org/jbpm/jpdl/internal/convert/util/TransitionConverter.java
===================================================================
--- jbpm4/branches/jimma/modules/migration/src/main/java/org/jbpm/jpdl/internal/convert/util/TransitionConverter.java	2009-05-22 09:58:21 UTC (rev 4872)
+++ jbpm4/branches/jimma/modules/migration/src/main/java/org/jbpm/jpdl/internal/convert/util/TransitionConverter.java	2009-05-22 10:03:00 UTC (rev 4873)
@@ -30,7 +30,9 @@
 import org.jbpm.graph.def.Transition;
 import org.jbpm.jpdl4.model.JavaType;
 import org.jbpm.jpdl4.model.ObjectFactory;
+import org.jbpm.jpdl4.model.Process;
 import org.jbpm.jpdl4.model.TransitionType;
+import org.jbpm.jpdl4.model.Process.Decision.Transition.Condition;
 
 public class TransitionConverter {
 	public static ObjectFactory objectFactory = new ObjectFactory();
@@ -41,6 +43,16 @@
 		} catch (Exception e) {
 			
 		} 
+			
+		if (transType instanceof Process.Decision.Transition) {
+			Process.Decision.Transition decTrans = (Process.Decision.Transition)transType;
+			if (transition.getCondition() != null) {
+				Condition condition = new Condition();
+				condition.setExpr(transition.getCondition());
+				decTrans.getCondition().add(condition);
+			}
+		}
+		
 		// get the actions
 		if (transition.getEvents() != null) {
 			Iterator ite = transition.getEvents().entrySet().iterator();

Modified: jbpm4/branches/jimma/modules/migration/src/test/java/org/jbpm/jpdl/internal/convert/JpdlConverterTest.java
===================================================================
--- jbpm4/branches/jimma/modules/migration/src/test/java/org/jbpm/jpdl/internal/convert/JpdlConverterTest.java	2009-05-22 09:58:21 UTC (rev 4872)
+++ jbpm4/branches/jimma/modules/migration/src/test/java/org/jbpm/jpdl/internal/convert/JpdlConverterTest.java	2009-05-22 10:03:00 UTC (rev 4873)
@@ -27,11 +27,9 @@
 import org.jbpm.api.Problem;
 import org.jbpm.jpdl.internal.xml.JpdlParser;
 import org.junit.Assert;
-import org.junit.Ignore;
 import org.junit.Test;
 
 public class JpdlConverterTest {
-	
 	@Test
 	public void runSimpleProcessFile() throws Exception {
 		testConvert("simple.xml");
@@ -48,6 +46,13 @@
 	}
 	
 	
+	@Test
+	public void testDescision() throws Exception {
+		testConvert("testDecision.xml");
+	}
+	
+	
+	
 	public void testConvert(String resourcefile) throws Exception {
 		URL url = getClass().getClassLoader().getResource(resourcefile);
 		ConverterContext context = new ConverterContext();
@@ -58,9 +63,11 @@
 		Jpdl4Writer writer = new Jpdl4Writer();
 		java.io.ByteArrayOutputStream bout = new java.io.ByteArrayOutputStream();
 		writer.write(process, bout, false);
-			
+		
+		
 		//Validate it with Jpdl4Parser
 		String jpdl4xml = new String(bout.toByteArray());
+		
 		List<Problem> problems = new JpdlParser().createParse().setString(jpdl4xml).execute().getProblems();
 		Assert.assertEquals(problems.toString(), 0, problems.size());
 	}

Added: jbpm4/branches/jimma/modules/migration/src/test/resources/testDecision.xml
===================================================================
--- jbpm4/branches/jimma/modules/migration/src/test/resources/testDecision.xml	                        (rev 0)
+++ jbpm4/branches/jimma/modules/migration/src/test/resources/testDecision.xml	2009-05-22 10:03:00 UTC (rev 4873)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<process-definition 
+  xmlns="urn:jbpm.org:jpdl-3.2"
+  name="decision process">
+   <start-state name="start">
+      <transition name="to_state" to="make_decision">
+         <action name="action" class="com.sample.action.MessageActionHandler">
+         </action>
+      </transition>
+   </start-state>
+
+  <decision name="make_decision">
+    <transition to="second">
+      <condition>a==&quot;OKOK&quot;</condition>
+    </transition>
+    <transition to="second">
+      <condition>a=="NOK"</condition>
+    </transition>
+  </decision>
+
+   <state name="second">
+      <transition name="to_end" to="end">
+         <action name="action" class="com.sample.action.MessageActionHandler">
+            <message>About to finish!</message>
+         </action>
+      </transition>
+   </state>
+   <end-state name="end"></end-state>
+</process-definition>




More information about the jbpm-commits mailing list