[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=="OKOK"</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