[jboss-svn-commits] JBL Code SVN: r20367 - in labs/jbossrules/trunk/drools-compiler/src: main/java/org/drools/xml/processes and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Jun 9 07:23:15 EDT 2008
Author: KrisVerlaenen
Date: 2008-06-09 07:23:14 -0400 (Mon, 09 Jun 2008)
New Revision: 20367
Added:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlRuleFlowProcessDumper.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlWorkflowProcessDumper.java
Removed:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlRuleFlowProcessDumper.java
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/CompositeNodeHandler.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/TestXml.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/processes/XMLPersistenceTest.java
Log:
- improved pluggability of workflow processes
Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlRuleFlowProcessDumper.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlRuleFlowProcessDumper.java 2008-06-09 11:06:49 UTC (rev 20366)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlRuleFlowProcessDumper.java 2008-06-09 11:23:14 UTC (rev 20367)
@@ -1,162 +0,0 @@
-package org.drools.xml;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import org.drools.process.core.context.variable.Variable;
-import org.drools.process.core.datatype.DataType;
-import org.drools.ruleflow.core.RuleFlowProcess;
-import org.drools.workflow.core.Connection;
-import org.drools.workflow.core.Node;
-import org.drools.workflow.core.impl.NodeImpl;
-import org.drools.xml.processes.AbstractNodeHandler;
-
-public class XmlRuleFlowProcessDumper {
-
- private final static String EOL = System.getProperty( "line.separator" );
-
- private static final SemanticModule semanticModule = new ProcessSemanticModule();
-
- public static String dump(RuleFlowProcess process) {
- return dump(process, true);
- }
-
- public static String dump(RuleFlowProcess process, boolean includeMeta) {
- StringBuffer xmlDump = new StringBuffer();
- visitProcess(process, xmlDump, includeMeta);
- return xmlDump.toString();
- }
-
- private static void visitProcess(RuleFlowProcess process, StringBuffer xmlDump, boolean includeMeta) {
- xmlDump.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?> " + EOL
- + "<process xmlns=\"http://drools.org/drools-4.0/process\"" + EOL
- + " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"" + EOL
- + " xs:schemaLocation=\"http://drools.org/drools-4.0/process drools-processes-4.0.xsd\"" + EOL
- + " type=\"RuleFlow\" ");
- if (process.getName() != null) {
- xmlDump.append("name=\"" + process.getName() + "\" ");
- }
- if (process.getId() != null) {
- xmlDump.append("id=\"" + process.getId() + "\" ");
- }
- if (process.getPackageName() != null) {
- xmlDump.append("package-name=\"" + process.getPackageName() + "\" ");
- }
- if (process.getVersion() != null) {
- xmlDump.append("version=\"" + process.getVersion() + "\" ");
- }
- if (includeMeta) {
- Integer routerLayout = (Integer) process.getMetaData("routerLayout");
- if (routerLayout != null && routerLayout != 0) {
- xmlDump.append("routerLayout=\"" + routerLayout + "\" ");
- }
- }
- xmlDump.append(">" + EOL + EOL);
- visitHeader(process, xmlDump, includeMeta);
- visitNodes(process, xmlDump, includeMeta);
- visitConnections(process.getNodes(), xmlDump, includeMeta);
- xmlDump.append("</process>");
- }
-
- private static void visitHeader(RuleFlowProcess process, StringBuffer xmlDump, boolean includeMeta) {
- xmlDump.append(" <header>" + EOL);
- visitImports(process.getImports(), xmlDump);
- visitGlobals(process.getGlobals(), xmlDump);
- visitVariables(process.getVariableScope().getVariables(), xmlDump);
- xmlDump.append(" </header>" + EOL + EOL);
- }
-
- private static void visitImports(List<String> imports, StringBuffer xmlDump) {
- if (imports != null && imports.size() > 0) {
- xmlDump.append(" <imports>" + EOL);
- for (String importString: imports) {
- xmlDump.append(" <import name=\"" + importString + "\" />" + EOL);
- }
- xmlDump.append(" </imports>" + EOL);
- }
- }
-
- private static void visitGlobals(Map<String, String> globals, StringBuffer xmlDump) {
- if (globals != null && globals.size() > 0) {
- xmlDump.append(" <globals>" + EOL);
- for (Map.Entry<String, String> global: globals.entrySet()) {
- xmlDump.append(" <global identifier=\"" + global.getKey() + "\" type=\"" + global.getValue() + "\" />" + EOL);
- }
- xmlDump.append(" </globals>" + EOL);
- }
- }
-
- private static void visitVariables(List<Variable> variables, StringBuffer xmlDump) {
- if (variables != null && variables.size() > 0) {
- xmlDump.append(" <variables>" + EOL);
- for (Variable variable: variables) {
- xmlDump.append(" <variable name=\"" + variable.getName() + "\" >" + EOL);
- visitDataType(variable.getType(), xmlDump);
- Object value = variable.getValue();
- if (value != null) {
- visitValue(variable.getValue(), xmlDump);
- }
- xmlDump.append(" </variable>" + EOL);
- }
- xmlDump.append(" </variables>" + EOL);
- }
- }
-
- private static void visitDataType(DataType dataType, StringBuffer xmlDump) {
- xmlDump.append(" <type name=\"" + dataType.getClass().getName() + "\" />" + EOL);
- }
-
- private static void visitValue(Object value, StringBuffer xmlDump) {
- xmlDump.append(" <value>" + value + "</value>" + EOL);
- }
-
- private static void visitNodes(RuleFlowProcess process, StringBuffer xmlDump, boolean includeMeta) {
- xmlDump.append(" <nodes>" + EOL);
- for (Node node: process.getNodes()) {
- visitNode(node, xmlDump, includeMeta);
- }
- xmlDump.append(" </nodes>" + EOL + EOL);
- }
-
- public static void visitNode(Node node, StringBuffer xmlDump, boolean includeMeta) {
- Handler handler = semanticModule.getHandlerByClass(node.getClass());
- if (handler != null) {
- ((AbstractNodeHandler) handler).writeNode(node, xmlDump, includeMeta);
- } else {
- throw new IllegalArgumentException(
- "Unknown node type: " + node);
- }
- }
-
- private static void visitConnections(Node[] nodes, StringBuffer xmlDump, boolean includeMeta) {
- List<Connection> connections = new ArrayList<Connection>();
- for (Node node: nodes) {
- connections.addAll(node.getIncomingConnections(Node.CONNECTION_DEFAULT_TYPE));
- }
- xmlDump.append(" <connections>" + EOL);
- for (Connection connection: connections) {
- visitConnection(connection, xmlDump, includeMeta);
- }
- xmlDump.append(" </connections>" + EOL + EOL);
- }
-
- public static void visitConnection(Connection connection, StringBuffer xmlDump, boolean includeMeta) {
- xmlDump.append(" <connection from=\"" + connection.getFrom().getId() + "\" ");
- if (!NodeImpl.CONNECTION_DEFAULT_TYPE.equals(connection.getFromType())) {
- xmlDump.append("fromType=\"" + connection.getFromType() + "\" ");
- }
- xmlDump.append("to=\"" + connection.getTo().getId() + "\" ");
- if (!NodeImpl.CONNECTION_DEFAULT_TYPE.equals(connection.getToType())) {
- xmlDump.append("toType=\"" + connection.getToType() + "\" ");
- }
- if (includeMeta) {
- String bendpoints = (String) connection.getMetaData("bendpoints");
- if (bendpoints != null) {
- xmlDump.append("bendpoints=\"" + bendpoints + "\" ");
- }
- }
- xmlDump.append("/>" + EOL);
- }
-
-}
Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlRuleFlowProcessDumper.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlRuleFlowProcessDumper.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlRuleFlowProcessDumper.java 2008-06-09 11:23:14 UTC (rev 20367)
@@ -0,0 +1,16 @@
+package org.drools.xml;
+
+public class XmlRuleFlowProcessDumper extends XmlWorkflowProcessDumper {
+
+ public static final XmlRuleFlowProcessDumper INSTANCE = new XmlRuleFlowProcessDumper();
+
+ private XmlRuleFlowProcessDumper() {
+ super(
+ "RuleFlow",
+ "http://drools.org/drools-4.0/process",
+ "drools-processes-4.0.xsd",
+ new ProcessSemanticModule()
+ );
+ }
+
+}
Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlWorkflowProcessDumper.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlWorkflowProcessDumper.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlWorkflowProcessDumper.java 2008-06-09 11:23:14 UTC (rev 20367)
@@ -0,0 +1,178 @@
+package org.drools.xml;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.drools.process.core.context.variable.Variable;
+import org.drools.process.core.context.variable.VariableScope;
+import org.drools.process.core.datatype.DataType;
+import org.drools.workflow.core.Connection;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.WorkflowProcess;
+import org.drools.workflow.core.impl.NodeImpl;
+import org.drools.xml.processes.AbstractNodeHandler;
+
+public class XmlWorkflowProcessDumper {
+
+ private final static String EOL = System.getProperty( "line.separator" );
+
+ private String type;
+ private String namespace;
+ private String schemaLocation;
+ private SemanticModule semanticModule;
+
+ public XmlWorkflowProcessDumper(String type, String namespace, String schemaLocation, SemanticModule semanticModule) {
+ this.type = type;
+ this.namespace = namespace;
+ this.schemaLocation = schemaLocation;
+ this.semanticModule = semanticModule;
+ }
+
+ public String dump(WorkflowProcess process) {
+ return dump(process, true);
+ }
+
+ public String dump(WorkflowProcess process, boolean includeMeta) {
+ StringBuffer xmlDump = new StringBuffer();
+ visitProcess(process, xmlDump, includeMeta);
+ return xmlDump.toString();
+ }
+
+ protected void visitProcess(WorkflowProcess process, StringBuffer xmlDump, boolean includeMeta) {
+ xmlDump.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?> " + EOL
+ + "<process xmlns=\"" + namespace + "\"" + EOL
+ + " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"" + EOL
+ + " xs:schemaLocation=\"" + namespace + " " + schemaLocation + "\"" + EOL
+ + " type=\"" + type + "\" ");
+ if (process.getName() != null) {
+ xmlDump.append("name=\"" + process.getName() + "\" ");
+ }
+ if (process.getId() != null) {
+ xmlDump.append("id=\"" + process.getId() + "\" ");
+ }
+ if (process.getPackageName() != null) {
+ xmlDump.append("package-name=\"" + process.getPackageName() + "\" ");
+ }
+ if (process.getVersion() != null) {
+ xmlDump.append("version=\"" + process.getVersion() + "\" ");
+ }
+ if (includeMeta) {
+ Integer routerLayout = (Integer) process.getMetaData("routerLayout");
+ if (routerLayout != null && routerLayout != 0) {
+ xmlDump.append("routerLayout=\"" + routerLayout + "\" ");
+ }
+ }
+ xmlDump.append(">" + EOL + EOL);
+ visitHeader(process, xmlDump, includeMeta);
+ visitNodes(process, xmlDump, includeMeta);
+ visitConnections(process.getNodes(), xmlDump, includeMeta);
+ xmlDump.append("</process>");
+ }
+
+ private void visitHeader(WorkflowProcess process, StringBuffer xmlDump, boolean includeMeta) {
+ xmlDump.append(" <header>" + EOL);
+ visitImports(process.getImports(), xmlDump);
+ visitGlobals(process.getGlobals(), xmlDump);
+ VariableScope variableScope = (VariableScope) process.getDefaultContext(VariableScope.VARIABLE_SCOPE);
+ if (variableScope != null) {
+ visitVariables(variableScope.getVariables(), xmlDump);
+ }
+ xmlDump.append(" </header>" + EOL + EOL);
+ }
+
+ private void visitImports(List<String> imports, StringBuffer xmlDump) {
+ if (imports != null && imports.size() > 0) {
+ xmlDump.append(" <imports>" + EOL);
+ for (String importString: imports) {
+ xmlDump.append(" <import name=\"" + importString + "\" />" + EOL);
+ }
+ xmlDump.append(" </imports>" + EOL);
+ }
+ }
+
+ private void visitGlobals(Map<String, String> globals, StringBuffer xmlDump) {
+ if (globals != null && globals.size() > 0) {
+ xmlDump.append(" <globals>" + EOL);
+ for (Map.Entry<String, String> global: globals.entrySet()) {
+ xmlDump.append(" <global identifier=\"" + global.getKey() + "\" type=\"" + global.getValue() + "\" />" + EOL);
+ }
+ xmlDump.append(" </globals>" + EOL);
+ }
+ }
+
+ private void visitVariables(List<Variable> variables, StringBuffer xmlDump) {
+ if (variables != null && variables.size() > 0) {
+ xmlDump.append(" <variables>" + EOL);
+ for (Variable variable: variables) {
+ xmlDump.append(" <variable name=\"" + variable.getName() + "\" >" + EOL);
+ visitDataType(variable.getType(), xmlDump);
+ Object value = variable.getValue();
+ if (value != null) {
+ visitValue(variable.getValue(), xmlDump);
+ }
+ xmlDump.append(" </variable>" + EOL);
+ }
+ xmlDump.append(" </variables>" + EOL);
+ }
+ }
+
+ private void visitDataType(DataType dataType, StringBuffer xmlDump) {
+ xmlDump.append(" <type name=\"" + dataType.getClass().getName() + "\" />" + EOL);
+ }
+
+ private void visitValue(Object value, StringBuffer xmlDump) {
+ xmlDump.append(" <value>" + value + "</value>" + EOL);
+ }
+
+ private void visitNodes(WorkflowProcess process, StringBuffer xmlDump, boolean includeMeta) {
+ xmlDump.append(" <nodes>" + EOL);
+ for (Node node: process.getNodes()) {
+ visitNode(node, xmlDump, includeMeta);
+ }
+ xmlDump.append(" </nodes>" + EOL + EOL);
+ }
+
+ public void visitNode(Node node, StringBuffer xmlDump, boolean includeMeta) {
+ Handler handler = semanticModule.getHandlerByClass(node.getClass());
+ if (handler != null) {
+ ((AbstractNodeHandler) handler).writeNode(node, xmlDump, includeMeta);
+ } else {
+ throw new IllegalArgumentException(
+ "Unknown node type: " + node);
+ }
+ }
+
+ private void visitConnections(Node[] nodes, StringBuffer xmlDump, boolean includeMeta) {
+ List<Connection> connections = new ArrayList<Connection>();
+ for (Node node: nodes) {
+ for (List<Connection> connectionList: node.getIncomingConnections().values()) {
+ connections.addAll(connectionList);
+ }
+ }
+ xmlDump.append(" <connections>" + EOL);
+ for (Connection connection: connections) {
+ visitConnection(connection, xmlDump, includeMeta);
+ }
+ xmlDump.append(" </connections>" + EOL + EOL);
+ }
+
+ public void visitConnection(Connection connection, StringBuffer xmlDump, boolean includeMeta) {
+ xmlDump.append(" <connection from=\"" + connection.getFrom().getId() + "\" ");
+ if (!NodeImpl.CONNECTION_DEFAULT_TYPE.equals(connection.getFromType())) {
+ xmlDump.append("fromType=\"" + connection.getFromType() + "\" ");
+ }
+ xmlDump.append("to=\"" + connection.getTo().getId() + "\" ");
+ if (!NodeImpl.CONNECTION_DEFAULT_TYPE.equals(connection.getToType())) {
+ xmlDump.append("toType=\"" + connection.getToType() + "\" ");
+ }
+ if (includeMeta) {
+ String bendpoints = (String) connection.getMetaData("bendpoints");
+ if (bendpoints != null) {
+ xmlDump.append("bendpoints=\"" + bendpoints + "\" ");
+ }
+ }
+ xmlDump.append("/>" + EOL);
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/CompositeNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/CompositeNodeHandler.java 2008-06-09 11:06:49 UTC (rev 20366)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/CompositeNodeHandler.java 2008-06-09 11:23:14 UTC (rev 20367)
@@ -28,7 +28,7 @@
// filter out composite start and end nodes as they can be regenerated
if ((!(subNode instanceof CompositeNode.CompositeNodeStart)) &&
(!(subNode instanceof CompositeNode.CompositeNodeEnd))) {
- XmlRuleFlowProcessDumper.visitNode(subNode, xmlDump, includeMeta);
+ XmlRuleFlowProcessDumper.INSTANCE.visitNode(subNode, xmlDump, includeMeta);
}
}
xmlDump.append(" </nodes>" + EOL);
@@ -45,7 +45,7 @@
}
xmlDump.append(" <connections>" + EOL);
for (Connection connection: connections) {
- XmlRuleFlowProcessDumper.visitConnection(connection, xmlDump, includeMeta);
+ XmlRuleFlowProcessDumper.INSTANCE.visitConnection(connection, xmlDump, includeMeta);
}
xmlDump.append(" </connections>" + EOL);
xmlDump.append(" <in-ports>" + EOL);
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/TestXml.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/TestXml.java 2008-06-09 11:06:49 UTC (rev 20366)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/TestXml.java 2008-06-09 11:23:14 UTC (rev 20367)
@@ -17,8 +17,7 @@
RuleFlowProcess process = (RuleFlowProcess) reader.getProcess();
assertNotNull(process);
- XmlRuleFlowProcessDumper dumper = new XmlRuleFlowProcessDumper();
- String output = dumper.dump(process);
+ String output = XmlRuleFlowProcessDumper.INSTANCE.dump(process);
System.out.println(output);
reader = new XmlProcessReader(new SemanticModules());
reader.read(new StringReader(output));
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/processes/XMLPersistenceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/processes/XMLPersistenceTest.java 2008-06-09 11:06:49 UTC (rev 20366)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/processes/XMLPersistenceTest.java 2008-06-09 11:23:14 UTC (rev 20367)
@@ -61,9 +61,7 @@
process.addNode(new WorkItemNode());
process.addNode(new TimerNode());
- XmlRuleFlowProcessDumper dumper = new XmlRuleFlowProcessDumper();
-
- String xml = dumper.dump(process, false);
+ String xml = XmlRuleFlowProcessDumper.INSTANCE.dump(process, false);
if (xml == null) {
throw new IllegalArgumentException("Failed to persist empty nodes!");
}
@@ -82,7 +80,7 @@
// System.out.println("************************************");
- String xml2 = dumper.dump(process, false);
+ String xml2 = XmlRuleFlowProcessDumper.INSTANCE.dump(process, false);
if (xml2 == null) {
throw new IllegalArgumentException("Failed to persist empty nodes!");
}
@@ -258,9 +256,7 @@
process.addNode(endNode);
new ConnectionImpl(timerNode, Node.CONNECTION_DEFAULT_TYPE, endNode, Node.CONNECTION_DEFAULT_TYPE);
- XmlRuleFlowProcessDumper dumper = new XmlRuleFlowProcessDumper();
-
- String xml = dumper.dump(process, true);
+ String xml = XmlRuleFlowProcessDumper.INSTANCE.dump(process, true);
if (xml == null) {
throw new IllegalArgumentException("Failed to persist empty nodes!");
}
@@ -278,7 +274,7 @@
// System.out.println("************************************");
- String xml2 = dumper.dump(process, true);
+ String xml2 = XmlRuleFlowProcessDumper.INSTANCE.dump(process, true);
if (xml2 == null) {
throw new IllegalArgumentException("Failed to persist empty nodes!");
}
More information about the jboss-svn-commits
mailing list