[jboss-svn-commits] JBL Code SVN: r31152 - labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jan 19 15:24:31 EST 2010


Author: KrisVerlaenen
Date: 2010-01-19 15:24:30 -0500 (Tue, 19 Jan 2010)
New Revision: 31152

Added:
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/CompositeContextNodeHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/StateNodeHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/TransactionHandler.java
Log:
 - added some more BPMN2 nodes

Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/CompositeContextNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/CompositeContextNodeHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/CompositeContextNodeHandler.java	2010-01-19 20:24:30 UTC (rev 31152)
@@ -0,0 +1,86 @@
+package org.drools.bpmn2.xml;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.definition.process.Connection;
+import org.drools.process.core.context.variable.Variable;
+import org.drools.process.core.context.variable.VariableScope;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.node.CompositeContextNode;
+import org.drools.workflow.core.node.CompositeNode;
+import org.xml.sax.Attributes;
+
+public class CompositeContextNodeHandler extends AbstractNodeHandler {
+    
+    protected Node createNode(Attributes attrs) {
+    	throw new IllegalArgumentException("Reading in should be handled by end event handler");
+    }
+    
+    @SuppressWarnings("unchecked")
+	public Class generateNodeFor() {
+        return CompositeContextNode.class;
+    }
+
+    public void writeNode(Node node, StringBuilder xmlDump, boolean includeMeta) {
+    	CompositeContextNode compositeNode = (CompositeContextNode) node;
+		writeNode("subProcess", compositeNode, xmlDump, includeMeta);
+		xmlDump.append(" >" + EOL);
+        // variables
+		VariableScope variableScope = (VariableScope) 
+            compositeNode.getDefaultContext(VariableScope.VARIABLE_SCOPE);
+		if (variableScope != null && !variableScope.getVariables().isEmpty()) {
+            xmlDump.append("    <!-- variables -->" + EOL);
+            for (Variable variable: variableScope.getVariables()) {
+                xmlDump.append("    <property id=\"" + variable.getName() + "\" ");
+                if (variable.getType() != null) {
+                    xmlDump.append("itemSubjectRef=\"_" + compositeNode.getUniqueId() + "-" + variable.getName() + "Item\"" );
+                }
+                // TODO: value
+                xmlDump.append("/>" + EOL);
+            }
+		}
+		// nodes
+		List<Node> subNodes = getSubNodes(compositeNode);
+    	xmlDump.append("    <!-- nodes -->" + EOL);
+        for (Node subNode: subNodes) {
+    		XmlBPMNProcessDumper.INSTANCE.visitNode(subNode, xmlDump, includeMeta);
+        }
+        // connections
+        List<Connection> connections = getSubConnections(compositeNode);
+    	xmlDump.append("    <!-- connections -->" + EOL);
+        for (Connection connection: connections) {
+        	XmlBPMNProcessDumper.INSTANCE.visitConnection(connection, xmlDump, includeMeta);
+        }
+		endNode("subProcess", xmlDump);
+	}
+	
+	protected List<Node> getSubNodes(CompositeNode compositeNode) {
+    	List<Node> subNodes =
+    		new ArrayList<Node>();
+        for (org.drools.definition.process.Node subNode: compositeNode.getNodes()) {
+        	// filter out composite start and end nodes as they can be regenerated
+        	if ((!(subNode instanceof CompositeNode.CompositeNodeStart)) &&
+    			(!(subNode instanceof CompositeNode.CompositeNodeEnd))) {
+        		subNodes.add((Node) subNode);
+        	}
+        }
+        return subNodes;
+    }
+    
+    protected List<Connection> getSubConnections(CompositeNode compositeNode) {
+    	List<Connection> connections = new ArrayList<Connection>();
+        for (org.drools.definition.process.Node subNode: compositeNode.getNodes()) {
+        	// filter out composite start and end nodes as they can be regenerated
+            if (!(subNode instanceof CompositeNode.CompositeNodeEnd)) {
+                for (Connection connection: subNode.getIncomingConnections(Node.CONNECTION_DEFAULT_TYPE)) {
+                    if (!(connection.getFrom() instanceof CompositeNode.CompositeNodeStart)) {
+                        connections.add(connection);
+                    }
+                }
+            }
+        }
+        return connections;
+    }
+
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/StateNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/StateNodeHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/StateNodeHandler.java	2010-01-19 20:24:30 UTC (rev 31152)
@@ -0,0 +1,29 @@
+package org.drools.bpmn2.xml;
+
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.node.StateNode;
+import org.xml.sax.Attributes;
+
+public class StateNodeHandler extends AbstractNodeHandler {
+    
+    protected Node createNode(Attributes attrs) {
+        throw new IllegalArgumentException("Reading in should be handled by intermediate catch event handler");
+    }
+    
+    @SuppressWarnings("unchecked")
+	public Class generateNodeFor() {
+        return StateNode.class;
+    }
+
+	public void writeNode(Node node, StringBuilder xmlDump, boolean includeMeta) {
+	    StateNode stateNode = (StateNode) node;
+		String condition = (String) stateNode.getMetaData("Condition");
+		writeNode("intermediateCatchEvent", stateNode, xmlDump, includeMeta);
+		xmlDump.append(">" + EOL);
+        xmlDump.append("      <conditionalEventDefinition>" + EOL);
+        xmlDump.append("        <condition xs:type=\"tFormalExpression\" language=\"" + XmlBPMNProcessDumper.RULE_LANGUAGE + "\">" + condition + "</condition>" + EOL);
+        xmlDump.append("      </conditionalEventDefinition>" + EOL);
+		endNode("intermediateCatchEvent", xmlDump);
+	}
+
+}

Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/TransactionHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/TransactionHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/TransactionHandler.java	2010-01-19 20:24:30 UTC (rev 31152)
@@ -0,0 +1,20 @@
+package org.drools.bpmn2.xml;
+
+import org.drools.workflow.core.Node;
+import org.drools.xml.ExtensibleXmlParser;
+import org.w3c.dom.Element;
+import org.xml.sax.SAXException;
+
+public class TransactionHandler extends SubProcessHandler {
+
+	protected void handleNode(final Node node, final Element element, final String uri, 
+            final String localName, final ExtensibleXmlParser parser) throws SAXException {
+    	super.handleNode(node, element, uri, localName, parser);
+    	node.setMetaData("Transaction", true);
+    }
+    
+    public void writeNode(Node node, StringBuilder xmlDump, boolean includeMeta) {
+        throw new IllegalArgumentException("Writing out should be handled by specific handlers");
+    }
+
+}
\ No newline at end of file



More information about the jboss-svn-commits mailing list